{"cells": [{"cell_type": "markdown", "metadata": {}, "source": ["# Shortest city tour (solution)\n", "\n", "Find the shortest path through a set of streets, solution of the first example."]}, {"cell_type": "code", "execution_count": 1, "metadata": {"ExecuteTime": {"end_time": "2016-11-03T13:22:54.917005", "start_time": "2016-11-03T13:22:54.332994"}}, "outputs": [], "source": ["%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "plt.style.use(\"ggplot\")"]}, {"cell_type": "code", "execution_count": 2, "metadata": {"ExecuteTime": {"end_time": "2016-11-03T13:22:54.938509", "start_time": "2016-11-03T13:22:54.921509"}}, "outputs": [{"data": {"text/html": ["
run previous cell, wait for 2 seconds
\n", ""], "text/plain": [""]}, "execution_count": 3, "metadata": {}, "output_type": "execute_result"}], "source": ["from jyquickhelper import add_notebook_menu\n", "add_notebook_menu()"]}, {"cell_type": "markdown", "metadata": {}, "source": ["## Problem definition"]}, {"cell_type": "code", "execution_count": 3, "metadata": {"ExecuteTime": {"end_time": "2016-11-03T13:23:10.000678", "start_time": "2016-11-03T13:22:54.944008"}}, "outputs": [{"data": {"text/html": ["
"], "text/plain": [".CustomFoliumMap at 0x1e913fa9710>"]}, "execution_count": 4, "metadata": {}, "output_type": "execute_result"}], "source": ["from ensae_projects.datainc.data_geo_streets import get_seattle_streets, shapely_records\n", "from ensae_projects.datainc.data_geo_streets import seattle_streets_set_small, folium_html_street_map\n", "\n", "name = get_seattle_streets()\n", "shapes, records, fields = shapely_records(name)\n", "edges_index, edges, vertices, distances = seattle_streets_set_small(shapes, records)\n", "folium_html_street_map(edges_index, shapes, html_width=\"80%\", zoom_start=15)"]}, {"cell_type": "markdown", "metadata": {}, "source": ["We display a simplified map."]}, {"cell_type": "code", "execution_count": 4, "metadata": {"ExecuteTime": {"end_time": "2016-11-03T13:23:13.304261", "start_time": "2016-11-03T13:23:10.125682"}}, "outputs": [{"data": {"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjEAAAI1CAYAAAAn/qviAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xd4VGX+/vH3zIQeOkbA0BSVbkQRsCEGiKggKKuCLEVY1PX3RVSaayFgWJprwd52UUQQcQF1EdQgVhRUEKSpFCWAiKETSqb8/vgwTAIJSSCTaffruubKzDlnTp5JzpznfsqZcfh8PkREREQijTPUBRARERE5FQoxIiIiEpEUYkRERCQiKcSIiIhIRFKIERERkYikECMiIiIRSSFGREREIpJCjIiIiEQkhRgRERGJSAoxIiIiEpHiirLx+PHjfYcOHQpWWUREREQYPXr0Az6fb3xB2xUpxBw6dIjU1NRTLpSIiIhIQUaPHl22MNtpOElEREQikkKMiIiIRCSFGBEREYlICjEiIiISkRRiREREJCIpxIiIiEhEUogRERGRiKQQIyIiIhFJIUZEREQikkKMiIiIRCSFGBEREYlICjEiIiISkRRiREREJCIpxIiIiEhEUogRERGRiKQQIyIiIhFJIUZEREQikkKMiIiIRCSFGBEREYlICjEiIiISkRRiREREJCIpxIiIiEhEUogRERGRiKQQIyIiIhFJIUZEREQikkKMiIiIRCSFGBEREYlICjEiIiISkRRiREREJCIpxIiIiEhEUogRERGRiKQQIyIiIhFJIUZEREQikkKMiIiIRCSFGBEREYlICjEiIiISkRRiREREJCIpxIiIiEhEUogRERGRiKQQIyIiIhFJIUZEREQikkKMiIiIRCSFGBEREYlICjEiIiISkRRiREREJCIpxIiIiEhEUogRERGRiKQQIyIiIhFJIUZEREQikkKMiIiIRCSFGBEREYlICjEiIiISkRRiREREJCIpxIiIiEhEUogRERGRiKQQIyIiIhFJIUZEREQikkKMiIiIRCSFGBEREYlICjEiIiISkRRiREREJCIpxIiIiEhEUogRERGRiKQQIyIiIhFJIUZEREQikkKMiIiIRCSFGBERyW3mTLj0UihfHq66Kve6n36CG26AM86AatUgJQXWrQtJMUUUYkRE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lAsvvJB169YBcN999+lkEkH8le4rr7zCnXfeSYUKFfjggw9U6Z4Gl8tFt27d9D4oQbHa81cSdCaQqNS1a1eSk5PJysriySefJCsri+TkZLp27RrqokkRuVwuBg0aRGJiIgcOHDgWSEXCnb55PfgUYiQq+Vvws2fPZsyYMcyePZsFCxaoBR+hHA4HV1xxBQCff/55iEsjUjTqiQkendElavm7zR9++GG6deumCXURTiFGIo16YoJPIUZEIoI/xHz66aeqHCQi+I9T9cQEj0KMiESEJk2akJiYyNatW1ns/7oBkQigEBM8CjEiEhGcTiffHig3AAAgAElEQVS33HILADNmzAhxaUQKph7D4FOIEZGI0bNnTwBmzpyJ2/91wiJhTj0xwaMQIyIRo2XLljRs2JDt27ezaNGiUBdH5KTUExN8CjEiEjEcDsex3hgNKUmkUE9M8CjEiEhEufXWWwF45513OHz4cAFbi4SOemKCTyFGRCJKkyZNaNGiBbt372bBggWhLo5IgdQTEzwKMSIScXr16gXAiy++GOKSiORPPTHBpxAjIhFnwIABlCtXjnnz5rFq1apQF0ckT/qwu+BTiBGRiFOjRg369+8PwGOPPRbi0oicnEJM8CjEiEhEuu+++3A6nUybNo0tW7aEujgiJ9BwUvApxIhIRDrnnHO46aabyM7O5qmnngp1cUTypZ6Y4FGIEZGINWzYMMAm+O7ZsyfEpRHJTT0xwacQIyIRq1WrVlx11VXs3buXl156KdTFEcmTemKCRyFGRCKavzfmiSee4MCBAyEujUiAemKCTyFGRCJa586dufjii9m2bRuPP/54qIsjckxBl1g/+CDUqQPx8bmX33svJCXZ7bzzoEqVwLrffoNOnaBxY2jSBDZtsuXp6dCypT3n8svhl19s+eHDcMst0LAhtG4d2D5aKMSISERzOBzHLrOeMGECv//+e4hLJJJbfiGmSxdYsuTE5U88AcuX2+3//g9uvDGwrk8fGDYM1qyx5yYk2PK77oJp0+w5vXpBWpotf/VVqFrVQs2998KIEcX84kJMIUZEIl67du3o2rUrBw4cIDU1tUjPza81DDBzprV2mza1igHgk08CreSkJChbFubMsXUbN1pr99xzrfV75MjpvS6JbDmHk954Ay65xI6ZO+4AjwfatIFatU6+j+nT4eh3nrJ6Nbjd0LGj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oXVr2LTJlk+bFmiZJiWB02kn5nB09dVXc91117F//35Gjx5d4PaZmTBsGKSnw6pVsH273QernPr0gRUr4JFH4OjcYb76yiqrFSvgxx9h6VL49NOT70tKVs6emDfegEsusWP3jjvA44E2baBWrcLvb8EC6NgRqlWDqlXt/vz5UL48tG9v25QuDS1bBsJupUqB5x84ANFWHSnEBNHJTuIn6/7zmzXLDrhvv7XHmZl2oMbHw//7f7m3nT7dugxbtIBrroE//yzuVyNSNAWFmPxaoa++aifoX36Be++FESNs+W23BVqmU6dC/fpWIYSriRMn4nQ6eemll1i7dm2udcdXaL/8AuedZ0MIAB06wDvv2P3Vq60nBuz9P3eu3Xc44NAhOHLEgl92Npx5JmzYkP++JDQyMxN46y0LncuXg8tlofxk3nnHzuc9esDmzbZsyxYL/n6JibYsp9274b33AscMwLPPwjnnWE/M5MnF85rChUJMEBV0Es+v+w9g3z472Fq3DiwrWxYefRSOflXLMW433HMPfPKJtcpatIBnninuVyNSNDmP/6K0QufOhb597X6PHtaLcPzUgunToWfPIL+A09SkSRP+9re/4fF4GOFPYsCaNZxQoa1da7dNm+z9PGdOoOK64IJACJk9284NmZnQtq2Fmlq17JaSYsNKDRvmvy8pWf73wKZN5/Ddd9Cqlb0H0tMtbOanSxf7/61YYSHU/37Ia4pNzurF7bb3xeDBcPbZgeV33w3r18OECZCWdvqvK5woxATRyU7iZcrk3/0H8PDDlprLlg0sq1DBJmblXGa/x24HDtjPvXuhdu0gvziRAviP/337EovUCs3Z2oyLg8qVrdLO6a23wj/EAKSmplKhQgXeffddFi1aBFgFdnyFtnEjPP+8DaNdcYX1MsXF2T4ee8yGiS680H6edZat++UXC0QZGfY3W7gQPvvMerHy25eUrMBwkoO+fQM9ievWQWpq/s+rXt3qCIC//c2OF7Cel5yBNCMj97l+0CCb8DtkSN77vfVWC7XRRCEmiPwH8NatlU96Ej+++2/ZMjtQr7++cL+nVCk7aTVvbgf06tUwYEAxvxiRIvJfnbR9e7MitUILam1+843NAWjWrJgLHAQ1a9Y81gszdOhQvF4vPh95VmhduthrW7wYzj/fKiOw9/R//2vnhaNXb1O5svXKtGljw8vx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X/73v8L3Qt95B0aPhnPPNV3p995rWk8pdgU1Km3bmmByogYNTK/KiXVq+fIQHW3uHz8O2aMlbNlihgHOP988vumm0FABmI94+HCoUKHYV6tUC24DWXXqFN7ABdNdmzZhLGnx+vFH0zP3xRcm8Ho88O675rnRo82/ont3E3Zz274dtm6FG28s+ntlZZmemi5diq/8pzJo0CD+8Ic/sHnzZl599dXQE717mxQG8N57ReuF+fvfzcbWrp2dwkqZpxBjSbACn1+xYsF7ob16md34li1DM7VsaXblpVidrFE5XTt2mDq3Xj1zGEedOtCokena37YNvF7TVu/YYV6/dq25f+IxDZEgT29kQQ3crl0mxIwbF8ZSFr+UFFizBq64woTmlBTT47dzJ1xzDfznP6bNTkrKO98HH5j9HY+n6O91//1w3XVw7bXFuw4nU65cuZwL4I0cOZLRo0czf/58/HfeCStWmBWdN69oISYlxbz2ggvMbdUqGDoUHnzQ7kpImREV7gKUVcEKfHf58qG90LvvDu2F1q1rXlitWmimatXM2IMUq9yNCphjCGrWPLNl1asH331n2t/ERNPo1KoFL78MPXua3purrza9M36/OWgzEjvX/H5/ztVdV65cyeX/93+4hw4NNXCrV5uWffduuOwyM9Pvv5vbBRfAr7+eXmteigQC0LevOdkm97S33oKuXc3j7t3hH//IO98HH8C0aUV/n6eegn37IHdnSEm57bbbqFatGkeOHGHs2LEAxMXF8fH11+Pq3x8uvjh0oLbPZ7qMvF6zUWRkmM+2XDmzcWRkhBZ8xx1moxo4sORXShxJIcaSPGdmBPdC7747tBcaPJr06NHQOMPRowUPgMtZKahROVt16piDeD/7zNS58fHmBvDaa6aOPnbMHK8avDTGnj2QkAD//CdcfnnxlaW08fl8dO7cmV9++QWAYcOGsWTJkvwNXMOGpvsqaNYss30sWFCsASYQCOD3+/H5fPh8Puv3o6JiePvtNjRu/G+qVs3gyBEPaWkuWrRoyciRm2jS5Fc+++wSKlSoy8svL8Xn87F7d1W2b7+dL754nc8/z7vcX36px8aN7Rg58p2c6evXX8H331/J7bdP4cEHj5fYugXvp6WlceTIkZz/cXR0NCkpKfzn4Ydp87e/meP7gmbMyHvQdsWKZoOcPj3vqVhgxmyrVs27cydy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NoUYEbFCw0kiYptCjIhYoZ4YEbFNIUZErNAxMSJim0KMiFih4SQRsU0hRkSs0HCSiNimECMiVmg4SURsU4gRESvUEyMitinEiIgVOiZGRGxTiBERKzScJCK2KcSIiBVFHk765BNo3RoqVYJ69WD27BIonYiUBVHhLoCIlE1FGk7asAF694a334aOHeHIETh8uIRKKCJOpxAjIlYEh5O6/fwzdOsGc+aEnnz4YQgEYP9+GDQIbr7ZTK9Rw9xERIpAw0kiYkWwJ2Z5rVqwaBEcPWqe8PnMkFHv3vDll2ZabCzUrg19+sDBg2EqsYg4jUKMiFgRDDG7y5c3x7zMn2+eWL4cYmKgbVvYuRNmzIC5c2HzZvj9d/jLX8JYahFxEoUYEbEiz9lJvXvD+++bJ957zzwGqFgR+veHxo2hcmUYOdL02oiIFIFCjIhYtW3bNhZVqkRgxQrT8zJvXijEtGgBLldYyycizqUQIyLFzufzMWzYMMCEmFv79eObSpUI9OsHF18MTZuaF/bvD2+9BVu2QHo6TJwIt90WvoKLiKMoxIhIsVu4cCFr1qwB4IILLiAmJoaXDhzAlZIS6oUBGDAA7r4brroKLroIoqNhypQwlVpEnEanWItIsUtNTQWgSZMm9OrVi8OHD/Piiy/SeMwYRmf30OR46ilzExE5TeqJEZFiFxsbC8COHTs4fPgwr732Wp7pIiLFQSFGRIpdQkICcXFxpKen8+KLL5Kenk5cXBwJCQnhLpqIlCEaThKRYud2u1m6dCkLFy4kNTWV2NhY4uPjc64dIyJSHBRiRMQKj8dDYmIiiYmJ4S6KiJRR2i0SERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHcgUCgaK/2OVKtlcUEREREQAyAoHAhFO96LRCjIiIiEhpoeEkERERcSSFGBEREXEkhRgRERFxJIUYERERcSSFGBEREXEkhRgRERFxJIUYERERcSSFGBEREXEkhRgRERFxpP8HD/uNNA/2KUAAAAAASUVORK5CYII=\n", "text/plain": ["
"]}, "metadata": {}, "output_type": "display_data"}], "source": ["from ensae_projects.datainc.data_geo_streets import plot_streets_network\n", "plot_streets_network(edges_index, edges, vertices, shapes, figsize=(10,10));"]}, {"cell_type": "markdown", "metadata": {}, "source": ["## Eulerian path\n", "\n", "A solution is a set of indices of edges. Let's try `edges_index` without one edge as a solution."]}, {"cell_type": "code", "execution_count": 5, "metadata": {"ExecuteTime": {"end_time": "2016-11-03T13:23:13.344768", "start_time": "2016-11-03T13:23:13.307764"}}, "outputs": [{"name": "stdout", "output_type": "stream", "text": ["[best_euler_path] distance_vertices #edges=24\n", "[best_euler_path] bellman_distances\n", "[bellman_distances] iteration=1 modif=74 #dist=122 sum_values=0.26812913941842903 avg=0.0021977798312985985\n", "[bellman_distances] iteration=2 modif=102 #dist=214 sum_values=0.6638654574495177 avg=0.0031021750348108304\n", "[bellman_distances] iteration=3 modif=130 #dist=298 sum_values=1.3475652021993083 avg=0.004522030879863451\n", "[bellman_distances] iteration=4 modif=100 #dist=306 sum_values=1.3653257205807 avg=0.004461848760067647\n", "[bellman_distances] iteration=5 modif=64 #dist=306 sum_values=1.2780455413890799 avg=0.0041766194163041824\n", "[bellman_distances] iteration=6 modif=42 #dist=306 sum_values=1.2282394949878546 avg=0.0040138545587838385\n", "[bellman_distances] iteration=7 modif=24 #dist=306 sum_values=1.207369883828586 avg=0.003945653215126098\n", "[bellman_distances] iteration=8 modif=12 #dist=306 sum_values=1.1964121229039824 avg=0.003909843538901903\n", "[bellman_distances] iteration=9 modif=10 #dist=306 sum_values=1.1840886861931539 avg=0.0038695708699122678\n", "[bellman_distances] iteration=10 modif=6 #dist=306 sum_values=1.1840669671109263 avg=0.0038694998925193668\n", "[bellman_distances] iteration=11 modif=2 #dist=306 sum_values=1.1840669671109263 avg=0.0038694998925193668\n", "[bellman_distances] iteration=12 modif=2 #dist=306 sum_values=1.1840644116345598 avg=0.003869491541289411\n", "[bellman_distances] iteration=13 modif=0 #dist=306 sum_values=1.1840644116345598 avg=0.003869491541289411\n", "[best_euler_path] degrees and distances between odd vertices\n", "[best_euler_path] matching #odd=6, #odd_dist=30\n", "[best_euler_path] build solution\n", "[best_euler_path] order edges to get the path #edges=31\n", "[best_euler_path] done.\n"]}, {"data": {"text/plain": ["('distance', 0.04360778144581235)"]}, "execution_count": 6, "metadata": {}, "output_type": "execute_result"}], "source": ["from ensae_projects.challenge.city_tour import best_euler_path\n", "couples, solution, distance = best_euler_path(edges_index=edges_index, edges=edges,\n", " distances=distances, vertices=vertices, fLOG=print)\n", "\"distance\", distance"]}, {"cell_type": "code", "execution_count": 6, "metadata": {"ExecuteTime": {"end_time": "2016-11-03T13:23:16.240337", "start_time": "2016-11-03T13:23:13.380765"}}, "outputs": [{"data": {"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjEAAAI1CAYAAAAn/qviAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xd8FNXex/HP7gZCCkWaSAsKV8EIIoJ6bahBUBSkKFcEKaI8tmsFBAUJTSnKtXDxWp4rFlCxgKIoXIOABb08CIIIqCAooEFqCCFly/PHYVMgCUnI7Ozsft+v176SzE4mvySzc75zzplZVyAQQERERMRp3HYXICIiIlIRCjEiIiLiSAoxIiIi4kgKMSIiIuJICjEiIiLiSAoxIiIi4kgKMSIiIuJICjEiIiLiSAoxIiIi4kgKMSIiIuJIMeVZefLkyYHs7GyrahERERFh3LhxowKBwOTjrVeuEJOdnU1qamqFixIRERE5nnHjxlUry3oaThIRERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERERFHUogRERERR1KIEREREUdSiBERkaLmzoULL4T4eLjssqLP/fgjXHcd1KsHtWtDly6waZMtZYooxIiIVMCMGdC+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ywEiQoixhB044h1XJ7klEAho2bJlkqRFixbp2LFjHlcEnB17F0sIMYh3XJ3knhEjRmj48OGqqqrSokWLvC4HOCtCjCUchSLeEeTd4/P5tGzZMvl8Pj322GPat2+f1yUB34gR1hKOQhHvCDFuGjx4sKZOnaq6ujrNmzfP63KAb0SIsYQdOOId24C7Fi5cqKSkJG3YsEE7duzwuhygVYQYS9iBI96xDbird+/emj17tiRzDxnuQI72ihBjCTtwxDu2AbfNnTtXvXr10s6dO/XSSy95XQ7QIkKMJezAEe/C54VxcrubunXrpoKCAknSAw88oNraWo8rAs7E3sUSQgziHduA+2bMmKEBAwaovLxcjz/+uNflAGcgxFjCDhzxjm3AfQkJCVq6dKkk89euKysrPa4IaI4QYwk7cMQ7toGOYfTo0br55ptVWVmpxYsXe10O0AwhxhJudod4R4jpGHw+nx555BFJ0sqVK7V//36PKwKaMMJaws3uEO8IMR3HkCFDNGnSJNXW1iovL69tK69fL113nZScLN10U+vLrV4t+XzSH//4rWpFfCHEWMIOHPGuTbORx49L3/2uNGyY5apiY9Uq6eqrpc6dpezspvffeksaPlw6/3zz7d55p3TkiGdltklhYaE6d+6sdevW6e233458xfPPl377Wyk3t/VlKiul3/9eGjjw2xeKuEKIsYQQ0360NqDArjbNRj7wgDRggOWKYueCC6T586Xp05u/X1kp/eIX0oEDUkWF1K2bNG2aJyW22UUXXaT7779fUgs3wFuyRLrjjuYrzJol/eY30i23SHfdZX4orZk3zyzbs6eFytGREWIsiSjEfPml2ct17y6lpUl/+EOMqosvrQ0osCu8DVy4Zk3rA5wk7dwpffihO6N5BG67TcrKknr0aP7+qFFm9qV7d9Ndufde6c03vanxXOTm5qpnz5564403tGnTpqYPJkyQNm+WTp40r4NB00aaOPHsX/Tvf5fefVf65S/tFI0OjRBjSUQhJj9fKiszh2Svvy4tXSq9/HJsCowjrQ0osCu8DRy79dbWB7hgULrnHjNdFoezltu3u9VBSU1N1YMPPijJ3NG3rq7OfNC3rzRkiFRUZF6/9ppJaUOHfvMXDAalX/9aevRRiYsgcA74X2NJeAd+37//3fpR6J//LC1YIJ13nplKv/tu6bnnYl8sYEF4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\n", "text/plain": ["
"]}, "metadata": {}, "output_type": "display_data"}], "source": ["from ensae_projects.challenge.city_tour import euler_path\n", "plot_streets_network(edges_index, edges, vertices, shapes, order=solution, figsize=(10,10));"]}, {"cell_type": "code", "execution_count": 7, "metadata": {}, "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", "version": "3.7.0"}}, "nbformat": 4, "nbformat_minor": 2}