Professional Documents
Culture Documents
VI PDF
VI PDF
le
E
ro
n
sk
o
d
iz
an
je
(2
01
6)
kt
le
E
ro
n
sk
o
d
iz
an
je
(2
01
6)
Mladen Nikolic
(2
01
6)
Predrag Janicic
le
kt
ro
n
sk
o
iz
an
je
CKA
VESTA
INTELIGENCIJA
Beograd
2016.
Autori:
dr Predrag Janicic, redovni profesor na Matematickom fakultetu u Beogradu
dr Mladen Nikolic, docent na Matematickom fakultetu u Beogradu
CKA
VESTA
INTELIGENCIJA
Izdavac: Matematicki fakultet Univerziteta u Beogradu
Studentski trg 16, 11000 Beograd
Za izdavaca: prof. dr Zoran Rakic, dekan
Recenzenti:
...
...
le
kt
ro
n
sk
o
iz
an
je
(2
01
6)
ISBN 978-86-7589-100-0
Ovo delo zasticeno je licencom Creative Commons CC BY-NC-ND 4.0 (Attribution-NonCommercial-NoDerivatives 4.0
International License). Detalji licence mogu se videti na veb-adresi http://creativecommons.org/licenses/by-nc-nd/
4.0/. Dozvoljeno je umnozavanje, distribucija i javno saopstavanje dela, pod uslovom da se navedu imena autora.
Upotreba dela u komercijalne svrhe nije dozvoljena. Prerada, preoblikovanje i upotreba dela u sklopu nekog drugog nije
dozvoljena.
Sadrzaj
(2
01
6)
Sadrzaj
1 Uvod
Pretraga
11
13
19
je
sk
o
iz
4 Informisana pretraga
27
Pohlepna pretraga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Pretraga prvo najbolji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Algoritam A* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
ro
n
4.1
4.2
4.3
3 Neinformisana pretraga
3.1
3.2
an
2.1
2.2
2.3
45
kt
le
47
kt
le
E
ro
n
sk
o
d
iz
an
je
(2
01
6)
kt
le
E
ro
n
sk
o
d
iz
an
je
(2
01
6)
Predgovor
kt
le
E
ro
n
sk
o
d
iz
an
je
(2
01
6)
kt
le
E
ro
n
sk
o
d
iz
an
je
(2
01
6)
Glava 1
Uvod
kt
le
E
ro
n
sk
o
d
iz
an
je
(2
01
6)
kt
le
E
ro
n
sk
o
d
iz
an
je
Pretraga
(2
01
6)
Deo I
kt
le
E
ro
n
sk
o
d
iz
an
je
(2
01
6)
Glava 2
iz
an
je
(2
01
6)
Vestacka inteligencija bavi se, prevashodno, problemima u kojima se javlja kombinatorna eksplozija, problemima cije resavanje zahteva razmatranje ogromnog broja mogucnosti. Resavanje takvih problema obicno se
svodi na neku vrstu pretrage, sistematicnog postupka obrade velikog broja mogucnosti. Kako je sve mogucnosti
cesto nemoguce razmotriti u razumnom vremenu, potrebno je pretragu usmeravati kako bi se razmotrile mogucnosti
koje su izglednije da daju resenje problema. Neke od realnih primena algoritama pretrage su pronalazenje najkracih puteva, igranje logickih igara, navigacija robota, automatsko nalazenje redosleda sklapanja delova u
industriji, dizajn proteina sa odredenim trazenim svojstvima, resavanje logistickih problema i slicno.
Problemi pretrage cesto zahtevaju pronalazenje niza koraka ili akcija kojima se ostvaruje cilj kada to ne moze
biti ostvareno pojedinacnim koracima ili akcijama. Pretraga moze biti shvacena i sire, pa ce u daljem tekstu
biti opisani i neki problemi i algoritmi optimizacije.
Problemi i algoritmi pretrage mogu se opisati i u terminima agenata. U tom slucaju, smatra se da pretragu
sprovodi agent, da se agent tokom pretrage moze naci u razlicitim stanjima, da agent pokusava da dode do
zavrsnog stanja, itd. Takva formulacija ne menja nista sustinski u problemu ili algoritmima, ali moze biti
pogodna zbog uniformnosti kroz razlicite podoblasti vestacke inteligencije.
Primer 2.1. Slagalica 15 (ili Lojdova slagalica) sastoji se od 15 kvadrata rasporedenih na tabli velicine 4x4
le
kt
ro
n
sk
o
polja. Kvadrati su numerisani brojevima od 1 do 15. Slagalicu je potrebno urediti tako da su polja poredana
redom od prvog reda i da je poslednje polje u cetvrtom redu prazno. Taj raspored polja moze se kompaktno
zapisati kao [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, _] i prikazan je na slici 2.1.
9 10 11 12
13 14 15
Slika 2.1: Ciljni raspored za slagalicu 15
Kada je dat proizvoljan raspored polja na tabli, u svakom koraku moze se pomeriti jedno od dva ili jedno od
tri ili jedno od cetiri polja. Dakle, za svaki raspored broj mogucih akcija je izmedu dva i cetiri. Naredna slika
ilustruje razmatranje svih mogucih koraka za pocetni raspored [_, 2, 3, 4, 6, 5, 10, 12, 9, 1, 8, 15, 13, 14, 7, 11].
Slagalicu je moguce sloziti tako sto se razmatraju svi moguci koraci, a zatim svi moguci koraci u dobijenim
stanjima i tako dalje, sve dok se ne naide na trazeni, ciljni raspored. Ocigledno, taj pristup sigurno dovodi do
resenja za bilo koju pocetnu poziciju. Isto tako, ocigledno je da je taj pristup potpuno nepraktican i zahteva
razmatranje ogromnog broja mogucnosti. Zaista, za proizvoljnu pocetnu poziciju, slagalicu je moguce sloziti u
najvise 80 koraka, pri cemu postoje pocetne pozicije za koje ne postoji resenje u manje od 80 koraka. To znaci
da je za garantovano pronalazenje resenja potrebno ispitati vise od 280 mogucnosti, sto je naravno prakticno
neizvodivo. Zbog toga, prakticno sprovodivo resenje zahteva neku dodatnu ideju i usmeravanje pretrage, kako
13
14
2 3 4
6 5 10 12
9 1 8 15
13 14 7 11
2 3 4
6 5 10 12
9 1 8 15
13 14 7 11
6 2 3 4
5
10 12
9 1 8 15
13 14 7 11
2
3 4
6 5 10 12
9 1 8 15
13 14 7 11
6 2 3 4
9 5 10 12
1 8 15
13 14 7 11
2 3 4
6 5 10 12
9 1 8 15
13 14 7 11
an
iz
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15
2 3
4
6 5 10 12
9 1 8 15
13 14 7 11
je
...
2 5 3 4
6
10 12
9 1 8 15
13 14 7 11
(2
01
6)
6 2 3 4
5 10 12
9 1 8 15
13 14 7 11
sk
o
kt
ro
n
ne bi bile razmatrane sve mogucnosti. Jedna moguca ideja bi bila da se razmatraju samo koraci koji vode do
pozicija koje su blize resenju, pri cemu se za odredivanje rastojanja pozicije od ciljne pozicije moze uzeti zbir
rastojanja svakog polja od njegove ciljne pozicije. Medutim, ova jednostavna ideja ne dovodi do resenja. Naime,
u nekim pozicijama nema koraka koji vodi ka boljoj pozicijama (pozicija u korenu stabla na slici 2.2, je jedna
takva pozicija).
Primer 2.2. U skupu gradova od kojih su neki medusobno povezani putevima, zadatak je od jednog grada stici
le
do nekog drugog zadatog grada. Ovaj problem moze se razmatrati kao problem pretrage: pretraga moze da krece
od pocetnog grada, da se zatim razmatraju svi gradovi do kojih se moze doci neposredno, i tako dalje, sve dok
se ne dode do ciljnog grada. Primer ovakvog problema ilustrovan je na slici 2.3. Konkretan zadatak moze biti,
na primer, nalazenje puta od Zagreba do Bukuresta.
Bitno su razlicite varijante problema u kojoj jesu i u kojoj nisu unapred poznati svi gradovi i putevi izmedu
njih. U prvom slucaju, bitno je i da li su poznate duzine puteva izmedu gradova ili vazdusna rastojanja.
Primer 2.3. Jednu od najstarijih grupa matematickih problema cine geometrijski konstruktivni problemi. Zadatak je lenjirom i sestarom, na osnovu datih ogranicenja ili datih pocetnih tacaka, konstrusati trazenu geometrijsku
figuru. Lenjirom i sestarom moze se konstruisati prava koja je odredena dvema tackama, krug cije je srediste
jedna tacka i koji sadrzi drugu tacku, moguce je konstruisati presek dve prave i moguce je konstruisati presek
prave i kruga ovo su takozvane elementarne konstrukcije. I ovaj problem moze se razmatrati kao problem
pretrage: pretraga moze da krece od pocetnih figura, zatim se razmatraju svi moguci koraci (sve moguce primene
elementarnih konstrukcija nad postojecim figurama), i tako dalje, sve dok se ne dobije trazena figura.
Primer 2.4. Kao problem pretrage moze da se opise kretanje robota od polazne do ciljne tacke u nepoznatnom
okruzenju. Robot u vecini trenutaka moze da promeni smer i brzinu kretanja i u zavisnosti od tih akcija moze
do cilja da stigne pre ili kasnije.
Problemi pretrage obicno mogu da se pogodno reprezentuju grafovima (a i da se vizualizuju na odgovarajuci
nacin). Tada, cvorovi grafa odgovaraju stanjima, a grane grafa akcijama. Taj graf moze da bude usmeren ili
15
Zagreb
400
290
380
320
390
370
Sarajevo
230
170
840
640
Beograd
290
190
450
280
Podgorica
590
450
Bukurest
360
300
430
320
350
190
Skoplje
240
170
Sofija
(2
01
6)
iz
an
je
neusmeren neusmeren je ako za svako stanje iz kojeg se moze nekom akcijom doci do stanja , postoji
akcija kojom se iz stanja moze doci do stanja . U primeru slagalice, graf je neusmeren i svakom rasporedu
odgovara jedan cvor grafa. I u primeru gradova, taj graf je neusmeren, a svakom gradu odgovara jedan cvor
sk
o
2.1
ro
n
Da bi se neki problem razmatrao kao problem pretrage i resavao primenom algoritama pretrage, on treba
da ima odredenu strukturu i odredene elemente:
Skup mogucih stanja: U toku procesa pretrage razmatraju se razlicita stanja. Za odlucivanje u datom trenutku potrebno je poznavanje skupa svih raspolozivih stanja.
kt
Polazno stanje: Resavanja problema krece od jednog odredenog stanja, koje nazivamo polaznim stanjem.
le
Test cilja: Problem je resen ako se dode do ciljnog stanja, zavrsnog stanja. Potrebno je da postoji raspoloziv
efektivan test koji proverava da li se doslo do ciljnog stanja tj. do zavrsetka procesa pretrage.
Skup mogucih akcija: U svakom koraku pretrage moze se preduzeti neki korak, neka akcija. Niz akcija
preduzetih u odgovarajucim trenucima treba da dovede do resenja problema. Skup mogucih akcija moze
biti isti u svakom stanju ili moze da se razlikuje od stanja do stanja, sto zavisi od problema koji se resava.
Funkcija prelaska: Ova funkcija preslikava par stanje-akcija u novo stanje, dobijeno izborom neke akcije u
nekom stanju. Ukoliko ova funkcija nije poznata, nije poznato u koje ce se stanje dospeti posle preduzimanja odredene akcije i proces odlucivanja postaje kompleksniji. Funkcija prelaska nije poznata, na primer,
u slucaju delovanja u nepoznatoj ili promenljivoj okolini. Jedan nacin resavanja ovakvih problema je
koriscenjem informacija iz iskustva, odnosno aproksimiranjem ove funkcije pomocu procesa koji se zasniva
na analizi pokusaja i gresaka.
Cena akcije: Ovo je funkcija koja preslikava par stanje-akcija u numericku vrednost cenu preduzimanja
date akcije u datom stanju.
Kod nekih problema se nabrojani elementi lako i prirodno uocavaju, dok je kod drugih potrebna i preformulisanje problema.
Stanja koja su neposredno dostupna iz nekog stanja zovemo i susedima tog stanja a ponekad i decom tog
stanja.
16
Primer 2.5. Elementi problema iz primera 2.1 mogu biti definisani na sledeci nacin:
Skup stanja: skup svih permutacija [1 2 . . . 16 ] za {_, 1, 2, . . . , 15}.
Polazno stanje i zavrsno stanje: polazno stanje moze biti bilo koje stanje slagalice (za neke od njih ciljni
raspored nije moguce dobiti).
Test cilja: provera da li je stanje jednako [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, _].
Skup akcija: moze biti {, , , }, gde se date akcije odnose na pomeranje praznog polja levo,
desno, gore i dole. Iako je naizgled prirodnije kao akcije razmatrati pomeranje kvadrata susednih praznom
polju na prazno polje, ovakva formulacija je jednostavnija zbog uniformnosti.
Funkcija prelaska: preslikava stanja i akcije u stanja koja nastaju pomeranjem praznog polja na neku od
cetiri moguce strane.
(2
01
6)
Cena akcije: moze biti konstantna za svaku akciju (na primer, 1), posto se sva pomeranja mogu smatrati
jednako skupim. Cena resenja je u tom slucaju jednaka ukupnom broju pomeranja potrebnih za slaganje
slagalice.
Primer 2.6. Elementi problema stizanja iz jednog grada u drugi (primer 2.2) su:
je
Skup stanja: Skup gradova koji su dostupni iz polaznog grada (neposredno ili posredno).
an
iz
Skup mogucih akcija: Kretanje ka susednim gradovima (skup mogucih akcija u ovom problemu se razlikuje
od stanja do stanja, jer su za razlicite gradove razliciti i skupovi direktno dostupnih gradova).
Funkcija prelaska: Odredena je vezama izmedu gradova (i smerom u kojem se krece iz tekuceg grada).
sk
o
Cena akcije: Na primer, duzina puta ili cena goriva potrebnog za prevoz izmedu susednih gradova.
Primer 2.7. U slucaju kretanja robota (primer 2.4), bilo bi potrebno odrediti moguce smerove kretanja i diskre-
kt
2.2
ro
n
tizovati intervale u kojima se menja smer kretanja. Takode, bilo bi potrebno odluciti da li se pokreti razlicitim
delovima robota mogu preduzimati simultano ili ne. Posle toga bi se navedeni elementi problema mogli lako
definisati.
le
Resenje problema pretrage je niz koraka, akcija koji vode od polaznog stanja do ciljnog stanja. Svakom
resenju se moze pridruziti njegova cena kao suma cena akcija koje se preduzimaju. Optimalno resenje je resenje
sa najmanjom cenom. Ono ne mora biti jednoznacno definisano.
Kao i kod drugih vrsta algoritama, kod algoritama pretrage potrebno je poznavati njihova svojstva kako bi
se lakse izvrsio izbor pogodnog algoritma za dati problem. Najvaznija opsta svojstva koje algoritmi pretrage
mogu da imaju su sledeca:
Potpunost je svojstvo koje garantuje da ce algoritam naci neko resenje problema ako resenja uopste postoje.
Ovo svojstvo je ocito pozeljno, ali se u nekim slucajevima ne zahteva. Naime, u slucaju vrlo teskih
problema cesto je moguce formulisati heuristike koje ne garantuju pronalazenje resenja, ali u visokom
procentu slucajeva nalaze dobra resenja mnogo brze nego potpuni algoritmi.
Optimalnost je svojstvo koje garantuje nalazenje resenja sa najmanjom cenom. Moguce je da algoritam koji
nema ovo svojstvo cesto pronalazi resenja bliska optimalnim, ali u znacajno kracem vremenu.
Vremenska slozenost govori, kao i za druge vrste algoritama, o tome koliko ce vremena biti potrebno za
sprovodenje procesa pretrage. Obicno se razmatra vremenska slozenost najgoreg i prosecnog slucaja.
Prostorna slozenost govori, kao i za druge vrste algoritama, o tome koliko je memorije potrebno za sprovodenje
procesa pretrage. Obicno se razmatra prostorna slozenost najgoreg i prosecnog slucaja.
17
2.3
Prilikom resavanja nekog problema, moguci su razliciti stepeni poznavanja detalja samog problema. U
primeru pronalazenja puta od grada do grada (primer 2.2), moguce je na primer:
1. potpuno nepoznavanje rastojanja izmedu gradova;
2. poznavanje rastojanja samo izmedu susednih gradova (koja se, na primer, mogu procitati sa putokaza);
3. poznavanje vazdusnih rastojanja od svih gradova do ciljnog grada (koja se, na primer, mogu proceniti na
osnovu mape);
4. tacno poznavanje putnog rastojanja izmedu svih parova (ne nuzno susednih) gradova.
an
je
(2
01
6)
Prema dostupnosti informacija koje mogu pomoci u pronalazenju ciljnog stanja u toku pretrage, problemi
pretrage se dele na probleme informisane i neinformisane pretrage. U skladu sa tim, moguce je formulisati i
algoritme koji mogu da iskoriste dostupne informacije, pa stoga i algoritme delimo na algoritme informisane i
neinformisane pretrage.
U problemu iz primera 2.2, ako su raspolozive samo informacije o direktno dostupnim stanjima, u pitanju
je problem neinformisane pretrage i za resavanje je moguce koristiti standardne algoritme za pretragu u sirinu
ili u dubinu. Ukoliko su poznata vazdusna rastojanja izmedu gradova, ona bi se mogla iskoristiti kao procena
korisna za navodenje pretrage i u tom slucju bi problem pripadao grupi problema informisane pretrage. U tom
slucaju mogu se koristiti specijalizovani algoritmi u zavisnosti od vrste informacija koje su na raspolaganju.
Za problem pronalazenja najkracih puteva u grafu algoritam A* moze da iskoristi, na primer, informaciju o
euklidskom rastojanju izmedu cvorova u grafu. U slucaju problema igranja saha, egzaktan algoritam pretrage
minimax se moze kombinovati sa heuristickom procenom pozicije (na primer, koriscenjem informacije o figurama,
mogucnosti mata u malom broju poteza i slicno).
Pitanja i zadaci
iz
Pitanje 2.1. Navesti barem pet opstih elemenata svakog problema pretrage.
le
kt
ro
n
sk
o
Pitanje 2.2. Kako se, prema dostupnosti informacija koje mogu pomoci u pronalazenju ciljnog stanja u toku
pretrage, dele problemi pretrage?
kt
le
E
ro
n
sk
o
d
iz
an
je
(2
01
6)
Glava 3
(2
01
6)
Neinformisana pretraga
je
U svim problemima pretrage, podrazumeva se da je moguce opaziti tekuce stanje, preduzimati akcije i
prepoznati ciljno stanje. Specificno za neinformisanu pretragu (eng. uninformed) je to sto nema dodatnih
informacija koje mogu pomoci u pronalazenju ciljnog stanja. U primeru pronalazenja puta izmedu dva grada,
scenario neinformisane pretrage odgovara situaciji u kojoj se u svakom gradu zna koji je to grad, moguce je
izabrati jedan od puteva ka drugim gradovima, moguce je pamtiti posecene gradove i prepoznati odredisni,
ali nema nikakvih informacija o rastojanjima izmedu gradova (karte, putna signalizacija, itd). Tipican primer
problema neinformisane pretrage je i problem lavirinta koji je opisan u nastavku.
Primer 3.1. Lavirint se sastoji od skupa povezanih hodnika kojima je moguce kretati se. Svaki hodnik ima
an
jedno ili vise polja i dva kraja. Jedno polje je ulaz, a jedno izlaz iz lavirinta. Ulaz, izlaz, krajeve hodnika, kao i
polja koja su zajednicka za dva hodnika zovemo cvorovima lavirinta. Cilj je pronaci put od ulaza do izlaza preko
cvorova lavirinta. Elementi ovog problema su sledeci:
iz
sk
o
ro
n
Skup mogucih akcija: izbor puta (tj. sledeceg cvora lavirinta) u svakom koraku.
le
kt
22
19
11
12
1
2
3
20
4
10
21
14
13
17
15
16
18
5
6
7
8
10
11
12
13
19
14
22
17 20
15
18 21
16
Jedan nacin pronalazenja izlaza (koji ce u nastavku biti preciznije formulisan algoritmom pretrage) je drzati
se leve strane hodnika i pratiti zidove dok se ne naide na izlaz.
Elementi problema pretrage (stanja i relacija prelaska), pa i problema neinformisane pretrage se najcesce
prirodno izrazavaju pomocu grafova, tako da su i algoritmi neinformisane pretrage najcesce formulisani u vidu
algoritama obilaska grafova. Na primeru lavirinta, radi se o grafu ciji cvorovi su cvorovi lavirinta, a grane putevi
izmedu tih cvorova lavirinta (slika 3.1 (desno)). Ukoliko je graf koji odgovara lavirintu stablo, kaze se da je
lavirint savrsen.
19
3.1
20
Oblizak grafa u dubinu (eng. depth-first search DFS) i u sirinu (eng. breadth-first search BFS) su
metode neinformisane pretrage koje ispituju sve cvorove u grafu trazeci resenje, obicno neki specifican cvor.
Oni sistematski pretrazuju ceo graf bez ikakvog navodenja. Posebna paznja ce biti posvecena bektrekingu, jednoj
modifikaciji obilaska grafa u dubinu.
3.1.1
Pretraga u dubinu
(2
01
6)
Pretraga u dubinu je pretraga koja napreduje obradujuci najpre polazni cvor, zatim njegove potomke, zatim
njihove potomke i tako dalje sve dok se ne naide na trazeni cvor i sve dok ti potomci postoje. Ukoliko vise nema
potomaka koje treba ispitati, pretraga se vraca unazad do cvora ciji svi potomci nisu ispitani i nastavlja dalje.
U nerekurzivnoj verziji, cvorovi se obicno cuvaju na steku, tj. u LIFO listi. Da ne bi doslo do beskonacne petlje,
potrebno je cuvati informaciju o cvorovima koji su vec poseceni. Ovaj postupak je opisan algoritmom DFS
na slici 3.2 a slika 3.3 ilustruje obilazak jednog grafa primenom algoritma DFS. Prikazani algoritam, ukoliko
pronade ciljni cvor, u tom trenutku na steku sadrzi redom cvorove koji cine trazeni put.
je
an
Ako je ciljni cvor, obavesti o uspehu i vrati put konstruisan na osnovu sadrzaja steka .
sk
o
iz
U suprotnom, izaberi prvog takvog potomka i dodaj ga na vrh steka i u skup posecenih
cvorova.
3. Obavesti da trazeni put ne postoji.
le
kt
ro
n
Slika 3.3: Primer obilaska grafa primenom algoritma DFS (oznake cvorova ukazuju na poredak obilaska cvova)
Primer 3.2. Algoritam DFS se moze upotrebiti za nalazenje izlaza iz lavritina (pri cemu algoritam vraca ceo
put od ulaza do izlaza). U slucaju savrsenog lavirinta, graf koji se pretrazuje je stablo. Pracenje hodnika lavirinta
drzeci se leve strane predstavlja upravo pretragu u dubinu.
Primer 3.3. Ukoliko se, posavsi od Zagreba trazi put do Bukuresta primenom algoritma DFS i ukoliko se
prilikom izbora sledeceg grada prednost daje juznijem, bio bi pronaden put Zagreb-Sarajevo-Podgorica-SkopljeSofija-Bukurest. Ovaj put je po duzini vrlo los izbor, sto je i bilo ocekivano posto algoritam ne uzima u obzir
duzine puteva izmedu gradova. Kako se moze naci najkraci put, bice prikazano kasnije.
21
3. Neinformisana pretraga
Budimpesta
Zagreb
1
Beograd
Podgorica
3
4
Skoplje
Sofija
(2
01
6)
Sarajevo
Bukurest
6
je
an
0L0Z0Z0Z
Z0Z0Z0Z0
6
0Z0ZQZ0Z
5
Z0L0Z0Z0
4
0Z0Z0Z0Z
3
Z0ZQZ0Z0
2
0Z0Z0Z0Z
1
L0Z0Z0Z0
8
7
sk
o
0ZQZ0Z0Z
7
Z0Z0ZQZ0
6
0Z0L0Z0Z
5
ZQZ0Z0Z0
4
0Z0Z0Z0L
3
Z0Z0L0Z0
2
0Z0Z0ZQZ
1
L0Z0Z0Z0
8
iz
0Z0Z0Z0Z
7
Z0Z0Z0Z0
6
0Z0Z0Z0Z
5
Z0Z0Z0Z0
4
0Z0L0Z0Z
3
Z0Z0Z0Z0
2
0Z0Z0Z0Z
1
Z0Z0Z0Z0
8
ro
n
Slika 3.5: Problem osam dama: kretanje dame u sahu (levo), jedno resenje problema (sredina), situacija kada
je u pretrazi nuzno vratiti se na prethodni izbor (desno)
le
kt
Bektreking (eng. backtracking) je modifikovana varijanta pretrage u dubinu. Modifikacija se sastoji u tome
da se bektrekingom ne mora obici ceo graf, vec se napredovanje u dubinu prekida i ranije ako se ustanovi da
se ciljni cvor ne nalazi medu potomcima tekuceg cvora i tada nastupa vracanje na prethodni cvor. Prirodan
primer za bektreking je resavanje problema osam dama.
Primer 3.4. Problem osam dama formulisan je 1848. godine i od tada je bio predmet mnogih matematickih
i informatickih istrazivanja. Problem ima jednostavnu formulaciju: rasporediti osam dama na sahovskoj tabli
tako da se nikoje dve dame ne napadaju. Skup polja koja jedna dama napada definisan je u skladu sa opstim
pravilima saha i ilustrovan je na slici 3.5 (levo). Jedno moguce resenje ovog problema prikazano je na slici 3.5
(sredina). Problem dama je uopstenje problema na dama koje treba rasporediti na tabli dimenzija
tako da se nikoje dve ne napadaju.
U svakom resenju, ocigledno, u jednoj koloni ne mogu biti dve dame, pa se problem moze preformulisati na
sledeci nacin: na tabli rasporediti dama tako da u svakoj koloni bude po jedna i da se nikoje dve ne
napadaju.
Pored problema lavirinta, problem dama predstavlja jedan od tipicnih problema koji se resavaju primenom
bektrekinga. Cvorovi
grafa koji se u ovom slucaju pretrazuju su razliciti rasporedi 0 do 8 dama. Postoji grana od
jednog rasporeda ka drugom ukoliko se drugi moze dobiti od prvog dodavanjem jedne dame na slobodno polje na
tabli. Primetimo da je neki raspored moguce dobiti razlicitim redosledima dodavanja dama, polazeci od prazne
table, ali se dodavanjem dama ne moze dobiti tabla sa manjim brojem dama. Dakle, radi se o usmerenom
aciklicnom grafu. Polazno stanje je prazna tabla, a ciljno stanje je bilo koje stanje koje zadovoljava uslove
problema (za osam dama postoji 92 resenja).
Opisani graf sadrzi i rasporede u kojima se vise od dve dame napadaju. Svaki put od prazne table do ovakvog
rasporeda mora sadrzati raspored sa tacno dve dame koje se napadaju. Kako se duz puteva kroz graf dame samo
22
0Z0Z
3
Z0Z0
2
0Z0Z
1
L0Z0
0Z0Z
Z0Z0
2
QZ0Z
1
Z0Z0
0Z0Z
3
ZQZ0
2
0Z0Z
1
L0Z0
b
0Z0Z
3
ZQZ0
2
0Z0Z
1
L0Z0
b
0L0Z
3
Z0Z0
2
0Z0Z
1
L0Z0
0L0Z
3
Z0Z0
2
0ZQZ
1
L0Z0
4
0L0Z
Z0Z0
2
QZ0Z
1
Z0Z0
0L0Z
3
Z0Z0
2
0Z0Z
1
L0Z0
4
iz
sk
o
an
0L0Z
3
Z0Z0
2
0ZQZ
1
L0Z0
(2
01
6)
je
...
0L0Z
Z0Z0
2
QZ0Z
1
Z0L0
4
3
0L0Z
Z0ZQ
2
QZ0Z
1
Z0L0
4
3
le
kt
ro
n
Slika 3.6: Prikaz dela procesa resavanja problema cetiri dame primenom bektrekinga. Oznaka X oznacava
polja na kojima je pokusano postavljanje dame, ali je ustanovljeno da se u tom slucaju napada sa nekom od
vec postavljenih dama. Eksplicitno su prikazani samo rasporedi u kojima se postavljene dame medusobno ne
napadaju.
dodaju, postupak pretrage se ne isplati nastavljati nakon sto se naide na takav raspored. Na slici 3.5 (desno)
prikazan je jedan raspored koji nema smisla ispitivati dalje. Na slici 3.4, prikazan je niz rasporeda u redosledu
koji odgovara bektrekingu za problem cetiri dame (posto je za problem osam dama prostor pretrage preveliki za
ilustraciju).
Na prethodnom primeru se mogu uociti neke tipicne osobine bektrekinga. Bektreking se zasniva na prosirivanju
tekuceg parcijalnog resenja. Polazno parcijalno resenje je prazno resenje. U prethodnom primeru, to je prazna
sahovska tabla, a u slucaju lavirinta, to je ulaz. Prosirivanje parcijalnog resenja se u slucaju problema dama vrsi
dodavanjem dame na tablu, a u slucaju lavirinta prelaskom na sledeci cvor lavirinta. Prosirivanje parcijalnog
resenja u nekim slucajevima nije isplativo ili nije moguce i tada se pretraga vraca unazad, odakle dolazi i ime
tehnike. U problemu dama, nije isplativo nastaviti pretragu ukoliko je dostignut raspored u kojem se dve dame
napadaju, a u slucaju lavirinta nije moguce nastaviti pretragu kada se dode do cvora lavirinta nije povezan ni
sa jednim drugim cvorom lavirinta (sem sa onim iz kojeg se doslo). Prilikom izbora naredne grane u pretrazi,
prati se neki poredak izbora. U slucaju lavirinta, to moze biti sledeci hodnik nadesno u odnosu na poslednji
poseceni cvor lavirinta, a u slucaju problema dama, sledece prazno polje u skladu sa nekom numeracijom polja.
23
3. Neinformisana pretraga
3.1.2
Pretraga u sirinu
Pretraga u sirinu razmatra cvorove koji su susedni tekucem cvoru, a kasnije razmatra, redom, sve njihove
potomke. U traganju za cvorom koji zadovoljava neki uslov, bice pronaden onaj na najmanjem rastojanju (pri
(2
01
6)
Ako je ciljni cvor, obavesti o uspehu i vrati put od polaznog do ciljnog cvora (iduci unazad od
ciljnog cvora).
je
Za svaki od potomaka cvora za koji nije definisan roditelj, zapamti kao roditelja i dodaj ga
na kraj reda .
an
sk
o
iz
ro
n
le
kt
Slika 3.8: Primer obilaska grafa primenom algoritma BFS (oznake cvorova ukazuju na poredak obilaska cvova)
Primer 3.5. U slucaju pronalazenja puta od Zagreba do Bukuresta, bice pronaden put Zagreb-Beograd-Bukurest
(slika 3.9). Na pocetku, tekuci grad je Zagreb. Iz Zagreba, pronalaze se Sarajevo, Beograd i Budimpesta. Oni
cine novi red i za njih se pamti da je prethodni grad Zagreb, koji se uklanja iz reda. Iz Sarajeva se pronalazi
put do Podgorice koja se dodaje na kraj reda , a Sarajevo se iz njega uklanja. Iz Beograda se pronalazi put do
Skoplja i Bukuresta, koji se dodaju na kraj reda , a Beograd se iz njega uklanja. Iz Budimpeste se ne pronalazi
put ni do jednog grada koji vec nije obraden. Budimpesta se uklanja iz reda. Iz Podgorice se ne pronalazi put ni
do jednog grada koji vec nije obraden. Podgorica se uklanja iz reda. Iz Skoplja se pronalazi put do Sofije koja
se dodaje na kraj reda , a Skoplje se iz njega uklanja. Kada Bukurest postane grad koji se analizira, konstatuje
se da je to ciljni grad, konstruise se put i algoritam se zaustavlja.
DFS pretraga je pogodnija od BFS pretrage za usmeravanje koje bira cvorove koji vise obecavaju. Vremenska
slozenost oba algoritma je proporcionalna zbiru cvorova i grana grafa koji se pretrazuje ((| | + ||)), a
prostorna je proporcionalna broju cvorova ((| |)).
24
4 Budimpesta
Zagreb
1
3 Beograd
Sarajevo
Bukurest
8
2
7
Podgorica 5
Sofija
(2
01
6)
6
Skoplje
3.2
Dejkstrin algoritam
le
kt
ro
n
sk
o
iz
an
je
Dejkstrin algoritam (razvio ga je holandski informaticar Edzger Dejkstra 1959. godine) je algoritam za pretragu grafa koji nalazi najkrace puteve u grafu sa nenegativnim cenama koje su pridruzene granama. Algoritam
se moze koristiti za odredivanje najkraceg puta od jednog datog cvora do datog ciljnog cvora, ali i za odredivanje
najkracih puteva od svih cvorova grafa do datog ciljnog cvora.
Ideja Dejkstrinog algoritma moze se ilustrovati na sledeci nacin. Pretpostavimo da je skup cvorova vezan
nitima (i da cenom puta od jednog do drugog cvora smatramo duzinu niti koja ih vezuje). Uzmimo cvor koji je
izabran za polazni i pocnimo da podizemo celu konfiguraciju (tako da nikoje dve niti nisu upletene). Postepeno
se cvorovi, jedan po jedan, odvajaju od tla. Najmanje rastojanje izmedu nekog od tih cvorova i polaznog cvora
je upravo direktno rastojanje izmedu njih. Opsta ideja algoritma je slicna: postoje cvorovi koji su vec podignuti
sa tla i oni koji su jos uvek na tlu. Za one koji su podignuti sa tla vec znamo najkrace puteve od polaznog
cvora. U svakom koraku mozemo jos jedan cvor podici sa tla i izracunati njegovo najmanje rastojanje od
polaznog cvora (razmatrajuci samo one cvorove koji su mu susedni i koji su vec iznad tla). Ukoliko na kraju
ovog postupka na tlu ostanu jos neki cvorovi, to znaci da do njih ne postoji put od polaznog cvora.
Dejkstrin algoritam prikazan je na slici 3.10. U svakoj iteraciji, bira se cvor iz skupa cvorova (to su
cvorovi koji su na tlu) takav da je vrednost tekuceg najmanjeg rastojanja od polaznog cvora do njega najmanje.
Taj cvor se tada brise iz skupa . Ukoliko je to ciljni cvor, onda se konstruise trazeni put od polaznog cvora
(koristeci informaciju o roditeljskim cvorovima). Inace, za svaki cvor iz koji je susedan cvoru proverava se
da li se (preko ) moze popraviti tekuce najmanje rastojanje od polaznog cvora i, ako moze, cvor se postavlja
za roditelja cvora . Invarijanta petlje je da se za cvorove koji nisu u zna najkrace rastojanje od ciljnog
cvora.
Primer 3.6. Sledeca tabela prikazuje efekat primene Dejkstrinog algoritma na graf ilustrovan na slici 3.11: cvor
je polazni, a cvor ciljni cvor. Polje tabele za neki cvor prikazuje vrednost najmanjeg nadenog rastojanja od
polaznog do tog cvora.
Primer 3.7. Slika 3.12 i sledeca tabela ilustruje izvrsavanje Dejkstrinog algoritma na problemu nalazenja puta
od Bukuresta do Podgorice (najkraci put je Bukurest-Sofija-Skoplje-Podgorica).
U najjednostavnijoj implementaciji Dejkstrinog algoritma, skup se implementira kao obicna povezana lista
ili niz. Slozenost algoritma sa takvom implementacijom skupa je (| |2 + ||) = (| |2 ), gde je || broj
grana, a | | broj cvorova grafa. Za retke grafove (koji imaju mnogo manje grana od | |2 ), Dejkstrin algoritam
se moze implementirati efikasnije. Na primer, varijanta koja koristi binarni min-hip1 za odredivanje tekuceg
najblizeg cvora ima slozenost ((|| + | |) log | |).
1 Min-hip je specifi
cna stablolika struktura koja zadovoljava hip-svojstvo: ako je potomak cvora , onda je vrednost pridruzena
cvoru manja od vrednosti pridruzene cvoru . U skladu sa tim, najmanji element je uvek koren stabla. Max-hip se definise
analogno.
25
3. Neinformisana pretraga
(2
01
6)
6
4
korak
1
2
3
4
5
6
an
iz
3
3
3
3
3
je
2
2
2
2
2
6
6
6
5
5
4
3
3
3
3
8
7
6
cvor
sk
o
ro
n
5 Budimpesta
340
kt
Zagreb
380
390
3 Beograd
le
400
Beograd
590
590
590
590
590
590
590
Bukurest
1
290
Sarajevo
450
360
430
230
Podgorica
korak
1
2
3
4
5
6
6
840
Sofija
360
360
360
360
360
360
Budimpesta
840
840
840
840
840
840
2
350
240
4
Skoplje
Skoplje
600
600
600
600
600
Sofija
Podgorica
1040
950
950
950
Sarajevo
880
880
880
880
Zagreb
980
980
980
980
cvor
Bukurest
Sofija
Beograd
Skoplje
Budimpesta
Sarajevo
Podgorica
kt
le
E
ro
n
sk
o
d
iz
an
je
(2
01
6)
Glava 4
(2
01
6)
Informisana pretraga
Pohlepna pretraga
iz
4.1
an
je
Informisana (ili heuristicka) pretraga koristi ne samo informaciju o mogucim akcijama (koracima) u svakom
stanju, vec i dodatno znanje o konkretnom problemu koje moze da usmerava pretragu ka stanjima koja vise
obecavaju, za koje postoji nekakvo ocekivanje da brze vode ciljnom stanju, tj. resenju problema. Ta informacija
moze biti nekakva ocena, mera kvaliteta stanja, a moze da bude zasnovana i na informacijama vezanim za
pocetno ili ciljno stanje. Ta mera kvaliteta cesto nije egzaktna, nego predstavlja nekakvu procenu, heuristicku
meru.1
U nastavku cemo funkciju koja ocenjuje kvalitet stanja zvati funkcija evaluacije i oznacavati sa , pa ce
() oznacavati ocenu stanja . Vec je receno da probleme pretrage mozemo reprezentovati grafovima, pa cemo
cesto umesto stanja i ocena stanja govoriti i cvor i ocena cvora.2 Smatracemo i da su cene akcija (ili cene
grana grafa) nenegativne.
ro
n
sk
o
Pohlepnim algoritmom naziva se algoritam koji bira lokalno optimalne akcije, tj. tezi neposrednom povecanju
vrednosti neke ciljne funkcije. Ovakav algoritam ne procenjuje dugorocni kvalitet izabranih akcija, tj. koliko
one doprinose ostvarenju konacnog cilja, vec bira akciju koja se na osnovu znanja dostupnog u trentuku izbora
procenjuje kao najbolja medu raspolozivim akcijama.
kt
le
1 Re
c heuristika potice od grcke reci heurisko koja znaci traziti ili otkrivati. Srodna grcka rec heureka ili eureka znaci
nasao sam ili otkrio sam i obicno se vezuje za Arhimeda i njegov uzvik kada je dosao do jednog znamenitog otkrica. Aristotel
je koristio termin heuristika za otkrivanje novog znanja (ili demonstriranje postojeceg) kroz komunikaciju i interakciju izmedu
izlagaca i slusalaca. Perl (1984) pod heuristikama smatra kriterijume, metode ili principe za izbor izmedu nekoliko mogucih akcija
onu koja najvise obecava za postizanje nekog cilja.
2 Prilikom re
savanja problema pretragom, generise se (obicno samo implicitno) stablo pretrage u kojem stanja kroz koja se
prolazi cine cvorove. Posto kroz jedno isto stanje moze da se prode vise puta tokom pretrage, cvor stabla nosi vise informacija od
stanja te generalno ipak treba razlikovati ova dva pojma.
27
28
Primer 4.1. U primeru pronalazenja najkracih puteva izmedu gradova (primer 2.2), ako je u svakom gradu
moguce videti tablu sa tacnim rastojanjima do susednih gradova, pohlepni informisani algoritam bi kao funkciju
evaluacije () mogao da koristi zbir tacnog rastojanja od tekuceg cvora do cvora (tj. da uvek za sledeci
grad bira najblizi grad). Ukoliko su poznata vazdusna rastojanja izmedu gradova na osnovu mape, pohlepni
informisani algoritam bi kao funkciju evaluacije () mogao da koristi vazdusno rastojanje od do ciljnog
grada (tj. da uvek za sledeci grad bita onaj koji je najblizi ciljnom vazdusnim putem).
Budimpesta
Zagreb
400
290
380
320
390
370
840
640
410
Sarajevo
230
170
640
290
190
450
280
Podgorica
Beograd
350
190
590
450
360
300
430
320
Skoplje
Bukurest
(2
01
6)
340
300
240
170
Sofija
an
je
le
kt
ro
n
sk
o
iz
Ako je u svakom gradu moguce i videti tablu sa tacnim rastojanjima do susednih gradova i poznata su
vazdusna rastojanja izmedu gradova, pohlepni informisani algoritam bi kao funkciju evaluacije () mogao da
koristi zbir tacnog rastojanja od tekuceg cvora do cvora i vazdusnog rastojanja od do ciljnog grada. Dakle,
tada se, u svakom koraku, kao sledeci grad, kao grad koji najvise obecava, bira grad za koji je zbir tacnog
rastojanja od tekuceg grada do i vazdusnog rastojanja od do ciljnog grada najmanji. Ovaj pristup bice
ilustrovan primerom trazenja puta od Podgorice do Budimpeste. Iz Podgorice su neposredno dostupni Sarajevo,
Beograd i Skoplje, a ocene duzina puteva do cilja preko tih gradova su 640km, 770km i 990km, te se ide u
Sarajevo. Iz Sarajeva su neposredno dostupni Beograd, Zagreb i Podgorica, a ocene duzina puteva preko tih
gradova su 700km, 610km i 790km, te se ide u Beograd. Iz Beograda su neposredno dostupni Budimpesta,
Bukurest, Skoplje, Podgorica, Sarajevo i Zagreb, a ocene duzina puteva preko tih gradova su 380km, 1230km,
1070km, 1010km, 700km i 690km, te se ide u Budimpestu. Pronadeni put je, dakle, Podgorica-Sarajevo-BeogradBudimpesta i njegova stvarna duzina je 900km. Medutim, stvarna duzina puta Podgorica-Beograd-Budimpesta
je manja i iznosi 830km, sto znaci da je napravljeni izbor pogresan, tj. nije najbolji moguci. Ovaj ishod ilustruje
opsti problem pohlepne pretrage, a to je da je moguce pronaci resenje koje nije najbolje. Stavi
se, u opstem
slucaju, moguce je ne pronaci resenje i ako ono postoji, a moguce je i ostati u beskonacnoj petlji.
Primer 4.2. U slucaju Lojdove slagalice, kao ocena rastojanja od tekuceg do ciljnog stanja moze se koristiti zbir
Menhetn rastojenja svakog od 15 polja slagalice do njegovog ciljnog mesta. Menhetn rastojanje izmedu dva polja
i definise se kao najmanji broj polja koji je potrebno preci kako bi se doslo od do , krecuci se iskljucivo
horizontalno ili vertikalno3 . U slucaju stanja slagalice u korenu levog stabla na slici 4.3, Menhetn rastojanje
polja 1 do njegovog pravog mesta je 3, zato sto je na tom putu potrebno preci preko dva polja krecuci se navise,
a potom jedno polje krecuci se nalevo. Moguci su i drugi putevi, ali njihova duzina nije manja. Ukupna ocena
rastojanja za to stanje slagalice je 0+0+0+1+1+2+1+0+3+2+2+0+0+2+2=16. Pohlepna pretraga se moze
formulisati tako da se u svakom koraku preduzima potez koji vodi ka najmanjoj oceni rastojanja u odnosu na
tekuce stanje.
U slucaju stanja slagalice u korenu slike 4.3 (levo), pohlepna pretraga ne moze da nastavi posto dato stanje
predstavlja lokalni minimum ocene rastojanja jer se bilo kojim potezom ta ocena uvecava za 1.
S druge strane, ukoliko je polazna konfiguracija 4.3 (desno) ocena rastojanja se smanjuje pomeranjem polja
4 navise a zatim i pomeranjem navise polja 8 i 11. Nakon toga se dolazi do stanja koje je lokalni minimum i
pretraga se zaustavlja.
Navedni primeri pokazuju da predlozenom jednostavnom pohlepnom pretragom nije moguce resiti Lojdovu
slagalicu.
3 Rastojanje se zove Menhetn, jer podse
ca na brojanje gradskih blokova od jednog mesta do drugog, pri cemo nije moguce
prolaziti blokove dijagonalno.
29
4. Informisana pretraga
1 2 3
15 5 10 4
9 12 6 8
13 14 7 11
2 3 4
6 5 10 12
9 1 8 15
13 14 7 11
6 2 3 4
5 10 12
9 1 8 15
13 14 7 11
2
3 4
6 5 10 12
9 1 8 15
13 14 7 11
1 2
3
15 5 10 4
9 12 6 8
13 14 7 11
1 2 3 4
15 5 10
9 12 6 8
13 14 7 11
(2
01
6)
Slika 4.3: Stanje slagalice (levo) u kojem nema poteza koji vodi u stanje sa boljom ocenom rastojanja i stanje
slagalice (desno) iz kojeg postoji niz koraka koji poboljsavaju ocenu rastojanja (pomeranjem praznog polja
nanize), ali se zavrsava u stanju iz kojeg svi potezi pogorsavaju ocenu.
sk
o
iz
an
je
Pohlepni algoritmi se mogu koristiti i za resavanje opstijih problema od pretrage problema matematicke
optimizacije. Ovi problemi pretpostavljaju postojanje funkcije cilja i skupa dopustivih resenja. U zavisnosti od
formulacije problema, potrebno je naci dopustivo resenje sa minimalnom ili maksimalnom vrednoscu funkcije
cilja. Takvo resenje se naziva optimalnim resenjem problema optimizacije. Ovakvi problemi ne moraju pretpostavljati postojanje stanja, akcija i drugih elemenata problema pretrage. U kontekstu matematicke optimizacije,
pohlepni algoritmi se obicno nazivaju algoritmima penjanja uzbrdo posto biraju susedna dopustiva resenja koja
imaju najvise vrednosti funkcije cilja.
Pohlepna pretraga obicno se ponasa dobro u slucaju problema kod kojih kvalitet odluke u nekom stanju
pretrage ne zavisi od buducih odluka ili ako se dati problem moze aproksimirati problemom za koji ovo vazi. Ako
navedeno svojstvo vazi, lokalno optimalna odluka je stvarno optimalna. Navedeno svojstvo se moze i drugacije
formulisati pohlepna pretraga ce se ponasati dobro ukoliko se optimalno resenje problema gradi neposredno
od lokalno optimalnih resenja podproblema.
Algoritmi zasnovani na pohlepnoj pretrazi su obicno znatno jednostavniji od algoritama koji garantuju
optimalnost ili potpunost procesa resavanja. Medutim, iako obicno ne garantuju optimalnost resenja, cesto
daju resenja koja su prakticno prihvatljiva. S druge strane, mane ovog pristupa su sledece:
ro
n
Opasnost od lokalnih maksimuma: Lokalni mksimumi su tacke u prostoru pretrage ciji susedi imaju manju
le
kt
vrednost funkcije cilja od nje, ali je njena vrednost manja od vrednosti globalnog maksimuma. Algoritmi
penjanja uzbrdo nemaju nacina da utvrde da se nalaze u lokalnom maksimumu (slika 4.4)
Slika 4.4: Situacija u kojoj pohlepna pretraga moze da vrati samo lokalni maksimum (levo) i greben (desno)
Neefikasnost u slucaju grebena: Grebeni predstavljaju uske staze koje opadaju ili rastu duz nekog pravca.
U takvim problemima, penjanje uzbrdo ne vodi u pravcu rasta staze, vec je potrebno da napravi mnogo
cik-cak koraka da se uspne uz greben (ili da se spusti niz greben).
Platoi: Platoi predstavljaju oblasti prostora pretrage u kome funkcija cilja ima konstantnu vrednost. Zbog
toga je nemoguce odrediti koji potez je najbolji, a samim tim se moze desiti da pohlepna pretraga ne nade
izlaz sa platoa.
30
Postoje razne varijacije osnovnog penjanja uzbrdo koje pokusavaju da se izbore sa navedenim problemima.
Takvo je na primer stohasticko penjanje uzbrdo koje ne bira uvek susedno stanje koje ima najvecu vrednost, ali
verovatnoca da odredeno stanje bude izabrano je veca sto je veca njegova vrednost. Druga varijacija je penjanje
uzbrdo sa slucajnim restartovanjem kod kojeg se posle pronalazenja lokalnog maksimuma proces pretrage ponovo
pokrece iz slucajno generisanog polaznog stanja. Ovaj metod omogucava pronalazenje globalnog maksimuma
sa verovatnocom koja se priblizava 1 kada se povecava broj pokusaja.
4.1.1
(2
01
6)
Metode pretrage i matematicke optimizacije cesto pokusavaju da iskoriste neku zakonitost u strukturi prostora pretrage, odnosno prostora dopustivih resenja. Tako, metode penjanja uzbrdo, u slucaju diferencijabilne
funkcije cilja, obicno pocivaju na koriscenju koncepta gradijenta. Ukoliko je data diferencijabilna funkcija cilja
: R R, gradijent se definise kao vektor parcijalnih izvoda te funkcije:
)
(
,
,...,
=
1 2
je
Gradijent izracunat u odredenoj tacki R predstavlja vektor u prostoru R u cijem pravcu funkcija
najstrmije raste u okolini tacke . Stoga se kretanjem u ovom pravcu moze doci do lokalnog maksimuma.
Kretanjem u suprotnom pravcu, moze se doci do lokalnog minimuma. U tradiciji matematicke optimizacije,
cesce se koristi formulacija trazenja minimuma, a metoda za trazenje minimuma se moze upotrebiti i za nalazenje
maksimuma ukoliko se primeni na funkciju umesto na funkciju . Princip kretanja u smeru suprotnom od
gradijenta je osnova algoritma najstrmijeg spusta ili gradijentnog spusta. Algoritam najstrmijeg spusta prikazan
je na slici 4.5.
an
iz
1. Postaviti na 0.
sk
o
2. Ponavljati
ro
n
Uvecati za 1.
le
kt
U praksi se ne moze ocekivati nalazenje same tacke lokalnog minimuma, s obzirom na to da se ne radi o
diskretnom prostoru, te se opisani postupak prekida kada razlika u vrednosti funkcije u odnost na njenu
prethodnu vrednost postane dovoljno mala.
Da bi se dati algoritam u potpunosti definisao potrebno ga je dodatno precizirati. Poznavanje gradijenta
i kretanje u suprotnom pravcu u praksi ipak ne garantuje nalazenje minimuma, jer je u zavisnosti od duzine
koraka moguce preci preko minimuma, nastaviti dalje i doci i do goreg resenja od tekuceg. Stoga je u svakom
koraku potrebno odrediti konstantu takvu da se za novu tacku uzima vrednost
xn+1 = xn (xn )
Ova konstanta se moze naci Armiho-Goldstajnovom pretragom duz pravca gradijenta koja je formulisana algoritmom 4.6. Poenta Armiho-Goldstajnove pretrage je smanjivanje koraka dok se ne steknu uslovi dovoljni za
konvergenciju.
Primer 4.3. Potrebno je izgraditi lekarsku stanicu koja bi opsluzivala cetiri sportske lokacije. Stanica bi trebalo
da bude relativno blizu svim lokacijama. Jedan povoljan izbor njene lokacije bi bila tacka x takva da je zbir
(x) =
=1
x s() 2
31
4. Informisana pretraga
(x)2
2
2.
(2
01
6)
35
30
25
20
15
je
10
s1
1
x0
x0
s1
0
5
iz
an
1
2
3
sk
o
s1
s1
ro
n
minimalan, gde vazi x = (1 , 2 ), s(1) = (0, 0), s(2) = (0, 1), s(3) = (2, 0) i s(4) = (3, 3).
Zapisano drugacije, funkcija jednaka je:
kt
le
Gradijent funkcije je
Neka je polazna tacka x0 = (1, 1) i = 0.01. Vrednost gradijenta (x0 ) u prvoj iteraciji je (2, 0). Vrednost
parametra 0 odreduje se Armiho-Goldstajnovom pretragom. Za vrednost = 1, evaluira se uslov ((1, 1)
1 (2, 0)) > (1, 1) 2, odnosno 25 > 13 2. Kako je uslov ispunjen, se postavlja na 0.5 i evaluira se
((1, 1) 0.5 (2, 0)) > (1, 1) 1, odnosno 15 > 13 1. Kako je uslov ispunjen, se postavlja na 0.025 i
evaluira se ((1, 1) 0.25 (2, 0)) > (1, 1) 0.5, odnosno 13 > 13 0.5. Kako je uslov ispunjen, se postavlja
na 0.125 i evaluira se ((1, 1) 0.125 (2, 0)) > (1, 1) 0.25, odnosno 12.75 > 13 0.25. Kako uslov nije
ispunjen, petlja se prekida i vraca se vrednost 0.125, sto se uzima za vrednost parametra 0 . Za tacku x1 , uzima
se tacka x0 0 (x0 ), odnosno (1, 1) 0.125 (2, 0), sto je (1.25, 1).
Kako vazi | (x0 ) (x1 )| = |13 12.75| = 0.25 > 0.01 |13|, prelazi se na novu iteraciju. Gradijent je
(1.25, 1) = (0, 0). Za datu tacku Armiho-Goldstajnova pretraga se zaustavlja odmah i vraca = 1. Kako je
gradijent jednak (0, 0), vazi x2 = x1 i algoritam se zaustavlja sa tacnim resenjem (1.25, 1).
U opstem slucaju retko se desava zaustavljanje sa tacnim resenjem.
U ovom slucaju, resenje se moglo naci i analiticki resavanjem jednacina (x) = 0, ali to u opstem
slucaju nije moguce.
Za diferencijabilne funkcije postoje i drugi metodi lokalne optimizacije, medu kojima je algoritam najstrmijeg
spusta najjednostavniji. Problem ovog algoritma je sto je konvergencija cesto spora. Brze alternative su ili
32
komplikovanije ili prave dodatne pretpostavke o svojstvima funkcije (poput konveksnosti) ili zahtevaju dodatne
informacije o ciljnoj funkciji (poput parcijalnih izvoda drugog reda).
Treba imati u vidu da diskutovani algoritam ne garantuje nalazenje globalnog minimuma. U slucaju da
funkcija ima veci broj minimuma, u zavisnosti od izabrane polazne tacke, resenja koja algoritam daje mogu biti
razlicita i pronadeni minimum moze biti samo lokalni.
Pitanja i zadaci
Pitanje 4.1. Kako se naziva algoritam pretrage koji uvek bira lokalno optimalne akcije?
pohlepnom pretraga moze vratiti kao rezultat, umesto globalnog ekstremuma?
Pitanje 4.2. Sta
je plato u problemima pretrage?
Pitanje 4.3. Sta
4.2
Pretraga
(2
01
6)
Pitanje 4.4. Kako se zove oblast prostora pretrage u kojem ciljna funkcija ima konstantnu vrednost?
Prvo najbolji
je
Pristup pretrage prvo najbolji (engl. best-first search) predstavlja osnovu za razlicite algoritme pretrage
grafa. Resenjem se smatra niz cvorova (tj. put) od polaznog do ciljnog cvora u grafu. U toku algoritma, svakom
stanju/cvoru koji se razmatra pridruzuje se informacija o njegovom prethodniku (roditelju) u mogucem resenju,
isto kao u Dejkstrinom algoritmu.
Da bi se izbegle beskonacne petlje (tj. beskonacno obradivanje istog stanja), odrzavaju se dve liste stanja/cvorova:
an
zatvorena lista (ili lista zatvorenih stanja) lista stanja za koje su vec ispitani svi susedi (tj. sva neposredno
dostupna stanja);
iz
otvorena lista (ili lista otvorenih stanja) lista stanja koja su vec posecena, ali nisu obradeni svi njihovi
susedi.
ro
n
sk
o
Implementacija otvorene liste treba da omogucava efikasan pristup elementu sa najboljom ocenom ().
Na pocetku je u otvorenoj listi samo pocetno stanje, a zatvorena lista je prazna. Sustinska ideja je da se u
svakoj iteraciji, analizira element otvorene liste sa najboljom ocenom i obraduju se iz njega neposredno dostupna
stanja. Ukoliko se naide na ciljni cvor zadatak je resen i algoritam zavrsava rad. Precizniji opis algoritma dat
je na slici 4.8.
kt
le
1. Zatvorena lista je inicijalno prazna, a otvorena lista sadrzi samo polazni cvor.
Ako nije ni u otvorenoj ni u zatvorenoj listi, dodaj ga u otvorenu listu i oznaci kao njegovog
roditelja.
33
4. Informisana pretraga
dva cvora, u slucaju da je cvor vec u otvorenoj ili zatvorenoj listi, moze se proveriti da li je put od polaznog
cvora do cvora preko cvora bolji od postojeceg puta do ; ako jeste, treba promeniti informaciju o roditelju
cvora na cvor a ako je bio u zatvorenoj listi, prebaciti ga u otvorenu.
Ako je broj stanja i akcija konacan, algoritam se ocigledno zaustavlja i ima svojstvo potpunosti, o cemu
govori naredna teorema.
Teorema 4.1. Ako je broj stanja i akcija konacan, algoritam Prvo najbolji se zaustavlja i nalazi trazeni put
uvek kada on postoji.
(2
01
6)
Ako funkcija () vraca dubinu cvora (u DFS obilasku grafa pocev od polaznog cvora), onda se navedeni
algoritam ponasa kao algoritam obilaska u sirinu. Ako funkcija () vraca zbir cena od polaznog cvora do cvora
, onda se navedeni algoritam ponasa kao Dejkstrin algoritam.
Opsti algoritam Prvo najbolji predstavlja bitnu modifikaciju algoritma jednostavnog pohlepnog pristupa.
Iako oba u jednom cvoru biraju (najpre) najbolji susedni cvor (tj. cvor sa najboljom vrednoscu ()) algoritam
Prvo najbolji, za razliku od jednostavnog pohlepnog pristupa omogucava vracanje na cvorove koji nisu ispitani
jer je neka od alternativa obecavala vise. Takode, ovim pristupom se omogucava nastavak pretrage i u slucaju
kada pohlepna pretraga naide na plato ili lokalni optimum (zahvaljujuci alternativama u otvorenoj listi) i
eliminise se mogucnost beskonacnih petlji (zahvaljujuci pamcenju obradenih cvorova u zatvorenoj listi).
Primer 4.4. U slucaju prethodno diskutovanog primera slagalice, ponovljenog na slici 4.9, situacija prikazana
levo predstavlja lokalni minimum, zbog cega se pohlepna pretraga zaustavlja. Algoritam prvo najbolji ce
an
je
odabrati jedan od mogucih poteza, ali ce alternativno stanje cuvati u otvorenoj listi i mozda ga obraditi kasnije.
U situaciji prikazanoj desno, pohlepnom pretragom se prazno polje spusta do donjeg desnog ugla, cime se dolazi
do lokalnog optimuma i pohlepna pretraga ne moze da nastavi. Medutim, u slucaju algoritma Prvo najbolji,
stanja koja su bila alternative ispitanim stanjima su i dalje u otvorenoj listi i ispituju se dalje. Stoga je algoritam
Prvo najbolji u stanju da resi slagalicu, ali ne garantuje nalazenje resenja koje se sastoji od najmanjeg broja
poteza.
1 2 3
15 5 10 4
9 12 6 8
13 14 7 11
ro
n
sk
o
iz
2 3 4
6 5 10 12
9 1 8 15
13 14 7 11
kt
6 2 3 4
5 10 12
9 1 8 15
13 14 7 11
2
3 4
6 5 10 12
9 1 8 15
13 14 7 11
1 2
3
15 5 10 4
9 12 6 8
13 14 7 11
1 2 3 4
15 5 10
9 12 6 8
13 14 7 11
le
Slika 4.9: Stanje slagalice (levo) u kojem svi pozezi pogorsavaju ocenu rastojanja i stanje slagalice (desno) iz
kojeg postoji niz koraka koji poboljsavaju ocenu rastojanja (pomeranjem praznog polja nanize), ali se zavrsava
u stanju iz kojeg svi potezi pogorsavaju ocenu.
4.3
Algoritam A*
Algoritam A* pretraga ili, krace, algoritam A* (cita se a zvezda, engl. a star) za odredivanje najkraceg
puta izmedu dva cvora grafa, jedan je od fundamentalnih i najpopularnijih algoritama vestacke inteligencije.
Zasnovan je na koriscenju heuristika, ali ipak ima svojstva kao sto su potpunost i optimalnost. Prvu verziju
algoritma A* su razvili Hart, Nilsson i Raphael 1968. godine [?], a u narednim godinama uvedeno je nekoliko
unapredenja [?, ?, ?].
Algoritam A* je varijanta algoritma Prvo najbolji u kojoj se koristi funkciju evaluacije definisana na
sledeci nacin:
() = () + (),
gde je () cena puta od polaznog cvora do cvora , a () je procenjena (heuristicka) cena najjeftinijeg puta
od cvora do ciljnog cvora. Dok se traga za najkracim putem, uvek se zna tekuca minimalna cena (a moze
se menjati tokom primene algoritma) od polaznog cvora do cvora (tj. tekuca vrednost ()), ali se vrednost
4.3. Algoritam A*
34
(2
01
6)
() moze samo procenjivati. Od kvaliteta heuristike zavisi ponasanje i efikasnost algoritma. Izbor kvalitetne
heuristike jedan je od najvaznijih i najtezih izazova u dizajniranju konkretnih implementacija algoritma A*.
Algoritam A* trazi optimalno resenje (tj. otkriva najbolji put do ciljnog cvora) i zato za svaki cvor na koji
naide proverava da li je do njega ranije vec bio pronaden neki losiji put i, ako jeste, zamenjuje ga novim, boljim
putem. Takva provera je u algoritmu Prvo najbolji bila opciona, a u algoritmu A* je obavezna.
Pored toga sto je specijalan slucaj metoda Prvo najbolji, algoritam A* je uopstenje Dejkstrinog algoritma.
Kao i u Dejkstrinom algoritmu, cvorovi koje tek treba obraditi cuvaju se u listi, sortiranoj prema nekom
kriterijumu. Algoritam A* cesto ispituje manje cvorova nego Dejkstrin algoritam. To smanjenje proistice
iz koriscenja heuristike koja procenjuje donju granicu daljine do ciljnog cvora. Kljucna razlika izmedu dva
algoritma je u tome sto Dejkstrin algoritam (kao algoritam neinformisane pretrage) uzima u obzir samo cenu
od polaznog do tekuceg cvora vrednost (), a A* (kao algoritam informisane pretrage) koristi vrednost
funkcije evaluacije () = () + ().
Opis algoritma A* dat je na slici 4.10. Prilikom dodavanja cvora u otvorenu listu vrednost () moze se
izracunati na inkrementalan i efikasan nacin: vrednost () jednaka je zbiru vrednosti funkcije za roditelja
cvora i ceni puta od roditelja do .
Algoritam: Algoritam A*
je
an
Izaberi cvor (tekuci cvor) iz otvorene liste koji ima najbolju ocenu ().
Ako je ciljni cvor, izvesti o uspehu i vrati resenje konstruisi put od polaznog do ciljnog cvora (iduci
unazad od ciljnog cvora).
iz
Ako nije ni u otvorenoj ni u zatvorenoj listi, dodaj ga u otvorenu listu i oznaci kao njegovog
roditelja. Izracunaj i pridruzi vrednost () cvoru .
sk
o
Inace, proveri da li je put od polaznog cvora do cvora preko cvora bolji (kraci ili jeftiniji)
ro
n
od postojeceg puta do (trenutna vrednost ()). Ako jeste, promeni informaciju o roditelju
cvora na cvor i azuriraj vrednosti () a ako je bio u zatvorenoj listi, prebaci ga u
otvorenu.
le
kt
3. Izvesti da trazeni put ne postoji (otvorena lista je prazna i uspeh nije prijavljen).
Slika 4.10: Algoritam A*
Ako algoritam naide na cvor koji je vec u otvorenoj ili zatvorenoj listi, to znaci da je pronaden novi
put do cvora . Tada se proverava da li je put od polaznog cvora do vec posecenog cvora preko cvora
bolji od postojeceg puta i ako je on bolji, potrebno je azurirati vrednost (). To moze da se desi i za cvor
koji pripada zatvorenoj listi i ako je on bolji, potrebno je cvor ponovo ispitati kao otvoreni cvor. Ovo je
neophodno kako bi se obezbedilo pronalazenje najboljeg puta od polaznog do ciljnog cvora.
4.3.1
Svojstva algoritma A*
Potpunost: Ako postoji put izmedu dva cvora, algoritam A* ce, kao i svaki Prvo najbolji algoritam, naci
Optimalnost: Od svih puteva izmedu dva data cvora, algoritam A* vratice najkraci (tj. vratice optimalno
resenje) ako je funkcija dopustiva (eng. admissible). Funkcija je dopustiva ako nikada ne precenjuje
stvarno rastojanje izmedu tekuceg cvora i ciljnog cvora, tj. ako za svaki cvor vazi:
0 () * (),
35
4. Informisana pretraga
gde je * () cena optimalnog puta od cvora do ciljnog cvora.
Ukoliko funkcija nije dopustiva, ali ne precenjuje stvarnu cenu za vise od , onda je cena puta koji ce
pronaci algoritam A* visa od cene najkraceg za ne vise od .
Funkcija je konzistentna (eng. consistent) ako ima vrednost 0 za ciljni cvor i za bilo koja dva susedna
cvora i vazi:
(, ) + () ()
gde je (, ) cena pridruzena grani (, ). Svaka konzistentna funkcija je dopustiva, ali obratno ne vazi.
Ako je funkcija konzistentna, nije potrebno proveravati da li je put preko tekuceg cvora do jednom
zatvorenog cvora bolji od postojeceg (jer sigurno nije). Dakle, ako je funkcija konzistentna, algoritam
A* je optimalan i jos jednostavniji nego u opstem slucaju. Dokaz optimalnosti dat je nastavku i zasniva
se na nekoliko pomocnih tvrdenja.
Lema 4.1. Ako je konzistentna heuristika, onda u svakom trenutku primene algoritma, duz svakog puta
(2
01
6)
Dokaz: Ako je u nekom trenutku primene algoritma cvor tekuci i ako je njegov (trenutni) roditelj cvor
, onda vazi:
() = () + () = () + (, ) + () () + () = ()
an
je
Tvrdenje leme onda sledi na osnovu jednostavnog induktivnog argumenta. (U tvrdenju se naglasava
da vazi u svakom trenutku jer se vrednosti (), pa onda i () za neki cvor mogu da menjaju
tokom primene algoritma.)
iz
Lema 4.2. Ako je konzistentna heuristika, za niz cvorova redom proglasenih za tekuce, niz (u tim
trenucima vazecih) vrednosti () cini neopadajuci niz.
Dokaz: U svakoj iteraciji, algoritam bira za tekuci cvor cvor sa najmanjom vrednoscu () (te svi pre-
ro
n
sk
o
ostali cvorovi u skupu otvorenih cvorova imaju vece ili jednake vrednosti ). Svi buduci tekuci
cvorovi su preostali cvori iz otvorene liste, potomci tih cvorova ili potomci njihovih potomaka. Na
osnovu prethodne leme onda sledi da svi buduci cvorovi imaju vrednosti vece ili jednake ().
Kako ovo vazi za svaki tekuci cvor , sledi tvrdenje leme, tj. algoritam proglasava cvorove tekucim u
neopadajucem poretku po ().
le
kt
Lema 4.3. Ako je konzistentna heuristika, kad neki cvor postane tekuci, do njega je vec pronaden
optimalan put.
Dokaz: Kada algoritam proglasi neki cvor tekucim po prvi put, on ima neke vrednosti () = 0 i
Teorema 4.2. Ako je konzistentna heuristika, ako je pronaden put do ciljnog cvora, on je sigurno
optimalan.
Dokaz: Algoritam vraca nadeni put cim ciljni cvor po prvi put postane tekuci. Na osnovu prethotne leme,
ako je konzistentna heuristika, kad ciljni cvor postane tekuci, do njega je vec pronaden optimalan
put, sto daje tvrdenje teoreme.
Upravo lema 4.3 govori da za cvorove dosupne iz tekuceg cvora koji su vec zatvoreni, ne mora da se
proverava da li njihova vrednost treba da bude azurirana. Ovo tvrdenje u slucaju konzistentne heuristike
obezbeduje jednostavniju i efikasniju implementaciju algoritma A*.
Ako je funkcija konzistentna, onda je ona i dopustiva, a obratno ne vazi.
4.3. Algoritam A*
36
Slozenost: Vremenska slozenost algoritma A* zavisi od heuristike. U najgorem slucaju, broj obradenih
cvorova je eksponencijalan u odnosu na duzinu najkraceg puta. U tom slucaju, i prostorna i vremenska slozenost algoritma A* jednake su kao za BFS algoritam.
Broj obradenih cvorova je polinomijalan ako je heuristika kvalitetna, tj. ako funkcija zadovoljava sledeci
uslov:
|() * ()| (log * ())
gde je * optimalna heuristika, tj. funkcija koja vraca tacnu cenu puta od cvora do ciljnog cvora.
Ukoliko funkcija * odgovara optimalnom putu, onda algoritam A* obraduje sve cvorove za koje vazi
() < * (), kao i neke cvorove za koje vazi () = * ().
(2
01
6)
Prethodna tvrdenja sugerisu da algoritam A* najbolje performanse (najmanji broj obradenih cvorova) daje
kada je funkcija heuristike bliska idealnoj funkciji heuristike. S druge strane, optimalnost je garantovana samo
ako funkcija heuristike nikada ne precenjuje stvarnu cenu puta. Zajedno, to govori da dobra funkcija heuristke
mora da bude veoma pazljivo konstruisana, tako da bude sto bliza idealnoj funkciji, ali da je nikada ne premasuje.
Primer 4.5. U sledecem grafu zadatak je naci najkraci put od do . Pored cvorova grafa zapisane su
procenjene duzine puta do cvora , tj. vrednosti funkcije . Sledeca tabela ilustruje primenu algoritma A*.
5
4
A
D
G
F
B
H
E
je
u zatvorenu listu
se dodaje
A(-)
D(A)
G(A)
F(D)
B(F)
H(D)
sk
o
an
tekuci
cvor
iz
tekuci
cvor
le
kt
ro
n
Na kraju primene algoritma, kada je cvor postao tekuci cvor, konstruise se trazeni put (koristeci informacije o roditeljma za cvorove iz zatvorene liste: . Ovo jeste put od cvora do cvora , ali
nije najkraci moguci: naime, kraci je sledeci put: . Ovo je posledica cinjenice da funkcija
nije konzistentna (iako jeste dopustiva): vazi 2 + () < ().
Ukoliko se za isti zadatak koristi konzistenta funkcija, rezultat ce biti optimalan put od do . U narednom
primeru se koristi funkcija cija se vrednost razlikuje u odnosu na prethodnu samo za cvor .
4
3
5
4
1
3
3
3
A
D
G
H
B
F
E
u zatvorenu listu
se dodaje
A(-)
D(A)
G(A)
H(D)
B(H)
F(D)
Primer 4.6. U primeru pronalazenja najkracih puteva izmedu gradova (primer ??), ako su poznata rastojanja izmedu gradova vazdusnim putem, algoritam A* moze kao heuristicku funkciju () da koristi vazdusno
rastojanje od cvora do ciljnog cvora, kao i u primeru 4.1. Naredna tabela ilustruje izvrsavanje algoritma A*
na primeru puta Podgorica-Budimpesta. Nadeni put je Podgorica-Beograd-Budimpesta, za razliku od pohlepne
pretrage koja pronalazi put Podgorica-Sarajevo-Beograd-Budimpesta.
37
4. Informisana pretraga
Budimpesta
340
300
Zagreb
400
290
380
320
390410
370 560
640
290
190
450
280
Sarajevo
230
170
Podgorica
840
640
Beograd
590
450
Bukurest
360
300
430
320
350
190
Skoplje
240
170
Sofija
(2
01
6)
1 2 3 4
5 6 11 7
9 10
8
13 14 15 12
an
1 2 3 4
5 6 11 7
9 10 8 12
13 14 15
1 2 3 4
5 6 11
9 10 8 7
13 14 15 12
je
sk
o
iz
Slika 4.12: Stablo pohlepne pretrage na primeru slagalice u kojem se polazno stanje nalazi na platou.
u zatvorenu listu
se dodaje
Pod(-)
Sar(Pod)
Beo(Pod)
kt
Pod
Sar
Beo
Bud
ro
n
tekuci
cvor
le
Primer 4.7. Slika 4.12 prikazuje stanje slagalice i tri moguca naslednika, koja imaju ocenu rastojanja istu
kao i polazno stanje ili vecu. Stoga, kako se polazno stanje nalazi na platou, pristup ciste pohlepne pretrage je
nemocan vec na pocetku.
Za isto polazno stanje, algoritam A* pronalazi resenje od pet poteza levo, gore, desno, dole, dole. Stablo
pretrage vrsene algoritmom A* je prikazano na slici 4.13 i odgovara procesu pretrage u kojem se medu stanjima
naslednicima prvo razmatra pogresan, ali po proceni rastojanja, jednako obecavajuc potez nadole.
4.3.2
4.3. Algoritam A*
38
0 + 5 (1)
1 2 3 4
5 6 11 7
9 10 8
13 14 15 12
1 + 4 (2)
1+4
1 2 3 4
5 6 11 7
9 10 8 12
13 14 15
1 2 3 4
5 6 11 7
9 10
8
13 14 15 12
1 2 3 4
5 6 11
9 10 8 7
13 14 15 12
2+3
(4)
2+5
1 2 3 4
5 6 11 7
9
10 8
13 14 15 12
1 2 3 4
5 6
7
9 10 11 8
13 14 15 12
1 2 3 4
5 6 11 7
9 10 15 8
13 14
12
3+4
3+2
(5)
3+4
1 2 3 4
5
6 7
9 10 11 8
13 14 15 12
1 2 3 4
5 6 7
9 10 11 8
13 14 15 12
1 2
4
5 6 3 7
9 10 11 8
13 14 15 12
2+5
(2
01
6)
1 2 3 4
5 6 11 7
9 10 8 12
13 14
15
1+6
je
2+5
(3)
4 + 1 (6)
4+3
an
1 2 3 4
5 6 7 8
9 10 11
13 14 15 12
iz
1 2 3
5 6 7 4
9 10 11 8
13 14 15 12
5+2
sk
o
1 2 3 4
5 6 7 8
9 10
11
13 14 15 12
5 + 0 (7)
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15
kt
ro
n
Slika 4.13: Stablo pretrage vrsene algoritmom A*, na primeru slagalice u kojem se polazno stanje nalazi na
platou. U prikazu stabla, medu naslednicima svakog stanja su samo stanja koja nisu vec dodata u zatvorenu
listu. U zagradama su navedeni redni brojevi pod kojim stanja postaju tekuca.
le
dijagonalnom cena 1.414 2 (ovakva cena odgovara euklidskom rastojanju izmedu sredista polja). Funkcija
heuristike moze se zadati na razlicite nacine. Kada se odreduje vrednost , obicno se, jednostavnosti i
efikasnosti radi, ignorisu sve prepreke jer vrednost () je procenjeno a ne stvarno rastojanje. Jedan nacin
zadavanja heuristike je euklidsko rastojanje izmedu dva polja. Ova funkcije je konzistentna (te obezbeduje
optimalnost), ali je zahtevna sto se tice vremena izracunavanja (posebno na mapama sa milionima cvorova).
39
4. Informisana pretraga
Drugi primer funkcije je Menhetn rastojenje u kojem se broji ukupan broj polja predenih horizontalno ili
vertikalno da bi se doslo od jednog do drugog polja. Ukoliko nisu dozvoljeni dijagonalni potezi, onda Menhetn
rastojanje daje dopustivu heuristiku i garantuje pronalazenje optimalnog puta. Ukoliko su dozvoljeni dijagonalni
potezi, onda Menhetn rastojanje potencijalno precenjuje rastojanje do ciljnog cvora, te nije dopustiva heuristika
i zbog toga ne garantuje pronalazenje najkraceg puta. No, ovaj metod u praksi ipak obicno daje dobre rezultate
i pronadeni putevi su obicno dovoljno dobri, cak i ako nisu najkraci.
Primer 4.8. Vrednosti funkcija , i su napisane u svakom polju uniformne mreze: vrednost funkcije je
zapisana gore-levo, vrednost funkcije dole-levo, a vrednost funkcije dole-desno. Vrednost funkcije za svako
polje je, kao i obicno, zbir vrednosti funkcija i . Polazni cvor oznacen je zelenom, a ciljni crvenom bojom.
Otvorena polja su oznacena tankim zelenim kvadratima, a zatvorena debljim crvenim kvadratima u okviru polja.
Strelice ukazuju na tekuceg roditelja polja.
(2
01
6)
Postupak je isti kao kod opsteg algoritma: u svakoj iteraciji bira se polje iz otvorene liste sa najmanjom
vrednoscu funkcije . To, tekuce polje izbacuje se iz otvorene liste i dodaje u zatvorenu listu. Proveravaju se
sva susedna polja, ne razmatrajuci polja koja su u zatvorenoj listi ili nisu dostupna. Ako susedno polje nije vec
u otvorenoj listi, izracunavaju se vrednosti funkcija , i za njega i oznacava se da je tekuce polje njegov
roditelj. Ako je susedno polje vec u otvorenoj listi, proverava se da li je put preko tekuceg polja bolji, tj. proverava
se da li je vrednost funkcije za to susedno polje manja ako se do njega dolazi preko tekuceg polja. Ukoliko to
nije tacno, ne preduzima se nista, a ako jeste, tekuce polje postaje novi roditelj tog susegnog polja i njemu se
pridruzuju nove vrednosti i .
an
je
Pretraga krece od polaznog polja jer je na pocetku samo ono u otvorenoj listi. U poljima levo, desno, gore
i dole od polaznog polja, vrednost funkcije je 10. U dijagonalnim poljima vrednost funkcije je 14. Ove
vrednosti odgovaraju pribliznom euklidskom rastojanju (pomnozenom sa 10 i zaokruzenom). Vrednosti funkcije
izracunavaju se na osnovu Menhetn rastojanja (pomnozenog sa 10) do ciljnog polja i zanemarujuci prepreku.
iz
Polazno polje brise se iz otvorene liste i dodaje u zatvorenu listu. U otvorenoj listi je samo njegovih osam
susednih polja. Od svih njih, bira se ono sa najmanjom vrednoscu funkcije (40), to je polje neposredno desno
od polaznog polja i ono ce biti sledece tekuce polje.
ro
n
sk
o
Tekuce polje izbacuje se iz otvorene liste, dodaje se u zatvorenu listu i onda se proveravaju njegova susedna
polja (naravno, samo ona koja nisu u zatvorenoj listi i nisu prepreke). Preostala cetiri polja su vec u otvorenoj
listi, pa je potrebno proveriti da li put preko tekuceg cvora popravlja njihove trenutne ocene. Razmotrimo, na
primer, polje neposredno iznad tekuceg polja: vrednost funkcije za njega je 14. Ukoliko bi se do njega dolazilo
preko tekuceg polja, vrednost funkcije bila bi 20 (10 je cena od polaznog do tekuceg cvora i 10 je cena prelaska
od tekuceg polja). Dakle, na ovaj nacin se ne moze popraviti vrednost funkcije u polju iznad i ona ostaje
nepromenjena.
le
kt
Opisani postupak sprovodi se za sva cetiri susegna polja i, u ovom slucaju, utvrduje se da ocena nijegnog ne
moze da se popravi. Time je obrada tekuceg polja zavrsena i trazi se novo tekuce polje. Od preostalih sedam
polja u otvorenoj listi bira se ono sa najmanjom vrednoscu funkcije . Ukoliko postoji vise takvih svejedno je
koji izabrati. Neka je, na primer, izabrano polje neposredno ispod prethodnog tekuceg polja.
Za tekuce polje nece se razmatrati susedna polja koja su u zatvorenoj listi i koja su nedostupna (tj. prepreke).
No, moze se (iako to nije nuzno i zavisi od konkretne primene) zabraniti ispitivanje polja koje je desno-dole od
tekuceg polja. Naime, moze se smatrati da je dijagonalni potez od tekuceg do tog polja nemoguc zbog prepreke koja
se nalazi desno od tekuceg polja. Ukoliko se prihvati takvo ogranicenje, ostaje jos tri susednih polja koja treba
razmotriti. Dva polja ispod tekuceg polja nisu u otvorenoj listi, pa se dodaju zajedno sa izracunatim vrednostima
funkcija i informacijom da im je roditelj tekuce polje. Za polje levo od tekuceg polja se proverava da li se moze
smanjiti vrednost funkcije (odgovor je ne) i time je zavrsena obrada tekuceg polja.
Opisani postupak se nastavlja dok ciljno polje ne postane tekuce.
U konkretnom primeru, nakon nekoliko iteracija, vrednosti funkcija i , kao i roditeljsko polje promenili su
se za polje dva polja ispod polaznog polja. Ranije je ovo polje imalo vrednost funkcije jednaku 28 (i vrednost
funkcije jednaku 88) i roditeljsko polje je bilo gore-desno. Kasnije, ovo isto polje ima vrednost funkcije
jednaku 20 (i vrednost funkcije jednaku 80), a roditeljsko polje je gore. Ova izmena dogodila se u nekoj
iteraciji u meduvremenu. U ovom slucaju ona ne utice na pronadeni put, ali su ovakve izmene u opstem slucaju
veoma ceste i uticu na konacno resenje.
Kada se tokom pretrage ciljno polje postane tekuce, trazeni put od polaznog cvora se konstruise jednostavno.
Krece se od ciljnog cvora i prelazi na roditeljski sve dok se ne dode do polaznog cvora. Ovako odreden niz polja
u suporotnom poretku daje trazeni put od polaznog do ciljnog polja.
4.3. Algoritam A*
40
74
60
54
74
60
54
14 60 10 50 14 40
60
40
14 60 10 50 14 40
60
40
10 50
74
60
10 50
74
60
10 30
54
14 60 10 50 14 40
14 60 10 50 14 40
108
74
60
10 30
54
94
80
74
(2
01
6)
28 80 24 70 20 60 24 50
94
74
60
54
54
14 60 10 50 14 40
60
40
24 70 14 60 10 50 14 40
80
60
40
82
10 50
74
60
20 60 10 50
94
74
60
72 10 68 0 72 10
74
68
88
10 30
54
24 70 14 60 10 50 14 40
108
94
80
74
74
68
82
54 20 58 10 68 20
74
74
102
je
14 60 10 50 14 40
88
74
10 30
54
28 80 24 70 20 60 24 50 34 40 44 30 54 20 72 30
108
94
88
88
88
an
28 60 24 50
94
80
74
iz
108
38 70 34 60 38 50 48 40 58 30
28 80 24 70 20 60 24 50
94
74
60
54
82
20 60 10 50
94
74
60
72 10 68 0 72 10
74
68
88
sk
o
24 70 14 60 10 50 14 40
80
60
40
10 30
54
ro
n
24 70 14 60 10 50 14 40
108
94
80
74
74
68
82
54 20 58 10 68 20
74
74
102
4.3.3
38 70 34 60 38 50 48 40 58 30
le
kt
28 80 24 70 20 60 24 50 34 40 44 30 54 20 72 30
108
94
88
88
88
Implementaciona pitanja
41
4. Informisana pretraga
zaokruzene vrednosti.
Najgori slucaj za algoritam A* je kada ne postoji put izmedu polaznog i ciljnog cvora. U tu svrhu moze se
implementirati brza provera da li uopste postoji put izmedu dva cvora: dva cvora su povezana ako i samo ako
pripadaju povezanim delovima grafa. Ako se za svaki cvor moze lako proveriti kom delu grafa pripada, onda je
i navedena provera jednostavna.
Kada se algoritam A* primenjuje za pronalazenje puta na uniformnoj mrezi, on daje korake u osam mogucih
smerova sto kasnije cesto dovodi do neprirodnih puteva sacinjenih od segmenata sa jednim od osam nagiba.
Takve puteve je potrebno unaprediti omeksavanjem, tj. zameniti slicnim putevima koji izgledaju prirodnije.
Pitanja i zadaci
(2
01
6)
primene algoritma A*, moze promeniti vrednost () za cvor ? Da li se tokom primene algoritma A*, moze
promeniti vrednost () za cvor ?
Pitanje 4.7. Kada kazemo da je funkcija heuristike u algoritmu A* konzistentna a kada kazemo da je
dopustiva?
Pitanje 4.8. Kako se zove skup iz kojeg se u glavnoj petlji algoritma A* bira tekuci cvor?
Pitanje 4.9. Koji cvor se, prilikom primene algoritma A*, prvi dodaje u listu otvorenih cvorova?
je
Pitanje 4.10. Tokom primene algoritma A*, ako se ispituje tekuci cvor i naide na njegov susedni cvor koji
an
nije u zatvorenoj listi, ali jeste u otvorenoj listi, sta treba uraditi?
Pitanje 4.11. Da li, na samom pocetku primene algoritma A*, lista zatvorenih cvorova prazna?
Pitanje 4.12. Da li je na kraju primene algoritma A* lista otvorenih cvorova nuzno prazna?
iz
Pitanje 4.13. Da li je na kraju primene algoritma A* lista zatvorenih cvorova nuzno prazna?
sk
o
Pitanje 4.14. Kada se, u okviru algoritma A*, u listi zatvorenih cvorova dodaje novi element?
je uslov zaustavljanja za algoritam A*?
Pitanje 4.15. Sta
Pitanje 4.16. Kakva struktura se koristi za cuvanje vrednosti funkcije evaluacije u okviru algoritma A*?
ro
n
Obrazloziti.
kt
Pitanje 4.17. Kako se zove rastojanje izmedu dva cvora u kojem se broji ukupan broj polja predenih horizontalno ili vertikalno od prvog do drugog?
le
Pitanje 4.18. Koliko je Mehnetn rastojanje izmedu donjeg levog i gornjeg desnog polja sahovske table?
Pitanje 4.19. Kada se algoritam A* primenjuje na uniformnoj mrezi, koja funkcija se obicno primenjuje
kao heuristika? Da li je ova heuristika dopustiva? Zasto se primenjuje ova heuristika, sta je njena kljucna
osobina?
Pitanje 4.20. Kada se algoritam A* primenjuje na uniformnoj mrezi, sta se obicno koristi kao cena puta do
susednog cvora koji je desno, a sta do susednog cvora gore-desno?
4.3. Algoritam A*
42
Pitanje 4.28. Ukoliko je * funkcija koja odgovara optimalnom putu izmedu dva cvora u grafu, koje cvorove
obraduje algoritam *?
(2
01
6)
Zadatak 4.2.
Potrebno je naci najjeftiniji put od grada A do grada E. Procenjene cene putovanja od razlicitih gradova su
(A,105), (B,100), (C,50), (D,20). Stvarne cene putovanja izmeu. gradova su (A,B,20), (A,C,50), (A,D,100),
(B,C,20), (B,E,110), (C,D,30), (D,E,30). Izmeu. ostalih gradova nema puta. Prikazati izvrsavanje algoritma
A* na ovom problemu.
Zadatak 4.3.
c1
2c
an
je
U datom grafu, algoritmom A* naci najkraci put od gornjeg levog do donjeg desnog cvora. Pri tom, brojevi
pored cvorova predstavljaju vrednosti heuristicke procene cene puta preko tog cvora, dok brojevi iznad lukova
predstavljaju tacne cene prelaska od cvora do cvora.
iz
Zadatak 4.4.
c
0
sk
o
2
2
1
6
le
kt
ro
n
U datom grafu, algoritmom A*, naci najkraci put od cvora A do cvora F. Podvuceni brojevi predstavljaju
vrednosti heuristicke funkcije u cvorovima, a ostali cene prelaska preko grana.
1
2
Zadatak 4.5.
Algoritmom A* naci put od cvora A do cvora E. Heuristicka procena cene puta izmeu. dva cvora je broj grana
koje je potrebno preci na tom putu. Stvarne cene su date pored grana.
10
Zadatak 4.6.
43
4. Informisana pretraga
Potrebno je naci najjeftiniji put od grada A do grada E. Procenjene cene putovanja od razlicitih gradova su
(A,105), (B,100), (C,50), (D,20). Stvarne cene putovanja izmeu. gradova su (A,B,20), (A,C,50), (A,D,100),
(B,C,20), (B,E,110), (C,D,30), (D,E,30). Izmeu. ostalih gradova nema puta. Prikazati izvrsavanje algoritma
A* na ovom problemu.
Zadatak 4.7. (A*) Algoritmom A* naci put od cvora V3 do cvora V1. Heuristicka procena cene puta izmedu
dva cvora je broj grana koje je potrebno preci na tom putu. Stvarne cene su date pored grana.
3
9
7
3
8
1
5
4
2
(2
01
6)
5
0
Zadatak 4.8. Na datoj tabli sprovesti algoritam A*. Kao heuristicka mera rastojanja izmeu. dva cvora kojirsti
se Menhetn rastojanje. S oznacava start, a C cilj. Stupanje na belo polje kosta 2, na sivo 6, a crna polja su
neprohodna.
je
S
C
an
Zadatak 4.9. Na datoj tabli sprovesti algoritam A*. Kao heuristicka mera rastojanja izmeu. dva cvora kojirsti
le
kt
ro
n
sk
o
iz
se Menhetn rastojanje. S oznacava start, a C cilj. Stupanje na belo polje kosta 1, na sivo 6, a crna polja su
neprohodna.
kt
le
E
ro
n
sk
o
d
iz
an
je
(2
01
6)
(2
01
6)
Deo II
le
kt
ro
n
sk
o
iz
an
je
kt
le
E
ro
n
sk
o
d
iz
an
je
(2
01
6)
(2
01
6)
Deo III
le
kt
ro
n
sk
o
iz
an
je