29
METODE PRETRAŽIVANJA WEB-A

METODE PRETRA½IVANJA WEB

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

METODE PRETRAŽIVANJA WEB-A

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.

29