Алгоритми A* і Dijkstra є фундаментальними в сфері стипендії та графічної траверсальної. Вони широко використовуються в системах навігації, робототехніки та витоку мережі. Розуміння їх математичних основ допомагає оптимізувати їх продуктивність та аплікативність.

Графічне представлення

Обидва алгоритми працюють на графіках, які складаються з вершин (вертіцій) і країв. Краї можуть мати ваги, що представляють витрати, відстані або час. Графік може бути спрямованим або непрямим, а вага зазвичай негативними.

Функції та вишуканість

В основі цих алгоритмів передбачено розрахунок вартості, що досягають кожного вузла. Алгоритм Діжкстра використовує примулятивну вартість з початкового вузла, а А* додає евристичний розрахунок решти вартості до мети. Гілістичний повинен бути допустимим, що означає, що він ніколи не переоцінює справжню вартість.

Математичне формування

Нехай G = (V, E) є графіком з вершинами V і краями E. Кожен край (u, v) має вагу w(u, v). Мета полягає в тому, щоб знайти найкоротший шлях від початкового вузла до вузла t.

Алгоритм Дійкстра оновлюється дистанцію d(v) для кожного вершини v, ініціалізованого як d(s) = 0 і d(v) = ∞ для v ≠ . Це ітеративно вибирає вершину з найменшим d(v), потім розслабляє його сусідні краї.

A* змінює цей алгоритм, що закріплює гемалістичний h(v), що забезпечує вартість від v до t. Пріоритетна функція стає f(v) = d(v) + h(v). Алгоритм розширює вершини на основі найнижчого f(v).

Рентгенівська ефективність

Ефективність залежить від використовуваних структур даних. Алгоритм Dijkstra має часову складність O(SIVE Registry + }} LogiV }} з пріоритетною черги. A* може бути швидше, якщо вінристичний добре розроблений, зменшуючи кількість вузлів розширено.

  • Графік з негативними вагами
  • допустимий гемористик для A*
  • Пріоритетна черга вибору вузла
  • Розслаблення країв для оновлення витрат