Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Previous revision
Last revision Both sides next revision
courses:b3b33kui:cviceni:program_po_tydnech:tyden_01 [2019/02/26 08:43]
courses:b3b33kui:cviceni:program_po_tydnech:tyden_01 [2024/02/21 14:43]
xposik [programování hledání]
Line 1: Line 1:
 +====== 01 Úvod, Prohledávání ======
 +  * [[https://​cyber.felk.cvut.cz/​study/​computer-labs/​|počítačové laboratoře]] na [[http://​cyber.felk.cvut.cz|K133]] ​ a bezpečnost práce
 +  * https://​www.cesnet.cz/​sluzby/​owncloud/​
 +  * https://​gitlab.fel.cvut.cz
 +  * **prohledávání**:​ vysvětlení
 +  * zadání první samostatné úlohy
  
 +===== Kvíz I - bonusový =====
 + /* * startovní kvíz, na n-puzzle
 +  * bodovaný, bonusových 0.5bodu
 +  * řešení odevzdat do BRUTE do úlohy **lab01quiz**,​ do půlnoci dne, kdy běží dané cvičení
 +  * formát: textový soubor, fotka řešení na papíře, pdf - co Vám nejlépe vyhovuje a dokážeme to přečíst
 +*/
 +
 +/*==== Kvíz ====*/
 +> {{page>​courses:​b3b33kui:​internal:​quizzes#​Plánování letových hladin}}
 +
 +
 +
 +
 +===== Prohledávání I =====
 +  * vysvětlení /*, on-line výuka*/
 +  * budeme diskutovat, jak hledat, když nevím jak je cíl daleko
 +  * co znamená, že algoritmus prohledávání je //úplný, optimální//​. ​
 +  /* * prezentace {{ :​courses:​b3b33kui:​cviceni:​program_po_tydnech:​searchi_example_cz.pdf |SearchI_example_cz.pdf}}*/​
 +
 +/* ==== Kvíz ==== */
 +>  {{page>​courses:​b3b33kui:​internal:​quizzes#​Zapomnětlivý cestovatel}}
 +
 +
 +===== Zadání úlohy: hledání cesty v bludišti =====
 +
 +V prostředí [[courses:​b3b33kui:​semestralni_ulohy:​1_prohledavani_stavoveho_prostoru:​start|Prohledávání stavového prostoru]] naprogramujte nalezení nejlevnější cesty. Nezapomeňte,​ že cena přechodu mezi pozicemi nemusí být nutně všude stejná.
 +
 +===== Seznámení s prostředím KUIMaze =====
 +  * [[courses:​b3b33kui:​semestralni_ulohy:​kuimaze:​00_install|Stáhněte a zprovozněte si prostředí KUIMaze]]
 +  * Projděte si sekci [[..:​..:​semestralni_ulohy:​1_prohledavani_stavoveho_prostoru:​start#​jak_na_to|Jak na to]] v popisu úlohy [[..:​..:​semestralni_ulohy:​1_prohledavani_stavoveho_prostoru:​start|1. Prohledávání stavového prostoru]]
 +  * Vytvořte si prostředí ''​SearchProblem'',​ tj. instanci třídy ''​kuimaze2.SearchProblem'',​ s mapou danou obrázkem v souboru ''​maps/​easy_intro/​easy_intro_1.png'':​
 +<code python>
 +>>>​ from kuimaze2 import SearchProblem,​ State
 +>>>​ from kuimaze2.map_image import map_from_image
 +>>>​ map_path = '​maps/​easy_intro/​easy_intro_1.png'​
 +>>>​ env = SearchProblem(map_from_image(map_path),​ graphics=True)</​code>​
 +  * Vykreslete si prostředí metodou ''​render()'':​
 +<​code>​
 +>>>​ env.render()
 +</​code>​
 +Měli byste vidět obrázek podobný následujícímu:​
 +{{ :​courses:​b3b33kui:​cviceni:​program_po_tydnech:​easy_intro_1.png?​200 |}}
 +**Nechte okno s obrázkem otevřené, nezavírejte ho!**
 +  * Zkuste použít různé metody, které prostředí nabízí:
 +<​code>​
 +>>>​ start = env.get_start()
 +>>>​ start
 +State(r=0, c=1)
 +>>>​ env.get_goals() ​  # Notice the different return type, this returns a Set
 +{State(r=2, c=4)}
 +>>>​ actions = env.get_actions(start)
 +>>>​ actions
 +[<​Action.UP:​ 0>, <​Action.RIGHT:​ 1>, <​Action.DOWN:​ 2>, <​Action.LEFT:​ 3>]
 +>>>​ new_state, trans_cost = env.get_transition_result(start,​ actions[1])
 +>>>​ new_state
 +State(r=0, c=2)
 +</​code>​
 +  * Zkuste zavolat ''​env.render()''​ znovu. Změnilo se zobrazení nějak?
 +  * Zkuste přidat do volání metody ''​render()''​ další parametry:
 +<code python>
 +>>>​ texts = {State(0,​0):​ "​S",​ State(0,1): "​1"​}
 +>>>​ env.render(texts = texts, current_state=State(0,​0),​ next_states=[State(1,​0)])
 +</​code>​
 +  * Prozkoumejte ''​example_search.py''​ a zkuste pochopit, co se tam děje.
 +  * Zkuste manuálně zkonstruovat cestu ze startu do cíle a vrátit ji z metody ''​Agent.find_path()''​.
 +  * Zkuste si takového agenta odevzdat do [[https://​cw.felk.cvut.cz/​brute/​|BRUTE]] do úlohy ''​01-easy_search''​.
 +
 +===== Prohledávácí rozcvička - nepovinná úloha 01-easy_search =====
 +Ačkoli jste mnozí již netrpěliví se rovnou vrhnout na implementaci algoritmu A*, zkuste napřed jednodušší algoritmy (BFS, UCS) a jednoduchá bludiště. Je to menší problém, bude se vám snáz krokovat a debugovat, ověříte si správné zacházení s prostředím.
 +
 +Rozmyslete si trochu nad papírem datové struktury, které budete potřebovat. Zkuste implementovat různé strategie/​algoritmy. Pokud je implementujete dostatečně obecným způsobem, většina vašeho kódu půjde použít i pro algoritmus A* (což je první povinná úloha).
 +
 +Zkuste svůj algoritmus v modulu ''​agent.py''​ odevzdat do [[https://​cw.felk.cvut.cz/​brute/​|BRUTE]] a prozkoumejte,​ jakou zpětnou vazbu vám hodnoticí skript poskytl. ​
 +
 +
 +
 +
 +
 +
 +===== různé =====
 +  * [[http://​tristanpenman.com/​demos/​n-puzzle/​|visualizace]] různých prohledávacích algoritmů demonstrována na problému n-1 puzzle
courses/b3b33kui/cviceni/program_po_tydnech/tyden_01.txt · Last modified: 2024/02/21 14:50 by xposik