Ú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ť