Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
2
SADRŽAJ:
2. AGENTI ZA PRETRAŽIVANJE WEB-A..........................................................................................4
3. METODE PRETRAŽIVANJA WEB-A ..............................................................................................6
3.1. SLIJEPE METODE PRETRAŽIVANJA ...................................................................................8
3.1.1. Pretraživanje po širini ........................................................................................... …………..8
3.1.2. Pretraživanje po dubini ...........................................................................................................11
3.1.3. Pretraživanje s jednolikom cijenom........................................................................................12
3.1.4. Pretraživanje do određene dubine..........................................................................................14
3.1.5. Iterativno pretraživanje po dubini ..........................................................................................15
3.1.6. Dvosmjerno pretraživanje…………………………………………………………………....17
3.2. USMJERENE METODE PRETRAŽIVANJA...........................................................................18
3.2.1. Pretraživanje najboljim prvim.................................................................................................18
3.2.2. Pretraživanje penjanjem..........................................................................................................20
3.2.3. A* pretraživanje ................................................................................................... ………….21
3.2.4. Ograničeno pretraživanje po širini..........................................................................................25
3.2.5. IDA* pretraživanje .................................................................................................................28
3
2. AGENTI ZA PRETRAŽIVANJE WEB-A
Web prostor prepun je sadrţaja koji su u potpunosti neorganizirani, nemoguće je kontrolirati
pritjecanje tolike količine podataka svaki dan.Da velika količina tih informacija nebi bila
beskorisna bilo je potrebno razvijati alate za pretraţivanje. Alati ne pretraţuju samo bazu HTML
stranica, nego i prikupljaju stranice za bazu, te prema korisnicima pruţaju jednostavno sučelje za
postavljanje upita i prezentiranje rezultata.Alati se razvijaju u dva smjera ,pa razlikujemo
kataloge i pretraţivače (eng. search engines).Danas neki od najpoznatijih u kategoriji kataloga su
Yahoo , dok kod pretraţivača to je Google, Alta Vista, itd.I katalozi i pretraţivači sadrţe bazu
web stranica, indexa, URL-ova (eng. Uniform Resource Locator - adresa koja jedinstveno
ukazuje na neki sadrţaj na Internetu), a osnovna razlika je u načinu prikupljanja
podataka.Sadrţaj baze kod kataloga ovisi isključivo o ljudima tj. ljudi pretraţuju Web te za
interesantne stranice napišu saţetak i saţetak se uz URL adresu stranice sprema u bazu.
Nedostatci kataloga su to što sadrţe zastarjele informacije zbog manualnog odrţavanje.Kod
pretraţivača prikupljanje podataka je automatizirano i obavljaju ga agenti za pretraţivanje Web-a
(eng. Web Searching Agent) koji su poznati pod nazivom pauci,puzači,crvi (eng. Spider, crawler,
worm).Oni su programski agenti koji “lutaju” Web-om u potrazi za novim stranicama, kad ih
pronaĎu dovlače ih na računalo i pohranjuju u bazu.Izraz lutaju koristi se zbog bolje vizualizacije
samog procesa pretraţivanja ,programski agenti stacionirani su na računalu i na računalo
dovlače stranice.Osim traţenja stranica agenti se koriste za osvjeţavanje sadrţaja baze
[TEŢA2001].
Rad pretraţivača moţe se opisat na sljedeći način. Web agent pretraţuje bazu podataka, izlistava
riječi koje zadovoljavaju upit (ključnu riječ) i zapisuje mjesto gdje ih je našao, indeksira
pronaĎene riječi u indeks prema vlastitom sustavu prosudbe, kodira podatke na sigurno
mjesto i sprema podatke za uporabu[TEŢA2001]. Što se sprema u bazu podataka, ovisi o
odreĎenom pretraţivaču. Neki indeksiraju svaku riječ iz Web dokumenata, a drugi indeksiraju
samo naslov. Kada se provodi pretraţivanje preko ključne riječi ili fraze, pretraţuje se cijela baza
podataka, ali u rezultatu se pokazuju samo Web stranice u kojima je naĎena ta ključna riječ ili
fraza
4
Danas je količina dostupnih sadrţaja na Webu toliko velika da su pretraţivački alati neophodni,
ali isto tako neophodno je i njihovo usavršavanje. Trenutno je najveći problem količina
dostupnih sadrţaja i nemogućnost agenata da uključe sve dostupne sadrţaje u bazu. Jedan korak
u rješavanju tih problema je upotreba meta-pretraţivača, koji koriste baze podataka različitih
pretraţivača, pa na taj način povećavaju vjerojatnost pronalaţenja ţeljenih informacija. MeĎutim
upotreba meta-pretraţivača ne rješava ostale probleme. Jedini način za rješavanje svih problema
bi bila upotreba umjetne inteligencije. Inteligentni agenti za pretraţivanje Web-a (eng. Intelligent
Web searching agent) bi pretraţivali Web samo u potrazi za korisnikovim upitom.
Inteligentnim agentima za pretraživanje Web-a nazivaju se računalni programi što samostalno
izvode neki pretraţivački posao “u ime i za račun” korisnika. Smješteni su u računalu vlasnika,
što ne mora nuţno biti (a najčešće i nije) računalo krajnjeg korisnika, već neko internetsko web
mjesto.Oni sadrţe odreĎeni stupanj inteligencije (nivo zaključivanja i učenja odnosno
sposobnosti da prihvate korisnikove izjave o ciljevima i da obave zadatke koji se postave pred
njih). Inteligentni agenti su agenti koji prate naše ponašanje i na temelju njega su u stanju naučiti
kako mi rješavamo probleme i sl. Kad su to naučili oni mogu te zadatke obavljati samostalno, uz
povremene provjere vlasnika kod nejasnih ili novih situacija[PANI2000].
Svojstva inteligentnih agenata
- učenje – od korisnika, od drugih agenata, iz ostalih izvora
- suradnja – radi s drugim agentima kako bi postigao svoj cilj
- mobilnost – pokretljivost agenata po mreţi, izvoĎenje na različitim računalima
- personalizacija – poznavanje svog korisnika, njegovih interese i preferencija
- adaptibilnost – uče iz različitih izvora, te iz korisničkih akcija.
5
3. METODE PRETRAŽIVANJA WEB-A
Skup svih mogućih rješenja problema naziva se prostor pretraživanja (eng. search space). U
sustavu postoji početno stanje iz kojeg sustav kreće, te prolaskom kroz odreĎeni broj stanja
dolazi u konačno stanje koje je rješenje problema. Čest je slučaj da skup stanja izmeĎu početnog
i konačnog stanja nije jednoznačno odreĎen, nego postoji više različitih, često i različito
učinkovitih puteva od početnog do krajnjeg stanja. Za rad takvih sustava potrebno je ugraditi
algoritme za traţenje spomenutih puteva.Zbog nepostojanja formalnih postupaka koji bi na
temelju početnog i krajnjeg stanja sustava odreĎivali skup stanja na putu izmeĎu njih potrebno
pribjeći najprimitivnijoj, ali zato i najmanje učinkovitoj metodi, pretraţivanju prostora
stanja.Pretraţivanje prostora stanja je postupak koji slijedno prolazi kroz stanja u kojima bi se
mogao nalaziti sustav, te usporeĎivanjem trenutnog stanja s ciljnim stanjem utvrĎuje da li je
postupak došao do kraja[DALB2001].
Razlikujemo dvije osnovne klase algoritama za pretraţivanje:
1.SLIJEPO ILI NEINFORMIRANO PRETRAŢIVANJE (eng. blind search or uninformed
search)
2. HEURISTIČKO ILI USMJERENO (INFORMIRANO) PRETRAŢIVANJE (eng. heuristic or
informed search)
Slijepo pretraţivanje je pretraţivanje koje nema nikakvih informacija o broju koraka ili
vrijednosti putanje (vrijednost udaljenosti čvora od početnog čvora) od početnog do krajnjeg
stanja, tj. cilja. U ova pretraţivanja spadaju:
− pretraţivanja po dubini (eng. Depth-first search)
− pretraţivanja po širini (eng. Breadth-first search)
− pretraţivanja s jednolikom cijenom (eng. Uniform-cost search)
− pretraţivanje do odreĎene dubine (eng. Depth-limiting search)
− iterativno pretraţivanje po dubini (eng. Iterative deeping search)
− dvosmjerno pretraţivanje (eng. Bidirectional search)
6
Heurističko pretraţivanje je pretraţivanje koje ima dodatne informacije o cilju, cijenu putanje ili
broj koraka. Te informacije čine ova pretraţivanja boljim od slijepih te im omogućuju gotovo
racionalno ponašanje. U ova pretraţivanja spadaju:
− pretraţivanje najboljim prvim (eng. Best first search)
− pretraţivanje penjanjem (eng. Hill-climbing search)
− A* pretraţivanje (eng. A* search)
− ograničeno pretraţivanje po širini (eng. Beam search)
− IDA* pretraţivanje (eng. Iterative deeping A* search)
Metode pretraţivanja razmatraju se u okviru ovih kriterija: [ŠULJ2008]
- Potpunost (eng. completeness): da li strategija pretraţivanja garantira pronalazak rješenja?
- Vremenska sloţenost (eng. time complexity): koliko je vremena potrebno za pronalazak
rješenja?
- Sloţenost prostora (eng. space complexity): koliko je memorije potrebno za izvoĎenje
pretraţivanja?
- Optimalnost (eng. optimality): da li strategija pretraţivanja pronalazi visoko kvalitetno
rješenje meĎu više rješenja?
Vremenska i prostorna sloţenost se mjere u terminima: [ŠULJ2008]
- b: najveći faktor grananja stabla pretraţivanja
- d: dubina najkraćeg puta do rješenja (korijen je dubine 0)
- m: najveća dubina stabla pretraţivanja (moţe biti beskonačno)
7
3.1. SLIJEPE METODE PRETRAŽIVANJA
Kod slijepog ili neinformiranog pretraţivanja jedine dostupne informacije su početni opis,
dozvoljene operacije nad opisima i test o postupku završetka, odnosno dostizanja završnog
stanja. Proces pretraţivanja napreduje sistematski kroz prostor rješenja pretraţujući čvorove u
nekom prethodno definiranom redoslijedu ili birajući ih slučajno. Čvor(n) je podatkovna
struktura koja sačinjava stablo pretraţivanja.Čvor pohranjuje stanje (s) i dubinu čvora (d) u
stablu n = (s,d) .
Slijepe metode pretraţivanja se razlikuju meĎusobno po načinu obilaţenja čvorova.Sve metode
slijepog pretraţivanja dijele karakteristiku velike vremenske sloţenosti.
Veza Korijen stabla
Čvor
Slika 1. Stablo i njegovi glavni dijelovi
3.1.1. Pretraživanje po širini
Pretraţivanje po širini (eng. breadth first search, BFS) je način pretraţivanja u kojem se koristi
red kao struktura podataka.Pretraţivanje po širini jedna je od najčešće korištenih metoda
pretraţivanja. Ova metoda pretraţivanja radi na principu FIFO (eng. first in first out), tj. prvi
element koji je stavljen u red se i prvi briše.Pretraţivanje započinje od proizvoljnog čvora kojeg
označavamo kao početnog(korijenski čvor).Početni čvor se stavlja na početak reda, ispituje se, a
zatim se svi čvorove povezani s njim (djeca) dodaju u red.Svi čvorovi koji se trenutno nalaze u redu
A
B
E F
D C
I J
G H
K L
8
ispituju se prije svoje djece tj. nasljednika .Općenito, svi čvorovi na dubini d u pretraţivanju stabla
su prošireni prije bilo kojeg čvorovi na d +1, tj.pretraţujemo po razinama.
Slika 2. Poredak pretraţivanja čvorova kod BFS
Algoritam pretraţivanja po širini:
1. Pohrani početni čvor u red.
2. Ako je red prazan onda vrati pogrešku i stani.
3. Ako je prvi element reda ciljni čvor onda vrati naĎeno uspješno rješenje i stani.
Inače,
4. ukloni prvi čvor u redu, razvij ga i svu njegovu djecu stavi na kraj reda bilo kojim
redoslijedom.
5. Vrati se na korak 2.
Primjer:
Početno stanje
Ciljno stanje
Slika 3. Primjer grafa pretraţivanja po širini -BFS
A
C D B
G F H E
K L J I
9
Na Slici 3. moţemo vidjeti primjer grafa pretraţivanja po širini sa početnim stanjem A i ciljnim
stanjem E. Dakle, početno stanje je čvor A te se pohranjuje u red. Kako prvi element reda nije ciljni
čvor, element A se briše iz reda i na kraj reda stavljaju se svi njegovi susjedni čvorovi tj. djeca
(čvorove B, C i D).Vraćamo se na korak 2. Prvi element reda čvor B nije ciljni čvor, briše se iz reda,
a na kraj reda stavljaju se njegova djeca, čvorovi E i F. Promotrimo prvi element reda, čvor C. On
nije ciljni čvor, briše se iz reda. Čvor D nije ciljni čvor,briše se iz reda i na kraj reda stavljaju se
njegova djeca, čvorovi G i H. Stanje u redu (E,F,G i H): čvor E je prvi u redu a ujedno i ciljni čvor,
rješenje je pronaĎeno.
Pretraţivanje po širirni ima velike memorijske zahtjeve, uzmemo li npr. da imamo početni čvor
koji će imati 10 nasljednika-djece i tako svaki idući čvor će imati isti broj nasljednika-djece, broj
čvorova će eksponecijalno rasti kako se povečava dubina pretraţivanja-razina(Tablica 1.)
Primjer: B broj nasljednika-djece koji ima jedan čvor (B=10) ,vrijeme ispitivanja 1 čvor/ms,
memorijski zahtjev 100 bajt-a/čvor
Razina-dubina Broj čvorova Vrijeme Memorija
0 1 1 ms 100 B
2 111 1 s 11 KB
4 11111 11 s 1 MB
6 18 min 111 MB
8 31 h 11 GB
10 128 dana 1 TB
12 35 godina 111 TB
14 3500 godina 11111 TB
Tablica 1.
Zbog velikih memorijskih zahtjeva ova metoda koristiti će se kod manjih prostora pretraţivanja.
3.1.2. Pretraživanje po dubini
10
Pretraţivanje po dubini ili Depth – First Search je način pretraţivanja u kojem se koristi stog kao
struktura podataka .Stog radi na principu LIFO (eng. last in first out), tj. zadnji podatak koji je
stavljen na stog će prvi biti obrisan. Samo pretraţivanje započinje od proizvoljnog čvora kojeg
označavamo kao početnog(korijenski čvor). Zatim, nastavljamo sa susjednim čvorom koji mora
zadovoljavati neki od zadanih kriterija, npr. abecedni red ili brojevnu vrijednost.Ovom metodom
pretraţivanja ispitujemo čvor do njegove najdublje razine stabla.
Slika 4. Poredak pretraţivanja čvorova kod DFS
Algoritam pretraţivanja po dubini:
1. Pohrani početni čvor u stog.
2. Ako je stog prazan onda vrati pogrešku i stani.
3. Ako je prvi element stoga ciljni čvor onda vrati naĎeno uspješno rješenje i stani.
Inače,
4. ukloni prvi čvor u stogu, razvij ga tj. svu njegovu djecu stavi na početak stoga bilo kojim
redoslijedom.
5. Vrati se na korak 2.
Primjer: Početni čvor A – ciljni E
11
Algoritam počinje postavljanjem početnog čvora A na stog –slika.5. Ispituje se čvor A , pošto se
utvrdi da nije nit prazan niti ciljni čvor briše se iz stoga, a svi njegovi susjedni čvorovi tj. djeca (B, C
i D) stavljaju se na početak stoga.Sada na stogu imamo 3 čvorova ,po nekom od zadanih kriterija
izabire se jedan od njih kao idući čvor za ispitivanje.Ako je zadani kriterij npr. abecedni red ispituje
se prvo čvor B.Ako čvor B nije ciljni čvor, briše se iz stoga a na početku stoga su stavljena negova
djeca, čvorovi E i F. Trenutno na stogu imamo čvorove E,F,C i D.Promotrimo prvi element stoga,
čvor E. On je ciljni čvor, postupak se završava pronašli smo rješenje.
Početno stanje
Ciljno stanje
Slika 5. Primjer grafa pretraţivanja po dubini DFS
Pretraţivanje po dubini pogodnije je od pretraţivanja po širini kada stablo pretraţivanja ima puno
ciljnih čvorova.Druga prednost mu je što ima skromne memorijeske zahtjeve, arhivira samo put od
korijena(početnog čvora) do trenutnog čvora zajedno s preostalim čvorovima te iste razine(susjedni
čvorovi). Što se tiče potpunosti, ova strategija pretraţivanja ne garantira pronalazak rješenja osim
kada se radi o konačnim prostorima.
3.1.3. Pretraživanje s jednolikom cijenom
Pretraţivanje s jednolikom cijenom (eng. uniform cost search, UCS) je slično pretraţivanju po
širini. Razlika je u tome što se kod ove metode čvorovi koji su dodani u red sortiraju po cijeni
putanje (udaljenost od početnog čvora) i tek onda uklanjaju iz reda. Dakle, uklanja se uvijek onaj
čvor koji ima najmanju cijenu putanje.
A
C D
H
B
G H F E
J I K L
12
Na slici 6. imamo prikazani primjer pretraţivanja s jednolikom cijenom.Traţimo najkraći put od
čvora S do čvora G.Pretraţivanje počinje s početnim čvorom S, pošto nije ciljni čvor brišemo ga
iz reda i stavljamo njegove nasljednike-djecu ,čvorove: A(1), B(5), C(15) u red i to tako da oni s
najniţom cijenom putanje(vrijednost napisane u zagradama) nalaze se na početku reda.Čvor s
najniţom cijenom putanje je A(1) te se nalazi na početku reda, pošto nije ciljni čvor brišemo ga
iz reda i u red se dodaju njegova djeca tj. djete G(11).U redu sada imamo B(5), G(11) i C(15).
Ponavljamo proces ispitujuči čvor s najniţom cijenom putanje B(5), brišemo ga jer nije ciljni
čvor te u red upisujemo čvor G(10).Trenutno stanje : G(10), G(11) i C(15). PronaĎeno je rješenje
sa najkraćom cijenom putanje G(10), tj. put S-B-G.
Ovakvo pretraţivanje će uvijek pronaći optimalno rješenje ako ono postoji.
Slika 6. Primjer pretraţivanja s jednolikom cijenom: (a)Graf , (b)Stablo
3.1.4. Pretraživanje do određene dubine
13
Pretraţivanje do odreĎene dubine (eng. depth limiting search, DLS) je vrsta pretraţivanja po
tehnici jednaka pretraţivanju po dubini.Jedina razlika je unaprijed ograničena dubina
pretraţivanja.Zbog ograničenja dubine izbijegli smo mogućnost da pretraţivanje ode u
beskonaćnost.
Algoritam pretraživanja do određene dubine:
1. Pohrani početni čvor u stog.
2. Ako je stog prazan onda vrati pogrešku i stani.
3. Ako je prvi element stoga ciljni čvor onda vrati naĎeno uspješno rješenje i stani.
Inače,
4. ako je čvor na dubini manjoj od d, razvij ga i svu njegovu djecu stavi na početak stoga
bilo kojim redoslijedom.
5. Vrati se na korak 2.
Početno stanje
Ciljno stanje
Slika7. Primjer pretraţivanja do odreĎene dubine
Na slici 7. prikazan je graf pretraţivanja po dubini ali s ograničenom razinom do koje
pretraţujemo.Početno stanje je čvor A na razini d=0 , razina do koje pretraţujemo je d=2 ,ujedno
i razina na kojoj se nalazi ciljni čvor.Pošto čvor A nije ciljni čvor brišemo ga sa stoga i na stog
spremamo svu djecu,čvorove (B,C i D) uz unaprijed provijereni uvjet da se čvor nalazi na razini
A
C
L K I J
H G E F
B D
14
d<2.Ovisno o zadanom kriteriju (abecedni red ili neki drugi) odabiremo čvor koji ćemo slijedeći
ispitivati.Abecednim redom to će biti čvor B, on nije ciljni čvor tako da ga brišemo sa stoga i
raspisujemo njegovu djecu (E i F).Promatramo čvor E. On nije ciljni čvor, briše se iz stoga, ali se
ne proširuje na susjedne čvorove budući da se ne nalazi na dubini manjoj od d=2.Pretraţivanje se
nastavlja na čvor F. Postupak se ponavlja dok prvi element stoga ne bude ciljni čvor.
3.1.5. Iterativno pretraživanje po dubini
Iterativno pretraţivanje u dubinu je strategija u kojoj se iskorištavaju dobra, a zaobilaze loša
svojstva pretraţivanja u dubinu.Ovom strategijom se najprije pretraţivanjem u dubinu pretraţuje
stablo do dubine 1, a ako rješenje nije naĎeno odbacuju se čvorovi i započinje u drugoj iteraciji
pretraţivanje do dubine 2. Ako rješenje i tada nije naĎeno započinje pretraţivanje u dubinu do
razine 3 itd. do neke granične dubine n. Na ovaj način dobiva se efekt pretraţivanja u širinu, s
velikom razlikom u načinu zauzimanja memorije. Ova metoda je preferirana metoda
pretraţivanja kada je prostor pretraţivanja velik i dubina na kojoj se nalazi rješenje nije poznata.
Početno stanje
Ciljno stanje
Slika 8. Primjer iterativnog pretraţivanja po dubini
Nivo 0:
Pretraţivanje započinjemo sa početnim stanjem čvorom A koji je dodan u red. Čvor A je
potom proširen (eng. expanded) i izbrisan iz reda. Kako je ovo iteracija nultog reda (nivo
dubine je 0) ne moţe se pretraţivati nijedan nivo veći od nule. Time ova iteracija završava
A
C B
F E
J I
D
G
K
H
L
15
i slijedi iteracija rednog broja 1.
Nivo 1:
Opet započinjemo sa početnim stanjem, čvorom A. Čvor A je proširen, izbrisan iz reda i
na početak reda su dodani otkriveni čvorovi (eng. revealed nodes), tj. njegova djeca, čvorovi B, C i
D. Pretraţivanje se nastavlja na nivou 1. Čvor B je proširen i uklonjen iz reda. Potom se pretraţuje
prvi neposjećeni čvor na nivou 1, tj. čvor C, proširuje se i briše iz reda. Pretraga se nastavlja dok svi
čvorovi na prvom nivou ne budu posjećeni.Kako je ovo iteracija rednog broja 1 ne pretraţuje se
nijedan nivo većeg rednog broja.Time iteracija rednog broja 1 završava i prelazi se na iteraciju
rednog broja 2.
Nivo 2:
Pretraţivanje opet započinje sa početnim stanjem, čvorom A. Čvor A uklanja se iz reda,
čvorovi B, C i D su dodani na početak reda (nivo 1). Prelazi se na pretraţivanje
nivoa 2. Čvor B je posjećen, briše se iz reda i čvorovi E i F su dodani na početak reda.Čvor C briše se
iz reda.Čvor D je proširen i uklonjen iz reda, a čvorovi G i H se stavljaju na kraj reda. Potom se
pretraţuje prvi neposjećeni čvor na drugom nivou, čvor E.Postupak se ponavlja do ciljnog
stanja, čvora G.
3.1.6. Dvosmjerno pretraživanje
A
B
A
C D
A
B C D
G H F E
16
Dvosmjerno pretraţivanje (eng.Bidirectional Search) je način pretraţivanja kod kojeg se
istovremeno pretraţuje od početnog stanja( početnog čvora) prema ciljnom stanju(ciljnom čvoru)
i od ciljnog stanja prema početnom stanju.Pretraţivanje se zaustavlja najkasnije onda kada se
dvije fronte susretnu na polovici puta.Svakoj fronti unaprijed trebamo odrediti metodu kojom će
pretraţivati.Vremenska i prostorna sloţenost ove metode je O(bd/2
).Nedostatak dvosmjernog
pretraţivanja je postojanje više ciljnih stanja.
Slika 9. Primjer dvosmjernog pretraţivanja
17
3.2. USMJERENE METODE PRETRAŽIVANJA
Za razliku od slijepih metoda pretraţivanja, usmjerene ili heurističke metode pretraţivanja
koriste dodatne informacije o problemu koje mogu bitno ubrzati pronalaţenje rješenja, što je više
podataka dostupno metodi pretraţivanja to je pretraţivanje efikasnije.Usmjerene metode
pretraţivanja koriste dodatne informacije kako bi pronašle što kraći put od početnog stanja do
ciljnog stanja. Te dodatne informacije su npr. informacije o naravi stanja, o cijeni prijelaza iz
jednog stanja u drugo, o osobinama cilja, itd. Takve informacije obično se nazivaju heurističke -
temelje se na iskustvenim pravilima i tehnikama prosuĎivanja koje mogu pomoći, ali nuţno ne
osiguravaju pronalaţenje rješenja. Heurističke informacije mogu se oblikovati u heurističku
evaluacijsku funkciju koja zavisi od pojedinog čvora n i od cilja koji se traţi, f(n) = g(n) + h(n).
Dakle, ukupna vrijednost heurističke funkcije f(n) dobiva se zbrajanjem vrijednost h(n) i g(n).
Pri tome je h(n) funkcija procjene udaljenosti čvora n od ciljnog čvora, a g(n) udaljenost čvora n
od početnog čvora[ŠULJ2008].
Vrijednost g(n) se koristi samo u slučaju A* pretraţivanja. Ovi algoritmi ne pretraţuju čvorove
po redu nego za svaki obiĎeni čvor izračunavaju vrijednost heurističke funkcije te se
pretraţivanje usmjerava na čvor sa najmanjom vrijednošću heurističke funkcije. Većina
algoritama za usmjereno pretraţivanje namijenjena je za strukture stabla. Jedan od nedostataka
usmjerenih metoda pretraţivanja je izravna ovisnost o odabiru heurističke funkcije. Ukoliko je
ona dobro odabrana, usmjerene metode će neusporedivo brţe doći do rješenja nego slijepe
metode. MeĎutim, pogrešnim odabirom heurističke funkcije pretraţivanje će biti vrlo
neučinkovito.
3.2.1. Pretraživanje najboljim prvim
Pretraţivanje najboljim prvim (eng. best first search) je usmjereno pretraţivanje koje optimizira
(poboljšava) pretraţivanje po širini.Ova metoda koristi tzv. pohlepni (engl. greedy) algoritam
“najbolji prvi”, odabire se onaj čvor koji se čini najbliţi cilju, ne uzimajući u obzir ukupnu cijenu
puta. Pohlepni algoritam ne mora uvijek naći optimalno rješenje, ali je znatno brţi od drugih
algoritama.
18
Algoritam pretraživanja najboljim prvim:
1. Pohrani početni čvor u red.
2. Ako je red prazan onda vrati pogrešku i stani.
3. Ako je prvi element reda ciljni čvor onda vrati naĎeno uspješno rješenje i stani.
Inače,
4. Ukloni prvi čvor u redu, razvij ga i izračunaj procjenu udaljenosti od cilja za svako dijete.
Stavi svu djecu u red i uredi sve elemente reda po procjeni udaljenosti od cilja.
5. Vrati se na korak 2.
Na sljedećem primjeru putovanja po Istri demonstrirat ćemo pretraţivanje najboljim prvim.
Na karti je dana povezanost grada Buzet sa ostalim gradovima istarskog poluotoka, a u tablici
pravocrtna udaljenost pojedinih gradova od Buzeta. Zadatak je pronaći najkraći put od grada
Pazina (početno stanje) do Buzeta (ciljno stanje).
Slika 10.Pretraţivanje najboljim prvim-(primjer:Dalbelo Bašić,Šnajder FER)
19
Pretraţivanje započinjemo s gradom Pazinom čija je pravocrtna udaljenost od Buzeta 17.
17
Proširujemo čvor Pazin na čvorove Motovun i Lupoglav.Njihova pravocrtna udaljenost od cilja
je 12 i 13 redom.
12 13
Kako grad Motovun ima najmanju vrijednost heurističke funkcije on se sljedeći proširuje na čvor
Buzet ,koji je ujedno ciljni čvor.Kod ovog primjera moţemo vidjeti da ovo nije najoptimalnije
riješenje jer je put Pazin-Lupoglav-Buzet kraći za 1 km prema karti.
3.2.2. Pretraživanje penjanjem
Pretraţivanje penjanjem ili metoda uspona na vrh (eng. hill climbing search) je slična metodi
pretraţivanja po dubini s tim da se širi onaj čvor koji je najpogodniji prema vrijednosti
heurističke funkcije, dok se sve informacije o ostalim čvorovima brišu. Npr. heuristička funkcija
moţe biti neka mjera udaljenosti od cilja, tada je najpogodniji čvor sa minimalnom vrijednošću.
Algoritam pretraživanja penjanjem:
1. Pohrani početni čvor u red
2. Ako je red prazan onda vrati pogrešku i stani
3. Ako je prvi element reda ciljni čvor onda vrati naĎeno uspješno rješenje i stani
Inače,
4. Ukloni prvi element u redu, razvij ga i svu njegovu djecu dodaj na početak reda i to po
procjeni udaljenosti čvora do cilja.
5. Vrati se na korak 2
Motovun
Pazin
Pazin
Lupoglav
20
(a) (b)
Slika 11. Primjer pretraţivanja penjanjem: (a)pronalazi cilj (b)vrti se u petlji
Na slici 11. pod (a) pretraţivanje penjanjem počinje od početnog čvora A do ciljnog čvora
E.Prema vrijednosti heurističke funkcije bira se sljedeći čvor za proširenje, u ovom primjeru to je
čvor B čija vrijednost heurističke funkcije je manja od vrijednosti čvorova C i D.Zatim se
pretraţuje čvor D, potom čvor C i pretraţivanje završava dolaskom do ciljnog čvora E. Rješenje
je pronaĎeno, meĎutim ono nije optimalno. Optimalno rješenje je putanja A-C-E. Nedostatak ove
metode pretraţivanja je u tome da ne odrţava stanja o svim čvorovima, za pretraţivanje je vaţno
samo trenutno stanje.
Na slici 11. pod (b) imamo prikazano pretraţivanje penjanjem koje se vrti u petlji. Početno stanje
je čvor A, a ciljno stanje čvor E. Pretraţivanje se vrti u petlji A-B-D-A.
3.2.3. A* pretraživanje
A* pretraţivanje je poseban slučaj pretraţivanja najboljim prvim koji uključuje postupak
računanja udaljenosti čvora n od početnog čvora. Za svaki čvor, koji je na putu od početnog do
ciljnog čvora, algoritam stvara sve slijedne čvorove (djecu) i računa procjenu udaljenosti od
početnog do ciljnog čvora kroz sve stvorene čvorove. Izabire onaj slijedni čvor za koji je ta
procjena udaljenosti najmanja. Tada se stvaraju djeca odabranog čvora, računaju se procjene
udaljenosti za putove kroz njih i postupak se nastavlja dok se ne pronaĎe rješenje.
Kao ukupna vrijednost heurističke funkcije nekog čvora obično se uzima izraz f(n) = g(n) + h(n).
21
Funkcija h(n) daje nam udaljenost čvora n od ciljnog čvora, što je ta vrijednost manja to smo
bliţe cilju.U slučaju kad su nam dva čvora jednako daleko od ciljnog čvora tj. ,vrijednosti
funkcije h(n) su iste, tada algoritam odabire onaj čvor koji je bliţi početnom čvoru tj. ima manju
vrijednost funkcije g(n).Na taj način smo pronašli najkraći put[ŠULJ2008].
Algoritam A* koristi dvije liste:
-OPEN – čvorovi koji su stvoreni, ali nisu još prošireni
- CLOSED – čvorovi koji su prošireni i čija djeca su na raspolaganju algoritmu pretraţivanja
Lista OPEN sloţena je po rastućoj vrijednosti funkcije f. Proširuje se čvor koji je na vrhu liste
(najmanji f), a prošireni čvor se stavlja na listu CLOSED. Djeca se stavljaju na listu OPEN koja
se ponovo sloţi po rastućoj vrijednosti funkcije f.
Algoritam A*:
1. Stavi početni čvor na listu OPEN.
2. Ako je lista OPEN prazna onda se zaustavi i vrati pogrešku.
3. Ukloni sa liste OPEN čvor n koji ima najmanju vrijednost f(n). Ako je čvor ciljni čvor
vrati uspješan završetak.
Inače,
4. Proširi čvor n, stvarajući svu njegovu djecu. Za svako dijete n' izračunaj vrijednost f(n'), a
čvor n stavi na listu CLOSED.
Za svako dijete n', koje nije na listi OPEN ili CLOSED učini:
− pridijeli mu izračunatu vrijednost f(n');
− pridijeli mu pokazivač unazad (eng. backpointer) na čvor n;
− stavi ga na listu OPEN;
5. Za svako dijete n' koje je na listi OPEN ili CLOSED učini:
− pridijeli mu manju od vrijednosti f(n') izračunatu u ovom koraku ili prije;
− ako je n' bio na listi CLOSED i vrijednost f(n') mu je promijenjena (smanjena),
ukloni ga i stavi ga na listu OPEN te aţuriraj njegov pokazivač unatrag.
6. Vrati se na korak 2.
22
Na primjeru putovanja po Rumunjskoj demonstrirat ćemo pretraţivanje A*. Zadatak je pronaći
najkraći put od grada Arad (početno stanje) do Bukurešta (ciljno stanje).
Slika 12. Primjer putovanja po Rumunjskoj
U ovom slučaju vrijednost g(n) predstavlja udaljenost pojedinih gradova od početnog čvora tj.
grada Arad, a vrijednost h(n) udaljenost pojedinih gradova do ciljnog čvora, tj. grada Bukurešta.
Pretraţivanje započinjemo sa početnim čvorom, gradom Aradom. Njegova ukupna vrijednost
heurističke funkcije iznosi f(n) = 0 + 366.
Proširujemo čvor Arad na njegove susjedne čvorove i za svaki čvor se izračunava vrijednost
heurističke funkcije:
23
Proširuje se čvor koji ima najmanju vrijednost heurističke funkcije, u ovom slučaju čvor Sibiu i
za svaki njegov susjedni čvor računa se vrijednost heurističke funkcije:
Potom se proširuje sljedeći čvor sa najmanjom vrijednosti heurističke funkcije, čvor Rimnicu:
Sljedeći čvor koji se proširuje je čvor Fagaras (od svih čvorova ima najmanju vrijednost
heurističke funkcije):
24
Potom se proširuje čvor Pitesti i time smo došli do čvora Bukurešt, tj ciljnog čvora:
3.2.4. Ograničeno pretraživanje po širini
Ograničeno pretraţivanje po širini ili pretraţivanje snopom zraka (eng. Beam search) je posebna
vrsta A* pretraţivanja.Ovom metodom pretraţujemo samo n odabranih najboljih čvorova.
Pretraţivanje započinjemo ispitivanjem početnog čvora, proširujemo ga te ako ni jedan od djece
nije ciljni čvor, algoritam pretraţivanja od svih čvorova odabire n najboljih za daljnje
pretraţivanje i postupak se ponavlja. Na svakoj razini odabiru se najbolji čvorovi tj. oni koji
imaju najbolju vrijednost heurisičke funkcije.
Na primjeru ćemo vidjeti pretraţivanje u širinu u slučaju kad je n=2 tj. na svakoj razini se
odabiru po dva najbolja čvora za daljnje pretraţivanje.
Pretraţivanje započinje sa početnim čvorom, gradom Arad:
Kako to nije ciljni čvor, proširuje se na susjedne čvorove te se za daljnje pretraţivanje biraju
25
samo dva čvora sa najmanjim vrijednostima heurističke funkcije, čvorovi Sibiu i Timisoara:
Čvor Sibiu se proširuje na slijedne čvorove (jer ima manju vrijednost heurističke funkcije od
čvora Timisoara), te se od svih čvorova odabiru dva najbolja za daljnje pretraţivanje, čvorovi
Fagaras i Rimnicu:
Kako čvor Rimnicu ima manju vrijednost heurističke funkcije od čvora Fagaras, on se dalje
proširuje na čvorove Craiova, Pitesti i Sibiu. Od svih čvorova odabiru se dva najbolja te se
pretraţivanje nastavlja. Dakle, odabrani su čvorovi Fagaras i Pitesti:
Čvor Fagaras ima manju vrijednost heurističke funkcije od čvora Pitesti pa se on sljedeći
26
proširuje na čvorove Sibiu i Bukurešt:
Odabiru se dva čvora sa najmanjom vrijednosti heurističke, čvorovi Bukurešt i Pitesti, te se
proširuje onaj sa najmanjom vrijednosti heurističke funkcije. Dakle, čvor Pitesti se proširuje na
svoje susjedne čvorove i od svih čvorova čvor sa najmanjom vrijednosti heurističke funkcije je
ujedno i ciljni čvor:
27
3.2.5. IDA* pretraživanje
Iterativno A* pretraţivanje po dubini (eng. Iterative deeping A* search, IDA*) je posebna vrsta
A* pretraţivanja. Ova metoda pretraţivanja postavlja graničnu vrijednost (eng. threshold) tj.
dubinu (uglavnom se uzima vrijednost heurističke funkcije početnog čvora) do koje se
pretraţuje. Ako rješenje nije pronaĎeno na postavljenoj dubini, dubina pretraţivanja se povećava
tako da se uzima najmanja vrijednost heurističke funkcije neproširenih čvorova i pretraţivanje se
ponavlja.
Na slici 13. Imamo prikazano IDA* pretraţivanje sa početnim stanjem A i završnim stanjem E.
Brojevi pridodani čvorovima predstavljaju udaljenost čvora od cilja, a brojevi izmeĎu čvorova
predstavljaju udaljenost meĎu pojedinim čvorovima.
Slika 13. Primjer IDA* pretaţivanja
Pretraţivanje započinje od početnog čvora A, računamo ukupnu vrijednost heurističke funkcije
f(n) = 0 + 1 = 1 koja je ujedno granična vrijednost.Pošto čvor A nije ciljni čvor, proširujemo ga
na čvorove B i C te računamo njihove vrijednosti heurističke funkcije.
Granična vrijednost = 1
28
Kako cilj na dubini 1 nije pronaĎen pretraţivanje se ponavlja, a za graničnu vrijednost se uzima
najmanja vrijednost heurističke funkcije na prethodnoj dubini. Dakle, granična vrijednost je sada
jednaka 4, te se čvor B obzirom da nije ciljni čvor proširuje na čvor D:
granična vrijednost = 4
Ni na ovoj dubini cilj nije pronaĎen, pretraţivanje se ponavlja, granična vrijednost uvećava, a
čvor C se proširuje na čvor F.
Granična vrijednost = 5
Na ovoj dubini cilj takoĎer nije pronaĎen pa se pretraţivanje opet ponavlja, granična vrijednost
jednaka je 6, čvor D se proširuje na čvor E koji je ujedno i ciljni čvor.Putanja koja vodi do
rješenja je A-B-D-E.