Search
How to search when we do not know how far is the goal. What does it mean that an algorithm is complete, optimal?
Let us start with a simple graph to practice searching. It is easier to debug and understand. The lecture example you can try out here: ''kuigraphs.py''.
The basic communication is the same as for kuimaze. I.e.:
kuimaze
import kuigraphs env = kuigraphs.KuiGraph() observation = env.reset() states_with_costs = env.expand(state) # list of tuples ('a',1) env.set_path(path)
state is a letter like in the lecture: 'S', 'a', … 'G'. Try out some search strategies. If you write them generally enough, your code will work also in the following case:
state
env = kuimaze.InfEasyMaze()
Think a little bit about the types of data structures you will need.
Students should think about representation of Nodes in search Trees, and how to implement Node and NodeList classes that permit to create and manipulate Nodes.
Node
NodeList
For teacher:
Exemple solution is in easy_search_agents.py of kui-maze repository.
easy_search_agents.py
In the environment from Search program an algorithm that will find the cheapest path. Do not forget that changing positions does not have to cost the same in every case.