Ang A* search algorithm ay isang popular na patripsing at graph na pamamaraang passing na ginagamit sa iba't ibang mga aplikasyon tulad ng robotics, game development, at sistema ng nabigasyon. Ito ay nagsasama ng mga tampok ng uniporme-cost search at sakim na pinakamahusay-unang paghahanap, na ginagawa itong mahusay para sa paghahanap ng pinakamaikling landas sa mga weighted grap. Ang guide na ito ay nagbibigay ng isang hakbang-by-pa-base paglapit sa pagpapatupad ng A* na may mga praktikal na halimbawa.

Pag - unawa sa A* Algorithm

Ang isang* algorithm ay nahahanap ang pinakamaikling landas mula sa isang umpisa node hanggang sa isang goal node sa pamamagitan ng pagsasaalang-alang ng parehong halaga upang maabot ang isang node at tinatayang halaga upang maabot ang goal mula sa node na iyon. Gumagamit ito ng isang prioridad na queue upang galugarin ang mga node na may pinakamababang kabuuang tinatayang halaga, na siyang kabuuan ng aktuwal na halaga at ang tantiyang heuristiko.

Pagtatakda ng A* Hakbang-by-Turk

Sundin ang mga hakbang na ito upang ipatupad ang A* sa isang wikang pamprograma na gaya ng Python:

  • I-una ang bukas na talaan na may panimulang node at ang saradong talaan bilang walang laman.
  • Loop hanggang sa walang laman ang panimulang talaan:
  • Alisin ang node na may pinakamababang kabuuang halaga mula sa bukas na talaan.
  • Kung ito ang tunguhin, muling itayo ang landas at tapusin ito.
  • Kung hindi, lumikha ng mga kapitbahay nito at suriin ang bawat isa:
  • Alamin ang halaga upang marating ang bawat kapitbahay at tantiyahin ang natitirang distansiya sa tunguhing ito na ginagamit ang isang heuristikong gawain.
  • Kung ang isang kapitbahay ay wala sa bukas o saradong talaan, idagdag ito sa bukas na talaan na may kabuuang halaga.
  • Ilipat ang kasalukuyang node sa saradong talaan.

Praktikal na Halimbawa

Isaalang - alang ang isang grid kung saan ang bawat selula ay kumakatawan sa isang node, at ang halaga ng pagkilos ay pare - pareho. Ang heuristikong gamit ay ang distansiya ng Manhattan. Ang pag - aayos ng A* ay nagsasangkot ng pagtatatag ng mga data structure para sa grid, gastos, at mga node ng magulang.

Sumaryo

Ang pag-iisyu ng A* ay nangangailangan ng pag-unawa sa mga pangunahing bahagi nito: ang bukas na talaan, saradong listahan, mga kalkulasyon ng gastos, at tungkuling heuristiko. sa pamamagitan ng pagsunod sa prosesong hakbang-bay-bayin at pagkakapit nito sa mga praktikal na halimbawa, ang mga developer ay epektibong maaaring maglakip ng A* sa kanilang mga aplikasyon para sa mga pinakamahusay na mga solusyong pang-impormasyon.