Mesterséges intelligencia 2. laborgyakorlat

Hasonló dokumentumok
Problémamegoldás kereséssel. Mesterséges intelligencia március 7.

Mesterséges Intelligencia MI

Mesterséges Intelligencia MI

Mesterséges Intelligencia MI

Mesterséges intelligencia 3. laborgyakorlat

Intelligens Rendszerek Elmélete IRE 4/32/1

Kereső algoritmusok a diszkrét optimalizálás problémájához

Kereső algoritmusok a diszkrét optimalizálás problémájához

V. Kétszemélyes játékok

Mesterséges Intelligencia MI

Mesterséges Intelligencia MI

Keresések Gregorics Tibor Mesterséges intelligencia

Intelligens Rendszerek I. Problémamegoldás kereséssel: informált kereső eljárások (Heurisztikus keresés)

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2010/2011 1/363

Számítógép és programozás 2

Kereső algoritmusok a diszkrét optimalizálás problémájához

Mesterséges intelligencia. Gregorics Tibor people.inf.elte.hu/gt/mi

2. Visszalépéses stratégia

angolul: greedy algorithms, románul: algoritmi greedy

Adatszerkezetek 7a. Dr. IványiPéter

Kétszemélyes játékok Gregorics Tibor Mesterséges intelligencia

2. Visszalépéses keresés

MŰSZAKKIOSZTÁSI PROBLÉMÁK A KÖZÖSSÉGI KÖZLEKEDÉSBEN

Széchenyi István Egyetem

ULTIMATE TIC TAC TOE. Serfőző Péter

Mesterséges Intelligencia 1

Navigáci. stervezés. Algoritmusok és alkalmazásaik. Osváth Róbert Sorbán Sámuel

Algoritmusok bonyolultsága

Dinamikus programozás vagy Oszd meg, és uralkodj!

A mesterséges intelligencia alapjai

Programozási módszertan. Mohó algoritmusok

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008

Mesterséges Intelligencia MI

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT- 4. kurzus. 3. Előadás: A mohó algoritmus

Algoritmuselmélet. Gráfok megadása, szélességi bejárás, összefüggőség, párosítás. Katona Gyula Y.

Számítógép és programozás 2

A félév során előkerülő témakörök

Adott: VPN topológia tervezés. Költségmodell: fix szakaszköltség VPN végpontok

Mesterséges Intelligencia I. (I602, IB602)

Diszkrét Irányítások tervezése. Heurisztika Dr. Bécsi Tamás

Számítógépes Hálózatok

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008

Branch-and-Bound. 1. Az egészértéketű programozás. a korlátozás és szétválasztás módszere Bevezető Definíció. 11.

Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1.

Mesterséges intelligencia 1 előadások

Bonyolultságelmélet. Thursday 1 st December, 2016, 22:21

Mesterséges Intelligencia MI

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2010/2011 1/363

Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa:

Kétszemélyes játékok

Regresszió. Csorba János. Nagyméretű adathalmazok kezelése március 31.


A számítástudomány alapjai

Atomerőművi reaktor töltettervezése, mint optimalizációs probléma. de a mai órán leginkább játszani fogunk

INFORMATIKA tétel 2019

Euler tétel következménye 1:ha G összefüggő síkgráf és legalább 3 pontja van, akkor: e 3

Algoritmuselmélet 2. előadás

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

Gráfalgoritmusok és hatékony adatszerkezetek szemléltetése

Érdekes informatika feladatok

Gyakori elemhalmazok

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

Új típusú döntési fa építés és annak alkalmazása többtényezős döntés területén

A szimplex tábla. p. 1

, , A

Intelligens Rendszerek I. Problémamegoldás kereséssel: nem informált keresés (blind search)

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Bevezetés Standard 1 vállalatos feladatok Standard több vállalatos feladatok 2017/ Szegedi Tudományegyetem Informatikai Intézet

Gráfelméleti feladatok. c f

R ++ -tree: an efficient spatial access method for highly redundant point data - Martin Šumák, Peter Gurský

Összefoglalás és gyakorlás

Korlátozás és szétválasztás elve. ADAGOLO adattípus

Függvények növekedési korlátainak jellemzése

A modellellenőrzés érdekes alkalmazása: Tesztgenerálás modellellenőrzővel

Dijkstra algoritmusa

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }

1. feladat Az egyensúly algoritmus viselkedése: Tekintsük a kétdimenziós Euklideszi teret, mint metrikus teret. A pontok

A mesterséges intelligencia alapjai

SZAKDOLGOZAT. Boros László

Operációkutatás vizsga

2018, Diszkrét matematika

Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék

2016, Diszkrét matematika

Mohó algoritmusok. Példa:

Algoritmusok bonyolultsága

Adatbányászati szemelvények MapReduce környezetben

Vektorgeometria (2) First Prev Next Last Go Back Full Screen Close Quit

Operációkutatás példatár

2018, Diszkre t matematika. 10. elo ada s

Adatbázisban tárolt kollekciók

Adatszerkezetek 2. Dr. Iványi Péter

Hatékony technikák modellellenőrzéshez: Korlátos modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Diszkrét matematika II. gyakorlat

Fibonacci számok. Dinamikus programozással

Kriptográfia 0. A biztonság alapja. Számítás-komplexitási kérdések

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Komplex számok szeptember Feladat: Legyen z 1 = 2 3i és z 2 = 4i 1. Határozza meg az alábbi kifejezés értékét!

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

Átírás:

Mesterséges intelligencia 2. laborgyakorlat Keresési módszerek A legtöbb feladatot meg lehet határozni keresési feladatként: egy ún. állapottérben, amely tartalmazza az összes lehetséges állapotot fogjuk keresni a megoldást. A keresést úgy fogjuk tekinteni mint egy keresési fa építését. Az algoritmus minden egyes lépésben valamilyen stratégia szerint kiválaszt egy levelet, amelyet kifejt, és az így kapott csúcsokat gyerekként beteszi a kifejtett csúcs alá. A fában a gyökér a kiinduló állapot, a levelek azok a csúcsok amelyek kibontásra várnak. A keresés addig tart, amíg vagy meg nem kaptuk a keresett csúcsot, vagy nincs több kibontható levél. A kibontásra váró leveleket rendszerint egy sorban tároljuk. Az a mód, ahogyan ide újabb csúcsokat teszünk be, illetve távolítunk el képezi a keresési stratégia lényegét. Minden keresési módszernél a következő tulajdonságokat kell figyelembe venni: 1. teljesség - a stratégia megtalálja-e a megoldást? 2. időigény 3. tárigény 4. optimalitás - ha több megoldás van, akkor a legjobbat adja-e vissza? Nem informált (vak - blind) keresési módszerek Ebben az esetben semmiféle információnk nincs az aktuális állapotból a célállapotba vezető út lépésszámáról, vagy útköltségéről. Az ilyen keresési algoritmusok csak arra képesek, hogy meg tudják különböztetni a célállapotokat a nem célállapotoktól. Szélességi keresés 1 NODE * breadth_first_search(node * root) 7 NODE * act = QUEUE_pop_front(queue);

Tulajdonságok: teljes, exponenciális memóriaigény, exponenciális időigény. Egyenletes költségű keresés Az egyenletes költségű keresés (EKK) a szélességi keresés módosított változata. Az EKK nem a legelső elemet veszi ki a kibontásra váró csúcsok sorából, hanem azt, amely minimizál egy g ( ) útköltség függvényt. Az útköltség függvény a gyökérből az illető csúcsig való eljutás költségét jelenti. Ha ez a költség a csúcs mélységével egyenlő, akkor visszakapjuk a szélességi keresést. 1 NODE * uniform_cost_search(node * root) 7 NODE * act = QUEUE_pop_min(queue, g); Tulajdonságok: bizonyos feltételek mellett (g (child i (X )) g (X ) i ) optimális, exponenciális tárigény, exponenciális időigény. Mélységi keresés 1 NODE * depth_first_search(node * root) 4 QUEUE_push_front(queue, root); 7 NODE * act = QUEUE_pop_front(queue); 14 QUEUE_push_front(queue, NODE_next_child(act)); Tulajdonságok: lineáris memóriaigény, exponenciális időigény.

Mélységkorlátozott keresés 1 NODE * depth_limited_search(node * root, int max_depth) 4 QUEUE_push_front(queue, root); 5 int depth = 1; 6 while(!queue_is_empty(queue)) 7 { 8 NODE * act = QUEUE_pop_front(queue); 9 if (is_solution(act)) 10 { 11 QUEUE_free(queue); 12 return act; 13 } 14 if (NODE_is_last_child(act)) depth--; 15 if (depth < max_depth) 1 17 while(node_has_more_child(act)) 18 QUEUE_push_front(queue, NODE_next_child(act)); 19 depth++; 20 } 21 } 22 QUEUE_free(queue); 23 return NULL; 24 } Tulajdonságok: nem teljes, nem optimális, lineáris memóriaigény, exponenciális időigény. Iteratívan mélyülő keresés 1 NODE * iterative_deepening_search(node * root) 3 int i; 4 NODE * res; 5 for (i = 0; i < INFINITY; i++) 6 if (res = depth_limited_search(root, i)) return res; 7 } Tulajdonságok: nem optimális, bizonyos feltételek mellett teljes, lineáris memóriaigény, exponenciális időigény. Informált keresési módszerek Ebben az esetben problémaspecifikus információkat is figyelembe veszünk. Mohó módszer Legyen h(n) egy olyan függvény, amely megbecsüli egy n állapotnak a célállapotba vezető út költségét. A kifejtésre váró csomópontok közül azt választjuk ki mindig, amelyre a h minimális. Megkötés: h(n) = 0, ha n egy célállapot.

Mohó keresés 1 NODE * greedy_search(node * root) 7 NODE * act = QUEUE_pop_min(queue, h); A* algoritmus Az A* algoritmus ötvözi az egyenletes költségű keresés és a mohó módszer előnyeit. Az egyenletes költségű keresés teljes, és optimális, a mohó módszer pedig a becsült távolságot minimizálja. Legyen g (n) az a függvény, amely a start állapotból az n állapotig tartó út valódi költségét adja meg h(n) egy olyan heurisztikus függvény, amely megbecsüli az n állapotnak a célállapotba vezető út költségét. f (n) = g (n) + h(n) Az A* algoritmus egy legjobbat először típusú keresés, ahol a csomópontok közül azt választjuk ki mindig, amelyre f minimális. Az A* a legjobb megoldást találja meg, feltéve, hogy h nem ad pesszimista becslést. Ezt elfogadható heurisztikának hívják. A heurisztikus függvénnyel kontrollálhatjuk az A* viselkedését: ha h(n) = 0, akkor csak g (n) játszik szerepet, tehát visszakapjuk az egyenletes költségű keresést ha h(n) mindig kisebb vagy egyenlő mint n-ből a célba vezető optimális út valódi költsége (h elfogadható heurisztika), akkor A* garantáltan megtalálja a legrövidebb utat ha h(n) pontosan egyenő az n-ből a célba vezető optimális út költségével, akkor A* csak a legrövidebb úton levő csomópontokat fogja kibontani, ezért rendkívül gyors lesz ha h(n) nagyobb mint a mint n-ből a célba vezető optimális út valódi költsége, akkor az A* nem biztos, hogy a legrövidebb utat találja meg ha h(n) g (n), akkor csak a heurisztikus függvény fog szerepet játszani a keresésben, és A* visszaalakul mohó kereséssé. Heurisztikák rácsszerkezetű állapotterekre: Manhattan távolság: h(n) := λ(abs(n.x cél.x) + abs(n.y cél.y)) Euklideszi távolság: h(n) := λ (n.x cél.x) 2 + (n.y cél.y) 2

1 Initialize OPEN list 2 Initialize CLOSED list 3 Create goal node; call it node_goal 4 Create start node; call it node_start 5 Add node_start to the OPEN list 6 while the OPEN list is not empty 7 { 8 Get node n off the OPEN list with the lowest f(n) 9 Add n to the CLOSED list 10 if n is the same as node_goal 11 then return Solution(n) 12 13 Generate each successor node n of n 14 for each successor node n of n 15 { 16 Set the parent of n to n 17 Set h(n ) to be the heuristically estimate distance to node_goal 18 Set g(n ) to be g(n) plus the cost to get to n from n 19 Set f(n ) to be g(n ) plus h(n ) 20 if n is on the OPEN list and the existing one is as good or better 21 then discard n and continue 22 23 if n is on the CLOSED list and the existing one is as good or better 24 then discard n and continue 25 26 Remove occurrences of n from OPEN and CLOSED 27 Add n to the OPEN list 28 } 29 } 30 31 return failure Feladatok 1. Az A* algoritmust használva oldja meg a 8-as (n-es) kirakójátékot. GUI nem szükséges. Beküldési határidő: március 17, 23:59. 2. EC +1 pont. Módosítsa a rabló-pandúr játékot úgy, hogy a pályán véletlenszerű akadályokat helyez el, és a rendőrök stratégiájának részét képezi az A* algoritmus. Könyvészet 1. Russel&Norvig Mesterséges intelligencia modern megközelítésben 2. http://theory.stanford.edu/~amitp/gameprogramming/astarcomparison.html#s3 3. http://www.briangrinstead.com/files/astar/