A* Reitinhaku Aloittelijoille



Samankaltaiset tiedostot
Kohdissa 2 ja 3 jos lukujen valintaan on useita vaihtoehtoja, valitaan sellaiset luvut, jotka ovat mahdollisimman lähellä listan alkua.

Liite 2: Verkot ja todennäköisyyslaskenta

Ohjeissa pyydetään toisinaan katsomaan koodia esimerkkiprojekteista (esim. Liikkuva_Tausta1). Saat esimerkkiprojektit opettajalta.

Sinulle on annettu bittijono, ja tehtäväsi on muuttaa jonoa niin, että jokainen bitti on 0.

Puzzle SM Pistelasku

Solmu 3/2001 Solmu 3/2001. Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä:

Seuraa huolellisesti annettuja ohjeita. Tee taitokset tarkkaan,

Datatähti 2019 loppu

Tehtävä Vastaus

Puzzle-SM Loppukilpailu Oulu

Reittianalyysi Osakilpailu 4 Rauma, Tarvonsaari. RTM Anni Heikkonen & Henrik Väisänen

Ohjelmoinnin peruskurssi Y1

Kuukauden kuvat kerhon galleriaan lähtien kuukaudenkuvaajan kuvagalleria on siirretty uudelle palvelimelle osoitteeseen:

EU-rikollisia koskevien tietojen laadun parantaminen

Linkkitekstit. Kaikkein vanhin WWW-suunnitteluohje:

2016/07/05 08:58 1/12 Shortcut Menut

Olet tehnyt hyvän valinnan hankkiessasi kotimaisen StorageIT varmuuskopiointipalvelun.

Sisäänkirjaus Uloskirjaus. Yritystieto

Ohjeistus yhdistysten internetpäivittäjille

KirjautuminenPro+ PIKA OPAS PRO+ KÄYTTÖÖN

KÄYTTÖVALTUUSHALLINTA (KVH) 1 (14) Käyttöohje rekisterinpidon yhteyshenkilölle

Siirtyminen Outlook versioon

1. Kalenterin omistajan käyttöohje

7. Resistanssi ja Ohmin laki

Algoritmit 2. Luento 3 Ti Timo Männikkö

Numeropelissä 3x3-ruudukko sisältää luvut 1, 2,, 9. Tehtäväsi on järjestää ruudukko näin:

Algoritmit 2. Luento 3 Ti Timo Männikkö

OHJEET LUE TÄMÄ AIVAN ENSIKSI!

3. Kuvio taitetaan kuutioksi. Mikä on suurin samaa kärkeä ympäröivillä kolmella sivutahkolla olevien lukujen tulo?

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta Toteuta Pythonilla seuraava ohjelma:

VILLASUKAN PERUSOHJE. Lankamaailma

Mukaan.fi on oma verkkopalvelu juuri sinulle, joka olet kiinnostunut erityistä tukea käyttävien lasten, nuorten ja aikuisten elämästä.

Autokunto-ohjelmiston käyttöohjeet

Algoritmit 2. Luento 6 To Timo Männikkö

tempus.kpedu.fi Tuntitietojen kirjausjärjestelmän Ohje Versio KPAO juha.kykyri

Tehtävä Vastaus

Peltotuki Pron Lohkotietopankkimoduli tärkkelysperunalle

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

VSP webmail palvelun ka yttö öhje

Esimerkiksi jos käytössä ovat kirjaimet FFII, mahdolliset nimet ovat FIFI ja IFIF. Näistä aakkosjärjestykssä ensimmäinen nimi on FIFI.

Asennus ja käyttöopas

SoleCRIS PIKAOHJE ASIANTUNTIJATEHTÄVIEN JA JULKAISUJEN TALLENTAMISTA VARTEN

Datatähti alkukilpailu

mytnt Quick Guide mytnt-käyttäjän pikaopas mytnt - Helppoa, nopeaa ja vaivatonta - suomeksi.

Siltaaminen: Piaget Matematiikka Inductive Reasoning OPS Liikennemerkit, Eläinten luokittelu

Matikkaa KA1-kurssilaisille, osa 3: suoran piirtäminen koordinaatistoon

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Etunimi. Sukunimi. Oppimistavoite: ymmärtää, kuinka positiiviset ja negatiiviset magneettiset navat tuottavat työntö- ja vetovoimaa.

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Scratch ohjeita. Perusteet

Olemme työskennelleet todella paljon viimeiset vuodet Iso-Britanniassa, ja ollakseni rehellinen, työ on vielä kesken.

OPINNÄYTETYÖ MALLIPOHJAN KÄYTTÖOHJE

UpdateIT 2010: Uutisten päivitys

Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan toistaminen silmukalla. Esimerkkejä:

Microsoft Lync Kaakkois-Suomen Ammattikorkeakoulu Oy Mikkelin Ammattikorkeakoulu Oy Kymenlaakson Ammattikorkeakoulu Oy

2 Suomen kielen äänteet

Kenguru 2012 Junior sivu 1 / 8 (lukion 1. vuosi)

KÄYTTÖOHJE. Servia. S solutions

Comet pysäköintimittarin asennus ja kytkeminen tietokoneeseesi (Windows XP) USB-kaapelilla.

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

LUKUKORTIT Lukukorteista on moneksi Toiminnallista matematiikkaa luokille. Riikka Lyytikäinen Liikkuva koulu Helsinki 2016

Lefkoe Uskomus Prosessin askeleet

Kenguru 2006 sivu 1 Cadet-ratkaisut

Algoritmit 1. Luento 9 Ti Timo Männikkö

Kennelliiton Omakoira-jäsenpalvelu Ohje Kennelpiireille, osoitelistat

Kyläsivujen InfoWeb-ohje

WINDOWS 10 -kurssi.

Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

Office_365_loppukäyttäjän ohje Esa Väistö

Opetuksen suunnittelu

Harjoitus 1 -- Ratkaisut

Ilmaislehti (Kotisuora Premium) palvelun tilaaminen

Octo käyttöohje 1. Sisältö

SAC RDS Futurline MAX Tupla-robotin ohjeet näytteenottoon ja päivämaidon lähetykseen

Valmistelut: Aseta kartiot numerojärjestykseen pienimmästä suurimpaan (alkeisopiskelu) tai sekalaiseen järjestykseen (pidemmälle edenneet oppilaat).

Windows 8.1:n vaiheittainen päivitysopas

Kompassi Suoritusten tarkistaminen ja tulosten julkaisu

,QWHUQHWVHODLPHQNl\WWlPLQHQ±,QWHUQHW([SORUHU

Esitysgrafiikka (20 pistettä)

.. X JOHDATUS TEKOÄLYYN TEEMU ROOS

Ohje internetkarttapalveluun

Impedanssitomografia-peli

STS Uuden Tapahtuma-dokumentin teko

Eye Pal Solo. Käyttöohje

1 Visma L7 päivitysaineiston nouto

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

DIGITAALISEN TARINAN TUOTTAMINEN MICROSOFT PHOTO STORY 3- OHJELMAN AVULLA VAIHEINEEN

Palvelupyyntöjärjestelmä. Asiakkaan ohje

Uutiskirjesovelluksen käyttöohje

Eikev 5. Moos 7: 12-11: 25

Tehtävät. stressiin liittyvät tehtävät 1 5. Minun stressini. Stressin monet puolet

Hakusuosikit. Unifaun Online

DL SOFTWARE Uumajankatu 2 Umeågatan FIN VAASA/VASA FINLAND +358-(0) Fax +358-(0)

Jamboree villasukkien ohje

= 3 = 1. Induktioaskel. Induktio-oletus: Tehtävän summakaava pätee jollakin luonnollisella luvulla n 1. Induktioväite: n+1

Oppilaan opas. Visuaaliviestinnän Instituutti VVI Oy. Versio 0.2 ( )

Tarvikkeet: A5-kokoisia papereita, valmiiksi piirrettyjä yksinkertaisia kuvioita, kyniä

- Kuvan osoittamalla tavalla klikkaa kohtaa Tallenna Tiedosto. - Esimerkissämme Firefox selaimessa latauspalkki näyttää tältä

Kotisuora tuotteen perusedellytykset

Transkriptio:

A* Reitinhaku Aloittelijoille Alkuperäisen artikkelin kirjoittanut Patrick Lester, suomentanut Antti Veräjänkorva. Suom. huom. Tätä kääntäessäni olen pyrkinyt pitämään saman alkuperäisen tyylin ja kerronnan. Olen kuitenkin joutunut ottamaan joitain käännöksellisiä vapauksia. Artikkelista on käännetty vain osa joka varsinaisesti käsittelee A* algoritmia. Loput artikkelista alkaen kohdasta Notes On Implementation jätin kääntämättä, koska se ei ollut minusta tarpeellista algoritmin ymmärtämiseen. Kommentteja käännöksestä voi lähettää osoitteeseen antti@verajankorva.com, jos olet kiinnostunut muista artikkeleistani niin käy sivuillani www.verajankorva.com. A* (eli A-tähti) voi olla aloittelijalle monimutkainen. Vaikkakin on olemassa monia artikkeleita jotka selittävät A* algoritmin, monet niistä on kirjoitettu ihmisille jotka jo ymmärtävät perusteet. Tämä artikkeli on tarkoitettu todellisille aloittelijoille. Tämä artikkeli ei yritä tutkia aihetta syvällisesti, vaan valmistelee sinua kertomalla perusteet, jotta pystyt ymmärtämään muut syvällisemmin aihetta tutkivat artikkelit. Tämä artikkeli ei myöskään ole ohjelmistoriippuvainen. Sinun pitäisi pystyä käyttämään tätä tietoa millä tahansa ohjelmointikielellä. Kuitenkin, kuten ehkä arvasitkin, olen lisännyt artikkelin loppuun linkin esimerkkiohjelmaan (suom. huom. Linkki on alkuperäisessä artikkelissa). Paketti sisältää kaksi versiota: yksi kirjoitettu C++:lla ja toinen Blitz Basic:lla. Ne myös sisältävät suoritettavat tiedostot, jos haluat nähdä A*:in toiminnassa. Mutta nyt olemme menossa asioiden edelle. Aloitetaanpa aivan alusta Esipuhe: Hakualue Oletetaan, että meillä on jokin joka haluaa päästä pisteestä A pisteeseen B. Oletetaan, että seinä erottaa nämä kaksi pistettä. Tilanne on esitetty alla, vihreä neliö on aloituspiste, punainen loppupiste ja sininen alue edustaa seinää pisteiden välissä.

[Kuva 1] Ensimmäinen asia, joka sinun tulee huomata, on että olemme jakaneet hakualueen neliöverkoksi. Hakualueen yksinkertaistaminen, kuten olemme tässä tehneet, on ensimmäinen askel reitinhaussa. Tämä nimenomainen tapaus yksinkertaistaa hakualueen yksinkertaiseen kaksiulotteiseen taulukkoon. Jokainen solu edustaa yhtä verkon neliötä ja sillä on tieto onko neliö käveltävissä oleva neliö vai este. Reitti löydetään selvittämällä neliöt, joita pitkin pääsee pisteestä A pisteeseen B. Reitin löydyttyä kohteemme liikkuu neliön keskipisteestä seuraavan neliön keskipisteeseen, kunnes saavuttaa päätepisteen. Näitä keskipisteitä sanotaan solmuiksi. Kun luet reitinhausta jostain toisesta lähteestä, niin huomaat usein ihmisten puhuvan solmuista. Miksi ei vain sanoa niitä neliöiksi? Koska on mahdollista jakaa hakualue muihinkin muotoihin kuin vain neliöihin. Ne voivat olla neliöitä, heksagoneja, kolmioita tai mitä tahansa muotoja. Ja solmut voivat olla missä tahansa kohtaa kuvioita keskellä tai reunoilla tai missä tahansa. Me käytämme tässä neliöitä ja keksikohtaa, koska se on yksinkertaisin. Haun aloittaminen Kun olemme yksinkertaistaneet hakualueen hallittavaan määrään solmuja, kuten olemme tehneet kuvassa 1, seuraava askel on suorittaa haku ja löytää lyhin mahdollinen reitti. Teemme tämän aloittamalla neliöstä A ja tarkistamalla viereiset neliöt ja jatkaen tarkistamista ulospäin kunnes löydämme loppuneliön. Aloitamme haun tekemällä seuraavat toimet: 1. Aloita alkuneliöstä ja lisää se ns. avoimeen listaan. Avoin lista on kuin ostoslista. Juuri nyt siellä on vain yksi esine, mutta lisäämme sinne kohta lisää. Se sisältää neliöt jotka mahdollisesti ovat reitillämme, mutta eivät välttämättä ole. Eli se on lista neliöistä jotka tulee tarkistaa. 2. Etsi jokainen käveltävissä oleva neliö, jotka ovat alkuneliön naapureita ja lisää ne avoimeen listaan. Älä huomioi neliöitä, jotka on merkitty esteiksi, kuten vesi, seinä tai jokin muu este. Jokaiseen neliöön, jonka lisäät avoimeen listaan, merkiste niiden isäntäneliöksi alkuneliö. Tämä hierarkkisuus on tärkeää sitten, kun haluamme jäljittää reittimme. Tästä lisää myöhemmin. 3. Poista A neliö avoimesta listasta ja lisää se suljettuun listaan, neliöt joita ei tarvitse etsiä juuri nyt. Tässä vaiheessa sinulla tulisi olla jotain alla olevan kuvan kaltaista. Kuvassa vihreällä täytetty neliö on aloitusneliö. Sen reunat ovat vaaleansiniset, joka kertoo, että neliö on lisätty suljettuun listaan. Muut neliöt ovat lisätty avoimeen listaan ja siksi ne ovat ympäröity vihreällä ympärysviivalla. Harmaat osoittimet osoittavat isäntäneliötä kohti, joka tässä tapauksessa on alkupiste.

[Kuva 2] Seuraavaksi valitsemme yhden neliön avoimesta listasta ja enemmän tai vähemmän toistamme aiemman prosessin, mutta minkä neliön valitsemme? Sen jolla on matalin F hinta. Reitin Pisteytys Ratkaisu siihen minkä neliön valitsemme selvittäessämme reittiä, on seuraava kaava. Missä F = G + H G = liikkumisen hinta aloitusneliöstä annettuun neliöön hakualueella. H = arvioitu liikkumisen hinta annetusta neliöstä loppuneliöön. Tähän viitataan usein nimellä heuristiikka, joka voi olla hämäävää. Syy miksi sitä kutsutaan niin, on siinä että se on arvaus. Emme vielä tiedä paljonko matka loppuneliöön maksaa ennen, kuin olemme selvittäneet reitin sillä matkalla saattaa olla esteitä. Annan sinulle yhden tavan laskea H:n, mutta on olemassa monia muitakin joita löydät muista artikkeleista ympäri internetiä. Reittimme on selvitetty käymällä toistuvasti läpi avointa listaa ja valitsemalla neliö, jolla on matalin F arvo. Käymme tätä prosessia tarkemmin läpi, myöhemmin tässä artikkelissa. Ensin katsotaan hieman tarkemmin miten laskemme yllä olevan kaavan. Kuten mainittu G on hinta sen hetkiseen neliöön käyttämällä siihen asti selvitettyä reittiä. Tässä artikkelissa asetamme pysty ja poikittaisliikkeen hinnaksi 10 ja vinoittaisliikkeen hinnaksi 14. Käytämme näitä numeroita, koska ne ovat likiarvoja oikeista etäisyyksistä, jos neliö on 10*10 kokoa, niin vinoittainen etäisyys on d = x 2 + y 2, joka siis on noin 14.14 eli me vain pyöristämme sen lähimpään kokonaislukuun. Näin voimme pitää luvut kokonaislukuina eikä meidän tarvitse murehtia neliöjuurista ja neliön aspekti on edelleen riittävän oikein. Emme myöskään tee tätä siksi olemme tyhmiä emmekä osaa matematiikkaa vaan koska kokonaisluvut ja yksinkertainen matematiikka on tietokoneella nopeaa laskea. Kuten tulet kohta huomaamaan reitinhaku voi todella hidasta, ellet tee tällaisia oikopolkuja. Koska laskemme G arvon pitkin tunnettua reittiä, niin tapa jolla saamme uuden G arvon laskettua, on lisätä 10 tai 14 isäntäneliön G arvoon riippuen siitä mihin suuntaan kuljetaan. Tarve tähän tulee ilmeiseksi hieman tuonnempana, kun olemme enemmän kuin yhden neliön päässä alkupisteestä. H voidaan laskea monin tavoin. Tapa jota käytämme tässä on nimeltään Manhattanin tapa, jossa lasketaan kaikki neliöt vaaka ja pystysuunnissa loppupisteeseen asti, jättäen huomioimatta vinottaissuunta ja mahdolliset esteet. Lopuksi vielä kerromme saatujen ruutujen määrän kymmenellä, koska se on leveys ja pystysuunnan hinta. Tämä on (ehkä) nimeltään Manhattanin tapa, koska se on ikään kuin laskisi kaupungin kortteleita yhdestä paikasta toiseen, etkä voi ylittää korttelia vinottain. Luettuasi tämän selityksen saatat luulla, että heuristiikka on vain hyvin epämääräinen, sinnepäin oleva etäisyys nykyisestä pisteestä loppupisteeseen. Näin ei ole. Me todella yritämme arvioida oikeaa etäisyyttä, koska mitä lähemmäs oikeaa etäisyyttä osumme sitä nopeammin algoritmi toimii. Arviomme tulee kuitenkin aina olla ennemmin lyhyempi, kuin oikea etäisyys. Liian suuri arvio ei aina takaa, että löydämme lyhimmän reitin.

Tässä artikkelissa Manhattanin tapa itseasiassa antaa liian suuren arvion, mutta se ei tässä aiheuta juurikaan ongelmaa ja tämä tapa on meidän tapauksessamme helppo ymmärtää ja arvio on liian suuri vain hyvin vähän. Harvoissa tapauksissa saatu reitti ei ole kaikkein lyhyin, mutta se on silloinkin hyvin lähellä sitä. F lasketaan lisäämällä G ja H yhteen. Ensimmäisen askeleen tulokset ovat näkyvillä alle olevassa kuvassa. F, G ja H arvot on kirjoitettu jokaiseen neliöön. Kuten on nähtävissä neliöstä heti alkuneliöstä oikealla olevasta neliöstä, F on kirjoitettu ylös, G alhaalla vasemmalla ja H alhaalla oikealla. [Kuva 3] Katsotaanpa joitain neliöitä. Neliö jossa on kirjaimia, G=10. Tämä koska se on yksinkertaisesti viereinen neliö vaakasuunnassa. Neliöissä alhaalla, ylhäällä ja vasemmalla on kaikilla sama G arvo, 10. Vinoittaissuuntaisilla neliöllä G on 14. H arvot on arvioitu Manhattain tavalla, siitä neliöstä punaiseen neliöön eli loppuneliöön, liikkuen vain pysy ja vaakasuunnissa ja jättäen seinä huomiotta. Käyttäen tätä tapaa, neliö heti oikealla on kolmen neliön päässä punaisesta neliöstä eli H on 30. Neliö tämän neliön yllä on neljän neliön päässä (muista, vain pysty ja vaakasuunnissa) eli H on 40. Ymmärrätkin jo varmasti miten H arvot muihin neliön on laskettu. F arvo jokaiseen neliöön, on edelleen yksinkertaisesti lisäämällä G ja H yhteen. Jatketaan hakua Jatkaaksemme hakua, me yksinkertaisesti valitsemme sen neliön avoimesta listasta jolla on matalin F arvo ja suoritamme seuraavan prosessin: 4. Poista neliö avoimesta listasta ja lisää se suljettuun listaan. 5. Tarkista kaikki naapurineliöt. Jätä esteet ja suljetussa listassa olevat solut huomiotta ja lisää neliöt avoimeen listaan elleivät jo ole siellä. Aseta valittu neliö isäntäneliöksi neliölle, jotka lisäät avoimeen listaan. 6. Jos naapurineliö on jo avoimessa listassa, tarkista onko olemassa oleva reitti parempi kuin uusi. Toisin sanoen, tarkista onko naapurineliön olemassa oleva G arvo pienempi, kuin se jonka

saisimme jos kulkisimme sinne valitun neliön kautta. Jos ei, niin älä tee mitään. Jos taas on niin vaihda valitun naapurineliön isäntäneliöksi valittu neliö ja laske naapurineliön F ja G uudestaan. Jos tämä tuntuu hankalalta näet sen esitettynä alla olevassa kuvassa. Noniin katsotaanpa kuinka tämä toimii. Alkuperäisistä yhdeksästä neliöstä on nyt kahdeksan jäljellä, kun alkuneliö on lisätty suljettuun listaan. Näistä neliöllä suoraan oikealla on matalin F arvo arvolla 40. Valitsemme siis tämän neliön seuraavaksi neliöksi. Se on korostettu sinisellä seuraavassa kuvassa. [Kuva 4] Ensin poistamme neliön avoimesta listasta ja lisäämme sen suljettuun listaan (siksi se on kuvassa sinisellä). Sitten käymme läpi naapurineliöt. Neliöt heti oikealla on seinäneliöitä, joten hyppäämme suoraan seuraavaan neliöön. Neliö heti vasemmalla on aloitusneliö, joka suljetussa listassa, joten hyppäämme senkin yli. Toiset neljä neliötä ovat avoimessa listassa, joten meidän pitää tarkistaa onko reitti naapurineliöön valitusta neliöstä parempi kuin nykyinen, käyttämällä G arvoa. Katsotaanpa neliötä suoraan valitun neliön alapuolella. Sen nykyinen G arvo on 14. Jos me menisimme tähän neliöön valitun neliön kautta, G arvo olisi 20 (Nykinen G eli 10 ja 10 kun liikkuisimme yhden neliön alaspäin). G arvo 20 suurempi kuin 14, eli uusi reitti ei olisi parempi. Tämä pitäisi käydä selväksi katsomalla yllä olevaa kuvaa. On selvästi suorempi reitti kulkea neliöön vinoittain aloitusneliöstä, kuin menemällä ensin vaakasuunnassa yhden neliön ja sitten pystysuunnassa toinen. Eli jatkamme avointa listaa eteenpäin, jossa on nyt 7 neliötä ja valitsemme neliön matalimmalla F arvolla. Mielenkiintoisesti tässä kohtaa kahdella neliöllä on sama F arvo 54. Kumpi valitaan? Sillä ei ole mitään väliä. Saattaa olla optimaalisempaa valita se neliö, jonka lisäsit listaan viimeisempänä. Tämä kuitenkin tekee hausta puolueellisen niille neliöille jotka on lisätty jäljempänä, kun pääset lähemmäs loppupistettä. Kuten sanottu ei ole oikeastaan väliä kumman neliön valitset. (Erot siinä miten tasatilanteet hoidetaan, on syynä siihen miksi A* saattaa antaa eri reitin tilanteissa, jossa arvioitu etäisyys on sama usealla neliöllä). Eli valitaan neliö suoraan alapuolelta, ja oikealle aloitusneliöstä, kuten esitetty seuraavassa kuvassa.

[Kuva 5] Tällä kertaa kun käymme läpi naapurineliöitä huomaamme, että neliö heti oikealla on seinä, eli hypätään yli, samoin myös neliö tämän yläpuolella. Hyppäämme niin ikään yli neliöstä seinän alapuolella. Miksi? Koska et pääse neliöön ilman, että ylittäisit samalla hiukan seinäneliötä. Sinun tarvitsee mennä ensin alas ja sitten oikealle, kiertäen seinän reunaa. (Tämä kulmienylityssääntö on vaihtoehtoinen ja riippuu siitä miten solmusi on aseteltu.) Tämä jättää viisi muuta neliötä. Kaksi nykyisen neliön alapuolella eivät vielä ole avoimessa listassa, joten lisää ne siihen ja aseta nykyinen neliö niiden isäntäneliöksi. Kolmesta jäljellä olevasta neliöstä kaksi on jo suljetussa listassa (aloitusneliö ja neliö heti nykyisen yläpuolella, kumpikin merkitty sinisellä), joten hypätään yli. Jäljellä jää neliö vasemmalla. Tarkista onko G arvo parempi nykyistä reittiä vai olisiko uusi mahdollisesti parempi. Ei ole. Olemme valmiit ja voimme siirtyä tarkistamaan seuraavaa neliötä avoimesta listasta. Toistamme tätä prosessia, kunnes lopulta lisäämme loppuneliön suljettuun listaan, missä vaiheessa tilanne on seuraavan kuvan kaltainen.

[Kuva6] Huomaa, että kaksi neliötä alkuneliöstä alaspäin olevan neliön isäntäneliö on vaihtunut sitten viime kuvan. Aikaisemmin sen G oli 28 ja sen isäntäneliö oli oikeassa yläviistossa. Nyt G on 20 ja isäntäneliö suoraan ylhäällä. Tämä tapahtui jossain vaiheessa hakua, missä G arvo oli tarkistettu ja uusi reitti tuotti paremman tuloksen joten isäntäneliö ja G ja F arvot laskettu uudelleen. Tämä ei sattunut olemaan merkityksellistä tässä esimerkissä, mutta toisissa tilanteissa tällä voi olla todella suuri vaikutus lyhimmän reitin löytymiseen. Miten sitten saamme reitin? Yksinkertaista, aloita loppuneliöstä ja palaa takaisin liikkuen neliöstä neliöön isäntäneliöiden perusteella. Tämä lopulta tuo sinut takaisin alkuneliöön ja kulkemasi neliöt on reittisi. Nykyinen tilanne on esitetty seuraavassa kuvassa. Liikkuminen A pisteestä B pisteeseen on yksinkertaisesti liikkumista reittineliöiden keskeltä toiseen (solmu), kunnes ollaan loppupisteessä.

[Kuva 7] Yhteenveto A* algoritmista No niin, nyt olet käynyt läpi selityksen, tehdään aiheesta vielä askel askeleelta yhteenveto. 1. Lisää alkuneliö avoimeen listaan. 2. Toista seuraavaa: a. Etsin avoimesta listasta neliö, jolla on matalin F arvo. Kutsumme tätä nykyiseksi neliöksi. b. Siirrä se suljettuun listaan. c. Jokaiselle naapurineliölle: i. Jos neliö on este tai se on suljetussa listassa, niin jätä se huomiotta. Muutoin tee seuraavaa. ii. Jos neliö ei ole avoimessa listassa, niin lisää se sinne. Merkitse nykyinen neliö sen isäntäneliöksi. Laske F, G ja H. iii. Jos neliö on jo avoimessa listassa, tarkista onko reitti parempi jos käytät nykyistä neliötä päästäksesi avoimen listan neliöön. Jos on niin laske avoimen listan neliön G ja F uudestaan ja vaihda isäntäneliö valittuun neliöön. d. Lopeta kun: i. Kun loppuneliö on siirretty suljettuun listaan, missä tapauksessa reitti on löytynyt. ii. Ei onnistunut löytämään loppuneliötä ja avoin lista on tyhjä. Jolloin reittiä ei löytynyt. Lisää aiheesta alkuperäisessä artikkelissa http://www.policyalmanac.org/games/astartutorial.htm