22
UNIVERZITET U BIHAĆU TEHNIČKI FAKULTET BIHAĆ ELEKTROTEHNIČKI ODSJEK INFORMATIKA SEMINARSKI RAD

Rješavanje problema pretragom98

Embed Size (px)

Citation preview

Page 1: Rješavanje problema pretragom98

UNIVERZITET U BIHAĆUTEHNIČKI FAKULTETBIHAĆELEKTROTEHNIČKI ODSJEKINFORMATIKA

SEMINARSKI RAD

Page 2: Rješavanje problema pretragom98

Sadržaj:

1. Uvod........................................................................................................2

2. Strategija pretraživanja........................................................................... 3

3. Strategije slijepog pretraživanja............................................................. 43.1. Pretraživanje u širinu.................................................................... 43.2. Pretraživanje u dubinu.................................................................. 53.3. Iterativno pretraživanje u dubinu................................................. 83.4. Bidirekcionalno pretražiavnje...................................................... 93.5. Usporedba slijepih strategija........................................................ 9

4. Strategija usmjerenog pretraživanja........................................................104.1. Metoda uspona na vrh...................................................................104.2. Metoda najboljeg prvog................................................................ 114.3. Algoritam A*................................................................................ 12

5. Demonstracija rješenja problema pretrage..............................................135.1. Definicija problema...................................................................... 135.2. Korištenje apleta........................................................................... 135.3. Korištenje heuristike..................................................................... 14

6. Literatura................................................................................................. 15

1

Page 3: Rješavanje problema pretragom98

1. Uvod

Rješavanje određenog problema se može svesti na traženje niza akcija koje iz početnog stanja vode u ciljno stanje. Skup stanja je organiziran u strukturu grafa ili stabla pa je pretraživanje pronalaženje puta kroz graf ili stablo. Algoritam za rješavanje problema na svom ulazu dobije problem, a kao izlaz daje rješenje u obliku niza akcija. Dobro definiran problem treba sadržavati:

Početno stanje: stanje od kojeg se započinje pretraživanje Skup dozvoljenih akcija (operatora): prijelazi iz određenog stanja u skup stanja.

Početno stanje i skup dozvoljenih akcija definiraju prostor stanja problema kao skup svih stanja do kojih se može doći iz početnog stanja bilo kojim nizom akcija. Put u prostoru stanja je niz akcija koje vode iz jednog stanja u neko drugo.

Test na ciljno stanje: provjera da li stanje zadovoljava ciljno stanje. Test na ciljno stanje može biti jednostavna provjera da li stanje pripada skupu ciljnih stanja. Kod npr. šaha, broj ciljnih stanja je prevelik, pa se umjesto provjere pripadnosti skupu ciljnih stanja provjerava da li trenutno stanje po svojim svojstvima zadovoljava ciljne uvjete.

Funkcija cijene puta: pridružuje cijenu putu, kako bi se iz skupa pronađenih rješenja moglo odrediti najbolje.

2

Page 4: Rješavanje problema pretragom98

2. Strategije pretraživanja

Strategije pretraživanja se mogu vrednovati na temelju četiri kriterija:

kompletnost (engl. completness): da li je garantirano da strategija pronalazi rješenje, ako ono postoji?

vremenska složenost (engl. time complexity): koliko dugo traje potraga za rješenjem?

prostorna složenost (engl. space complexity): koliko je potrebno memorije za pronalaženje rješenja?

optimalnost (engl. optimality): da li strategija pronalazi najbolje rješenje, ako se zna da za problem postoji više različitih rješenja?

Prema količini dodatnih informacija koje algoritam dobiva iz trenutno aktivnog čvora strategije pretraživanja se mogu podijeliti na strategije slijepog (engl. blind, uninformed search) i strategije usmjerenog pretraživanja (engl. directed, informed search). Kod slijepog pretraživanja algoritam posjeduje informacije o početnom stanju, dozvoljenim operacijama nad stanjim i testu na rješenje problema. Strategije slijepog pretraživanja sistematski napreduju kroz prostor stanja, a međusobno se razlikuju u redosljedu proširivanja čvorova. U strategijama usmjerenog pretraživanja koriste se dodatne informacije (heurističke informacije) kako bi se odredilo koji čvor će se sljedeći proširiti. Heurističke informacije zavise od problema i moraju se zadati unaprijed. Heurističke informacije se najčešće dobivaju korištenjem heurističke evaluacijske funkcije koja informacije o aktivnom čvoru preslikava u brojčanu vrijednost. Na temelju usporedbe brojčanih vrijednosti se određuje stanje koje će se sljedeće proširiti. Uporabom heurisike postiže se smanjenje dimenzije problema od eksponencijalne na polinomijalnu, ali se ne garantira pronalaženje cilja niti da će pronađeno rješenje biti optimalno.

3

Page 5: Rješavanje problema pretragom98

3. Strategije slijepog pretraživanja

3.1. Pretraživanje u širinu (engl. breadth-first search)

Jednostavna strategija pretraživanja u kojoj se najprije ispituju svi čvorovi razine d u stablu pretraživanja, a nakon toga se ispituju njihova djeca, odnosno čvorovi razine d+1. Algoritam pretraživanja u širinu se zasniva na stavljanju novih čvorova na kraj reda. Pretraživanje u širinu uvijek pronalazi rješenje, ali iskoristivost ove strategije na realne probleme je relativno mala. Ako se pretpostavi da problem ima faktor granjanja (broj čvorova djece) b, a rješenje se nalazi na dubini d. Maksimalan broj čvorova koje je potrebno pretražiti pri pronalaženju rješenja ovakvog problema je:

1 + b + b2+ b3 + ... + bd

Ako se pretpostavi slučaj u kojem je b=10, za obradu 1000 čvorova treba 1 sek, a svaki novi čvor zahtijeva 100 bajtova memorije. Rezultat obrade ovakvog problema se vidi u tablici za različite dubine pretraživanja:

Dubina Broj čvorova Vrijeme obrade Memorija0 1 1 ms 100 bajtova2 111 0.1 s 11 kB4 11,111 11 s 1 MB6 106 18 min 11 MB8 108 31 sat 11 GB10 1010 128 dana 1 TB12 1012 35 godina 111 TB

Iz tablice se vidi da memorijski zahtjevi predstavljaju veći problem od vremena izvođenja. Može se pretpostaviti da će netko imati strpljenja čekati 31 sat na rješenje vrlo važnog problema, ali malo ljudi imaju ima na raspolaganju 11 gigabajta memorije. Općenito gledano, problemi eksponencijalne složenosti mogu biti riješeni samo za posebne slučajeve.

3.1.1. Primjer:

4

Page 6: Rješavanje problema pretragom98

• Ispituju se svi čvorovi na odrenenoj razini prije prelaska na slijedeću razinu• Struktura liste koristi se za čuvanje otvorenih (generiranih) ali jošne- istraženih čvorova• Redoslijed kojim se čvorovi pohranjuju u listu za ispitivanje i uklanjanjeodrenuje tip pretraživanjaPodsjetnik:

- b (prosječni) faktor grananja,- d dubina najjeftinijeg rješenja- m maksimalna dubina stable

3.2. Pretraživanje u dubinu (engl. depth-first search)

Sama ideja algoritma je u tome da u svakom koraku pokušamo u grafu otići što je “dublje”moguće. Ta se ideja može veoma lako pokazati na sljedećem primjeru.

Slika 3.2.1. Primjer grafa na kojem ćemo demonstrirati izvođenje pretraživanja u dubinu

Zadani graf obići ćemo u dubinu počevši od vrha A.

Slika 3.2.2. Izvođenje pretraživanja u dubinu

5

Page 7: Rješavanje problema pretragom98

Slika 3.2.3. Izvođenje pretraživanja u dubinu (nastavak)

Počevši od vrha A pronalazimo njemu prvi susjedni vrh te nastavimo pretraživati u dubinu od njega na dalje. Ukoliko naiđemo na vrh koji smo već obišli ili vrh od kojeg ne možemo ići dalje, vraćamo se natrag kroz graf dok ne naiđemo na vrh iz kojeg postoji brid kojim nismo prošli. Kao što je iz primjera vidljivo redosljed nailaženja vrhova je A, B, C, F, D, E, G. Nakon što je algoritam naišao na E pokušava otići dalje u dubinu bridom EF, međutim vrh F je već obiđen u nekom prethodnom koraku. Isto tako pokušava se dalje poći bridom GA te je ishod isti kao i s bridom EF.Uz ovakav način prikazivanja izvođenja algoritma moguć je i prikaz uz pomoć stable pretraživanja u dubinu. Takvo je stablo u biti samo drugačiji način crtanja grafa kojeg istražujemo. Prikaz takvog stabla za prethodni primjer dan je sljedećom slikom.

Slika 3.2.4. Stablo pritraživanja u dubinu

Bridovi označeni punom crtom označavaju da je vrh koji je niže u stablu pronađen u listi usjedstva njemu nadređenog vrha te da taj vrh u prethodnom dijelu algoritma nismo susreli.

6

Page 8: Rješavanje problema pretragom98

Crtkani bridovi su oni bridovi koji vode prema već obiđenim vrhovima. Bitno svojstvo neusmjerenih grafova je to da crtkani bridovi uvijek vode od nekog vrha niže u stablu prema nekom vrhu koji mu je predak u stablu.U toku izvođenja algoritma vrhove grafa možemo u svakom trenutku svrstati u tri klase. U prvu klasu spadaju svi vrhovi koji su potpuno obrađeni, u drugu oni koji su djelomično obrađeni dok u treću oni koji još nisu viđeni. U toku izvođenja aloritma nailaskom na vrh kojeg još nismo susreli u stablo pretraživanja dodajemo brid koji je označen punom crtom, dok kad naiđemo na vrh koji je već obrađen u stablo dodajemo crtkani brid. Kod neusmjerenih grafova nikad nećemo pronaći brid koji vodi od vrha koji je obrađen prema nekom vrhu neke druge klase.

3.2.1. Primjer:

7

Page 9: Rješavanje problema pretragom98

3.3. Iterativno pretraživanje u dubinu (engl. iterative deepening search)

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 pretraživanja 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 se metoda je preferirana metoda pretraživanja kada je prostor pretraživanja velik i dubina na kojoj se nalazi rješenje nije poznata.

Slika 3.3.1. Iterativno pretraživanje u dubinu

8

Page 10: Rješavanje problema pretragom98

3.4. Bidirekcionalno pretraživanje (engl. bidirectional search)

Osnovna ideja ove strategije je u simultanom pretraživanju unaprijed od početnog stanja i unazad od ciljnog stanja i zastavljanju kad se za oba pretraživanja ne pronađe zajednički čvor. Ovakav način pretraživanja nije uvijek moguć. Potreno je da postoji samo jedno ciljno stanje, koje je zadano eksplicitno i da sve operacije na čvorovima imaju svoje inverze. Također je potrebno osigurati efikasan način provjere da li se neki čvor nalazi u oba stabla pretraživanja. Problem predstavlja i pravilan odabir metode pretraživanja u jednom smjeru, jer nije poznato koji je odabir najbolji. Prednost ovakvog načina pretraživanja je u smanjenoj vremenskoj i prostornoj složenosti, koja u ovom slučaju iznosi O(bd/2).

Slika 3.4.1. Bidirekcionalno pretraživanje

3.5. Usporedba slijepih strategija pretraživanja

Sljedeća tablica prikazuje svojstva spomenutih metoda slijepog pretraživanja. Oznaka b je faktor granjanja, d je dubina rješenja, a m je maksimalna dubina stabla pretraživnja.

Tabela: 3.5.1: Usporedba slijepoh strategija

  Pretraživanje u širinu

Pretraživanje u dubinu

Iterativno pretraživanje u dubinu

Bidirekcionalno pretraživanje

Vrijeme bd bm bd bd/2

Prostor bd bm bd bd/2

Optimalnost?

Da Ne Da Da

Kompletnost Da Ne Da Da

9

Page 11: Rješavanje problema pretragom98

?

4. Strategije usmjerenog pretraživanja

4.1. Metoda uspona na vrh (engl. hill-climbing search)

Metoda uspona na vrh se zasniva na kretanju kroz stablo u smjeru porasta (pada) heurističke funkcije. Algoritam ne održava stablo pretraživanja, već održava samo aktivno stanje. Iz aktivnog stanja algoritam odabire najbolje dijete prema vrijednosti heurističke funkcije i proglašava ga aktivnim stanjem. Algoritam ima sljedeće nedostatke:

brežuljak: lokalni maksimum, u kojem nije ostvareno ciljno stanje. Situacija u kojoj sva djeca aktivnog čvora imaju lošije vrijednosti heurističke funkcije. U tom slučaju metoda staje, a rješenje nije pronađeno.

hrbat: nekoliko susjednih čvorova ima veće vrijednosti nego slijedni čvorovi

zaravan: svi slijedni čvorovi imaju iste vrijednosti

U svakom od ova tri slučaja algoritam dolazi do točke u kojoj se ili ne može napraviti sljedeći korak ili odabir sljedećeg koraka nije jedinstven. Problemi se mogu riješiti ponovnim izvođenjem pretraživanja pri čemu se odabire drugo startno stanje. Metoda je primjenjiva na probleme, koji u prostoru stanja imaju nekoliko lokalnih maksimum. Realni problemi su u pravilu eksponencijalne složenosti i može se očekivati da će imati i eksponencijalni broj lokalnih minimuma, što ovu metodu čini gotovo neupotrebljivom.

Slika 4.1.1. Prikaz pronalska grada prema metodi uspona na vrh gdje je vrh definisan sa evulacijoskom funkcijom.

10

Page 12: Rješavanje problema pretragom98

4.2. Metoda najboljeg prvog (engl. best-first search)

Metoda najboljeg prvog je proširenje metoda pretraživanja u širinu i dubinu. Proširenje se svodi na unošenju znanja prilikom odabira sljedećeg čvora. Umjesto da se djeca aktivnog čvora stavljaju na početak ili kraj reda u ovoj metodi se djeca stave u red i nakon toga se red sortira prema vrijednostima heurističke funkcije. Na početku reda se nalazi čvor s najboljom vrijednosti heurističke funkcije. Ovom metodom se zapravo traži minimum heurističke funkcije u prostoru stanja, koji zapravo odgovara ciljnom stanju.

Slika 4.2.1. Primjer metode najboljeg prvog (postavka)

Predpostavimo da treba pronaći putanju najkraće relacije između dva grada, u ovome primjeru Arad i Bucharest, ovaj algoritam će nam vratiti najkraću relaciju.

Slika 4.2.2. Primjer metode najboljeg prvog (rješenje)

11

Page 13: Rješavanje problema pretragom98

4.3. Algoritam A*

Osnovna ideja ove metode je proširivanje onog čvora koji ima najmanju udaljenost od ciljnog i početnog čvora. Udaljenost čvora n se procjenjuje prema:

f(n) = g(n) + h(n),

gdje je g(n) procjena udaljenosti čvora n od početnog čvora, a h(n) je procjena udaljenosti čvora n od ciljnog čvora. Algoritam A* u svom radu koristi listu OPEN u kojoj drži otvorene, ali još uvijek neproširene čvorove i CLOSED u kojoj drži proširene (obrađene) čvorove.

Slika 4.3.1. Primjer algoritma A*

12

Page 14: Rješavanje problema pretragom98

5. Demonstracija rješavanja problema pretraživanjem

5.1. Definicija problema

Problem Hanojskih tornjeva izmislio je francuski matematičar Edouard Lucas 1883. godine. Inicijalno su zadana tri diska postavljena padajućim redosljedom prema veličini na jedan od tri štapa. Zadatak je prebaciti cijeli toranj (tri diska) na jedan od preostala dva štapa pomičući u jednom trenutku samo jedan disk, pri čemu je zabranjeno staviti veći disk na manji. Minimalni broj pomaka diskova zadan je rekurzivnom relacijom: TN = 2TN-1 + 1, T0 = 0, gdje je N broj diskova koji se inicijalno nalaze na jednom od štapova. Ova rekurzivna relacija znači: pomakni N-1 diskova na srednji štap, pomakni najveći disk na treći štap i pomakni opet N-1 diskova na treći štap. U nerekurzivnom obliku vrijedu formula TN = 2N-1 za N>=0. U ovom apletu se promatra slučaj s 3 diska, pa je minimalan broj potrebnih pomaka T3 = 7. Prema prije navedenim zahtjevima dobro-definiranog problema potrebno je definirati:

Početno stanje: sva tri diska se nalaze na lijevom štapu Skup dozvoljenih akcija (operatora): u jednom trenutku je moguće pomaknuti samo jedan

disk i prilikom pomicanja diska ne smije se veći disk staviti na manji.

Test na ciljno stanje: svi diskovi se nalaze na desnom disku

Funkcija cijene puta: svaki pomak vrijedi 1

Na ovaj način definiran je problem s 27 različitih stanja, jednim početnim i jednim završnim stanjem. Iako u appletu nije implementirana metoda bidirekcionalnog pretraživanja, prema zahtjevima te metode pretraživanja ovaj problem po svojim svojstvima se može rješavati i tom metodom.

5.2. Korištenje appleta

Applet sadrži kontrole za upravljanje demonstracijom. Gornji dio appleta sadrži sliku trenutno aktivnog stanja i tekstualni izlaz unutarnjih struktura algoritama za pretraživanje. U sredini se nalaze kontrole za odabir metode pretraživanja, resetiranje pretraživanja, lociranje aktivnog čvora (u slučaju da se aktivni čvor izgubi u donjem dijelu dijagrama stabla pretraživanja), izvršavanje sljedećeg koraka u pretraživanju, izvršavanje kontinuiranog pretraživanja i dijagram koji prikazuje podatke o odabranom čvoru u dijagramu stabla pretraživanja. Donji dio appleta sadrži dijagram stabla pretraživanja. Radi preglednosti stablo pretraživanja je ograničeno na dubinu 10, a kod dubine 5 se stablo dijeli na dva dijela. Proširenje stabla se ostvaruje klikom na žuti pravokutić s oznakom "...". Prostor stanja se sastoji od 27 različitih stanja. Svakom stanju je pridruženo slovo engleske abecede. Sljedeća tablica prikazuje vezu između stanja i slova:

13

Page 15: Rješavanje problema pretragom98

Tabela 5.2.1: Primjer riješavanja pomoću apleta:

5.3. Korištena heuristika

Heuristička evaluacijska funkcija korištena u metodama uspona na vrh, najboljeg prvog i algoritma A* je sljedeća: 3 * (3 - veliki) + 2 * (3 - srednji) + (3 - mali), gdje je trojka (veliki, srednji, mali) oznaka stanja, tako da (0,0,0) označava početno stanje u kojem su svi diskovi na lijevom štapu, a (0,1,2) označava stanje u kojem je veliki disk na lijevom štapu, srednji disk je na središnjem štapu, a mali disk je na desnom štapu. Interpretacija ove funkcija je zbroj udaljenosti pojedinog diska od desnog diska pomnoženih s težinama (3 za veliki disk, 2 za srednji disk, 1 za mali disk). Funkcija g(n) u algoritmu A* je dubina pojedinog čvora u stablu pretraživanja. Ovako definiranom heurističkom evaluacijskom funkcijom dobiju se slijedeće vrijednosti za pojedina stanja:

Tabela 5.3.1. Rezultati heurističke evulacijske funkcije

A - 18 B - 17 C - 16 D - 13 E - 14 F - 12 G- 14H - 16 I - 15 J - 9 K - 9 L - 10 M - 11 N - 8O - 10 P - 14 Q - 13 R - 10 S - 8 T - 15 U -14

14

Page 16: Rješavanje problema pretragom98

V - 11 W - 12 X - 12 Y - 7 Z - 11 CILJ - 6

6. Literatura:

Artificial Intelligence, Stuart J. Russell and Peter Norvig – New Jersey 1995. Pretrage, Zora Konjović, Đorđe Obradović – Novi Sad 2004. www.fer.hr/_download/repository/Algoritmi%20pretrazivanja%20grafova.pdf , pregledano

13.5.2009. web.math.unizg.hr/nastava/ui/materijali/AI_5_Slijepo_Pretraz.pdf, pregledano 13.5.2009.

15

Page 17: Rješavanje problema pretragom98

Pitanja:1. Navesti kriterije vrednovanja strategije pretraživanja2. Objasniti metodu pretraživanja u širinu3. Objasniti metodu pretraživanja u dubinu4. Opisati metodu najboljeg prvog5. Nedostaci metode „uspon na vrh“

16