Алгоритм пошуку A* є популярним способом стипендії та графового траверсального методу, що використовується в різних додатках, таких як робототехніка, розробка ігор, і навігаційних систем. Він поєднує в собі особливості пошуку одноколісних та greedy Best-first search, що робить його ефективним для пошуку найбільш коротких шляхів у вагових графіках. Цей посібник надає покроковий підхід до реалізації A* з практичними прикладами.

Розуміння A* Альгоритм

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

Реалізація A* Step-by-Step

Перейдіть за цими кроками, щоб реалізувати A* в мові програмування, як Python:

  • Спочатку виконайте відкритий список з початковим вершиною і закритим списком як порожній.
  • Відправка до відкриття списку порожній:
  • Видаліть вузол з найнижчою загальною вартістю від відкритого списку.
  • Якщо цей вузол є метою, реконструювати шлях і припинити.
  • В іншому випадку, генерувати сусіди і оцінити кожну:
  • Розрахувати вартість, щоб досягти кожного сусіда і оцінити решту відстані до мети за допомогою гівристичної функції.
  • Якщо сусід не у відкритому або закритому списку, додайте його до відкритого списку з його загальною вартістю.
  • Перемістити поточний вузол до закритого списку.

Практичний приклад

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

Редагування

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