====== Solving problems by search ====== Put your solution into a ''search_agents.py'' file and upload it. See deadlines in https://cw.felk.cvut.cz/brute ===== HW: 02_search1 ===== Implement a Breadth-First agent and Uniform-Cost agent ===== HW 03_search2 ===== Implement an Iterative-deepening agent and the A* algorithm with at least one heuristics. You can implement more than one heuristic. ===== grading ===== You algorithms will be tested on several maps checking whether they find a valid path and the optimal one. Manual evaluation will reflect readability and efficiency of your implementation. ===== support code ===== The code essentially defines the problem, provides a necessary interface and basic visualization for easier development. The basic usage is demonstrated in the ''sandbox.py''. You will probably need to define a Node class and some data structures for keeping/organizing the Nodes. [[https://cw.felk.cvut.cz/courses/be5b33kui/kuimaze.zip|kuimaze package (zip-archive)]] contains also some maps and package documentation, which is also available [[https://cw.felk.cvut.cz/courses/be5b33kui/kuimaze_doc/|on-line]]. The package is a bit more general it contains more methods we need at the moment. The basic interface/communication with the problem provide the following methods: problem = kuimaze.Maze('map.png') # create a problem (object) state = problem.get_start_state() # get started problem.is_goal_state(state) # does the state belong to the goal set? Loop over all actions that are possible for the given state. for action in problem.get_actions(state): Get result of an ''action'' child_state, transition_cost = problem.result(state, action) The basic visualisation and how to construct the path is shown in ''sandbox.py''. **Some screenshots:** {{:courses:be5b33kui:labs:search:normal1-screenshot.png|}} Probably a better solution: {{:courses:be5b33kui:labs:search:normal1-bfs.png |}}