ALGORITAM A ALGORITAM A PRETRAGA ILI ALGORITAM A

  • Slides: 14
Download presentation
ALGORITAM A*

ALGORITAM A*

ALGORITAM A* PRETRAGA ILI ALGORITAM A* Jedan od fundamentalnih i najpopularnijih algoritama veštačke inteligencije

ALGORITAM A* PRETRAGA ILI ALGORITAM A* Jedan od fundamentalnih i najpopularnijih algoritama veštačke inteligencije za određivanje najkraćeg puta između dva čvora grafa. Zasnovan na korišćenju heuristika Ima svojstvo potpunosti i optimalnosti Algoritam A* je varijanta algoritma Prvo najbolji u kojoj se koristi funkcija evaluacije f definisana na sledeći način: f(n) = g(n) + h(n) gde je g(n) cena puta od polaznog čvora do čvora n, a h(n) je procenjena(heuristička) cena najjeftinijeg puta od čvora n do ciljnog čvora.

OSOBINE Dok se traga za najkraćim putem, uvek se zna tekuća minimalna cena od

OSOBINE Dok se traga za najkraćim putem, uvek se zna tekuća minimalna cena od polaznog čvora do čvora n tj. tekuća vrednost g(n), ali se vrednost h(n) može samo procenjivati. Od kvaliteta heuristike zavisi ponašanje i efikasnost algoritma. Izbor kvalitetne heuristike jedan je od najvažnijih izazova u dizajniranju konkretnih implementacija algoritma A*.

OSOBINE ALGORITMA Algoritam A* traži optimalno rešenje , tj. otkriva najbolji put do ciljnog

OSOBINE ALGORITMA Algoritam A* traži optimalno rešenje , tj. otkriva najbolji put do ciljnog čvora i zato za svaki čvor na koji naiđe proverava da li je do njega ranije već bio pronađen neki lošiji put i , ako jeste, zamenjuje ga novim, boljim putem. Ovakva provera je u algoritmu Prvo najbolji bila opciona, a u algoritmu A* je obavezna.

A* VS DEJKSTRIN ALGORITAM Algoritam A* je uopštenje Dejkstrinog algoritma Čvorovi koje tek treba

A* VS DEJKSTRIN ALGORITAM Algoritam A* je uopštenje Dejkstrinog algoritma Čvorovi koje tek treba obraditi čuvaju se u listi, sortiranoj prema nekom kriterijumu. Često ispituje manje čvorova nego Dejkstrin algoritam Smanjenje proističe iz korišćenja heuristike koja procenjuje donju granicu daljine do ciljnog čvora Dejkstrin algoritam uzima u obzir samo cenu od polaznog do tekućeg čvora – vrednost g(m), a A* koristi vrednost funkcije evaluacije f(m)=g(m)+h(m)

ALGORITAM A* Ulaz : Graf G, polazni čvor i ciljni čvor Izlaz: najkraći put

ALGORITAM A* Ulaz : Graf G, polazni čvor i ciljni čvor Izlaz: najkraći put od polaznog do ciljnog čvora (ako postoji put između ova dva čvora) 1. Zatvorena lista je inicijalno prazna, a otvorena lista sadrži samo polazni čvor 2. Izvršavaj dok god ima elemenata u otvorenoj listi: Izaberi čvor n (tekući čvor) iz otvorene liste koji ima najbolju ocenu f(n) Ako je n ciljni čvor, izvesti o uspehu i vrati rešenje konstruišući put od polaznog do ciljnog čvora (idući unazad)

NASTAVAK. . . Za svaki čvor m koji je direktno dostupan iz n uradi

NASTAVAK. . . Za svaki čvor m koji je direktno dostupan iz n uradi sledeće: Ako m nije ni u otvorenoj ni u zatvorenoj listi, dodaj ga u otvorenu listu i označi n kao njegovog roditelja. Izračunaj i pridruži vrednost f(m) čvoru m Inače, proveri da li je put od polaznog čvora do čvora m preko čvora n bolji (kraći ili jeftiniji) od postojećeg puta do m (trenutna vrednost g(m)). Ako jeste, promeni informaciju o roditelju čvora m na čvor n i ažuriraj vrednosti f(m), a ako je m bio u zatvorenoj listi, prebaci ga u otvorenu Izbaci n iz otvorene liste i dodaj ga u zatvorenu 3. Izvesti da traženi put ne postoji (otvorena lista je prazna i uspeh nije prijavljen)

TOK ALGORITMA Prilikom dodavanja čvora m u otvorenu listu vrednost g(m) može se izračunati

TOK ALGORITMA Prilikom dodavanja čvora m u otvorenu listu vrednost g(m) može se izračunati na efikasan način: Vrednost g(m) jednaka je zbiru vrednosti funkcije g za roditelja čvora m i ceni puta od roditelja do m Ako algoritam naiđe na čvor m koj je već u otvorenoj ili zatvorenoj listi, to znači da je pronađen novi put do čvora m. Proverava se da li je put od polaznog čvora do već posećenog čvora m preko čvora n bolji od postojećeg puta. Ako jeste bolji, potrebno je ažurirati vrednost g(m). Ovo može da se desi i za čvor m koji pripada zatvorenoj listi, pa je potrebno čvor m ponovo ispitati kao otvoreni čvor.

SVOJSTVA ALGORITMA A* Može se dokazati da je algoritam A* potpun i da je

SVOJSTVA ALGORITMA A* Može se dokazati da je algoritam A* potpun i da je pod određenim uslovima optimalan.

POTPUNOST Ako su broj čvorova i broj akcija konačni, ako postoji put između dva

POTPUNOST Ako su broj čvorova i broj akcija konačni, ako postoji put između dva čvora, algoritam A* će , kao i svaki Prvo najbolji algoritam, naći jedan takav. Čak i ako je heuristička funkcija veoma loša, ciljni čvor će biti dostignut u konačnom broju koraka.

OPTIMALNOST Od svih puteva između dva data čvora, algoritam A* vratiće najkraći, tj. vratiće

OPTIMALNOST Od svih puteva između dva data čvora, algoritam A* vratiće najkraći, tj. vratiće optimalno rešenje ako je funkcija h dopustiva. Funkcija h je dopustiva ako nikada ne precenjuje stvarno rastojanje između tekućeg i ciljnog čvora, tj. ako za svaki čvor važi : 0 ≤ h(n )≤ h*(n) gde je h*(n) cena optimalnog puta od čvora n do ciljnog čvora.

KONZISTENTNOST FUNKCIJE Funkcija h je konzistentna ako ima vrednost 0 za ciljni čvor i

KONZISTENTNOST FUNKCIJE Funkcija h je konzistentna ako ima vrednost 0 za ciljni čvor i za bilo koja dva susedna čvora m i n važi: c(n, m) + h(m) ≥ h(n) gde je c(n, m) cena pridružena grani (n, m). Svaka konzistentna funkcija je dopustiva, ali obratno ne važi. Ako je funkcija h konzistentna, nije potrebno proveravati da li je put preko tekućeg čvora do jednom zatvorenog čvora bolji od postojećeg, jer sigurno nije. Ako je funkcija h konzistentna algoritam A* je optimalan i još jednostavniji nego u opštem slučaju.

ZADATAK U sledećem grafu zadatak je naći najkraći put od A do E. Pored

ZADATAK U sledećem grafu zadatak je naći najkraći put od A do E. Pored čvorova grafa zapisane su procenjene dužine puta do čvora E, tj. vrednosti funkcije h.

REŠENJE Tekući čvor Stanje otvorene liste [čvor (roditelj, g+h )] U zatvorenu listu se

REŠENJE Tekući čvor Stanje otvorene liste [čvor (roditelj, g+h )] U zatvorenu listu se dodaje A(-, 0+6) A(6) D(A, 6+5), G(A, 5+6) A(-) D(11) G(A, 5+6), F(D, 9+3), H(D, 9+4), C(D, 10+6) D(A) G(11) F(D, 9+3), H(D, 9+4), C(D, 10+6) G(A) F(12) B(F, 12+1), H(D, 9+4), C(D, 10+6) F(D) B(13) H(D, 9+4), E(B, 14+0, ) C(D, 10+6) B(F) H(13) B(H, 11+1), E(B, 14+0), C(D, 10+6) H(D) B(12) E(B, 13+0), C(D, 10+6) B(H) E(13) C(D, 10+6)