Table of Contents

1. Prohledávání stavového prostoru

Vaším úkolem je naprogramovat algoritmus A* k prohledávání stavového prostoru State_space_search.

Formulace úlohy

Naprogramujte algoritmus A*, který najde optimální cestu do cílového stavu. Pokud cesta neexistuje, výsledné řešení je None. K dispozici máte prostředí-bludiště kuimaze2.SearchProblem.

Pro správnou funkčnost algoritmu je zapotřebí zvolit takzvanou heuristickou funkci. Popis jaký dopad mají různé návrhy této funkce na výsledné řešení je velice pěkně zpracován zde. Cena přechodu mezi dvěma sousedními políčky je vždy větší nebo rovna euklidovské vzdálenosti souřadnic těchto políček.

Jak na to

  1. Zprovozněte si balíček kuimaze2, pokud jste to ještě neudělali.
  2. Seznamte se s prostředím SearchProblem. (V balíčku kuimaze2 byste také měli najít skript example_search.py, který také ukazuje, jak se s prostředím dá pracovat.)
  3. Vytvořte modul agent.py podle specifikací.

Třída Agent a její metody

V modulu (souboru) agent.py implementujte třídu Agent, která bude poskytovat tyto metody:

metoda vstupní parametry výstupní parametry vysvětlení
__init__ environmnent: SearchProblem žádné Inicializace agenta.
find_path žádné cesta Vrací nalezenou cestu nebo None, pokud cestu nenajde. Cestou je myšlen seznam (list) vzájemně sousedících stavů (State) začínající počátečním stavem a končící cílovým stavem.

Tipy

Následující moduly Pythonu mohou být užitečné při implementaci jistých částí A* algoritmu: queue, heapq.

Odevzdání

Hodnocení

Bodové ohodnocení za rešení úlohy lze vidět v hodnoceni.

Vizualizace

Když úlohu úspěšně vyřešíte, měli byste v závislosti na zvolené mapě být schopni vygenerovat obrázek podobný následujícímu. (Tento konkrétní obrázek pochází z předchozí verze balíčku kuimaze. Aktuální verze generuje obrázky mírně jiné.)