From dad7aa19b8721b43810d4272e15b41e59a8f50cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bi=C3=A1n=20Varga?= Date: Tue, 22 Apr 2025 20:35:19 +0200 Subject: [PATCH] lekcia 2 --- README.md | 57 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 51 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index ac31547..45f132d 100644 --- a/README.md +++ b/README.md @@ -49,19 +49,64 @@ # Lekcia 2: Riešenie problémov - vyjadrenie problému - Vyjadrenie problému v AI (začiatočný stav, množina operátorov, stavový priestor, cieľový test, cena cesty) - - Aaa + - Začiatočný stav - v ňom sa agent nachádza. + - Množina operátorov - opisujú aký stav vznikne vykonaním akcie v danom stave. + - Stavový priestor - množina všetkých dosiahnuteľných stavov zo začiatočného stavu ľubovoľnou postupnosťou akcií. + - Cieľový test: + - Testuje, či sa dosiahol cieľ. + - Predstavuje hodnotenie nejakého stavu alebo hodnotenie cesty v stavovom priestore. + - Môže byť daný: + 1. _explicitne_ - ako množina stavov, + 2. _implicitne_ - vlastnosťou stavu. + - Cena cesty: + - Súčet cien jednotlivých akcií na ceste. + - Pri viacerých riešeniach daného problému, pomocou ceny cesty nájdeme riešenie, ktoré pozostáva z menšieho počtu alebo lacnejších akcií. + - **cena riešenia** = **cena cesty k riešeniu** _+_ **cena hľadania** - Základné problémy pre algoritmy hľadania riešenia - - Aaa - + - Hľadanie riešenia je prístup, pri ktorom nevychádzame z algoritmu riešenia problému. Vychádzame z algoritmu ako riešenie hľadať. + - Problém **nie** je algoritmicky riešiteľný pre neefektívnosť alebo preto, že algoritmus nepoznáme. + - Neinformatívne hľadanie - prehľadávanie do šírky, stratégia rovnomernej ceny - - Aaa + - Prehľadávanie do šírky: + - Rozvinie sa koreňový uzol, potom všetky uzly vzniknuté jeho rozvitím, potom sa rozvijú všetky ich nasledovníci atď... + - V strome hľadania sa expandujú všetky uzly v hĺbke `d` skôr ako sa rozvijú uzly v hĺbke `d + 1`. + - Patrí medzi systematické stratégie. + - Nevynechá ani jeden uzol. + - Žiadny uzol sa nevyberie dvakrát. + - Ak riešenie existuje, pri hľadaní sa **určite nájde**, t.j. stratégia je **úplná**. + - Pri hľadaní sa nájde _najplytkejšie_ riešenie. + - Stratégia rovnomernej ceny (_uniform - cost search_): + - Na expanziu sa vyberie vždy uzol, ktorý je na najlacnejšej ceste. + - Optimálne riešenie sa nájde vždy, ak sa pri postupe nezníži, napr. súčet cien aplikácie operátov a pod. - Obojsmerné hľadanie - - Aaa + - Môže sa použiť iba keď máme problém, ktorého riešením je cesta a cieľový stav je známy. + - Musí byť splnená podmienka existencie inverzných operátorov. + - Stratégia: + 1. Od počiatočného stavu bude hľadanie postupovať vpred smerom k cieľovému stavu (priame hľadanie), + 2. Od cieľového stavu bude hľadanie postupovať vzad (inverzné operátory) smerom k počiatočnému stavu (spätné hľadanie), + 3. Ak oba procesy vygenerujú ten istý stav, nájde sa cesta spájajúca počiatočný stav s cieľovým. + - Problémy: + 1. _Ak sa dajú definovať inverzné operátory, **nie** je ich výpočet zložitejší?_ + 2. _Ako postupovať aj je viacej cieľových stavov?_ + 2. Ak sú ciele dané implicitne, je ťažko nájsť predchodcov. - Prehľadávanie do hĺbky a jeho modifikácie - - Aaa + - V strome hľadania sa najprv expanduje uzol, ktorého hĺbka je **najväčšia**. Keď sa narazí na uzol bez nasledovníkov, dôjde k navracaniu (_back tracking_), teda hľadanie sa vráti k expanzii uzlov na plytších úrovniach. + - Často rýchlejší ako prehľadávanie do šírky. + - Nezaručuje nájdenie riešenia (hlavne pri problémoch) - je **neúplná**. + - Hľadanie sa nemusí orientovať smerom k optimálnemu riešeniu. + - Modifikácie: + - Ohraničené prehľadávanie do hĺbky: + - Zamedzí, aby riešenie uviazlo hlboko v strome. + - Stanoví sa hraničná hĺbka, do ktorej sa bude hľadať. + - Cyklicky sa prehlbujúce hľadanie: + - Postupne vyskúša všetky možné hraničné hĺbky - od najmenšej po najväčšiu. + - Hľadanie do hĺbky s návratom: + - Pri výbere uzla na skúmanie sa generuje iba jeden jeho nasledovník, ktorá ak nie je listový uzol sa ďalej skúma, inak sa vráti k najbližšiemu nerozvitému uzlu. + - Šetrí pamäť a nevygeneruje uzly napravo od cesty. + - Nemožno použiť žiadnu doplňujúcu informáciu na výber najlepšieho nasledovníka, lebo sa vždy vygeneruje iba jeden. ---