# AI - lesson 03 #### Francesco Arrigoni ###### 14 October 2015 ## Goal Oriented agents Historically called __problem-solving agents__ Steps involved: 1. __Formulate a problem__ Usually performed by the designer 2. __Search for a solution__ Usually performed by the agent itself 3. __Execute the actions__ that compose the solution. Performed by the agent This is different from usual systems in which step 2 (formulate the algorithm) is performed by a human. The types of algorithms created by the agents are usually simple, without IF statements. ### Formulating the problem: The __environment__ we have to interact with is: - static - deterministic - fully observable - known - discrete The problem can be formulated defining the following five elements: (example problem is the reduced version of 15 puzzle: 8 puzzle) 1. The __initial state__: a description of the initial situation of the problem 2. __Actions__ (s) = {actions that are applicable is s} Return the legal moves from the state s. The state s0 is 7|2|3 ---|---|--- 1|4|8 6|5| Actions(s0)={$\leftarrow,\uparrow$} 3. __Result__ (s,a) = s' have the chosen move as argument and returns the new state. $a \in Action(s)$ The __result__ function is also called transition function (model) We are considering a deterministic model, so that the result of a given action is *fixed* I can state that __initial state__, __actions__ and __result__ are elements of a *graph* named __state space__ In our __state space__ graph: - *vertices* correspond to *states* - *arcs* correspond to *actions*. The graph is *implicitly defined*, it's not represented with an incidence matrix. For example the state space of chess game is estimated to be $10^{120}$. It is almost impossible to represent, but we can build algorithm that can win a game exploring only a very small portion of the graph. The agents viewed at lesson are in a sense less powerful than Operating Research algoritms, but they don't require knowing the totality of the graph, and this is an advantage. A __path__ on a graph is a *sequence of states* that are connected on the graph. 4. __Goal test__: returns true or false, it is a test to check if the case is final or not. - __explicit__ goal test: list of all the final states ex: 8 puzzle - __implicit__ goal test: condition that characterizes final states ex: chess Every path in the state space should be associate to a *cost* (number), that is the sum of the costs of the action composing the path. 5. __Path cost__: is the sum of the costs of the action composing the path.