130 likes | 256 Views
Ústup od kritéria optimality. A * často strávi veľa času rozvíjaním ciest, ktoré majú približne rovnakú cenu – z toho vyplývajú otázky: Chceme viac minimalizovať hľadanie než minimalizovať cenu riešenia. Je vtedy f = g + h vhodná voľba?
E N D
Ústup od kritéria optimality • A* často strávi veľa času rozvíjaním ciest, ktoré majú približne rovnakú cenu – z toho vyplývajú otázky: • Chceme viac minimalizovať hľadanie než minimalizovať cenu riešenia. Je vtedy f = g + h vhodná voľba? • Možno zvýšiť rýchlosť hľadania za cenu zníženia nároku na kvalitu riešenia? • Ako ovplyvňuje hľadanie heuristika, ktorá nie je prípustná?
Váhovanie g a h • Úlohou funkcie g je pridávať do hľadania princíp hľadania do šírky • Úlohou h je odhadnúť vzdialenosť od koncového vrcholu, ale nemusí to byť vždy dobrý odhad • Uvažujme funkciu f(n) = (1– w) g(n) + w h(n) • Pre w= 0,1/2 a 1 to zodpovedá stratégii rovnomer-nej ceny, A* a BF*. Zmenou parametra w medzi 0 a 1 môžeme dosiahnuť vhodný pomer medzi konzervativizmom a radikalizmom, podľa toho, ako dôverujeme h.
Parameter w • Ak h je prípustné, dá sa ukázať, že aj f je prípustné pre 0 ≤ w < ½, ale mimo tohto intervalu môže stra-tiť prípustnosť, podľa toho, ako ďaleko je h od h* • Niektoré zaujímavé výsledky boli dosiahnuté aj v takom prípade, keď ½ <w < 1 • Viac experimentov ukazuje, že najlepšie výsledky z hľadiska kvality hľadania dosahuje aj tento vážený algoritmus A* pre w = ½, t.j. pre klasický algoritmus A*
Časová a pamäťová zložitosť • Hľadanie do šírky – stupeň vetvenia je b a hĺbka, v ktorej sa nachádza riešenie je d. Potom zložitosť je 1 + b + b² + b³ + ... + bd, t.j. O(bd), čiže exponen-ciálna – (d je hĺbka riešenia) • Pri šachu, ktorý má stupeň vetvenia 35, dosiahne pamäťová zložitosť pri hĺbke 10 už 250.888 TB, ča- sová 874 rokov.
Zložitosť hľadania do hĺbky • Hľadanie do hĺbky – pamäť. zložitosť b * m uzlov • Časová je v najhoršom O(bm), ale možno nájde skôr – (m je maximálna hĺbka) • Podobnú zložitosť má aj ohraničené hľadanie do hĺbky, problém je určiť ohraničenie. • Zovšeobecníme ho na stratégiu cyklicky sa prehlbujúceho hľadania – ktoré vyskúša postupne všetky ohraničenia hĺbky, začne od ohraničenia 1 a bude ho postupne zvyšovať krokom 1.
Zložitosť hľadania do hĺbky II • Aj keď opakovane prezeráme niektoré vrcholy, pamäťová ani časová zložitosť príliš nenarastie a ak nepoznáme vhodné ohraničenie hĺbky, tak je toto najvhodnejšia stratégia • Zložitosť je (d+1).1 + d.b + (d-1).b² + ... + 3.bd-2 + 2.bd-1 + 1.bd uzlov • Pre b = 10 a d = 5 je to 123 456 uzlov, pri hľadaní do hĺbky s takýmito parametrami je to 111 111 uzlov (viacnásobné sa rozvíja malý počet uzlov v malej hĺbke).
Časová a pamäťová zložitosť II • Obojsmerné hľadanie – hľadáme riešenie od po-čiatočného vrcholu k nejakému cieľovému stavu a zároveň postupujeme od nejakého cieľového stavu smerom k počiatočnému stavu - ak sa vygeneruje stav, ktorý je spoločný, našli sme riešenie • Zložitosť je O(bd/2), čo je zlepšenie o polovicu, ale stále je to exponenciál- na zložitosť
Časová a pamäťová zložitosť III • Sumarizácia vlastností neinformovaných procedúr • Aj algoritmus A* má exponenciálnu časovú aj pa-mäťovú zložitosť, zlý je najmä nedostatok pamäte
IDA* • Cyklicky sa prehlbujúce hľadanie algoritmom A* • Každé opakovanie bude obmedzeným hľadaním do hĺbky – namiesto ohraničenej hĺbky sa pracuje s hraničnou cenou, vygenerovanou algoritmom A*. • V jednom opakovaní sa rozvíjajú všetky uzly, kto-rých hĺbky nepresiahnu vygenerovanú hraničnú cenu (rozdiel oproti BT globálne, BF lokálne) • Algoritmus IDA* je úplný a prípustný. Podobne ako hľadanie do hĺbky, vyžaduje pamäť úmernú dĺžke najdlhšej cesty, ktorú prezerá.
Stratégie cyklického vylepšovania • Ak hľadáme cieľový stav a nie cestu, môžeme cyklicky postupovať tak, že vygenerujeme možné riešenie a testujeme, či je riešením problému • Môžeme generovať náhodne (algoritmus Britského múzea) alebo úplným prehľadávaním (hrubá sila) – to sú hraničné prípady, medzi nimi sú také, kde sa vynechávajú tie riešenia, ktoré nie sú sľubné • Cyklické vylepšovanie vychádza z ľubovoľného stavu a postupne vylepšuje zadanú konfiguráciu, aby sa približovala k cieľovému stavu
Stratégia lokálneho vylepšovania a simulované žíhanie • My poznáme horolezecký algoritmus, ktorý je stratégiou lokálnej optimalizácie – má svoje nedostatky, lebo ľahko uviazne v lokálnom minime • Prekonať jeho nedostatky dokáže simulované žíhanie – pripúšťa sa aj krok, ktorý zhorší optima-lizačné kritérium, čo sa kontroluje parametrom teploty, ktorá sa postupne znižuje – ide o analógiu s chladnutím roztaveného materiálu z fyziky • Simulované žíhanie vytvoril fyzik V. Černý z FMFI UK v Bratislave
Genetické algoritmy • Cyklicky vylepšujú aj genetické algoritmy, založené na operáciách výberu, kríženia a mutácie. • Základným krokom je reprodukcia, ktorej výsled-kom je nová populácia, ktorá má rovnaký počet prvkov, ale má vyššie hodnotenie (fitness). • Kríženie znamená premiešanie dvoch reťazcov • Mutácia znamená náhodnú zmenu v jednom bite reťazca • Problémom genetických algoritmov je kedy ich zastaviť