Table of Contents
A*-hakualgoritmi on suosittu polkuhaku- ja graafinen traversaalitekniikka, jota käytetään erilaisissa sovelluksissa, kuten robotiikassa, pelien kehittämisessä ja verkkoreitityksessä. Siinä yhdistyvät yhtenäisen ja kustannushakun ominaisuudet ja ahneus paras ensimmäinen haku, jotta voidaan tehokkaasti löytää lyhin polku alkusolmusta tavoitesolmupisteeseen. Tämä opas tarjoaa vaihe vaiheelta prosessin A*-algoritmin toteuttamiseksi esimerkkilaskelmia havainnollistaa jokaista vaihetta.
A* Algoritmin ymmärtäminen
A*-algoritmi käyttää kustannusfunktiota, f(n) = g(n) + h(n), jossa
- g(n]:[ Todellinen kustannus alkusolmusta solmuun.
- h(n]:[ Heuristinen arvio kustannuksista solmukohdasta n tavoitteeseen.
Algoritmi tutkii solmuja, joiden f(n) arvo on alhaisin, tasapainottaa todellisia ja arvioituja kustannuksia löytää optimaalinen polku tehokkaasti.
Vaiheittainen täytäntöönpano
Seuraa näitä toimenpiteitä A*-algoritmin toteuttamiseksi:
1. Alusta avoimet ja suljetut luettelot
Avoin luettelo sisältää arvioitavat solmut, alkaen alkuperäisestä solmusta. Suljettu luettelo sisältää jo arvioitavia solmuja.
2. Valitse solmu, jossa on pienin f(n)
Poista tämä solmu avoimesta luettelosta ja lisää se suljettuun luetteloon.
3. Luo lähistön solmukohdat
Laske g(n) ja h(n) jokaiselle naapurille. Jos naapuri ei ole avoimessa luettelossa tai on alempi g(n), päivittää sen arvot ja asettaa sen vanhempi nykyisen solmukohdan.
4. Toista kunnes tavoite on saavutettu
Jatka prosessia, kunnes tavoitesolmu lisätään suljettuun luetteloon, mikä osoittaa lyhin polku on löytynyt.
Esimerkkilaskelmat
Harkitse yksinkertainen ruudukko aloitussolmu A ja tavoite nyökkäys G. Heurististinen h(n) on suora viiva etäisyys. Alkulaskelmat ovat seuraavat:
Aloitetaan solmusta A, g(A) = 0, h(A) = 4. F(A) = 4. Naapurisolmut B ja C arvioidaan:
Kun kyseessä on solmu B: g(B) = g(A) + kustannus(A, B) = 0 + 1 = 1, h(B) = 3, f(B) = 4.
Kun solmupiste C: g(C) = 1, h(C) = 2, f(C) = 3. Node C on alhaisin f(n), joten se valitaan seuraavaksi.
Tämä prosessi jatkuu, päivittämällä g, h ja f arvoja, kunnes tavoite nide G on saavutettu lyhin polku tunnistettu.