pretrazivanje stabala- algoritmi

62
UVOD U UMJETNU INTELIGENCIJU –PRETRAŽIVANJE (UVOD I SLIJEPO PRETRAŽIVANJE) Prof.dr.sc.Darko Stipaničev [email protected] 305 813 Definicija Slijepo pretraživanje

Upload: noname

Post on 19-Nov-2015

17 views

Category:

Documents


1 download

DESCRIPTION

PRETRAZIVANJE STABALA- Algoritmi

TRANSCRIPT

  • UVOD U UMJETNU INTELIGENCIJU PRETRAIVANJE(UVOD I SLIJEPO PRETRAIVANJE)Prof.dr.sc.Darko [email protected] 813

    DefinicijaSlijepo pretraivanje

  • to je pretraivanje ?

    Postupak rjeavanja zadataka umjetne inteligencije. Pretraivanje ukljuuje traenje puta od poetnog stanja do ciljnih stanja kroz prostor stanja unutar kojeg se zadatak rjeava.

  • to je pretraivanje ?

    Skup stanja je organiziran u strukturu grafa ili stabla pa jepretraivanje pronalaenje puta kroz graf ili stablo.

    Pretraivanje - kretanje od vora do vora nakon irenja i generiranja susjednih (slijednih) vorova.

  • Primjer problem najkraeg puta

    Dva mogua zadatka:1. PRONAI put. (FIND a (the) path.) = computational cost

    2. PRATI put. (TRAVERSE the path.) = travel cost

    Postupak traenja moe biti:

    1. nai bilo koji put

    2. nai najkrai put

    Mrea od 8 gradovaMrea od 8 gradova

    AA

    DD

    BB

    EE

    CC

    FF

    GGSS

    33

    44

    44

    44

    55 55

    44

    3322

  • AA

    DD

    BB

    EE

    CC

    FFGG

    SS33

    44

    44

    44

    55 55

    44

    33

    Prostor rjeenja zadatka predstavljen grafom tipa stablo

    22

    SSAA DD

    BB DD EEAA

    CC EE EE BB BB FF

    DD FF BB FF CC EE AA CC GG

    GG CC GG FF

    GG

    33

    33 33

    33

    33

    22

    22

    2244

    44

    4444

    44

    4444

    44

    44

    44

    44

    44

    5555

    55 55

    5555

  • Oznake:U ovom dijelu govorimo o tehnikama pretraivanja kod kojih ne traimo optimalni put, pa izostavljamo teine.

    SSAA DD

    BB DD EEAA

    CC EE EE BB BB FF

    DD FF BB FF CC EE AA CC GG

    GG CC GG FF

    GG

    Na svakoj razini kombinacijom slova stavljamo oznaku koja jednoznano definira preenu rutu

    OznakaOznaka::SASA OznakaOznaka::SDASDA

    OznakaOznaka::SDEBASDEBA

  • Terminologija:

    vor(node), poveznica (link or edge), grana (branch)Roditelj (parent), dijete (child), predak (ancestor), potomak(descendant)Korijenski vor (root node), Ciljni vor (goal node)iriti (expand) / Otvoreni vor (open node) / Zatvoreni vor (closed node) / Faktor grananja (Branching factor)

    SSAA DD

    BB DD EEAA

    CC EE EE BB BB FF

    DD FF BB FF CC EE AA CC GG

    GG CC GG FF

    GG

  • Podjela strategija pretraivanja

    Podjela strategija pretraivanja je prema informacijama koje se koriste tijekom pretraivanjaInformacije koje se koriste tijekom pretraivanja1. mogu se odnositi na:- cijeli prostor stanja ili- samo na neka stanja.2. mogu biti dostupna:- unaprijed ili- samo nakon irenja vora.U najgorem sluaju raspoloiva informacija je ona u kojoj moemo razlikovati ciljna stanja od ostalih.

  • Podjela strategija pretraivanja

    Pretraivanja dijelimo i na1. pretraivanja prema naprijed ili unaprijedna ulanavanja (forward chaining)2. pretraivanja prema natrag ili povratna ulanavanja (beckward chaining)

  • Podjela strategija pretraivanja

    Povratno - grananje u smjeru Start Cilj (Goal)Povratno grananje u smjeru Cilj (Goal) Start

    GoalGoalStartStart

  • Podjela strategija pretraivanja

    1. Slijepo pretraivanje (engl. Blind search, Bruteforce search, Uninformed search)

    2. Usmjereno pretraivanje (engl. Directed search, Informed search)

    Pokazatelji efikasnosti pojedinog postupka:1. Da li sigurno nalazi rjeenje ?2. Da li je rjeenje najbolje ?3. Vremenska sloenost ?4. Prostorna sloenost ?

  • Slijepo pretraivanje

    Slijepo pretraivanje je pretraivanje u kojem su jedine raspoloive informacije:1. poetno stanje2. dozvoljene operacije nad stanjima3. test na rjeenje problemaSlijepo pretraivanje napreduje sistematski kroz prostor pretraujui vorove u nekom prethodno definiranom redoslijedu ili birajui ih sluajno.

  • Kriteriji usporedbe metoda:

    Potpunost: Da li algoritam uvijek pronalazi rjeenje?

    (za svaku mreu ukoliko rjeenje postoji)

    Vremenska kompleksnost (brzina) : Koji je ukupan broj vorova koji se trebaju otvoriti prije

    dolaska do rjeenja ? Prostorna kompleksnost (memorija) : Koji je maksimalni broj vorova koji se moraju memorirati u

    pojedinom stupnju rjeavanja zadatka?Kompleksnosti izraavamo u odnosu na:

    d = maksimalnu dubinu stabla (ukupan broj razina) b = (prosjeni) faktor grananja stabla m = najmanja dubina na kojoj se dolazi do rjeenja

  • Napomena: Aproksimacije

    U analizi kompleksnosti ne uzima se u obzir redukcija traenja zbog eliminacije petlji.

    Ukljuivanje utjecaja petlji ini analizu previe kompleksnom.

  • Slijepo pretraivanje - metode

    1. Pretraivanje u irinu2. Pretraivanje u dubinu3. Nedeterministiko pretraivanje4. Iterativno pretraivanje u dubinu5. Dvostrano pretraivanje (bi-direkcijsko) pretraivanje

  • Pretraivanje u irinu

    Pretraivanje u irinu (engl. breadth-first search)je pretraivanje u kojem se ispituju svi vorovi na odreenoj razini prije odlaska u slijedeu razinu.

    Struktura reda (engl. queue) koristi se za uvanje generiranih i jo ne istraenih vorova.

    Redoslijed kojim se vorovi pohranjuju u red za ispitivanje i uklanjanje odreuje tip pretraivanja.

  • Pretraivanje u irinu

  • Pretraivanje u irinu:

    SS

    AA DD

    BB DD AA EE

    CC EE EE BB BB FF

    DD FF BB FF CC EE AA CC GG

    GG

    GGGG FFCC

  • Pretraivanje u irinu

    ALGORITAM pretraivanja u irinu

    1. Pohrani poetni vor u red.2. AKO je red prazan ONDA vrati pogreku i STANI.3. AKO je prvi element reda ciljni vor ONDA vrati

    naeno uspjeno rjeenje i STANI.4. Inae, ukloni prvi vor u redu, razvi ga i svu njegovu

    djecu stavi na rep reda bilo kojim redom.5. Vrati se na korak 2.

  • ONLY ONLY DIFFERENCE !DIFFERENCE !

    Breadth-first algorithm:1. 1. QUEUEQUEUE

  • Razvoj pretraivanja u irinu

    (S) S makni, (SA,SD) pronai i dodaj(SA, SD) SA makni, (SAB,SAD,SAS) pronai,

    (SAB,SAD) dodaj - SAS je petlja pa se odbacuje(SD,SAB,SAD) SD makni, (SDA,SDE,SDS) pronai,

    (SDA,SDE) dodaj(SAB,SAD,SDA,SDE) SAB makni, (SABA,SABE,SABC) pronai

    (SABE,SABC) dodaj(SAD,SDA,SDE,SABE,SABC) SAD makni, (SADS,SADA, SADE)

    pronai, (SADE) dodajitd, sve dok red ne sadri:

    (SABED,SABEF,SADEB,SADEF,SDABC,SDABE,SDEBA,SDEBC, SDEFG)cilj (G) dosegnut: javi uspijeh

  • AA

    DD

    BB

    EE

    CC

    FFGG

    SS33

    44

    44

    44

    55 55

    44

    33

    Prostor rjeenja zadatka predstavljen grafom tipa stablo

    22

    SSAA DD

    BB DD EEAA

    CC EE EE BB BB FF

    DD FF BB FF CC EE AA CC GG

    GG CC GG FF

    GG

    33

    33 33

    33

    33

    22

    22

    2244

    44

    4444

    44

    4444

    44

    44

    44

    44

    44

    5555

    55 55

    5555

  • Pretraivanje u irinu POTPUNOST rjeenja

    POTPUNO

    ak i ukoliko ne odbacujemo petlje !!!

    UVIJEK pronalazi NAJKRAI PUT.

  • Pretraivanje u irinu Vremenska kompleksnost

    Ukoliko se vor nalazi na dubini m svi vorovi do te dubine e biti razvijeni.

    ddGGbb

    mm

    Ako je b broj vorova djece, a m razina vremenska kompleksnost je

    O(bm)

  • Pretraivanje u irinu Prostorna kompleksnost (memorija)

    Najvei broj vorova koji se nalazi u redu je razvijen na razini mod korjenskog vora.

    GGddbb

    mm

    Red mora sadravati sve vorove na toj razini, pa je prostorna kompleksnost isto tako proporcionalna O(bm)

  • Pretraivanje u irinu

    Eksponencijalna kompleksnost je najvei nedostatak pretraivanja u irinu.

  • Pretraivanje u irinu Primjer 2

  • Pretraivanje u irinu - Primjer

  • Pretraivanje u irinu - Primjer

  • Pretraivanje u irinu - Primjer

  • Pretraivanje u dubinu

    Pretraivanje u dubinu (engl. depth-first search)

    Pretrauje poniranjem niz stablo to je bre mogue tako da uvijek generira djecu zadnje proirenog vora dok ne doe do rjeenja (ili se pree zadani limit dubine).

    Algoritam pretraivanja u dubinu razlikuje se od onog u irinu po redoslijedu kojim je taj vor stavljen u red novo stvorena djeca stavljaju se na poetak reda tako da se ona prva ispituju.

  • Pretraivanje u dubinu

  • Pretraivanje u dubinu

    Izaberi nasljedni vor Uobiajeno : sa lijeva na desno

    Idi ponovo na nasljedni vor na isti nainVraaj se natrag tek kada doe do zadnje razine, a nisi pronaao rjeenje.

    BB

    CC EE

    DD FF

    GG

    SS

    AA

  • Pretraivanje u dubinu

    ALGORITAM pretraivanja u dubinu

    1. Pohrani poetni vor u red.2. AKO je red prazan ONDA vrati pogreku i STANI.3. AKO je prvi element reda ciljni vor ONDA vrati naeno uspjeno rjeenje i STANI. Inae,4. Ukloni prvi vor u redu, razvi ga i svu njegovu djecu stavi na poetak reda bilo kojim redoslijedom.5. Vrati se na korak 2.

  • Depth-first algorithm:1. 1. QUEUEQUEUE
  • AA

    DD

    BB

    EE

    CC

    FFGG

    SS33

    44

    44

    44

    55 55

    44

    3322

    1. 1. QUEUEQUEUE

  • Razvoj pretraivanja u dubinu:

    (S) S makni, (SA,SD) pronai i dodaj(SA, SD) SA makni, (SAB,SAD,SAS) pronai,

    (SAB,SAD) dodaj(SAB,SAD,SD) SAB makni, (SABA,SABC,SABE) pronai,

    (SABC,SABE) dodaj(SABC,SABE,SAD,SD) SABC makni, (SABCB) pronai,

    nita se ne dodaje(SABE,SAD,SD) SABE makni, (SABEB,SABED,SABEF)

    pronai, (SABED,SABEF) dodaj(SABED,SABEF,SAD,SD) SABED makni, (SABEDS,SABEDA.SABEDE) pronai, nita se ne dodaje(SABEF,SAD,SD) SABEF makni, (SABEFE,SABEFG) pronai, (SABEFG) dodaj

  • AA

    DD

    BB

    EE

    CC

    FFGG

    SS33

    44

    44

    55 55

    44

    3322

    SSAA DD

    BB DD EEAA

    CC EE EE BB BB FF

    DD FF BB FF CC EE AA CC GG

    GG CC GG FF

    GG

    33

    33 33

    33

    33

    22

    22

    2244

    44

    4444

    44

    4444

    44

    44

    44

    44

    44

    5555

    55 55

    5555

  • Pretraivanje u dubinu POTPUNOST rjeenja

    Rjeenje je potpuno za konane mree.

    VANA NAPOMENA: Vano je ubaciti algoritam za provjeru i eliminaciju petlji. Da se to ne napravi potpunost postaje upitna. Algoritam moe zaglaviti u beskonane petlje i nikada ne doi do cilja.

    Algoritam NE NALAZI najbolje rjeenje.

  • AA

    DD

    BB

    EE

    CC

    FFGG

    SS33

    44

    44

    55 55

    44

    3322

    SSAA DD

    BB DD EEAA

    CC EE EE BB BB FF

    DD FF BB FF CC EE AA CC GG

    GG CC GG FF

    GG

    33

    33 33

    33

    33

    22

    22

    2244

    44

    4444

    44

    4444

    44

    44

    44

    44

    44

    5555

    55 55

    5555

  • Vremenska kompleksnost pretraivanje po dubiniU najgorem sluaju:

    (jedini) moe biti na kraju najdesnije grane,

    GG

    ddbb

    Vremenska kompleksnost= bd+ bd-1 + + 1 = bd+1 -1Iz ega slijedi: O(bd) b b -- 11

  • Pretraivanje u dubinu Prostorna kompleksnost (memorija)Najvei broj vorova u redu je kod lijevog najdonjegvoraPrimjer: d = 3, b = 3 :

    ......

    Red ukljuuje maksimalno 7 vorova.Openito: ((b-1) * d) + 1Pa je: O(d*b) (manja nego kod pretraivanja u irinu)Ovo je pretraivanje pogodnije od pretraivanja u irinu kada stablo pretraivanja ima puno ciljnih vorova.

  • Pretraivanje u dubinu - Primjer

  • Pretraivanje u dubinu - Primjer

  • Pretraivanje u dubinu rjeavanje slagalice 3x3

  • Usporedba:Pretraivanje u dubinu: AKO prostor rjeenja sadri vrlo duge grane bez rjeenja, ONDA pretraivanje u dubinu ima veliku VREMENSKU KOMPLEKSNOST

    Pretraivanje u irinu: Loe je u odnosu na prostornu kompleksnost (memoriju) !

    Rjeenje ?? Ne-deterministiko pretraivanje Pretraivanje limitirano po dubini Iterativno pretraivanje u dubinu

  • Ne-deterministiko pretraivanje

    ALGORITAM ne-deterministikog pretraivanja

    1. Pohrani poetni vor u red.2. AKO je red prazan ONDA vrati pogreku i STANI.3. AKO je prvi element reda ciljni vor ONDA vrati naeno uspjeno rjeenje i STANI. Inae,4. Ukloni prvi vor u redu, razvi ga i svu njegovu djecu stavi na bilo koje mjesto sluajnim odabirom.

    5. Vrati se na korak 2.

  • Non-deterministic Search:1. 1. QUEUEQUEUE
  • Pretraivanje limitirano po dubinu

    Pretraivanje u dubinu po principima pretraivanja u dubinu, ali samo do odreene dubine, a nakon toga se ide u slijedeu granu do iste dubine. Algoritam je u jednoj iteraciji identian algoritmu za pretraivanje u dubinu. Taj se algoritam prekida kada je postignuta dubina d, ako cilj nije pronaen. Uklanjaju se svi vorovi iz reda, d se poveava za jedan i postupak ponovno zapoinje.

  • Depth-limited search:1. 1. DEPTHDEPTH
  • Iterativno pretraivanje u dubinu

    Pretraivanje u dubinu koje u prvom koraku ide do dubine 1, a ako rjeenje nije naeno odbacuju se vorovi i zapoinje ponovno pretraivanje u drugoj iteraciji do dubine 2. Ako rjeenje i tada nije naeno zapoinje ponovno pretraivanje u dubinu do dubine 3 itd. slijedno do neke granine dubine n.

    Algoritam je u jednoj iteraciji identian algoritmu za pretraivanje u dubinu. Taj se algoritam prekida kada je postignuta dubina d, ako cilj nije pronaen. Uklanjaju se svi vorovi iz reda, d se poveava za jedan i postupak ponovno zapoinje.

  • Iterative deepening algorithm:

    1. 1. DEPTHDEPTH

  • Iterativno pretraivanje u dubinu

  • Iterativno pretraivanje u dubinu

  • Iterativno pretraivanje u dubinu

  • Iterativno pretraivanje u dubinu

  • Iterativno pretraivanje u dubinu najbolje slijepo pretraivanje

    Potpuno: da nalazi najkrai put (optimalno rjeenje) kao pretraivanje u dubinu.

    b b -- 11bm-1+ bm-2+ + 1 = bm -1 = O(bm-1)

    ZakljuakZakljuak: : najbolje slijepo pretraivanjenajbolje slijepo pretraivanje

    Vrijeme potroeno na dubini m je O(bm)

    Prostorna kompleksnost: b*m (kombinira dobre osobine pretraivanja u dubinu i irinu)Vremenska kompleksnost: Ukoliko je rjeenje naeno na dubini m, koliko smo vremena

    izgubili izgradnjom pretraivanjem manjih grana??

  • Bi-direkcijsko pretraivanje

    Mogue je ako problem:1. ima jedno ciljno stanje koje je dano eksplicitno i2. sve operacije na vorovima (stanjima, objektima) imaju inverzne.

    Pretrauje se istodobno u dva smjera:- unaprijed poevi od poetnog stanja- unatrag poevi od cilja

    Program pohranjuje generirana stanja oba smjera dok se nenae zajedniki vor (stanje).

    Sve tri metode pretraivanja mogu se kombinirati u dvosmjerno pretraivanje.

  • Bidirekcionalno pretraivanje

  • Bi-directional algorithm:1. 1. QUEUE1QUEUE1
  • Osobine (Bi-direkcijsko):

    Potpunost: da.

    Vremenska kompleksnost: O(bm/2)

    Prostorna kompleksnost: O(bm/2)

  • Usporedba algoritama slijepog pretraivanja