120 likes | 243 Views
Neinformované procedúry. Horolezecký algoritmus
E N D
Neinformované procedúry • Horolezecký algoritmus • Algoritmus lokálnej optimalizácie, pretože postupujeme vždy v smere najväčšieho zlepšenia – v grafovej reči algoritmus expanduje vrchol, vyberie najlepšieho syna, ale nezachová linku na otca alebo ostatných synov – je to nevratná stratégia - najčastejšie skončí v lokálnom minime – ostatné stratégie sú vratné • Hľadanie do hĺbky • Hľadanie s návratom (back-tracking) • Hľadanie do šírky • Neinformované hľadanie v A/ALEBO grafoch
Hľadanie do hĺbky - LIFO • Na expandovanie sa vyberá vrchol, ktorý má najväčšiu hĺbku • Aby bola jednoznačne riešená hĺbka, zoznam OTVOR je organizovaný ako zásobník • Ide o vratnú stratégiu – nemusí sa vrátiť • Obyčajne sa pridáva ohraničenie hĺbky – ktoré spôsobí návrat a výber ďalšieho vrcholu, rovnako sa vracia vtedy, ak je vrchol vyhodnotený ako slepá ulica (angl. dead-end) • ZATVOR – vždy obsahuje tzv. traverzný strom
Hľadanie do hĺbky - algoritmus • 1. Daj vrchol s do OTVOR • 2. Ak OTVOR je prázdny, skonči s neúspechom • 3. Zober najvrchnejší vrchol z OTVOR a daj ho do ZATVOR. Nazvi ho n. • 4. Ak hĺbka n sa rovná ohraničeniu hĺbky, vyčisti ZATVOR a choď na 2 • 5. Expanduj n a daj jeho synov do OTVOR spolu so smerníkom na n. • 6. Ak niektorý zo synov je koncový vrchol, skonči s riešením, ktoré získaš pomocou smerníkov • 7. Ak niektorý zo synov je slepá ulica, zober ho z OTVOR a vyčisti ZATVOR • 8. Choď na 2
Príslušný traverzný strom • V každom momente obsahuje ZATVOR cestu od s do expandovaného vrcholu • Na grafoch sa uplatňuje striktne LIFO
Hľadanie s návratom • 1. Daj vrchol s do OTVOR • 2. Ak OTVOR je prázdny, skonči s neúspechom • 3. Zober najvrchnejší vrchol z OTVOR a nazvi ho n. • 4. Ak hĺbka n sa rovná ohraničeniu hĺbky alebo ak všetky hrany z n už boli preskúmané, zober n z OTVOR a choď na 2 • 5. Generuj nasledovníka n (pozdĺž nepreskúmanej hrany) a nazvi ho n´. Daj ho do OTVOR spolu so smerníkom na n. Označ hranu (n,n´) ako preskúmanú. • 6. Ak n´ je koncový vrchol, skonči s riešením, ktoré získaš pomocou smerníkov • 7. Ak n´ je slepá ulica, zober ho z OTVOR • 8. Choď na 2
Hľadanie s návratom II • Jeho výhodou je pamäťová úspornosť • Variácia sa volá back-marking – návrat o viac úrovní naraz (príklad 4 dám) • Pri optimalizačných problémoch nájdené riešenie umožňuje vylúčiť zbytočne dlhé vetvy (príklad minim. sumy stĺpcov)
Hľadanie do šírky - FIFO • Vyberá na expandovanie vrchol, ktorý je najbližšie k počiatočnému vrcholu • Zoznam OTVOR je organizovaný ako rad • Na rozdiel od hľadania do hĺbky je garantované, že hľadanie do šírky nájde riešenie, ak existuje a dokonca nájde najkratšie riešenie • Cenou za to je to, že namiesto traverznej cesty treba držať v pamäti celú časť implicitného prehľadávacieho grafu – to ľudia nikdy nerobia
Prehľadávanie do šírky II Hľadanie do šírky je výhodné, ak riešenie je dosť plytko →
Stratégia rovnomernej ceny • Pri optimalizačných problémoch sa používa jeho modifikácia – stratégia rovnomernej ceny – na expandovanie sa vyberá vrchol, ktorý je na ceste s najmenšou cenou k počiatočnému vrcholu
Neinformované hľadanie v PR • Hľadanie do hĺbky a do šírky sa dajú ľahko adaptovať na hľadanie v A/ALEBO grafoch, no test na ukončenie nie je vlastnosťou jedného vrcholu • Po každom kroku generovania sa uplatňuje označovacia procedúra. Vrcholy označené ako „neriešiteľné“ sa ďalšej neuvažujú. • Tieto procedúry budeme rozoberať neskôr ako špeciálny prípad procedúr s heuristikami, kde heuristika bude potlačená´, teraz sa sústredíme teraz len na hľadanie s návratom