search.ipynb 71,6 ko
Newer Older
Chipe1's avatar
Chipe1 a validé
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# The search.py module"
Chipe1's avatar
Chipe1 a validé
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Introduction\n",
    "============\n",
    "\n",
Chipe1's avatar
Chipe1 a validé
    "Hello!\n",
    "In this IPython notebook, we'll study different kinds of search techniques used in [ search.py ]( https://github.com/aimacode/aima-python/blob/master/search.py ) and try to get an intuition of what search algorithms are best suited for various problems. We first explore uninformed search algorithms and later get our hands on heuristic search strategies.\n",
    "\n",
    "The code in this IPython notebook, and the entire `aima-python` repository is intended to work with Python 3 (specifically, Python 3.4). So if you happen to be working on Python 2, you should switch to Python 3. For more help on how to install python3, or if you are having other problems, you can always have a look the `intro` IPython notebook. \n",
Chipe1's avatar
Chipe1 a validé
    "\n",
    "Now that you have all that sorted out, let's get started!"
Chipe1's avatar
Chipe1 a validé
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Uninformed Search Strategies"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Uninformed Search strategies are called `blind search`. In such search strategies, the only information we have about any state is generated by checking if a piece of data, or any of its successors, matches our `goal state` or not. THAT'S IT. NOTHING MORE. (Well ....not really. See the `value` method defined in the following section).\n",
Chipe1's avatar
Chipe1 a validé
    "\n",
    "First let's formulate the problem we intend to solve. So let's import everything from our module."
   ]
  },
jeff3456's avatar
jeff3456 a validé
  {
   "cell_type": "code",
   "execution_count": 81,
jeff3456's avatar
jeff3456 a validé
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
jeff3456's avatar
jeff3456 a validé
   "source": [
Chipe1's avatar
Chipe1 a validé
    "from search import *"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The search and other modules of the repository make use of several imports from the utils module. We will point the useful ones out if they are required to follow the material below. Don't worry. You don't need to read utils.py in order to understand search algorithms.\n",
Chipe1's avatar
Chipe1 a validé
    "    \n",
    "The `Problem` class is an abstract class on which we define our problems(*duh*).\n",
    "Again, if you are confused about what `abstract class` means have a look at the `Intro` notebook.\n",
Chipe1's avatar
Chipe1 a validé
    "The `Problem` class has six methods.\n",
    "* `__init__(self, initial, goal)` : This is what is called a `constructor` and is the first method called when you create an instance of class. In this and all of the below methods `self` refers to the object itself--the object whose method is called. `initial` specifies the initial state of our search problem. It represents the start state from where our agent begins his task of exploration to find the goal state(s) which is given in the `goal` parameter.\n",
Chipe1's avatar
Chipe1 a validé
    "* `actions(self, state)` : This method returns all the possible actions our agent can make in state `state`.\n",
    "* `result(self, state, action)` : This returns the resulting state if action `action` is taken in the state `state`. This `Problem` class only deals with deterministic outcomes. So we know for sure what every action in a state would result to.\n",
    "* `goal_test(self, state)` : Given a graph state, it checks if it is a terminal state. If the state is indeed a goal state, value of `True` is returned. Else, of course, `False` is returned.\n",
Chipe1's avatar
Chipe1 a validé
    "* `path_cost(self, c, state1, action, state2)` : Return the cost of the path that arrives at `state2` as a result of taking `action` from `state1`, assuming total cost of `c` to get up to `state1`.\n",
    "* `value(self, state)` : This acts as a bit of extra information in problems where we try to optimize a value when we cannot do a goal test."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now the above abstract class acts as a parent class, and there is another named called `GraphProblem` in our module. It creates a graph problem from an instance of the `Graph` class. To create a graph, simply type `graph = Graph(dict(...))`. The dictionary must contain nodes of the graph as keys, so make sure they are `hashable`. If you don't know what that means just use strings or numbers. Each node contains the adjacent nodes as keys and the edge length as its value. Each dictionary then should correspond to another dictionary in the graph.  The `Graph` class creates a directed(edges allow only one way traffic) by default. If you want to make an undirected graph, use `UndirectedGraph` instead, but make sure to mention any edge in only one of its nodes."
Chipe1's avatar
Chipe1 a validé
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If you didn't understand the above paragraph, `Fret not!`. Just think of the below code as a magicical method to create a simple undirected graph. I'll explain what it is about later."
jeff3456's avatar
jeff3456 a validé
   ]
  },
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
Chipe1's avatar
Chipe1 a validé
   "source": [
    "museum_graph = UndirectedGraph(dict(\n",
    "    Start = dict(Dog = 3, Cat = 9, Mouse = 4),\n",
    "    Dog = dict(Bear = 7),\n",
    "    Cat = dict(Monkey = 9, Fish = 8, Penguin = 3),\n",
    "    Mouse = dict(Penguin = 2),\n",
    "    Bear = dict(Monkey = 7),\n",
    "    Monkey = dict(Giraffe = 11, Fish = 6),\n",
Chipe1's avatar
Chipe1 a validé
    "    Fish = dict(Giraffe = 8),\n",
Chipe1's avatar
Chipe1 a validé
    "    Penguin = dict(Parrot = 4, Elephant = 6),\n",
Chipe1's avatar
Chipe1 a validé
    "    Giraffe = dict(Hen = 5),\n",
    "    Parrot = dict(Hen = 10),\n",
    "    Elephant = dict(Hen = 9)))"
Chipe1's avatar
Chipe1 a validé
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Imagine we are in a museum showcasing statues of various animals. To navigate through the museum there are paths between some statues and the entrance. We define the entrance and the statues as nodes in our graph with the path connecting them as edges. The cost/weight of an edge specifies is its length. So `Start = dict(Dog = 3, Cat = 9, Mouse = 4)` means that there are paths from `Start` to `Dog`, `Cat` and `Mouse` with path costs 3, 9 and 4 respectively. \n",
    "\n",
    "Here's an image below to better understand our graph."
Chipe1's avatar
Chipe1 a validé
   "cell_type": "markdown",
Chipe1's avatar
Chipe1 a validé
   "metadata": {},
   "source": [
    "<img src=\"images/search_animal.svg\" width=\"80%\">\n",
    "<!-- Theses lovely animal icons were reproduced courtesy of Creative Tail https://www.creativetail.com/40-free-flat-animal-icons/ -->\n"
Chipe1's avatar
Chipe1 a validé
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Breadth First Search"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In Breadth First Search, the `shallowest` unexpanded node is chosen for expansion. That means that all nodes of a given depth must be expanded before any node of the next depth level. This search strategy accomplishes this by using a `FIFO` meaning 'First In First Out' queue. Anything that gets in the queue first also gets out first just like the checkout queue in a supermarket. To use the algorithm, first we need to define our problem. Say we want to find the statue of `Monkey` and we start from the entrance which is the `Start` state. We'll define our problem using the `GraphProblem` class."
Chipe1's avatar
Chipe1 a validé
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
Chipe1's avatar
Chipe1 a validé
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "monkey_problem = GraphProblem('Start', 'Monkey', museum_graph)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now let's find the solution for our problem using the `breadth_first_search` method. Note that it returns a `Node` from which we can find the solution by looking at the path that was taken to reach there."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
Chipe1's avatar
Chipe1 a validé
   "metadata": {
    "collapsed": false
   },
Chipe1's avatar
Chipe1 a validé
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['Cat', 'Monkey']"
      ]
     },
     "execution_count": 4,
Chipe1's avatar
Chipe1 a validé
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
Chipe1's avatar
Chipe1 a validé
   "source": [
    "bfs_node = breadth_first_search(monkey_problem)\n",
    "bfs_node.solution()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We get the output as `['Cat', 'Monkey']`. That is because first the nodes `Dog`, `Cat` and `Mouse` are added to the `FIFO` queue in `some` order when we are expanding the `Start` node. Now when we start expanding nodes in the next level, only the `Cat` node gets us to `Monkey`. Note that during a breadth first search, the goal test is done when the node is being added to the queue."
Chipe1's avatar
Chipe1 a validé
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Uniform-cost Search"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In Uniform-cost Search, we expand the node with the lowest path cost (the cost to reach that node from the start) instead of expanding the shallowest node. Rather than a `FIFO` queue, we use something called a `priority queue` which selects the element with the highest `priority` of all elements in the queue. For our problem, the shortest path between animals has the higher priority; the shortest path has the lowest path cost. Whenever we need to enqueue a node already in the queue, we will update its path cost if the newer path is better. This is a very important step, and it means that the path cost to a node may keep getting better until it is selected for expansion. This is the reason that we do a goal check only when a node is selected for expanion."
Chipe1's avatar
Chipe1 a validé
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
Chipe1's avatar
Chipe1 a validé
   "metadata": {
    "collapsed": false
   },
Chipe1's avatar
Chipe1 a validé
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['Dog', 'Bear', 'Monkey']"
      ]
     },
     "execution_count": 5,
Chipe1's avatar
Chipe1 a validé
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
Chipe1's avatar
Chipe1 a validé
   "source": [
    "ucs_node = uniform_cost_search(monkey_problem)\n",
    "ucs_node.solution()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We got the path`['Dog', 'Bear', 'Monkey']` instead of `['Cat', 'Monkey']`. Why? The path cost is lower! We can also see the path cost with the path_cost attribute. Let's compare the path cost of the Breadth first search solution and Uniform cost search solution"
Chipe1's avatar
Chipe1 a validé
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
Chipe1's avatar
Chipe1 a validé
   "metadata": {
    "collapsed": false
   },
Chipe1's avatar
Chipe1 a validé
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(18, 17)"
      ]
     },
     "execution_count": 6,
Chipe1's avatar
Chipe1 a validé
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
Chipe1's avatar
Chipe1 a validé
   "source": [
    "bfs_node.path_cost, ucs_node.path_cost"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We were right! \n",
    "\n",
    "The path cost through the `Cat` statue is indeed more than the path cost through `Dog` even though the former passes through two roads compared to the three roads in the `ucs_node` solution."
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# Romania map visualisation\n",
    "\n",
    "Let's have a visualisation of Romania map [Figure 3.2] from the book and see how different searching algorithms perform / how frontier expands in each search algorithm for a simple problem to reach 'Bucharest' starting from 'Arad'. This is how the problem is defined:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "romania_problem = GraphProblem('Arad', 'Bucharest', romania_map)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'Rimnicu': (233, 410), 'Oradea': (131, 571), 'Zerind': (108, 531), 'Mehadia': (168, 339), 'Timisoara': (94, 410), 'Arad': (91, 492), 'Bucharest': (400, 327), 'Lugoj': (165, 379), 'Sibiu': (207, 457), 'Drobeta': (165, 299), 'Vaslui': (509, 444), 'Hirsova': (534, 350), 'Giurgiu': (375, 270), 'Neamt': (406, 537), 'Craiova': (253, 288), 'Urziceni': (456, 350), 'Eforie': (562, 293), 'Pitesti': (320, 368), 'Iasi': (473, 506), 'Fagaras': (305, 449)}\n"
     ]
    }
   ],
   "source": [
    "romania_locations = romania_map.locations\n",
    "print(romania_locations)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import networkx as nx\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nBQVp3rx5GjNmjOkcAAD+zYULF5STk6OMjAwFBgYqOTlZQ4YMMZ0FAGgGODmDZmXLli1q166dBg8e\nbDql2bFarcrOztaUKVN07tw50zkAAPybNm3a6KmnntLRo0cVFRWlmJgY3XXXXcrPz+fB9gCABsXJ\nGTQro0ePVnR0tB577DHTKc1WXFycPDw8lJmZaToFAID/qKamRitXrlRaWpq8vLz03HPPaezYsWrR\ngr/fBADUL8YZNBvHjh3THXfcoRMnTshqtZrOabYqKioUEBCgVatWcVQcAOAWLl++rLVr1yolJUXV\n1dVKSkrSgw8+yFsfAQD1hnEGzcbMmTMlSa+88orhEqxZs0bJycnat2+fPD09TecAAHBNnE6ntmzZ\nopSUFH355ZdKTExUTEyMWrdubToNAODmGGfQLFRVValLly7avXu3unfvbjoHkqKjo+Xv7685c+aY\nTgEA4Lpt375dqampKikpUUJCguLi4tSmTRvTWQAAN8UNs2gWVq5cqcGDBzPMuJBXX31Vr732moqL\ni02nAABw3YYOHapNmzZp7dq12r59u7p3767U1FSdPXvWdBoAwA0xzqDJczqdWrx4sZ588knTKfiO\nTp06KTU1VRMnTtSlS5dM5wAAUCsDBw7U6tWrVVhYqE8//VTdu3dXcnKyTp06ZToNAOBGGGfQ5H34\n4Yc6f/687r33XtMp+BcTJkxQmzZttGjRItMpAADUye23367ly5fLbrfr9OnT6t27t6ZPn64vv/zS\ndBoAwA0wzqDJy8zM1OTJk3ntpQuyWCzKzs5WSkqKjh8/bjoHAIA66969u1577TWVlJTIYrEoMDBQ\nkyZN0rFjx0ynAQBcGP+2iiatrKxM7777rmJjY02n4Hv06tVLM2fO1KRJk8TzyQEATUXnzp01b948\nHTp0SD4+Pho0aJAeeeQRHThwwHQaAMAFMc6gScvJydF//dd/ydvb23QK/oMZM2bo9OnTWr58uekU\nAADqlY+Pj1566SUdPXpUffv21YgRIxQdHa29e/eaTgMAuBBepY0m69tvv1W3bt20ceNG9evXz3QO\nfkBRUZHCw8NVUlIiX19f0zkAADSIqqoq5eTk6JVXXlFAQICSk5M1dOhQ01kAAMM4OYMma+3atere\nvTvDjJsYMGCAYmNjNXXqVNMpAAA0GC8vL02bNk1Hjx7V/fffr9jYWA0dOlSbN2/m9l4AaMY4OYMm\n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\nAACAQZQzAAAAAAAABlHOAAAAAAAAGEQ5AwAAAAAAYBDlDAAAAAAAgEGUMwAAAAAAAAZRzgAAAAAA\nABhEOQMAAAAAAGAQ5QwAAAAAAIBBlDMAAAAAAAAGUc4AAAAAAAAYRDkDAAAAAABgEOUMAAAAAACA\nQZQzAAAAAAAABlHOAAAAAAAAGEQ5AwAAAAAAYBDlDAAAAAAAgEGUMwAAAAAAAAZRzgAAAAAAABhE\nOQMAAAAAAGAQ5QwAAAAAAIBBlDMAAAAAAAAGUc4AAAAAAAAYRDkDAAAAAABgEOUMAAAAAACAQZQz\nAAAAAAAABlHOAAAAAAAAGEQ5AwAAAAAAYBDlDAAAAAAAgEGUMwAAAAAAAAZRzgAAAAAAABhEOQMA\nAAAAAGAQ5QwAAAAAAIBBlDMAAAAAAAAGUc4AAAAAAAAYRDkDAAAAAABgEOUMAAAAAACAQZQzAAAA\nAAAABlHOAAAAAAAAGEQ5AwAAAAAAYBDlDAAAAAAAgEGUMwAAAAAAAAZRzgAAAAAAABhEOQMAAAAA\nAGAQ5QwAAAAAAIBBlDMAAAAAAAAGUc4AAAAAAAAYRDkDAAAAAABgEOUMAAAAAACAQZQzAAAAAAAA\nBlHOAAAAAAAAGEQ5AwAAAAAAYBDlDAAAAAAAgEGUMwAAAAAAAAZRzgAAAAAAABhEOQMAAAAAAGAQ\n5QwAAAAAAIBBlDMAAAAAAAAGUc4AAAAAAAAYRDkDAAAAAABgEOUMAAAAAACAQZQzAAAAAAAABlHO\nAAAAAAAAGEQ5AwAAAAAAYBDlDAAAAAAAgEGUMwAAAAAAAAZRzgAAAAAAABhEOQMAAAAAAGAQ5QwA\nAAAAAIBBlDMAAAAAAAAGUc4AAAAAAAAYRDkDAAAAAABgEOUMAAAAAACAQZQzAAAAAAAABlHOAAAA\nAAAAGEQ5AwAAAAAAYBDlDAAAAAAAgEGUMwAAAAAAAAZRzgAAAAAAABhEOQMAAAAAAGAQ5QwAAAAA\nAIBBlDMAAAAAAAAGUc4AAAAAAAAYRDkDAAAAAABgEOUMAAAAAACAQZQzAAAAAAAABlHOAAAAAAAA\nGEQ5AwAAAAAAYBDlDAAAAAAAgEGUMwAAAAAAAAZRzgAAAAAAABhEOQMAAAAAAGAQ5QwAAAAAAIBB\nlDMAAAAAAAAGUc4AAAAAAAAYRDkDAAAAAABgEOUMAAAAAACAQZQzAAAAAAAABlHOAAAAAAAAGEQ5\nAwAAAAAAYBDlDAAAAAAAgEGUMwAAAAAAAAZRzgAAAAAAABhEOQMAAAAAAGDQ/wOg1Ofv4yOweAAA\nAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x107709ac8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "G = nx.Graph()\n",
    "\n",
    "for n, p in romania_locations.items():\n",
    "#     print(n)\n",
    "    # add nodes from romania_locations\n",
    "    G.add_node(n)\n",
    "    \n",
    "#     print(p)\n",
    "    # add positions for each node\n",
    "    G.node[n]['pos'] = p\n",
    "    \n",
    "# add edges between cities in romania map - UndirectedGraph defined in search.py\n",
    "for node in romania_map.nodes():\n",
    "#     print(node)\n",
    "    connections = romania_map.get(node)\n",
    "#     print((connections))\n",
    "    for connection in connections.keys():\n",
    "        G.add_edge(node, connection)\n",
    "        \n",
    "\n",
    "# draw the graph with locations from romania_locations\n",
    "plt.figure(figsize=(15,10))\n",
    "nx.draw(G, romania_locations)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
  },
  "widgets": {
   "state": {},
   "version": "1.1.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}