From 0daea2e95abb03e89e02ad37708fc0dc27b995ef Mon Sep 17 00:00:00 2001 From: "Kamal Bentahar (ab3735)" Date: Tue, 14 Mar 2023 09:32:20 +0000 Subject: [PATCH] Initial commit --- .../Investigating TSP-checkpoint.ipynb | 2836 +++++++++++++++++ .ipynb_checkpoints/Template-checkpoint.ipynb | 467 +++ Investigating TSP.ipynb | 2836 +++++++++++++++++ Local Search and Neighbourhoods.ipynb | 467 +++ README.md | 49 + Template.ipynb | 467 +++ 6 files changed, 7122 insertions(+) create mode 100644 .ipynb_checkpoints/Investigating TSP-checkpoint.ipynb create mode 100644 .ipynb_checkpoints/Template-checkpoint.ipynb create mode 100644 Investigating TSP.ipynb create mode 100644 Local Search and Neighbourhoods.ipynb create mode 100644 README.md create mode 100644 Template.ipynb diff --git a/.ipynb_checkpoints/Investigating TSP-checkpoint.ipynb b/.ipynb_checkpoints/Investigating TSP-checkpoint.ipynb new file mode 100644 index 0000000..bbe5096 --- /dev/null +++ b/.ipynb_checkpoints/Investigating TSP-checkpoint.ipynb @@ -0,0 +1,2836 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Guide Notebook for the 380CT Assignment on TSP

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "_Kamal Bentahar_" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "https://github.coventry.ac.uk/380CT-2021/TSP-Guidance" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```\n", + "DISCLAIMER:\n", + "\n", + "- This is meant to help you get started.\n", + "- You can use it as a starting template, but you can also build your own from scratch. You can even use another programming language (but in Jupyter still).\n", + "- Be ware! Care is not taken into checking validity of paramters, etc. -- simplicity of code for understanding is favoured (mostly).\n", + "- There may be bugs! Please report them. Thanks.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1) Notation and definitions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let $G$ be a [complete]( \"graph is undirected, has no self-loops, and each node is connected to all the other vertices\") [weighted]( \"the edges have a weight (a positive integer)\") graph with $n$ vertices." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Optimisation TSP**:\n", + "> Given $G$, find a cycle of minimal total cost.\n", + "\n", + "Here:\n", + "- A *cycle* is a path that visits every vertex once, and goes back to the start point.\n", + "- The *total cost of the cycle* is the sum of the edge weights of the cycle.\n", + "\n", + "This problem is **NP-Hard** because its decision version is **NP-complete** (Garey and Johnson, 1979, p. 211)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 2) Testing methodology" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* **Exact method (Exhaustive search)**:\n", + " Average _time_ for instances with increasing $n$.\n", + "\n", + "* **Greedy and meta-heuristics**:\n", + " Average _time_ and _\"quality\"_ as $n$ increases.\n", + "\n", + "Instances will be generated randomly as shown in the next subsection." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2.1) Random instances sampling strategy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Four types of TSP instances will be generated by creating an **adjacency matrices** $M$ as follows:\n", + "1. **Asymmetric**: The edge weights are independent and uniformly random in an interval $[1,\\text{MAX_WEIGHT}]$, i.e the graph is assumed to be directed.\n", + "2. **Symmetric**: Like the asymmetric case but the graph is undirected, and the matrix is therefore symmetric: $M_{ij}=M_{ji}$.\n", + "3. **Euclidean**: Generate points using $(x,y)$ coordinates, then generate the adjacency matrix by calculating all the required distances. Recall that the distance between two points $(x_1,y_1)$ and $(x_2,y_2)$ is $\\sqrt{(x_1-x_2)^2+(y_1-y_2)^2}$. The points are generated in the rectangle defined by the points $(0,0)$ and $(\\text{MAX_Y},\\text{MAX_Y})$.\n", + "4. **Graphs with obvious shortest cycle**: A graph where all the distances are 2 except for the edges on a predefined cycle, where the distance is 1. Such a graph would be useful for testing/debugging the \"nearest neighbour greedy\" search." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Implementation of the instances generation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First start by importing relevant libraries." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Matplotlib is building the font cache; this may take a moment.\n" + ] + } + ], + "source": [ + "from random import randint, shuffle # random integers and random shuffling of a list\n", + "from itertools import permutations # iterate over all possible permutations of a list\n", + "from itertools import chain # concatenate range()'s'\n", + "from math import inf as oo # Infinity (∞) is larger than any number\n", + "from math import sqrt, log, factorial # square root, logarithm, and n!\n", + "from time import perf_counter # for measuring time. NB. 'perf_counter' is better/more accurate than 'time'\n", + "import networkx as nx # to draw sample graphs\n", + "import pandas as pd # to show the adjacency matrix in a nice format\n", + "import matplotlib.pyplot as plt # to plot graphs of time and quality vs n\n", + "import seaborn as sns # nice statistical plots -- see e.g. https://seaborn.pydata.org/tutorial/relational.html#relational-tutorial\n", + "sns.set_style(\"white\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Basics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let the set of vertices be $\\{0, 1, 2,\\ldots, n-1\\}$.\n", + "\n", + "For simplicity, we will consider $0$ to be the start and end point of cycles." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "class Graph:\n", + " ''' Random graphs '''\n", + " def __init__(self, n=0, type='asymmetric', MAX_WEIGHT=100, MAX_X=200, MAX_Y=200):\n", + " self.n = n\n", + " self.vertices = list(range(n)) # [0,1,...,n-1]\n", + " self.type = type\n", + " self.adj_matrix = [[oo for i in range(n)] for j in range(n)]\n", + " # Generate a random adjacency matrix according to the required type\n", + " if type=='symmetric': self.__random_symmetric_graph(n,MAX_WEIGHT)\n", + " elif type=='Euclidean': self.__random_euclidean_graph(n,MAX_X,MAX_Y)\n", + " elif type=='easy': self.__random_cycle_graph(n)\n", + " else: self.__random_asymmetric_graph(n,MAX_WEIGHT) # assume 'asymmetric' otherwise\n", + " \n", + " def __getitem__(self, i):\n", + " ''' Allow indexing to get the weights '''\n", + " return self.adj_matrix[i]\n", + " \n", + " def __random_asymmetric_graph(self,n, MAX_WEIGHT):\n", + " ''' Asymmetric adjacency matrix of size nxn '''\n", + " for i in range(n):\n", + " for j in range(n):\n", + " if i==j: continue # no self-loops\n", + " self.adj_matrix[i][j] = randint(1,MAX_WEIGHT)\n", + "\n", + " def __random_symmetric_graph(self,n,MAX_WEIGHT):\n", + " ''' Symmetric adjacency matrix of size nxn '''\n", + " for i in range(n):\n", + " for j in range(i+1,n):\n", + " w = randint(1,MAX_WEIGHT)\n", + " self.adj_matrix[i][j] = w\n", + " self.adj_matrix[j][i] = w\n", + "\n", + " def __random_cycle_graph(self,n):\n", + " ''' Symmetric adjacency matrix of size nxn with one reandomly chosen cycle\n", + " All the edge weights are 2 except for the cycle (weight=1) '''\n", + " self.adj_matrix = [[2 for _ in range(n)] for _ in range(n)] # All weights=2\n", + " # Select a random cycle which will have weight=1\n", + " cycle = list(range(1,n)) # don't include 0 as we want to be at the start\n", + " shuffle(cycle) # in-place random permutation\n", + " cycle = [0]+cycle+[0] # cycle starting and ending at 0\n", + " for a,b in zip(cycle, cycle[1:]): # set the cycle's weights to 1\n", + " self.adj_matrix[a][b] = 1\n", + " self.adj_matrix[b][a] = 1\n", + "\n", + " def __random_euclidean_graph(self,n,MAX_X,MAX_Y):\n", + " ''' Symmetric adjacency matrix of a Euclidean graph of size nxn '''\n", + " # (1/2) Generate random (x,y) points\n", + " points = set()\n", + " while len(points)\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01234567
021122222
112222122
212221222
322221221
422112222
521222212
622222121
722212212
\n", + "" + ], + "text/plain": [ + " 0 1 2 3 4 5 6 7\n", + "0 2 1 1 2 2 2 2 2\n", + "1 1 2 2 2 2 1 2 2\n", + "2 1 2 2 2 1 2 2 2\n", + "3 2 2 2 2 1 2 2 1\n", + "4 2 2 1 1 2 2 2 2\n", + "5 2 1 2 2 2 2 1 2\n", + "6 2 2 2 2 2 1 2 1\n", + "7 2 2 2 1 2 2 1 2" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "G = Graph(8,'easy')\n", + "show(G)\n", + "draw(G)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5x5 symmetric graph:\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01234
0inf15.080.080.041.0
115.0inf26.088.045.0
280.026.0inf54.078.0
380.088.054.0inf40.0
441.045.078.040.0inf
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4\n", + "0 inf 15.0 80.0 80.0 41.0\n", + "1 15.0 inf 26.0 88.0 45.0\n", + "2 80.0 26.0 inf 54.0 78.0\n", + "3 80.0 88.0 54.0 inf 40.0\n", + "4 41.0 45.0 78.0 40.0 inf" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "G = Graph(5,'symmetric')\n", + "show(G)\n", + "draw(G)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3x3 Euclidean graph:\n", + "Points: [(18, 101), (183, 133), (22, 120)]\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
012
0inf168.07438819.416488
1168.074388inf161.523992
219.416488161.523992inf
\n", + "
" + ], + "text/plain": [ + " 0 1 2\n", + "0 inf 168.074388 19.416488\n", + "1 168.074388 inf 161.523992\n", + "2 19.416488 161.523992 inf" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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6dOHsmXLMmzYMEaMGMEf/vAHYmNjDf7OTUATm6ajn46Im5syZQqff/455cqVo2XLlowZM4aFCxcyZcoUGjRowLlz5zh48CBWq5WHH36Yli1b0qFDB95++21mz57NmDFj2LJlC2XLliU8PJy5c+fStGlTwsLCmDp1KkuXLqVDhw7cfffdBAYG8sMPPxj9LZuDujzTUvCJuAm73c4XX3zB0qVLAXjuueeoWbMme/fu5c0336Rp06b07duXd999lxUrVhR/3ebNm6lYsSJBQUE888wz+Pj4ANCjRw8++OADAgMD2blzJxaLhR9//LG4K4yKimLu3LkEBemau5umvTxT03EKIgbavHkzqampAGzcuJH58+fTr18/6tevz7/+9S+WL19OxYoVKdqR6N27NwsXLiz++s8++4y9e/fy0ksvAbBt2zYef/xxDh06xLJly2jXrh1hYWHFy5jPP/988XMdDodC72YV5MCBxbD/E/ArC3cOgpj2Cj2T0U9LxACff/45EyZMoGLFijRt2pQHH3yQ48ePU6dOHTp27Ej16tUZP348tWvXZvny5eTn5wPQtWtXnnvuOQCys7PZsGEDb731FjabjV9++YXY2FgaNmzI0KFDqVKlCqNHj8ZisRAXF0dcXNxlNfzmIdNyOXV5HkM/NZFSUnT+5fbt23n99dcpV64ciYmJtG/fni1btvD0008zYMAA1q9fzwsvvMDatWvp168f4OzcsrKyaNasGWFhYSQlJZGQkEBYWBgxMTHs37+fVatW8cEHH3D69GmOHTvGH//4R0aNGsWoUaMoU0aLOSVGe3keR8EnUsJ2795NVlYW99xzD+np6UydOpW7776bRo0a8dprrxESEsLu3buLQ65+/fokJSWRkpJClSpV2LFjB//85z+ZNm0aAF26dGHhwoWULVuW7OxsEhISqFu3LitWrOCRRx7h8ccfp1mzZurgSoO6PI+kn6DI72S32ylTpgypqan06dOH4OBgypUrR0pKCu3ateOHH37ggw8+AOCuu+5i+/btVK5cmY8++oiHHnqIgwcPUr16dTZs2EDfvn1Zvnw5f/7zn2nSpAnbt2+nSZMmlCtXjilTphAQEMDjjz8OwPDhw438tj2bujyPpuv4RG7B4cOHi6+l69q1K0OGDOFf//oXaWlpjBkzhnnz5rFjxw4effRRXn31VQYMGMD999/P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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "G = Graph(3,'Euclidean')\n", + "show(G)\n", + "draw(G)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3x3 asymmetric graph:\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
012
0inf62.021.0
165.0inf39.0
263.049.0inf
\n", + "
" + ], + "text/plain": [ + " 0 1 2\n", + "0 inf 62.0 21.0\n", + "1 65.0 inf 39.0\n", + "2 63.0 49.0 inf" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "G = Graph(3,'asymmetric')\n", + "show(G)\n", + "draw(G)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3) Solution methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3.1) Exact method - Exhaustive search" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Idea" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The idea is to:\n", + "- Consider vertex $0$ as the start and end point.\n", + "- Iterate over all permutations of the vertices $\\{1,2,\\ldots, n-1\\}$.\n", + " - Calculate cost of each permutation and keep track of minimum cost permutation.\n", + "- Return the cycle with minimum cost.\n", + "\n", + "More formally, the pseudo-code is as follows:\n", + "\n", + "**Input**: $G$.\n", + "\n", + "**Output**: a cycle in $G$ of shortest cost." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Pseudocode" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1. $bestcycle\\gets \\emptyset$\n", + "2. $bestcost\\gets \\infty$\n", + "3. **for all** possible cycles $p$ in $G$ (starting and ending at $0$) **do**\n", + "4. $\\quad$ $c\\gets$ cost of $p$\n", + "2. $\\quad$ **if** $c\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01234567
021221222
112212222
222212221
321122222
412222212
522222211
622221122
722122122
\n", + "" + ], + "text/plain": [ + " 0 1 2 3 4 5 6 7\n", + "0 2 1 2 2 1 2 2 2\n", + "1 1 2 2 1 2 2 2 2\n", + "2 2 2 2 1 2 2 2 1\n", + "3 2 1 1 2 2 2 2 2\n", + "4 1 2 2 2 2 2 1 2\n", + "5 2 2 2 2 2 2 1 1\n", + "6 2 2 2 2 1 1 2 2\n", + "7 2 2 1 2 2 1 2 2" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "([0, 1, 3, 2, 7, 5, 6, 4, 0], 8)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "G=Graph(8,'easy')\n", + "show(G)\n", + "draw(G)\n", + "exhaustive_search(G)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Testing exhaustive search time cost" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Test completely random graphs:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5, 6, 7, 8, 9, 10, 11, " + ] + } + ], + "source": [ + "MAX_REPETITIONS = 10\n", + "MAX_n = 12\n", + "\n", + "exhaustive_data = pd.DataFrame(columns=['n', 'time'])\n", + "\n", + "i=0\n", + "for n in range(5,MAX_n):\n", + " print(n, end=', ')\n", + " for repetitions in range(MAX_REPETITIONS):\n", + " G = Graph(n)\n", + " # Time the search\n", + " t0 = perf_counter()\n", + " exhaustive_search(G)\n", + " t1 = perf_counter()\n", + " # Record the data\n", + " exhaustive_data.loc[i] = [n, t1-t0]\n", + " i += 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us compute some statistics on the the times that we have just measured." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
time
minmaxmeanstd
n
5.00.0001130.0002780.0002080.000046
6.00.0005200.0012660.0007690.000283
7.00.0034540.0060400.0039080.000763
8.00.0269250.0415330.0307710.004647
9.00.2348100.2674920.2503360.011808
10.02.3700033.9041862.7468970.508609
11.025.34528232.47401327.6711312.497308
\n", + "
" + ], + "text/plain": [ + " time \n", + " min max mean std\n", + "n \n", + "5.0 0.000113 0.000278 0.000208 0.000046\n", + "6.0 0.000520 0.001266 0.000769 0.000283\n", + "7.0 0.003454 0.006040 0.003908 0.000763\n", + "8.0 0.026925 0.041533 0.030771 0.004647\n", + "9.0 0.234810 0.267492 0.250336 0.011808\n", + "10.0 2.370003 3.904186 2.746897 0.508609\n", + "11.0 25.345282 32.474013 27.671131 2.497308" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "exhaustive_data.groupby('n').agg(['min','max','mean','std'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us plot this data to see it visually.\n", + "We will use the following convention:\n", + "- The blue dots are the actual measurements.\n", + "- The solid red line is the mean time.\n", + "- The light red shade shows the standard deviation around the mean." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAssAAAF/CAYAAAC/u4QlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABAQElEQVR4nO3deXxU9b3H//dMFrITCDthCbIJiKgIpSpqFUFaXFgF6ob19vbn47bU+2tFLmorrWhtsf68db3tvbfKKqJie4sLLqggtVoQQVQgYQlJgGyTbSYzmfP748tkEjKTBMzMmSSv5+MxD8g5Z+Z8cHovb79+z+fjsCzLEgAAAIAmnHYXAAAAAMQqwjIAAAAQBmEZAAAACIOwDAAAAIRBWAYAAADCICwDAAAAYRCWAaANjBgxQjNmzND111+vG264QVOnTtWsWbO0e/fuiNxvzZo1evbZZ9vs8xYtWqSSkhJJ0p133qn9+/e32WcDQHvmoM8yAHxzI0aM0Pbt29W9e/f6Y3/84x/1xhtvaN26dTZW1jqh6gcASPF2FwAAHZHP51NBQYG6du0qSXriiSdUWlqq+++/v8nPN998s8aNG6dPP/1UBQUFuuiii/TII4/o2LFjuu2223T55Zdr165dKi8v109/+lNNnz690fu/853v6MYbb9T27dtVUFCga6+9Vj//+c8lSc8++6w2bNig1NRUjR8/Xlu2bNHbb7/dqNZ7771XknTrrbfq2Wef1cKFC/X444+rurpaK1euVK9evfT1118rOTlZ//Zv/6bnn39eubm5uuaaa7R06VJJ0ttvv62nnnpKXq9XSUlJuueee3TBBRdE6x83AEQMYRkA2sitt94qh8OhkpISdenSRVdeeaVWrFjRqvcePnxYzz//vKqrq3Xttdfq73//u7Kzs3XkyBFdeumluu+++/T666/r4Ycf1vTp05u8v7q6WqtXr1ZRUZGmTJmi+fPnKy8vTxs3btSGDRuUnp6u//iP/wh57xUrVmjjxo363//93yYry7t379aGDRs0atQo/eAHP9Czzz6rP//5z6qsrNTkyZN1xx13qKamRo899pj+/Oc/q1u3bvr66691++2364033lBKSsqZ/4MEgBhCWAaANhIIm3v37tWdd96pCy64QFlZWa1675VXXimn06m0tDQNGjRI5eXlys7OVkJCgi6//HJJ0qhR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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(12, 6))\n", + "sns.scatterplot(data=exhaustive_data, x='n', y='time', ax=ax)\n", + "sns.lineplot(data=exhaustive_data, x='n', y='time', ci='sd', color='red', ax=ax)\n", + "plt.title('Running time')\n", + "plt.xlabel('n')\n", + "plt.ylabel('Time (s)')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Theoretically, the ratio of \"the time taken for a graph of size $n$\" to $n!$ should approach a constant, as $n$ gets larger and larger. Let us check and estimate this constant." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
timetime/n!
n
5.00.0002081.736583e-06
6.00.0007691.067708e-06
7.00.0039087.754246e-07
8.00.0307717.631724e-07
9.00.2503366.898581e-07
10.02.7468977.569711e-07
11.027.6711316.932202e-07
\n", + "
" + ], + "text/plain": [ + " time time/n!\n", + "n \n", + "5.0 0.000208 1.736583e-06\n", + "6.0 0.000769 1.067708e-06\n", + "7.0 0.003908 7.754246e-07\n", + "8.0 0.030771 7.631724e-07\n", + "9.0 0.250336 6.898581e-07\n", + "10.0 2.746897 7.569711e-07\n", + "11.0 27.671131 6.932202e-07" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "exhaustive_data['time/n!'] = exhaustive_data['time']/exhaustive_data['n'].transform(factorial)\n", + "exhaustive_data.groupby('n').mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7IAAAEOCAYAAAC0FyvTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABQLElEQVR4nO3deXRc5X038O+dfdNoRosleZFXCRscQmxeAsE4IUtN06RJDMQxJ0ALJYHSJAQOYSnhhUIwFEhp3TgsaTb3BEg4zqkdUnLSwmswOI4x2OAd27JsSZatZbTMjGbT3PePH1ezaEabZ3Rn+X7OmSPpzkh6PJZG93t/z/N7FFVVVRAREREREREVCYPeAyAiIiIiIiKaDAZZIiIiIiIiKioMskRERERERFRUGGSJiIiIiIioqDDIEhERERERUVFhkCUiIiIiIqKiUhJBds+ePbj22mun9LnPPPMM1qxZg9WrV+M3v/lNjkdGREREREREuWbSewBn67nnnsPmzZtht9sn/bk7duzAu+++i+effx5DQ0P46U9/mocREhERERERUS4VfUW2sbER69evH/n40KFDuPbaa3HttdfiW9/6FgYHB7N+7rZt29Dc3Ixbb70VN998Mz71qU9Nw4iJiIiIiIjobBR9RXbVqlVoa2sb+fj73/8+HnnkESxatAi/+c1v8JOf/ATLly/HP//zP6d83m233Qafz4eOjg48/fTTaGtrwy233IJXXnkFiqJM9z+DiIiIiIiIJqjog2y6o0eP4sEHHwQARKNRzJs3DytXrsTKlStHPXb37t1YsGABLBYLFixYAKvVit7eXlRXV0/3sImIiIiIiGiCSi7Izp8/H4899hhmzpyJXbt2oaurK+tjly9fjl/+8pf427/9W5w5cwZDQ0PweDzTN1giIiIiIiKatJILsg888ADuuusuxGIxKIqCH/zgB1kfe/nll2Pnzp246qqroKoq7r//fhiNxmkcLREREREREU2WoqqqqvcgiIiIiIiIiCaq6LsWExERERERUXkp6qnFH//4xzFr1iy9h0FERERERER50N7ejh07dow6XtRBdtasWdi0aZPewyAiIiIiIqI8WL16dcbjnFpMRERERERERYVBloiIiIiIiIoKgywREREREREVFQZZIiIiIiIiKioMskRERERERFRUirprcaFSVRXBYBDhcBhWqxUOhwOKoug9LCIiIiIiopLAIJtjqqqis7MTPp9v5JjX60V9fT3DLBERERERUQ5wanGOBYPBlBALAD6fD8FgUKcRERERERERlRYG2RwLh8OTOk5ERERERESTwyCbY1ardVLHiYiIiIiIaHIYZHPM4XDA6/WmHPN6vXA4HDqNiIiIiIiIqLSw2VOOKYqC+vp6uN1udi0mIiIiIiLKAwbZPFAUBU6nE06nU++hEBERERERlZycB9loNIp7770X7e3tiEQiuOWWW/CZz3xm5P7f/e53+MUvfgGj0Yjm5mY88MADMBgM+MpXvgKXywUAmD17NtatW5froREREREREVEJyHmQ3bx5MzweDx5//HH09fXhy1/+8kiQDYVCeOqpp7BlyxbY7XbcfvvteO2117BixQqoqoqNGzfmejhERERERERUYnIeZK+44gqsWrUKAKCqKoxG48h9FosFL7zwAux2OwAgFovBarXi4MGDGBoawg033IBYLIbbb78dF1xwQa6HRkRERERERCUg50FWWxfq9/vx7W9/G7fddtvIfQaDATU1NQCAjRs3IhgM4tJLL8Xhw4dx44034uqrr8bx48dx00034ZVXXoHJxCW8RERERERElCovSfHUqVO49dZbcc011+CLX/xiyn3xeByPP/44WlpasH79eiiKgvnz52Pu3Lkj73s8HnR1daGhoSEfwyMiIiIiIqIilvN9ZLu7u3HDDTfgzjvvxFVXXTXq/vvvvx/hcBgbNmwYmWL80ksv4dFHHwUAnD59Gn6/H7W1tbkeGhEREREREZWAnFdkn376aQwMDGDDhg3YsGEDAODqq6/G0NAQli5dipdeegkXXnghrr/+egDAddddh6uuugr33HMP1q5dC0VR8Mgjj3BaMREREREREWWkqKqq6j2IqVq9ejU2bdqk9zCIiIiIiIgoD7JlvpxPLSYiIiIiIiLKJwZZIiIiIiIiKioMskRERERERFRUGGSJiIiIiIioqDDIEhERERERUVFhkCUiIiIiIqKiwiBLRERERERERYVBloiIiIiIiIoKgywREREREREVFQZZIiIiIiIiKioMsvnU1wf4/XqPgoiIiIiIqKSY9B5ASWttBU6cABYulJvVqveIiIiIiIiIih4rsvlWUQG0tQGvvy7BdnhY7xEREREREREVNQbZfFMUoLoacLuB/fsl0J4+Daiq3iMj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N96Iq6++GsePH8dNN92EV155hSceBJ/Ph46ODjz99NNoa2vDLbfcgldeeQWKoug9NCogzzzzDG699Va9h0EFxOFwoL29HX/5l38Jn8+Hp59+Wu8hUYFYsmQJXnvtNXz2s5/Fnj17cPr0aQwPD8NoNOo9NNLJqlWr0NbWNvKxqqoj5xlOpxODg4N6DY0KQPrPx+c//3ns2LFDxxFNHSuyeTB//nz89V//NRRFwfz58+HxeNDV1aX3sKgAeDwerFixAhaLBQsWLIDVakVvb6/ew6ICMjAwgJaWFlx88cV6D4UKyM9//nOsWLECf/jDH/Bf//VfuPvuuxEOh/UeFhWAK6+8Ei6XC9dccw3++Mc/4rzzzmOIpRTJ62EDgQCXrFDJYJDNg5deegmPPvooAOD06dPw+/2ora3VeVRUCJYvX4433ngDqqri9OnTGBoagsfj0XtYVEB27tyJSy65RO9hUIFxu92oqKgAAFRWViIWi2F4eFjnUVEheP/993HJJZfg+eefxxVXXIE5c+boPSQqMOeee+5Ixe3111/HhRdeqPOIiHKDc13z4KqrrsI999yDtWvXQlEUPPLII5xWTACAyy+/HDt37sRVV10FVVVx//3388o5pWhpacHs2bP1HgYVmL/5m7/Bvffei2uuuQbRaBTf/e534XA49B4WFYC5c+fiX//1X/H000+joqICP/jBD/QeEhWYu+66C9///vfxwx/+EAsWLMCqVav0HhJRTiiqqqp6D4KIiIiIiIhooji1mIiIiIiIiIoKgywREREREREVFQZZIiIiIiIiKioMskRERERERFRUGGSJiIiIiIioqDDIEhERERERUVFhkCUiIiIiIqKiYtJ7AERERDS2TZs2YevWrQiFQjhx4gRuuukmrF69Wu9hERER6YYVWSIioiLg9/vxzDPP4Mc//jGeffZZvYdDRESkKwZZIiKiIrB48WIAQENDAyKRiM6jISIi0heDLBERURFQFEXvIRARERUMBlkiIiIiIiIqKoqqqqregyAiIiIiIiKaKFZkiYiIiIiIqKgwyBIREREREVFRYZAlIiIiIiKiosIgS0REREREREWFQZaIiIiIiIiKCoMsERERERERFRUGWSIiIiIiIioq/x/hQDztht7n2wAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ratio = plt.subplots(figsize=(16, 4))\n", + "sns.scatterplot(data=exhaustive_data, x='n', y='time/n!', alpha=0.3, ax=ratio, color='#777') # actual data\n", + "sns.lineplot (data=exhaustive_data, x='n', y='time/n!', alpha=0.3, ci='sd', ax=ratio, color='red') # mean" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us estimate the constant, and then how long it will take to solve the problem for graphs of increasing size (using this code on the current machine)." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6.932201737113193e-07" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "exhaustive_constant = exhaustive_data[exhaustive_data.n==MAX_n-1]['time/n!'].mean() # use the largest n available\n", + "exhaustive_constant" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10\t2\n", + "11\t2\n", + "12\t5\n", + "13\t1\n", + "14\t1\n", + "15\t1\n", + "16\t5\n", + "17\t7\n", + "18\t1\n", + "19\t2\n", + "20\t5\n", + "30\t5\n", + "40\t1\n", + "50\t6\n", + "60\t1\n", + "70\t2\n", + "80\t1\n", + "90\t3\n", + "100\t2\n" + ] + } + ], + "source": [ + "def time_in_human_units(t):\n", + " if t<60: return f'{t} seconds'\n", + " t /= 60 # now in minutes\n", + " if t<60: return f'{t} minutes'\n", + " t /= 60 # now in hours\n", + " if t<24: return f'{t} hours'\n", + " t /= 24 # now in days\n", + " if t<30: return f'{t} days'\n", + " t /= 30 # now in months\n", + " if t<12: return f'{t} months'\n", + " t = t*30/365.25 # now in years\n", + " if t<100: return f'{t} years'\n", + " return f'{t/100} centuries'\n", + "\n", + "for n in chain(range(10,21), range(30,101,10)):\n", + " estimated_running_time = exhaustive_constant*factorial(n) # O(n!)\n", + " print(f'{n}\\t{time_in_human_units(estimated_running_time):.1}') # constant_min is used" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Clearly, we cannot wait that long! We need alternatives..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Discussion" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Exhaustive search exhibits combinatorial running time $O(n!)$:\n", + "* So it is only useful/possible when $n$ is small, up to about 13 on the current machine if it needs to finish within an hour." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3.2) Approximation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3.2.1) Greedy search" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Nearest neigbours" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Idea\n", + "\n", + "Start at city 0, move to the nearest city, then from there to the next nearest city, and so on, until all cities are visited. Finally, return back to the start city." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Pseudocode\n", + "\n", + "1. $city \\gets 0$\n", + "2. $visited\\gets []$\n", + "3. **while** not all cities are visited **do**\n", + "4. $\\quad$ $nearest\\_city \\gets \\text{nearest city to $city$ that has not been visited yet}$\n", + "5. $\\quad$ Append $city$ to $visited$ $\\qquad\\qquad\\text{(i.e. mark $city$ as visited)}$\n", + "5. $\\quad$ $city\\gets nearest\\_city$\n", + "6. **end while**\n", + "8. **return** $visited$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Running time analysis" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The while-loop costs $O(n)$, and searching for the nearest city on line 4 costs $O(n)$ also, while the rest can be assumed to cost $O(1)$.\n", + "So the total cost of this greedy approach is therefore $O(n)\\times O(n) = O(n^2)$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Implementation" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "def greedy_nearest_neighbour(G):\n", + " ''' Returns best found cycle and its cost '''\n", + " unvisited = G.vertices.copy()\n", + " visited = [] # solution to be built\n", + " city = 0 # Start city\n", + " while len(unvisited)>0:\n", + " # Find nearest neighbour\n", + " nearest_city = None\n", + " shortest_distance = oo\n", + " for neighbour in unvisited:\n", + " if G[city][neighbour] < shortest_distance:\n", + " shortest_distance = G[city][neighbour]\n", + " nearest_city = neighbour\n", + " # Update 'cycle' and 'cities' and G then 'city'\n", + " visited.append(city)\n", + " unvisited.remove(city)\n", + " city = nearest_city\n", + " return (visited, cost(G, visited+[0]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Example" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5x5 easy graph:\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01234
022121
122211
212212
321122
411222
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4\n", + "0 2 2 1 2 1\n", + "1 2 2 2 1 1\n", + "2 1 2 2 1 2\n", + "3 2 1 1 2 2\n", + "4 1 1 2 2 2" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "([0, 2, 3, 1, 4], 5)" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "G=Graph(5,'easy')\n", + "show(G)\n", + "draw(G)\n", + "greedy_nearest_neighbour(G)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test time and quality" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us first test the greedy approach on **cycle graphs**, as it should work perfectly all the time." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10 20 30 40 50 60 70 80 90 100 " + ] + } + ], + "source": [ + "MAX_REPETITIONS = 500\n", + "\n", + "greedy_data = pd.DataFrame(columns=['n','time'])\n", + "\n", + "i = 0\n", + "for n in range(10,101,10):\n", + " print(n, end=' ')\n", + " for repetitions in range(MAX_REPETITIONS):\n", + " G = Graph(n,'easy') # this has shortest cycle length = n\n", + " t0 = perf_counter()\n", + " cycle, length = greedy_nearest_neighbour(G)\n", + " t1 = perf_counter()\n", + " greedy_data.loc[i] = [n, t1-t0]\n", + " i += 1" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
time
minmaxmeanstd
n
10.00.0000370.0001800.0000540.000016
20.00.0000940.0004440.0001370.000042
30.00.0001800.0005520.0002540.000067
40.00.0002980.0007440.0004250.000104
50.00.0004410.0010650.0006330.000152
60.00.0006200.0037020.0008920.000249
70.00.0008180.0019730.0011600.000273
80.00.0010820.0029250.0015400.000345
90.00.0013250.0031200.0019240.000431
100.00.0016240.0039560.0023510.000550
\n", + "
" + ], + "text/plain": [ + " time \n", + " min max mean std\n", + "n \n", + "10.0 0.000037 0.000180 0.000054 0.000016\n", + "20.0 0.000094 0.000444 0.000137 0.000042\n", + "30.0 0.000180 0.000552 0.000254 0.000067\n", + "40.0 0.000298 0.000744 0.000425 0.000104\n", + "50.0 0.000441 0.001065 0.000633 0.000152\n", + "60.0 0.000620 0.003702 0.000892 0.000249\n", + "70.0 0.000818 0.001973 0.001160 0.000273\n", + "80.0 0.001082 0.002925 0.001540 0.000345\n", + "90.0 0.001325 0.003120 0.001924 0.000431\n", + "100.0 0.001624 0.003956 0.002351 0.000550" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "greedy_data.groupby('n').agg(['min','max','mean','std'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We estimated above that the time for this method will scale like $O(n^2)$, so if we expect a graph $y=c\\cdot x^2$. If we take logarithms of both sides then we get $\\log y = 2\\log x+\\log c$. So, wif we use a log-log plot then we should expect a straight line. Let us check this." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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IiIi6jkGvjYyDAOGYaBeryNVryPhOPAtC2YYjvpN81CVIJBrqRQwNibhLpuVcMehKkREREREOxKfqbdRrVaD7/tQVTV6CXwfpmH0+tZuzvMaQ1XCiZnxOFAqyUs4VCUW6/WdEhERERHRBjHwtZHjOHAcB5VKBWnDgGdZSKVScF2317fWyvcbQ1VcV8KdrssqhP37G0NVEole3ykREREREW0DA18bmaYJ0zRRLBaRq1SQSCRQtW1YvWzpDCdmmqacv1MUOV83NATs2SPDVcKJmRyqQkREREQ0UBj42sjzPAwPD6NSqcBxHGieh/zQEHzf795NhBMzbVteVxSp2O3dKyEvnJjJoSpERERERAOPga/NwjN8iqJAURT44bCTTnBdCXfNU0AzGWBysnVipqZ17h6IiIiIiGjHYuBroyAIouXrWF5GwnEwlEwiaEfou97EzEQCGBmRs3fhUBVOzCQiIiIiojVMB22kKArOnz8PQCp9vu9jbm4O09PTm/tAvt+YmOl50pYZi0mwO3CgMVQlHu/AoyAiIiIiokHBwNdGnuchk8mgVqtF15KpFLwbneELh6oYBuA4Eu40TVoy9+5thLtksguPgIiIiIiIBgkDXxul02kkEgn4vo9kIoG4okCNxZAMw1oQtA5VCSdm5vPAzAxQKDSGqnBiJhERERERbRMDXxslEgnMzMzgzJkziMXjSHgeJoeHkanVgPl5CXHZLDA11TpUhRMziYiIiIioAxj42mh0dBQXL17EbbfdBk3XMWRZqKZSSN57L3DXXRLuOFSFiIiIiIi6hOmjjTKZDABgZWUFXqmEJU1DKpVC8uBBadskIiIiIiLqIga+NvI8DyMjI1hdXYVt24jH48jn8/A8r9e3RkREREREuxADXxtlMhmk02nouh4tYI/H41Hlj4iIiIiIqJsY+NqoWCxibGwMS0tLUeArFosoFou9vjUiIiIiItqFGPja7MCBAygUCrAsC4lEgmGPiIiIiIh6hoGvAxjyiIiIiIhoJ+ACOCIiIiIiogHFwEdERERERDSgGPiIiIiIiIgGFAMfERERERHRgGLgIyIiIiIiGlAMfERERERERAOKgY+IiIiIiGhAMfARERERERENqL5fvH7x4kU8+uijvb4NIiIiIiKinrh48eK6b1OCIAi6eC9ERERERETUJWzpJCIiIiIiGlAMfERERERERAOKgY+IiIiIiGhAMfARERERERENKAY+IiIiIiKiAcXAR0RERERENKAY+Lro6aefxr/9t/+217dBRERERERt8PTTT+MP/uAP8Lu/+7t4+eWXe30719X3i9f7xblz5/DSSy/Bsqxe3woREREREbWBYRj4kz/5E7z00kv44Q9/iKNHj/b6lq7BCl+X7N+/H//4H//jXt8GERERERG1yfve9z4YhoFvfOMb+NjHPtbr27kuVviIiIiIiIi2YGlpCf/xP/5HfO5zn0OpVOr17VwXK3xt8Pzzz+PTn/40AMD3ffzhH/4hHnvsMXz605/GuXPnenx3RERERES0WRt5jv+lL30J8/Pz+LM/+zP87d/+bS9vd12s8G3T17/+dXznO99BKpUCAHzve9+Dbdv45je/iZMnT+JLX/oSvvrVr0Z//8tf/nKvbpWIiIiIiDZgo8/x/8N/+A89vtObY4Vvm/bt24evfOUr0evPPPMM3vnOdwIAjh8/jlOnTvXq1oiIiIiIaAsG6Tk+A982Pfzww9D1RqG0Wq0im81Gr2uaBtd1e3FrRERERES0BYP0HJ+Br82y2SxqtVr0uu/7LT8sRERERETUX/r5OT4DX5udOHECjz/+OADg5MmTOHz4cI/viIiIiIiItqOfn+P3RyztIw899BCefPJJfPKTn0QQBPjiF7/Y61siIiIiIqJt6Ofn+EoQBEGvb4KIiIiIiIjajy2dREREREREA4qBj4iIiIiIaEAx8BEREREREQ0oBj4iIiIiIqIBxcBHREREREQ0oBj4iIiIiIiIBhQDHxERERER0YBi4CMiIiIiIhpQDHxEREREREQDSu/1DRAREfWrb3/72/jBD34A0zTx5ptv4rd/+7fx6KOP9vq2iIiIIqzwERERbUO1WsVf/uVf4qtf/Sq+9rWv9fp2iIiIWjDwERERbcPRo0cBAJOTk7Btu8d3Q0RE1IqBj4iIaBsURen1LRAREa2LgY+IiIiIiGhAKUEQBL2+CSIiIiIiImo/VviIiIiIiIgGFAMfERERERHRgGLgIyIiIiIiGlAMfERERERERAOKgY+IiIiIiGhAMfARERERERENKAY+IiIiIiKiAcXAR0RERERENKD+fxgxs1zUW5+lAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(15,5))\n", + "sns.scatterplot(data=greedy_data, x='n', y='time', alpha=0.1, color='#777') # actual data\n", + "sns.lineplot(data=greedy_data, x='n', y='time', ci='sd', color='red') # mean\n", + "plt.xscale('log')\n", + "plt.yscale('log')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us estimate the slope of the mean line." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "MAX_REPETITIONS = 500\n", + "\n", + "greedy_data2 = pd.DataFrame(columns=['n','time'])\n", + "\n", + "for n in range(10,101,10):\n", + " greedy_data2.loc[n] = [n, n**3]\n", + "plt.figure(figsize=(15,5))\n", + "sns.scatterplot(data=greedy_data, x='n', y='time', color='#777') # actual data\n", + "sns.scatterplot(data=greedy_data2, x='n', y='time', color='#777') # actual data\n", + "sns.lineplot(data=greedy_data, x='n', y='time', ci='sd', color='red') # mean\n", + "plt.xscale('log')\n", + "plt.yscale('log')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That is pretty close to 2!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Symmetric" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us next see what happens with **symmetric graphs**. This time we will compare it against the exhaustive search to see if it is accurate." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2..............................3..............................4..............................5..............................6..............................7..............................8..............................9..............................10..............................11.............................." + ] + } + ], + "source": [ + "MAX_REPETITIONS = 30\n", + "\n", + "greedy_sym_data = pd.DataFrame(columns=['n','time','quality'])\n", + "\n", + "i = 0\n", + "for n in range(2,MAX_n):\n", + " print(n, end='')\n", + " for repetitions in range(MAX_REPETITIONS):\n", + " print('.', end='')\n", + " G = Graph(n,'symmetric')\n", + " # Solve exactly\n", + " actual_shortest_length = exhaustive_search(G)[1]\n", + " # Solve with Greedy\n", + " t0 = perf_counter()\n", + " cycle, greedy_length = greedy_nearest_neighbour(G)\n", + " t1 = perf_counter()\n", + " # Collect data\n", + " greedy_sym_data.loc[i] = [n, t1-t0, (greedy_length/actual_shortest_length-1)*100]\n", + " i += 1" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
timequality
minmaxmeanminmaxmean
n
2.00.0000100.0000540.0000160.00.0000000.000000
3.00.0000120.0000340.0000170.00.0000000.000000
4.00.0000160.0000610.0000210.067.2131155.500613
5.00.0000180.0000320.0000220.078.5123979.329975
6.00.0000230.0006740.0000530.0100.00000012.965886
7.00.0000280.0000580.0000390.063.15789516.696266
8.00.0000350.0001000.0000480.0108.88888926.950605
9.00.0000430.0000970.0000600.088.69565225.887296
10.00.0000470.0000920.0000630.087.97814235.665674
11.00.0000480.0001580.0000720.0101.40845123.185210
\n", + "
" + ], + "text/plain": [ + " time quality \n", + " min max mean min max mean\n", + "n \n", + "2.0 0.000010 0.000054 0.000016 0.0 0.000000 0.000000\n", + "3.0 0.000012 0.000034 0.000017 0.0 0.000000 0.000000\n", + "4.0 0.000016 0.000061 0.000021 0.0 67.213115 5.500613\n", + "5.0 0.000018 0.000032 0.000022 0.0 78.512397 9.329975\n", + "6.0 0.000023 0.000674 0.000053 0.0 100.000000 12.965886\n", + "7.0 0.000028 0.000058 0.000039 0.0 63.157895 16.696266\n", + "8.0 0.000035 0.000100 0.000048 0.0 108.888889 26.950605\n", + "9.0 0.000043 0.000097 0.000060 0.0 88.695652 25.887296\n", + "10.0 0.000047 0.000092 0.000063 0.0 87.978142 35.665674\n", + "11.0 0.000048 0.000158 0.000072 0.0 101.408451 23.185210" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "greedy_sym_data.groupby('n').agg(['min','max','mean'])" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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f/mXf9nU+x86dEh33nln42XbtnXXXXfp9ttv15133qnjx49Lkn75l39Zd911l774xS/qjW98Y1O/BmCper2uP/zDP9Qdd9yht771rTp69Oim3p9runtMT0/rla98pZ577rlNvR/XANrRJz7xCd1+++16y1veor/927/d1PtyTQPtac+ePXrHO97R6tPoCjRtuYCvfvWrSiQS+rM/+zPNzc3pzW9+s1772tc2Xn/69GmNjY2d97wkPfDAA/rqV7+qcDjcOPbQQw+pUqnowQcf1MGDB3X33Xfr3nvv1TXXXKO77757+74w9KxvfOMbkqQvfvGLevjhh/WRj3xE9957b+P1XNO9oVqt6q677lIoFDrvdVwD6DQPP/ywnnjiCf3N3/yNisWiPv3pTy97Pdc0gF5Hhe8CfvZnf1a/8zu/I0lyHEder7fxulKppPe85z166KGH9OlPf1r//b//92Xvu3v3bn3sYx9bduyxxx7TzTffLEm67rrr9NRTT23xVwAs9zM/8zP64Ac/KEk6c+bMsi5zXNO948Mf/rDuuOMODQ0NLTvONYBO9G//9m+64oor9O53v1vvfOc79apXvarxOq5poD0trayvVVVH81Dhu4BoNCpJyuVy+u3f/m295z3vabwuFArpU5/6lN7whjdoeHhYX/jCF5a976233qpTp04tO5bL5RSLxRove71e1Wo1+Xz8GLB9fD6f3ve+9+mf//mf9dGPfrRxnGu6N3zlK19RKpXSzTffrPvvv3/Z67gG0IlmZ2d15swZ3XfffTp16pT+43/8j/q///f/yrIsrmmgDa2srK9VVXfdc889rTrVrkGFbx1nz57V2972Nr3pTW/SG97whsZxx3H00Y9+VD/5kz+paDSqL3/5y+t+rFgspnw+33jZtm3+gaAlPvzhD+vrX/+6/viP/1iFQkES13Sv+D//5//oO9/5ju68804dPnxY73vf+xodB7kG0IkSiYR+6qd+SoFAQPv27VMwGNTMzIwkrmmgHa2srFNV33oEvguYmprSO97xDr33ve/Vbbfdtux1pVJJe/fu1Yc+9CHdd999qlar6368G264Qd/85jclSQcPHtQVV1yxJecNrOXv//7v9YlPfEKS6ThnWZY8HvNngGu6N3zhC1/Q5z//eX3uc5/TVVddpQ9/+MMaHByUxDWAzvSyl71M3/rWt+Q4jiYmJlQsFpVIJCRxTQPt6NZbb132IMpaVXU0Dw9ZXcB9992nTCajv/qrv9Jf/dVfSTJl6FAopHA4rH/37/6dJCkYDOptb3vbuh/vlltu0be//W3dcccdchxHH/rQh7b0/IGVXve61+kP//AP9au/+quq1Wr6oz/6o0bjDq5pcA2gE7361a/WI488ottuu02O4+iuu+5q7LnnmgbaH1X1rWc5juO0+iQAAAAA9IZTp07pd3/3d/WlL31JX//61/WNb3xDd999tw4ePKiPf/zj+uQnP9nqU+wqxGcAAAAALUFVfetR4QMAAACALkXTFgAAAADoUgQ+AAAAAOhSBD4AAAAA6FIEPgAAAADoUgQ+AAAAAOhSBD4AAAAA6FIEPgAAAADoUgQ+AAAAAOhSBD4AAAAA6FK+Vp8AAACd6itf+Yr+9V//VaVSSSdOnNBv/MZv6C1veUurTwsAgAYqfAAAXIJcLqdPfOITuvfee3X//fe3+nQAAFiGwAcAwCW48sorJUmjo6OqVCotPhsAAJYj8AEAcAksy2r1KQAAsCYCHwAAAAB0KctxHKfVJwEAAAAAaD4qfAAAAADQpQh8AAAAANClCHwAAAAA0KUIfAAAAADQpQh8AAAAANClCHwAAAAA0KUIfAAAAADQpQh8AAAAANCl/n+dT5r/UHSfMwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(15,5))\n", + "sns.scatterplot(data=greedy_sym_data, x='n', y='time', alpha=0.3, color='#777') # actual data\n", + "sns.lineplot(data=greedy_sym_data, x='n', y='time', ci='sd', color='red') # mean\n", + "plt.xscale('log')\n", + "plt.yscale('log')" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(15,5))\n", + "sns.scatterplot(data=greedy_sym_data, x='n', y='quality', alpha=0.3, color='#777') # actual data\n", + "sns.lineplot(data=greedy_sym_data, x='n', y='quality', ci='sd', color='green') # mean" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Euclidean graphs**" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2..............................3..............................4..............................5..............................6..............................7..............................8..............................9..............................10..............................11.............................." + ] + } + ], + "source": [ + "MAX_REPETITIONS = 30\n", + "\n", + "greedy_euc_data = pd.DataFrame(columns=['n','time','quality'])\n", + "\n", + "i = 0\n", + "for n in range(2,MAX_n):\n", + " print(n, end='')\n", + " for repetitions in range(MAX_REPETITIONS):\n", + " print('.', end='')\n", + " G = Graph(n,'Euclidean')\n", + " # Solve exactly\n", + " actual_shortest_length = exhaustive_search(G)[1]\n", + " # Solve with Greedy\n", + " t0 = perf_counter()\n", + " cycle, greedy_length = greedy_nearest_neighbour(G)\n", + " t1 = perf_counter()\n", + " # Collect data\n", + " greedy_euc_data.loc[i] = [n, t1-t0, (greedy_length/actual_shortest_length-1)*100]\n", + " i += 1" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
timequality
minmaxmeanminmaxmean
n
2.00.0000100.0000240.0000150.0000000.000000e+000.000000e+00
3.00.0000120.0000270.0000160.0000002.220446e-147.401487e-16
4.00.0000150.0000910.0000230.0000001.754992e+011.971334e+00
5.00.0000180.0000380.0000220.0000001.584175e+014.011366e+00
6.00.0000210.0001250.0000350.0000002.096390e+014.687610e+00
7.00.0000270.0000590.0000390.0000002.789743e+016.990823e+00
8.00.0000330.0000780.0000480.0000002.190020e+017.586625e+00
9.00.0000390.0001100.0000580.0000003.279997e+019.431038e+00
10.00.0000440.0001040.0000670.0000003.614096e+011.035504e+01
11.00.0000530.0001630.0000751.0173792.787008e+011.283263e+01
\n", + "
" + ], + "text/plain": [ + " time quality \n", + " min max mean min max mean\n", + "n \n", + "2.0 0.000010 0.000024 0.000015 0.000000 0.000000e+00 0.000000e+00\n", + "3.0 0.000012 0.000027 0.000016 0.000000 2.220446e-14 7.401487e-16\n", + "4.0 0.000015 0.000091 0.000023 0.000000 1.754992e+01 1.971334e+00\n", + "5.0 0.000018 0.000038 0.000022 0.000000 1.584175e+01 4.011366e+00\n", + "6.0 0.000021 0.000125 0.000035 0.000000 2.096390e+01 4.687610e+00\n", + "7.0 0.000027 0.000059 0.000039 0.000000 2.789743e+01 6.990823e+00\n", + "8.0 0.000033 0.000078 0.000048 0.000000 2.190020e+01 7.586625e+00\n", + "9.0 0.000039 0.000110 0.000058 0.000000 3.279997e+01 9.431038e+00\n", + "10.0 0.000044 0.000104 0.000067 0.000000 3.614096e+01 1.035504e+01\n", + "11.0 0.000053 0.000163 0.000075 1.017379 2.787008e+01 1.283263e+01" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "greedy_euc_data.groupby('n').agg(['min','max','mean'])" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3IAAAE7CAYAAACYH7NsAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABhSElEQVR4nO3dfYwkd30n/ndVdVV1V3dXP8zj7uzs7JPXjzEmB7YjiAkcxsTCgThGh8klOswhjiMihhPY+GwDMoLjCCQRYCBcpLszcD4gKFg6KUhnIZwD5F9yFxtsB9u7Xu/OPsxzP9dz1ff3R2/XTu/M2LMzPdNdM++XZO1MTa/7O7Uz3fWu7+f7+UpCCAEiIiIiIiJKDLnfAyAiIiIiIqJLwyBHRERERESUMAxyRERERERECcMgR0RERERElDAMckRERERERAnDIEdERERERJQwqX4PYC033HADJiYm+j0MIiIiIiKivjhz5gyefPLJVb82sEFuYmICP/zhD/s9DCIiIiIior64/fbb1/waSyuJiIiIiIgShkGOiIiIiIgoYRjkiIiIiIiIEoZBjoiIiIiIKGEY5IiIiIiIiBKGQY6IiIiIiChhGOSIiIiIiIgSZmD3kSMiIiIiom5CCFiWBdd1oes6DMOAJEn9Hhb1AYMcEREREVECCCEwMzODSqUSHyuVShgfH2eY24VYWklERERElACWZXWFOACoVCqwLKtPI6J+YpAjIiIiIkoA13Uv6TjtbAxyREREREQJoOv6JR2nnY1BjoiIiIgoAQzDQKlU6jpWKpVgGEafRkT9xGYnREREREQJIEkSxsfHYZomu1bS1gS5MAxx//3348SJE5AkCZ/5zGcQBAE++MEP4sCBAwCAO++8E7feeutWPD0RERER0Y4kSRKy2Syy2Wy/h0J9tiVB7ic/+QkA4NFHH8WTTz6JP//zP8db3vIWvO9978Ndd921FU9JRERERES0a2xJkHvrW9+K3/md3wEAnD17FqZp4plnnsGJEyfw+OOPY2pqCvfddx9yudxWPD0REREREdGOtmXNTlKpFO655x489NBDuO2223DttdfiE5/4BL7zne9gcnISX/va17bqqYmIiIiIiHa0Le1a+YUvfAE//vGP8cADD+CNb3wjrrnmGgDAzTffjOeee24rn5qIiIiIiGjH2pIg97d/+7f45je/CQDIZDKQJAl/8id/gl/+8pcAgF/84he4+uqrt+KpiYiIiIiIdrwtWSP3tre9DZ/85Cfxh3/4hwiCAPfddx/27NmDhx56CKqqYnh4GA899NBWPDUREREREdGOtyVBzjAM/OVf/uWK448++uhWPB0REREREdGusqVr5IiIiIiIiKj3GOSIiIiIiIgShkGOiIiIiIgoYRjkiIiIiIiIEoZBjoiIiIiIKGEY5IiIiIiIiBKGQY6IiIiIiChhtmQfOSIiIiIiIQQsy4LrutB1HYZhQJKkfg+LaEdgkCMiIiKinhNCYGZmBpVKJT5WKpUwPj7OMEfUAyytJCIiIqKesyyrK8QBQKVSgWVZfRoR0c7CIEdEREREPee67iUdJ6JLwyBHRERERD2n6/olHSeiS8MgR0REREQ9ZxgGSqVS17FSqQTDMPo0IqKdhc1OiIiIiKjnJEnC+Pg4TNNk10qiLcAgR0RERERbQpIkZLNZZLPZfg+FaMdhaSUREREREVHCMMgRERERERElDIMcERERERFRwjDIERERERERJQyDHBERERERUcIwyBERERERESUMgxwREREREVHCMMgRERERERElDIMcERERERFRwjDIERERERERJUxqK/6nYRji/vvvx4kTJyBJEj7zmc9A13Xce++9kCQJl112GT71qU9BlpkjiYiIiIiILtWWBLmf/OQnAIBHH30UTz75JP78z/8cQgjcfffduOGGG/Dggw/i8ccfx80337wVT09ERERERLSjbcmU2Fvf+lY89NBDAICzZ8/CNE08++yzuP766wEAN910E37+859vxVMTERERERHteFtW25hKpXDPPffgoYcewm233QYhBCRJAgBks1k0Go2temoiIiIiIqIdbUsXqX3hC1/Aj3/8YzzwwANwXTc+3mq1YJrmVj41ERERERHRjrUlQe5v//Zv8c1vfhMAkMlkIEkSrrnmGjz55JMAgCeeeAKve93rtuKpiYiIiIiIdrwtaXbytre9DZ/85Cfxh3/4hwiCAPfddx8OHz6MBx54AF/+8pdx6NAh3HLLLVvx1ERERERERDvelgQ5wzDwl3/5lyuOf/vb396KpyMiIiIiItpVuJEbERERERFRwjDIERERERERJQyDHBERERERUcIwyBERERERESUMgxwREREREVHCbEnXSiIiItp6QghYlgXXdaHrOgzDgCRJ/R4W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aTnktBxGsiNAqX3cD/24wUrdaW+PUHNq8EM/XsOiKmo8gzdIM0/LSx47/3XNtpxvT55Vs2uWPKbkFC9udxFJkpCSUrt+JpqIiGgr8N2VaBupigpVUWHq5ootEjp74FWdajvkOdX2WiW0SzQ1WYtn8HodhoQQ8TqpzozaxSGNJY9EREREg4NBjmgAdMJQAYUVHTSdwIHlWai5NVScStxBE2jPeGiyFm9yvlbA68ygdULaWiWPWTULI9v+s7Ovnqqo8WwaEREREQ0GXpkRDajlHTSL6SL2Yi+AdsDrNFixfTturrJoL3Y1DVnegl5TNGTVLArpwupdHrmNAhEREVGiMMgRJYwkScioGWTUDJDBii0SbN+GgOgKaix5JCIiItpZGOSIdojlWyQQERER0c7G2/REREREREQJwyBHRERERESUMAxyRERERERECcMgR0RERERElDAMckRERERERAnDIEdERERERJQwDHJEREREREQJwyBHRERERESUMAxyRERERERECcMgR0RERERElDCpfg9gLWfOnMHtt9/e72EQERERERH1xZkzZ9b8miSEENs4FiIiIiIiItokllYSERERERElDIMcERERERFRwjDIERERERERJQyDHBERERERUcIwyBERERERESUMg9w6+b6Pj3/843jve9+LO+64A48//ni/h0S0qsXFRbzpTW/C8ePH+z0UohW++c1v4l/9q3+F22+/Hd///vf7PRyiLr7v4z/8h/+A97znPXjve9/L11EaKE8//TT+6I/+CABw8uRJ3HnnnXjve9+LT33qU4iiqM+jo35gkFunxx57DMViEd/97nfxX/7Lf8FDDz3U7yERreD7Ph588EGk0+l+D4VohSeffBL/9E//hP/xP/4HHnnkEczMzPR7SERdfvrTnyIIAjz66KP48Ic/jL/4i7/o95CIAADf+ta3cP/998N1XQDA5z//edx999347ne/CyEEJxh2KQa5dXr729+OP/3TPwUACCGgKEqfR0S00he+8AW85z3vwejoaL+HQrTC//k//wdHjx7Fhz/8Yfy7f/fv8Du/8zv9HhJRl4MHDyIMQ0RRhGaziVQq1e8hEQEA9u/fj6985Svx588++yyuv/56AMBNN92En//85/0aGvURX6HWKZvNAgCazSY+8pGP4O677+7vgIgu8sMf/hDlchm//du/jb/6q7/q93CIVqhUKjh79iy+8Y1v4PTp0/jQhz6Ev/u7v4MkSf0eGhEAwDAMnDlzBr/7u7+LSqWCb3zjG/0eEhEA4JZbbsHp06fjz4UQ8WtnNptFo9Ho19CojzgjdwnOnTuHP/7jP8Y73/lO3Hbbbf0eDlGXv/mbv8HPf/5z/NEf/RH++Z//Gffccw/m5+f7PSyiWLFYxBvf+EZomoZDhw5B13UsLS31e1hEsf/6X/8r3vjGN+LHP/4xfvSjH+Hee++NS9mIBoksX7iEb7VaME2zj6OhfmGQW6eFhQXcdddd+PjHP4477rij38MhWuE73/kOvv3tb+ORRx7BlVdeiS984QsYGRnp97CIYv/iX/wL/P3f/z2EEJidnYVt2ygWi/0eFlHMNE3k83kAQKFQQBAECMOwz6MiWumqq67Ck08+CQB44okn8LrXva7PI6J+YGnlOn3jG99AvV7Hww8/jIcffhhAe+Epm0oQEa3Pm9/8ZvzDP/wD7rjjDggh8OCDD3K9MQ2Uf/Nv/g3uu+8+vPe974Xv+/joRz8KwzD6PSyiFe655x488MAD+PKXv4xDhw7hlltu6feQqA8kIYTo9yCIiIiIiIho/VhaSURERERElDAMckRERERERAnDIEdERERERJQwDHJEREREREQJwyBHRERERESUMAxyRERERERECcMgR0RERERElDDcEJyIiOgiP/zhD/HTn/4UjuPg1KlT+MAHPoDbb7+938MiIiKKcUaOiIhoFc1mE9/85jfx9a9/HX/1V3/V7+EQERF1YZAjIiJaxRVXXAEA2LNnDzzP6/NoiIiIujHIERERrUKSpH4PgYiIaE0MckRERERERAkjCSFEvwdBRERERERE68cZOSIiIiIiooRhkCMiIiIiIkoYBjkiIiIiIqKEYZAjIiIiIiJKGAY5IiIiIiKihGGQIyIiIiIiShgGOSIiIiIiooRhkCMiIiIiIkqY/x/c74hDmt1thAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(15,5))\n", + "sns.scatterplot(data=greedy_euc_data, x='n', y='quality', alpha=0.3, color='#777') # actual data\n", + "sns.lineplot(data=greedy_euc_data, x='n', y='quality', ci='sd', color='green') # mean" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Asymmetric" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2..............................3..............................4..............................5..............................6..............................7..............................8..............................9..............................10..............................11.............................." + ] + } + ], + "source": [ + "MAX_REPETITIONS = 30\n", + "\n", + "greedy_asym_data = pd.DataFrame(columns=['n','time','quality'])\n", + "\n", + "i = 0\n", + "for n in range(2,MAX_n):\n", + " print(n, end='')\n", + " for repetitions in range(MAX_REPETITIONS):\n", + " print('.', end='')\n", + " G = Graph(n,'asymmetric')\n", + " # Solve exactly\n", + " actual_shortest_length = exhaustive_search(G)[1]\n", + " # Solve with Greedy\n", + " t0 = perf_counter()\n", + " cycle, greedy_length = greedy_nearest_neighbour(G)\n", + " t1 = perf_counter()\n", + " # Collect data\n", + " greedy_asym_data.loc[i] = [n, t1-t0, (greedy_length/actual_shortest_length-1)*100]\n", + " i += 1" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
timequality
minmaxmeanminmaxmean
n
2.00.0000100.0000240.0000140.0000000.0000000.000000
3.00.0000120.0000240.0000140.000000495.83333322.519897
4.00.0000150.0000340.0000190.00000090.38461518.797977
5.00.0000180.0000370.0000230.000000121.27659632.716400
6.00.0000240.0000510.0000300.00000090.32258125.664783
7.00.0000320.0000730.0000440.000000103.19148928.995296
8.00.0000380.0000920.0000510.000000107.25806544.537797
9.00.0000400.0001720.0000590.000000217.46031763.980648
10.00.0000470.0002450.0000709.677419113.23529447.788109
11.00.0000530.0012400.0001270.000000113.66459655.202735
\n", + "
" + ], + "text/plain": [ + " time quality \n", + " min max mean min max mean\n", + "n \n", + "2.0 0.000010 0.000024 0.000014 0.000000 0.000000 0.000000\n", + "3.0 0.000012 0.000024 0.000014 0.000000 495.833333 22.519897\n", + "4.0 0.000015 0.000034 0.000019 0.000000 90.384615 18.797977\n", + "5.0 0.000018 0.000037 0.000023 0.000000 121.276596 32.716400\n", + "6.0 0.000024 0.000051 0.000030 0.000000 90.322581 25.664783\n", + "7.0 0.000032 0.000073 0.000044 0.000000 103.191489 28.995296\n", + "8.0 0.000038 0.000092 0.000051 0.000000 107.258065 44.537797\n", + "9.0 0.000040 0.000172 0.000059 0.000000 217.460317 63.980648\n", + "10.0 0.000047 0.000245 0.000070 9.677419 113.235294 47.788109\n", + "11.0 0.000053 0.001240 0.000127 0.000000 113.664596 55.202735" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "greedy_asym_data.groupby('n').agg(['min','max','mean'])" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABaoAAAFCCAYAAAAQQeqbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAACf+UlEQVR4nOzdeZRkZ30f/O9darm39qree2Z6Fu27dGQJjCRsAhEQMI5NIjmOczhgOzYvimWHGKyAABtjsAHjIENsYh/HKD4GAsfGxnmTFxksI4gwSDNaRxpJs09vtVfdW3XX5/3jdt3umu6e6Znprqru+n7m1Knqp7anuqt7bn3v7/4eSQghQERERERERERERETUJ3K/J0BEREREREREREREw41BNRERERERERERERH1FYNqIiIiIiIiIiIiIuorBtVERERERERERERE1FcMqomIiIiIiIiIiIiorxhUExEREREREREREVFfqf2ewKW6/fbbMT093e9pEBEREdEmO336NB5//PF+T4P6gNv4RERERDvTubbxt31QPT09ja997Wv9ngYRERERbbKf+qmf6vcUqE+4jU9ERES0M51rG5+tP4iIiIiIiIiIiIiorxhUExEREREREREREVFfMagmIiIiIiIiIiIior5iUE1EREREREREREREfcWgmoiIiIiIiIiIiIj6Su33BIiIiIiIaHv6l//yXyKZTAIAdu3ahXvuuQe//du/DUVRcMcdd+A973kPfN/Hhz/8YbzwwguIRqP46Ec/ipmZmT7PnIiIiIgGDYNqIiIiIiK6YJZlQQiBL37xi+HY2972Nnz2s5/F7t278Yu/+It47rnncOrUKdi2jS996Us4ePAgPv7xj+Pzn/98H2dORERERIOIQTURERERrUsIAdM0YVkWYrEYdF2HJEn9nhYNgMOHD6PVauGd73wnXNfFfffdB9u2sWfPHgDAHXfcge9+97tYXFzEnXfeCQC46aab8Mwzz/Rz2nQW/o4TERHRoGBQTURERERrEkJgbm4OlUolHMvlcpiYmGCQRYjH43jXu96Ff/Wv/hWOHTuGX/iFX0A6nQ6vTyQSOHnyJJrNZtgeBAAURYHrulBVfhTpN/6OExER0SDh1iERERERrck0za4ACwAqlQrS6TQSiUSfZkWDYt++fZiZmYEkSdi3bx9SqRSq1Wp4vWEYSKfTaLfbMAwjHPd9nyH1gODvOBEREQ0Sud8TICIiIqLBZFnWBY3TcPmf//N/4uMf/zgAYH5+Hq1WC7qu48SJExBC4Dvf+Q5uvfVW3HLLLXj00UcBAAcPHsQVV1zRz2nTCvwdJyIiokHCUgYiIiIiWlMsFrugcRoub3/72/Ebv/Eb+Jmf+RlIkoSPfexjkGUZ733ve+F5Hu644w7ceOONuP766/HYY4/h3nvvhRACH/vYx/o9dVrC33EiIiIaJAyqiYiIiGhNuq4jl8ut6l+r63ofZ0WDIhqN4lOf+tSq8S9/+ctdX8uyjN/8zd/s1bToAvB3nIiIiAYJg2oiIiIiWpMkSZiYmEA6nYZlWYjFYtB1nYusEe0Q/B0nIiKiQcKgmoiIiIjWJUkSEokEF1Yj2qH4O05ERESDgospEhEREREREREREVFfDVxF9TPPPIOHH34YQgj8p//0nzAyMtLvKRERERERERERERHRFhq4imrLsvDAAw/gta99LQ4ePNjv6RARERERERERERHRFut7RfWf/dmf4Xvf+x4A4KabbsIv//Iv48knn8Sf/umf4jOf+Ux/J0dEREREREREREREW67vQfU73vEOvOMd7wi/fuqpp3DttdfiC1/4Av7wD/8QH/jAB/o3OSIiIiIiIiIiIiLaclva+uPQoUP4uZ/7OQCA7/t48MEHcc899+Dnfu7ncPz48TXvYxgGHnjgAfzu7/4u3vKWt2zl9IiIiIiIiIiIiIhoAGxZRfUXvvAFfP3rX4emaQCAb37zm7BtG1/60pdw8OBBfPzjH8fnP//5Vfd79atfjVe/+tVbNS0iIiIiIiIiIiIiGjBbVlG9Z88efPaznw2//uEPf4g777wTQNCL+plnntmqpyYiIiIiIiIiIiKibWTLguq7774bqrpcsN1sNpFMJsOvFUWB67pb9fREREREREREREREtE1saY/qlZLJJAzDCL/2fb8ryCYiIiIiIiIiIiKi4dSzoPqWW27Bo48+CgA4ePAgrrjiil49NRERERERERERERENsJ6VNL/hDW/AY489hnvvvRdCCHzsYx/r1VMTERERERERERER0QDb0qB6165d+PKXvwwAkGUZv/mbv7mVT0dERERERERERERE21DPWn8QEREREREREREREa2FQTURERERERERERER9RWDaiIiIiIiIiIiIiLqKwbVRERERERERERERNRXDKqJiIiIiIiIiIiIqK8YVBMRERERERERERFRXzGoJiIiIiIiIiIiIqK+YlBNRERERERERERERH3FoJqIiIiIiIiIiIiI+opBNRERERERERERERH1FYNqIiIiIiIiIiIiIuorBtVERERERERERERE1FcMqomIiIiIiIiIiIiorxhUExEREREREREREVFfMagmIiIiIiIiIiIior5iUE1EREREREREREREfcWgmoiIiIiIiIiIiIj6ikE1EREREREREREREfUVg2oiIiIiIiIiIiIi6isG1URERERERERERETUVwyqiYiIiIiIiIiIiKivGFQTEREREdFFK5VKeO1rX4uXX34Zx48fx8/8zM/g3/ybf4MPfehD8H0fAPDQQw/h7W9/O+6991489dRTfZ4xEREREQ0iBtVERERERHRRHMfBgw8+iHg8DgD4nd/5Hdx///34i7/4Cwgh8Mgjj+DZZ5/F97//fXzlK1/Bpz/9aXzkIx/p86yJiIiIaBAxqCYiIiIioovyiU98Avfeey/GxsYAAM8++yxuu+02AMBdd92F7373u/jhD3+IO+64A5IkYWpqCp7noVwu93PaRERERDSAGFQTEREREdEF+9rXvoZ8Po8777wzHBNCQJIkAEAikUCj0UCz2UQymQxv0xknIiIiIlpJ7fcEiIiIiIho+/nqV78KSZLwve99D88//zze9773dVVKG4aBdDqNZDIJwzC6xlOpVD+mTEREREQDjBXVRERERER0wf7H//gfePjhh/HFL34RV199NT7xiU/grrvuwuOPPw4AePTRR3HrrbfilltuwXe+8x34vo8zZ87A933k8/k+z56IiIiIBg0rqomIiIiIaFO8733vwwc/+EF8+tOfxv79+3H33XdDURTceuutuOeee+D7Ph588MF+T5OIiIiIBhCDaiIiIiIiuiRf/OIXw8sPP/zwquvvu+8+3Hfffb2cEhERERFtM2z9QURERERERERERER9xaCaiIiIiIiIiIiIiPqKQTURERERERERERER9RWDaiIiIiIiIiIiIiLqKwbVRERERERERERERNRXDKqJiIiIiIiIiIiIqK8YVBMRERERERERERFRXzGoJiIiIiIiIiIiIqK+YlBNRERERERERERERH3FoJqIiIiIiIiIiIiI+opBNRERERERERERERH1FYNqIiIiIiIiIiIiIuorBtVERERERERERERE1FcMqomIiIiIiIiIiIiorxhUExEREREREREREVFfMagmIiIiIiIiIiIior5iUE1EREREREREREREfcWgmoiIiIiIiIiIiIj6ikE1EREREZ2f4/R7BkREREREtIMxqCYiIiKiczNN4Ic/7PcsiIiIiIhoB2NQTURERETrEkLAfPpp1E+ehGEYEEL0e0pERERERLQDqf2eABERERENJiEE5l98EdaTTwKyDOP4ceRyOUxMTECSpH5Pj4iIiIiIdhBWVBMRERHRmkzDgHnwIEQ8Ho5VKhWYptnHWRERERER0U7EoJqIiIiI1mTPzUEpl+EnEl3jlmX1aUZERERERLRTMagmIiIiotV8H7FXXoGfTK66KhaL9WFCRERERES0kzGoJiIiIqLV5uehuS6SY2Ndw7lcDrqu92lSRERERES0U3ExRSIiIiLq5rrA889DymYxEo0imUjAATAyMwNd17mQIhERERERbToG1URERETU7dQpwLaBTAYSAE3ToKXTwFm9qomIiIiIiDYLW38QERER0TLLAl58Ecjl+j0TIiIiIiIaIgyqiYiIiGjZ0aPBucoD74iIiIiIqHcYVBMRERFRwDCCoJrV1ERERERE1GMMqomIiIgo8NJLQDQKyNxEJCIiIiKi3uKnECIiIiICajXg9Gkgk+n3TIiIiIiIaAgxqCYiIiIadkIAhw8DiQQgSf2eDRERERERDSEG1UREREQDTAgBwzBQLpdhGAaEEJv/JKUSUC4DyeTmPzYREREREdEGcDl3IiIiogElhMDc3BwqlUo4lsvlMDExAWmzKp99H3juOSCV2pzHIyIiIiIiuggMqomIiIgGlGmaXSE1AFQqFaTTaSQSic15ktlZwDCAsbHNeTwaGp7n4QMf+ACOHj0KSZLwkY98BLFYDO9///shSRIuv/xyfOhDH4Isy3jooYfw7W9/G6qq4oEHHsANN9zQ7+kTERER0YBhUE1EREQ0oCzLWnd8U4Jq1w16U2ezl/5YNHS+9a1vAQD+8i//Eo8//jh+//d/H0II3H///bj99tvx4IMP4pFHHsHU1BS+//3v4ytf+QpmZ2dx33334atf/WqfZ09EREREg4ZBNREREdGAisViFzR+wU6cABwHiEY35/FoqLz+9a/Hj/3YjwEAzpw5g3Q6je9+97u47bbbAAB33XUXHnvsMezbtw933HEHJEnC1NQUPM9DuVxGPp/v4+yJiIiIaNBwMUUiIiKiAaXrOnK5XNdYLpeDruuX/uDtNvDSS8BZj090IVRVxfve9z781m/9Ft761rdCCBH2T08kEmg0Gmg2m0iuWKizM05EREREtBIrqomIiIgGlCRJmJiYQDqdhmVZiMVi0HV9cxZSPHo0OFe5OUiX5hOf+ATe+9734l//63/d1a7GMAyk02kkk0kYhtE1nuLinURERER0FlZUExEREQ0wSZKQSCSQz+eRSCQ2J6Q2DODYMVZT0yX5q7/6K/zRH/0RAEDTNEiShOuuuw6PP/44AODRRx/FrbfeiltuuQXf+c534Ps+zpw5A9/32faDiIiIiFZhCQ0RERHRsDlyJOhLLbNmgS7eP//n/xy/8Ru/gZ/92Z+F67p44IEHcODAAXzwgx/Epz/9aezfvx933303FEXBrbfeinvuuQe+7+PBBx/s99SJiIiIaAAxqCYiIiIaJtUqcOYMMDbW75nQNqfrOv7gD/5g1fjDDz+8auy+++7Dfffd14tpEREREdE2xTIaIiIiomEhBHD4MJBIAJvRQoSIiIiIiGiTMKgmIiIiGhbFIlAuA8lkv2dCRERERETUhUE1ERER0TDwPOC554BMpt8zISIiIiIiWoVBNREREdEwmJ0FDAOIx/s9EyIiIiIiolUYVBMRERHtdI4DvPACkM9f8F2FEGi1WqjX6zAMA0KILZggERERERENO7XfEyAiIiKiLXbyJOC6QCRyQXcTQqBYKqFRr0OpVGAcP45cLoeJiQlIXIyRiIiIiIg2ESuqiYiIiHaydhs4cgTIZi/irm006vWusUqlAtM0N2lyREREREREAQbVRERERDvZK68AsgyoF34gnW3ba45blnWpsyIiIiIiIurC1h9EREREZxFCwDRNWJaFWCwGXde3Z6uLZhM4fhwYGbmou0ej0TXHY7HYpcyKiIiIiIhoFQbVRERERCsIITA3N4dKpRKObdu+zC++CMRiQUX1RYjH40il013tP3K5HHRd36wZEhERERERAWBQTURERNTFNM2ukBoI+jKn02kkEok+zeoiVCrA/DwwNnbRDyFJEkYKBSQTCTgARmZmtm91ORERERERDTT2qCYiIiJaYb3+y9uqL7MQwOHDwCZUPkuSBE3TwqCeITUREREREW0F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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, (time, quality) = plt.subplots(nrows=1, ncols=2, figsize=(25, 5))\n", + "sns.scatterplot(data=greedy_asym_data, x='n', y='time', alpha=0.3, ax=time, color='#777')\n", + "sns.lineplot(data=greedy_asym_data, x='n', y='time', ci='sd', ax=time, color='red')\n", + "time.set(xscale=\"log\", yscale=\"log\")\n", + "sns.scatterplot(data=greedy_asym_data, x='n', y='quality', alpha=0.3, ax=quality, color='#777')\n", + "sns.lineplot(data=greedy_asym_data, x='n', y='quality', ci='sd', ax=quality, color='green')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Metaheuristics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "............................................................\n", + "\n", + "............................................................\n", + "\n", + "............................................................\n", + "\n", + "............................................................\n", + "\n", + "............................................................\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# References" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Garey, S. and Johnson, D. (1979). **Computers and Intractability: A Guide to the Theory of NP-Completeness.** Freeman.\n", + "\n", + "* Hoos, H. and Stutzler, T. (2005). **Stochastic Local Search: Foundations and Applications.** Morgan Kaufmann.\n", + "\n", + "* Sipser, M. (2013). **Introduction to the theory of computation.** (3rd international ed.). Cengage Learning." + ] + } + ], + "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.8.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": false, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/.ipynb_checkpoints/Template-checkpoint.ipynb b/.ipynb_checkpoints/Template-checkpoint.ipynb new file mode 100644 index 0000000..0549551 --- /dev/null +++ b/.ipynb_checkpoints/Template-checkpoint.ipynb @@ -0,0 +1,467 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# .... Title ...." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "... Author ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "https://github.coventry.ac.uk/380CT-2022/........" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1) Notation and definitions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let $G$ be a [complete]( \"graph is undirected, has no self-loops, and each node is connected to all the other vertices\") [weighted]( \"the edges have a weight (a positive integer)\") graph with $n$ vertices." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Optimisation TSP**:\n", + "> Given $G$, find a Hamiltonian cycle of minimal total cost.\n", + "\n", + "This problem is **NP-Hard** because its decision version is **NP-complete** (Garey and Johnson, 1979, p. 211)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 2) Testing methodology" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```\n", + ".................................................................\n", + ".................................................................\n", + "... You can add or improve this section and its subsections ...\n", + ".................................................................\n", + ".................................................................\n", + "```\n", + "\n", + "* **Exact method (Exhaustive search)**:\n", + " Average _time_ for instances with increasing $n$.\n", + "\n", + "* **Greedy and meta-heuristics**:\n", + " Average _time_ and _\"quality\"_ as $n$ increases.\n", + "\n", + "Instances will be generated randomly as shown in the next subsection." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2.1) Random instances sampling strategy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Four types of TSP instances will be generated by creating an **adjacency matrices** $M$ as follows:\n", + "1. **Asymmetric**: The edge weights are independent and uniformly random in an interval $[1,\\text{MAX_WEIGHT}]$, i.e the graph is assumed to be directed.\n", + "2. **Symmetric**: Like the asymmetric case but the graph is undirected, and the matrix is therefore symmetric: $M_{ij}=M_{ji}$.\n", + "3. **Euclidean**: Generate points using $(x,y)$ coordinates, then generate the adjacency matrix by calculating all the required distances. Recall that the distance between two points $(x_1,y_1)$ and $(x_2,y_2)$ is $\\sqrt{(x_1-x_2)^2+(y_1-y_2)^2}$. The points are generated in the rectangle defined by the points $(0,0)$ and $(\\text{MAX_Y},\\text{MAX_Y})$.\n", + "4. **Graphs with obvious shortest cycle**: A graph where all the distances are 2 except for the edges on a predefined cycle, where the distance is 1. Such a graph would be useful for testing/debugging the \"nearest neighbour greedy\" search." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Implementation of the instances generation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First start by importing relevant libraries." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from random import randint, shuffle # random integers and random shuffling of a list\n", + "from itertools import permutations # iterate over all possible permutations of a list\n", + "from itertools import chain # concatenate range()'s'\n", + "from math import inf as oo # Infinity (∞) is larger than any number\n", + "from math import sqrt, log, factorial # square root, logarithm, and n!\n", + "from time import perf_counter # for measuring time. NB. 'perf_counter' is better/more accurate than 'time'\n", + "import networkx as nx # to draw sample graphs\n", + "import pandas as pd # to show the adjacency matrix in a nice format\n", + "import matplotlib.pyplot as plt # to plot graphs of time and quality vs n\n", + "import seaborn as sns # nice statistical plots -- see e.g. https://seaborn.pydata.org/tutorial/relational.html#relational-tutorial\n", + "sns.set_style(\"white\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Basics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let the set of vertices be $\\{0, 1, 2,\\ldots, n-1\\}$.\n", + "\n", + "For simplicity, we will consider $0$ to be the start and end point of cycles." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "class Graph:\n", + " ''' Random graphs '''\n", + " def __init__(self, n=0, type='asymmetric', MAX_WEIGHT=100, MAX_X=200, MAX_Y=200):\n", + " self.n = n\n", + " self.vertices = list(range(n)) # [0,1,...,n-1]\n", + " self.type = type\n", + " self.adj_matrix = [[oo for i in range(n)] for j in range(n)]\n", + " # Generate a random adjacency matrix according to the required type\n", + " if type=='symmetric': self.__random_symmetric_graph(n,MAX_WEIGHT)\n", + " elif type=='Euclidean': self.__random_euclidean_graph(n,MAX_X,MAX_Y)\n", + " elif type=='easy': self.__random_cycle_graph(n)\n", + " else: self.__random_asymmetric_graph(n,MAX_WEIGHT) # assume 'asymmetric' otherwise\n", + " \n", + " def __getitem__(self, i):\n", + " ''' Allow indexing to get the weights '''\n", + " return self.adj_matrix[i]\n", + " \n", + " def __random_asymmetric_graph(self,n, MAX_WEIGHT):\n", + " ''' Asymmetric adjacency matrix of size nxn '''\n", + " for i in range(n):\n", + " for j in range(n):\n", + " if i==j: continue # no self-loops\n", + " self.adj_matrix[i][j] = randint(1,MAX_WEIGHT)\n", + "\n", + " def __random_symmetric_graph(self,n,MAX_WEIGHT):\n", + " ''' Symmetric adjacency matrix of size nxn '''\n", + " for i in range(n):\n", + " for j in range(i+1,n):\n", + " w = randint(1,MAX_WEIGHT)\n", + " self.adj_matrix[i][j] = w\n", + " self.adj_matrix[j][i] = w\n", + "\n", + " def __random_cycle_graph(self,n):\n", + " ''' Symmetric adjacency matrix of size nxn with one reandomly chosen cycle\n", + " All the edge weights are 2 except for the cycle (weight=1) '''\n", + " self.adj_matrix = [[2 for _ in range(n)] for _ in range(n)] # All weights=2\n", + " # Select a random cycle which will have weight=1\n", + " cycle = list(range(1,n)) # don't include 0 as we want to be at the start\n", + " shuffle(cycle) # in-place random permutation\n", + " cycle = [0]+cycle+[0] # cycle starting and ending at 0\n", + " for a,b in zip(cycle, cycle[1:]): # set the cycle's weights to 1\n", + " self.adj_matrix[a][b] = 1\n", + " self.adj_matrix[b][a] = 1\n", + "\n", + " def __random_euclidean_graph(self,n,MAX_X,MAX_Y):\n", + " ''' Symmetric adjacency matrix of a Euclidean graph of size nxn '''\n", + " # (1/2) Generate random (x,y) points\n", + " points = set()\n", + " while len(points)0:\n", + " # Find nearest neighbour\n", + " nearest_city = None\n", + " shortest_distance = oo\n", + " for neighbour in unvisited:\n", + " if G[city][neighbour] < shortest_distance:\n", + " shortest_distance = G[city][neighbour]\n", + " nearest_city = neighbour\n", + " # Update 'cycle' and 'cities' and G then 'city'\n", + " visited.append(city)\n", + " unvisited.remove(city)\n", + " city = nearest_city\n", + " return (visited, cost(G, visited+[0]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 4) Metaheuristic" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```\n", + "............................................................\n", + "............................................................\n", + "............................................................\n", + "............................................................\n", + "............................................................\n", + "............................................................\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Conclusion" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```\n", + "............................................................\n", + "............................................................\n", + "\n", + "(Based on your theoretical analysis and experimental findings, give clear and precise practical recommendations on which methods to use given the size and/or structure of the graph.)\n", + "\n", + "............................................................\n", + "............................................................\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# List of references" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```\n", + "............................................................\n", + "............................................................\n", + "```" + ] + }, + { + "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", + "version": "3.8.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": false, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Investigating TSP.ipynb b/Investigating TSP.ipynb new file mode 100644 index 0000000..bbe5096 --- /dev/null +++ b/Investigating TSP.ipynb @@ -0,0 +1,2836 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Guide Notebook for the 380CT Assignment on TSP

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "_Kamal Bentahar_" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "https://github.coventry.ac.uk/380CT-2021/TSP-Guidance" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```\n", + "DISCLAIMER:\n", + "\n", + "- This is meant to help you get started.\n", + "- You can use it as a starting template, but you can also build your own from scratch. You can even use another programming language (but in Jupyter still).\n", + "- Be ware! Care is not taken into checking validity of paramters, etc. -- simplicity of code for understanding is favoured (mostly).\n", + "- There may be bugs! Please report them. Thanks.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1) Notation and definitions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let $G$ be a [complete]( \"graph is undirected, has no self-loops, and each node is connected to all the other vertices\") [weighted]( \"the edges have a weight (a positive integer)\") graph with $n$ vertices." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Optimisation TSP**:\n", + "> Given $G$, find a cycle of minimal total cost.\n", + "\n", + "Here:\n", + "- A *cycle* is a path that visits every vertex once, and goes back to the start point.\n", + "- The *total cost of the cycle* is the sum of the edge weights of the cycle.\n", + "\n", + "This problem is **NP-Hard** because its decision version is **NP-complete** (Garey and Johnson, 1979, p. 211)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 2) Testing methodology" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* **Exact method (Exhaustive search)**:\n", + " Average _time_ for instances with increasing $n$.\n", + "\n", + "* **Greedy and meta-heuristics**:\n", + " Average _time_ and _\"quality\"_ as $n$ increases.\n", + "\n", + "Instances will be generated randomly as shown in the next subsection." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2.1) Random instances sampling strategy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Four types of TSP instances will be generated by creating an **adjacency matrices** $M$ as follows:\n", + "1. **Asymmetric**: The edge weights are independent and uniformly random in an interval $[1,\\text{MAX_WEIGHT}]$, i.e the graph is assumed to be directed.\n", + "2. **Symmetric**: Like the asymmetric case but the graph is undirected, and the matrix is therefore symmetric: $M_{ij}=M_{ji}$.\n", + "3. **Euclidean**: Generate points using $(x,y)$ coordinates, then generate the adjacency matrix by calculating all the required distances. Recall that the distance between two points $(x_1,y_1)$ and $(x_2,y_2)$ is $\\sqrt{(x_1-x_2)^2+(y_1-y_2)^2}$. The points are generated in the rectangle defined by the points $(0,0)$ and $(\\text{MAX_Y},\\text{MAX_Y})$.\n", + "4. **Graphs with obvious shortest cycle**: A graph where all the distances are 2 except for the edges on a predefined cycle, where the distance is 1. Such a graph would be useful for testing/debugging the \"nearest neighbour greedy\" search." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Implementation of the instances generation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First start by importing relevant libraries." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Matplotlib is building the font cache; this may take a moment.\n" + ] + } + ], + "source": [ + "from random import randint, shuffle # random integers and random shuffling of a list\n", + "from itertools import permutations # iterate over all possible permutations of a list\n", + "from itertools import chain # concatenate range()'s'\n", + "from math import inf as oo # Infinity (∞) is larger than any number\n", + "from math import sqrt, log, factorial # square root, logarithm, and n!\n", + "from time import perf_counter # for measuring time. NB. 'perf_counter' is better/more accurate than 'time'\n", + "import networkx as nx # to draw sample graphs\n", + "import pandas as pd # to show the adjacency matrix in a nice format\n", + "import matplotlib.pyplot as plt # to plot graphs of time and quality vs n\n", + "import seaborn as sns # nice statistical plots -- see e.g. https://seaborn.pydata.org/tutorial/relational.html#relational-tutorial\n", + "sns.set_style(\"white\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Basics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let the set of vertices be $\\{0, 1, 2,\\ldots, n-1\\}$.\n", + "\n", + "For simplicity, we will consider $0$ to be the start and end point of cycles." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "class Graph:\n", + " ''' Random graphs '''\n", + " def __init__(self, n=0, type='asymmetric', MAX_WEIGHT=100, MAX_X=200, MAX_Y=200):\n", + " self.n = n\n", + " self.vertices = list(range(n)) # [0,1,...,n-1]\n", + " self.type = type\n", + " self.adj_matrix = [[oo for i in range(n)] for j in range(n)]\n", + " # Generate a random adjacency matrix according to the required type\n", + " if type=='symmetric': self.__random_symmetric_graph(n,MAX_WEIGHT)\n", + " elif type=='Euclidean': self.__random_euclidean_graph(n,MAX_X,MAX_Y)\n", + " elif type=='easy': self.__random_cycle_graph(n)\n", + " else: self.__random_asymmetric_graph(n,MAX_WEIGHT) # assume 'asymmetric' otherwise\n", + " \n", + " def __getitem__(self, i):\n", + " ''' Allow indexing to get the weights '''\n", + " return self.adj_matrix[i]\n", + " \n", + " def __random_asymmetric_graph(self,n, MAX_WEIGHT):\n", + " ''' Asymmetric adjacency matrix of size nxn '''\n", + " for i in range(n):\n", + " for j in range(n):\n", + " if i==j: continue # no self-loops\n", + " self.adj_matrix[i][j] = randint(1,MAX_WEIGHT)\n", + "\n", + " def __random_symmetric_graph(self,n,MAX_WEIGHT):\n", + " ''' Symmetric adjacency matrix of size nxn '''\n", + " for i in range(n):\n", + " for j in range(i+1,n):\n", + " w = randint(1,MAX_WEIGHT)\n", + " self.adj_matrix[i][j] = w\n", + " self.adj_matrix[j][i] = w\n", + "\n", + " def __random_cycle_graph(self,n):\n", + " ''' Symmetric adjacency matrix of size nxn with one reandomly chosen cycle\n", + " All the edge weights are 2 except for the cycle (weight=1) '''\n", + " self.adj_matrix = [[2 for _ in range(n)] for _ in range(n)] # All weights=2\n", + " # Select a random cycle which will have weight=1\n", + " cycle = list(range(1,n)) # don't include 0 as we want to be at the start\n", + " shuffle(cycle) # in-place random permutation\n", + " cycle = [0]+cycle+[0] # cycle starting and ending at 0\n", + " for a,b in zip(cycle, cycle[1:]): # set the cycle's weights to 1\n", + " self.adj_matrix[a][b] = 1\n", + " self.adj_matrix[b][a] = 1\n", + "\n", + " def __random_euclidean_graph(self,n,MAX_X,MAX_Y):\n", + " ''' Symmetric adjacency matrix of a Euclidean graph of size nxn '''\n", + " # (1/2) Generate random (x,y) points\n", + " points = set()\n", + " while len(points)\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01234567
021122222
112222122
212221222
322221221
422112222
521222212
622222121
722212212
\n", + "" + ], + "text/plain": [ + " 0 1 2 3 4 5 6 7\n", + "0 2 1 1 2 2 2 2 2\n", + "1 1 2 2 2 2 1 2 2\n", + "2 1 2 2 2 1 2 2 2\n", + "3 2 2 2 2 1 2 2 1\n", + "4 2 2 1 1 2 2 2 2\n", + "5 2 1 2 2 2 2 1 2\n", + "6 2 2 2 2 2 1 2 1\n", + "7 2 2 2 1 2 2 1 2" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "G = Graph(8,'easy')\n", + "show(G)\n", + "draw(G)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5x5 symmetric graph:\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01234
0inf15.080.080.041.0
115.0inf26.088.045.0
280.026.0inf54.078.0
380.088.054.0inf40.0
441.045.078.040.0inf
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4\n", + "0 inf 15.0 80.0 80.0 41.0\n", + "1 15.0 inf 26.0 88.0 45.0\n", + "2 80.0 26.0 inf 54.0 78.0\n", + "3 80.0 88.0 54.0 inf 40.0\n", + "4 41.0 45.0 78.0 40.0 inf" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "G = Graph(5,'symmetric')\n", + "show(G)\n", + "draw(G)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3x3 Euclidean graph:\n", + "Points: [(18, 101), (183, 133), (22, 120)]\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
012
0inf168.07438819.416488
1168.074388inf161.523992
219.416488161.523992inf
\n", + "
" + ], + "text/plain": [ + " 0 1 2\n", + "0 inf 168.074388 19.416488\n", + "1 168.074388 inf 161.523992\n", + "2 19.416488 161.523992 inf" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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6dOHsmXLMmzYMEaMGMEf/vAHYmNjDf7OTUATm6ajn46Im5syZQqff/455cqVo2XLlowZM4aFCxcyZcoUGjRowLlz5zh48CBWq5WHH36Yli1b0qFDB95++21mz57NmDFj2LJlC2XLliU8PJy5c+fStGlTwsLCmDp1KkuXLqVDhw7cfffdBAYG8sMPPxj9LZuDujzTUvCJuAm73c4XX3zB0qVLAXjuueeoWbMme/fu5c0336Rp06b07duXd999lxUrVhR/3ebNm6lYsSJBQUE888wz+Pj4ANCjRw8++OADAgMD2blzJxaLhR9//LG4K4yKimLu3LkEBemau5umvTxT03EKIgbavHkzqampAGzcuJH58+fTr18/6tevz7/+9S+WL19OxYoVKdqR6N27NwsXLiz++s8++4y9e/fy0ksvAbBt2zYef/xxDh06xLJly2jXrh1hYWHFy5jPP/988XMdDodC72YV5MCBxbD/E/ArC3cOgpj2Cj2T0U9LxACff/45EyZMoGLFijRt2pQHH3yQ48ePU6dOHTp27Ej16tUZP348tWvXZvny5eTn5wPQtWtXnnvuOQCys7PZsGEDb731FjabjV9++YXY2FgaNmzI0KFDqVKlCqNHj8ZisRAXF0dcXNxlNfzmIdNyOXV5HkM/NZFSUnT+5fbt23n99dcpV64ciYmJtG/fni1btvD0008zYMAA1q9fzwsvvMDatWvp168f4OzcsrKyaNasGWFhYSQlJZGQkEBYWBgxMTHs37+fVatW8cEHH3D69GmOHTvGH//4R0aNGsWoUaMoU0aLOSVGe3keR8EnUsJ2795NVlYW99xzD+np6UydOpW7776bRo0a8dprrxESEsLu3buLQ65+/fokJSWRkpJClSpV2LFjB//85z+ZNm0aAF26dGHhwoWULVuW7OxsEhISqFu3LitWrOCRRx7h8ccfp1mzZurgSoO6PI+kn6DI72S32ylTpgypqan06dOH4OBgypUrR0pKCu3ateOHH37ggw8+AOCuu+5i+/btVK5cmY8++oiHHnqIgwcPUr16dTZs2EDfvn1Zvnw5f/7zn2nSpAnbt2+nSZMmlCtXjilTphAQEMDjjz8OwPDhw438tj2bujyPpuv4RG7B4cOHi6+l69q1K0OGDOFf//oXaWlpjBkzhnnz5rFjxw4effRRXn31VQYMGMD999/P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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "G = Graph(3,'Euclidean')\n", + "show(G)\n", + "draw(G)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3x3 asymmetric graph:\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
012
0inf62.021.0
165.0inf39.0
263.049.0inf
\n", + "
" + ], + "text/plain": [ + " 0 1 2\n", + "0 inf 62.0 21.0\n", + "1 65.0 inf 39.0\n", + "2 63.0 49.0 inf" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "G = Graph(3,'asymmetric')\n", + "show(G)\n", + "draw(G)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3) Solution methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3.1) Exact method - Exhaustive search" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Idea" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The idea is to:\n", + "- Consider vertex $0$ as the start and end point.\n", + "- Iterate over all permutations of the vertices $\\{1,2,\\ldots, n-1\\}$.\n", + " - Calculate cost of each permutation and keep track of minimum cost permutation.\n", + "- Return the cycle with minimum cost.\n", + "\n", + "More formally, the pseudo-code is as follows:\n", + "\n", + "**Input**: $G$.\n", + "\n", + "**Output**: a cycle in $G$ of shortest cost." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Pseudocode" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1. $bestcycle\\gets \\emptyset$\n", + "2. $bestcost\\gets \\infty$\n", + "3. **for all** possible cycles $p$ in $G$ (starting and ending at $0$) **do**\n", + "4. $\\quad$ $c\\gets$ cost of $p$\n", + "2. $\\quad$ **if** $c\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01234567
021221222
112212222
222212221
321122222
412222212
522222211
622221122
722122122
\n", + "" + ], + "text/plain": [ + " 0 1 2 3 4 5 6 7\n", + "0 2 1 2 2 1 2 2 2\n", + "1 1 2 2 1 2 2 2 2\n", + "2 2 2 2 1 2 2 2 1\n", + "3 2 1 1 2 2 2 2 2\n", + "4 1 2 2 2 2 2 1 2\n", + "5 2 2 2 2 2 2 1 1\n", + "6 2 2 2 2 1 1 2 2\n", + "7 2 2 1 2 2 1 2 2" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "([0, 1, 3, 2, 7, 5, 6, 4, 0], 8)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "G=Graph(8,'easy')\n", + "show(G)\n", + "draw(G)\n", + "exhaustive_search(G)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Testing exhaustive search time cost" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Test completely random graphs:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5, 6, 7, 8, 9, 10, 11, " + ] + } + ], + "source": [ + "MAX_REPETITIONS = 10\n", + "MAX_n = 12\n", + "\n", + "exhaustive_data = pd.DataFrame(columns=['n', 'time'])\n", + "\n", + "i=0\n", + "for n in range(5,MAX_n):\n", + " print(n, end=', ')\n", + " for repetitions in range(MAX_REPETITIONS):\n", + " G = Graph(n)\n", + " # Time the search\n", + " t0 = perf_counter()\n", + " exhaustive_search(G)\n", + " t1 = perf_counter()\n", + " # Record the data\n", + " exhaustive_data.loc[i] = [n, t1-t0]\n", + " i += 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us compute some statistics on the the times that we have just measured." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
time
minmaxmeanstd
n
5.00.0001130.0002780.0002080.000046
6.00.0005200.0012660.0007690.000283
7.00.0034540.0060400.0039080.000763
8.00.0269250.0415330.0307710.004647
9.00.2348100.2674920.2503360.011808
10.02.3700033.9041862.7468970.508609
11.025.34528232.47401327.6711312.497308
\n", + "
" + ], + "text/plain": [ + " time \n", + " min max mean std\n", + "n \n", + "5.0 0.000113 0.000278 0.000208 0.000046\n", + "6.0 0.000520 0.001266 0.000769 0.000283\n", + "7.0 0.003454 0.006040 0.003908 0.000763\n", + "8.0 0.026925 0.041533 0.030771 0.004647\n", + "9.0 0.234810 0.267492 0.250336 0.011808\n", + "10.0 2.370003 3.904186 2.746897 0.508609\n", + "11.0 25.345282 32.474013 27.671131 2.497308" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "exhaustive_data.groupby('n').agg(['min','max','mean','std'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us plot this data to see it visually.\n", + "We will use the following convention:\n", + "- The blue dots are the actual measurements.\n", + "- The solid red line is the mean time.\n", + "- The light red shade shows the standard deviation around the mean." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAssAAAF/CAYAAAC/u4QlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABAQElEQVR4nO3deXxU9b3H//dMFrITCDthCbIJiKgIpSpqFUFaXFgF6ob19vbn47bU+2tFLmorrWhtsf68db3tvbfKKqJie4sLLqggtVoQQVQgYQlJgGyTbSYzmfP748tkEjKTBMzMmSSv5+MxD8g5Z+Z8cHovb79+z+fjsCzLEgAAAIAmnHYXAAAAAMQqwjIAAAAQBmEZAAAACIOwDAAAAIRBWAYAAADCICwDAAAAYRCWAaANjBgxQjNmzND111+vG264QVOnTtWsWbO0e/fuiNxvzZo1evbZZ9vs8xYtWqSSkhJJ0p133qn9+/e32WcDQHvmoM8yAHxzI0aM0Pbt29W9e/f6Y3/84x/1xhtvaN26dTZW1jqh6gcASPF2FwAAHZHP51NBQYG6du0qSXriiSdUWlqq+++/v8nPN998s8aNG6dPP/1UBQUFuuiii/TII4/o2LFjuu2223T55Zdr165dKi8v109/+lNNnz690fu/853v6MYbb9T27dtVUFCga6+9Vj//+c8lSc8++6w2bNig1NRUjR8/Xlu2bNHbb7/dqNZ7771XknTrrbfq2Wef1cKFC/X444+rurpaK1euVK9evfT1118rOTlZ//Zv/6bnn39eubm5uuaaa7R06VJJ0ttvv62nnnpKXq9XSUlJuueee3TBBRdE6x83AEQMYRkA2sitt94qh8OhkpISdenSRVdeeaVWrFjRqvcePnxYzz//vKqrq3Xttdfq73//u7Kzs3XkyBFdeumluu+++/T666/r4Ycf1vTp05u8v7q6WqtXr1ZRUZGmTJmi+fPnKy8vTxs3btSGDRuUnp6u//iP/wh57xUrVmjjxo363//93yYry7t379aGDRs0atQo/eAHP9Czzz6rP//5z6qsrNTkyZN1xx13qKamRo899pj+/Oc/q1u3bvr66691++2364033lBKSsqZ/4MEgBhCWAaANhIIm3v37tWdd96pCy64QFlZWa1675VXXimn06m0tDQNGjRI5eXlys7OVkJCgi6//HJJ0qhR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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(12, 6))\n", + "sns.scatterplot(data=exhaustive_data, x='n', y='time', ax=ax)\n", + "sns.lineplot(data=exhaustive_data, x='n', y='time', ci='sd', color='red', ax=ax)\n", + "plt.title('Running time')\n", + "plt.xlabel('n')\n", + "plt.ylabel('Time (s)')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Theoretically, the ratio of \"the time taken for a graph of size $n$\" to $n!$ should approach a constant, as $n$ gets larger and larger. Let us check and estimate this constant." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
timetime/n!
n
5.00.0002081.736583e-06
6.00.0007691.067708e-06
7.00.0039087.754246e-07
8.00.0307717.631724e-07
9.00.2503366.898581e-07
10.02.7468977.569711e-07
11.027.6711316.932202e-07
\n", + "
" + ], + "text/plain": [ + " time time/n!\n", + "n \n", + "5.0 0.000208 1.736583e-06\n", + "6.0 0.000769 1.067708e-06\n", + "7.0 0.003908 7.754246e-07\n", + "8.0 0.030771 7.631724e-07\n", + "9.0 0.250336 6.898581e-07\n", + "10.0 2.746897 7.569711e-07\n", + "11.0 27.671131 6.932202e-07" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "exhaustive_data['time/n!'] = exhaustive_data['time']/exhaustive_data['n'].transform(factorial)\n", + "exhaustive_data.groupby('n').mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7IAAAEOCAYAAAC0FyvTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABQLElEQVR4nO3deXRc5X038O+dfdNoRosleZFXCRscQmxeAsE4IUtN06RJDMQxJ0ALJYHSJAQOYSnhhUIwFEhp3TgsaTb3BEg4zqkdUnLSwmswOI4x2OAd27JsSZatZbTMjGbT3PePH1ezaEabZ3Rn+X7OmSPpzkh6PJZG93t/z/N7FFVVVRAREREREREVCYPeAyAiIiIiIiKaDAZZIiIiIiIiKioMskRERERERFRUGGSJiIiIiIioqDDIEhERERERUVFhkCUiIiIiIqKiUhJBds+ePbj22mun9LnPPPMM1qxZg9WrV+M3v/lNjkdGREREREREuWbSewBn67nnnsPmzZtht9sn/bk7duzAu+++i+effx5DQ0P46U9/mocREhERERERUS4VfUW2sbER69evH/n40KFDuPbaa3HttdfiW9/6FgYHB7N+7rZt29Dc3Ixbb70VN998Mz71qU9Nw4iJiIiIiIjobBR9RXbVqlVoa2sb+fj73/8+HnnkESxatAi/+c1v8JOf/ATLly/HP//zP6d83m233Qafz4eOjg48/fTTaGtrwy233IJXXnkFiqJM9z+DiIiIiIiIJqjog2y6o0eP4sEHHwQARKNRzJs3DytXrsTKlStHPXb37t1YsGABLBYLFixYAKvVit7eXlRXV0/3sImIiIiIiGiCSi7Izp8/H4899hhmzpyJXbt2oaurK+tjly9fjl/+8pf427/9W5w5cwZDQ0PweDzTN1giIiIiIiKatJILsg888ADuuusuxGIxKIqCH/zgB1kfe/nll2Pnzp246qqroKoq7r//fhiNxmkcLREREREREU2WoqqqqvcgiIiIiIiIiCaq6LsWExERERERUXkp6qnFH//4xzFr1iy9h0FERERERER50N7ejh07dow6XtRBdtasWdi0aZPewyAiIiIiIqI8WL16dcbjnFpMRERERERERYVBloiIiIiIiIoKgywREREREREVFQZZIiIiIiIiKioMskRERERERFRUirprcaFSVRXBYBDhcBhWqxUOhwOKoug9LCIiIiIiopLAIJtjqqqis7MTPp9v5JjX60V9fT3DLBERERERUQ5wanGOBYPBlBALAD6fD8FgUKcRERERERERlRYG2RwLh8OTOk5ERERERESTwyCbY1ardVLHiYiIiIiIaHIYZHPM4XDA6/WmHPN6vXA4HDqNiIiIiIiIqLSw2VOOKYqC+vp6uN1udi0mIiIiIiLKAwbZPFAUBU6nE06nU++hEBERERERlZycB9loNIp7770X7e3tiEQiuOWWW/CZz3xm5P7f/e53+MUvfgGj0Yjm5mY88MADMBgM+MpXvgKXywUAmD17NtatW5froREREREREVEJyHmQ3bx5MzweDx5//HH09fXhy1/+8kiQDYVCeOqpp7BlyxbY7XbcfvvteO2117BixQqoqoqNGzfmejhERERERERUYnIeZK+44gqsWrUKAKCqKoxG48h9FosFL7zwAux2OwAgFovBarXi4MGDGBoawg033IBYLIbbb78dF1xwQa6HRkRERERERCUg50FWWxfq9/vx7W9/G7fddtvIfQaDATU1NQCAjRs3IhgM4tJLL8Xhw4dx44034uqrr8bx48dx00034ZVXXoHJxCW8RERERERElCovSfHUqVO49dZbcc011+CLX/xiyn3xeByPP/44WlpasH79eiiKgvnz52Pu3Lkj73s8HnR1daGhoSEfwyMiIiIiIqIilvN9ZLu7u3HDDTfgzjvvxFVXXTXq/vvvvx/hcBgbNmwYmWL80ksv4dFHHwUAnD59Gn6/H7W1tbkeGhEREREREZWAnFdkn376aQwMDGDDhg3YsGEDAODqq6/G0NAQli5dipdeegkXXnghrr/+egDAddddh6uuugr33HMP1q5dC0VR8Mgjj3BaMREREREREWWkqKqq6j2IqVq9ejU2bdqk9zCIiIiIiIgoD7JlvpxPLSYiIiIiIiLKJwZZIiIiIiIiKioMskRERERERFRUGGSJiIiIiIioqDDIEhERERERUVFhkCUiIiIiIqKiwiBLRERERERERYVBloiIiIiIiIoKgywREREREREVFQZZIiIiIiIiKioMsvnU1wf4/XqPgoiIiIiIqKSY9B5ASWttBU6cABYulJvVqveIiIiIiIiIih4rsvlWUQG0tQGvvy7BdnhY7xEREREREREVNQbZfFMUoLoacLuB/fsl0J4+Daiq3iMj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N96Iq6++GsePH8dNN92EV155hSceBJ/Ph46ODjz99NNoa2vDLbfcgldeeQWKoug9NCogzzzzDG699Va9h0EFxOFwoL29HX/5l38Jn8+Hp59+Wu8hUYFYsmQJXnvtNXz2s5/Fnj17cPr0aQwPD8NoNOo9NNLJqlWr0NbWNvKxqqoj5xlOpxODg4N6DY0KQPrPx+c//3ns2LFDxxFNHSuyeTB//nz89V//NRRFwfz58+HxeNDV1aX3sKgAeDwerFixAhaLBQsWLIDVakVvb6/ew6ICMjAwgJaWFlx88cV6D4UKyM9//nOsWLECf/jDH/Bf//VfuPvuuxEOh/UeFhWAK6+8Ei6XC9dccw3++Mc/4rzzzmOIpRTJ62EDgQCXrFDJYJDNg5deegmPPvooAOD06dPw+/2ora3VeVRUCJYvX4433ngDqqri9OnTGBoagsfj0XtYVEB27tyJSy65RO9hUIFxu92oqKgAAFRWViIWi2F4eFjnUVEheP/993HJJZfg+eefxxVXXIE5c+boPSQqMOeee+5Ixe3111/HhRdeqPOIiHKDc13z4KqrrsI999yDtWvXQlEUPPLII5xWTACAyy+/HDt37sRVV10FVVVx//3388o5pWhpacHs2bP1HgYVmL/5m7/Bvffei2uuuQbRaBTf/e534XA49B4WFYC5c+fiX//1X/H000+joqICP/jBD/QeEhWYu+66C9///vfxwx/+EAsWLMCqVav0HhJRTiiqqqp6D4KIiIiIiIhooji1mIiIiIiIiIoKgywREREREREVFQZZIiIiIiIiKioMskRERERERFRUGGSJiIiIiIioqDDIEhERERERUVFhkCUiIiIiIqKiYtJ7AERERDS2TZs2YevWrQiFQjhx4gRuuukmrF69Wu9hERER6YYVWSIioiLg9/vxzDPP4Mc//jGeffZZvYdDRESkKwZZIiKiIrB48WIAQENDAyKRiM6jISIi0heDLBERURFQFEXvIRARERUMBlkiIiIiIiIqKoqqqqregyAiIiIiIiKaKFZkiYiIiIiIqKgwyBIREREREVFRYZAlIiIiIiKiosIgS0REREREREWFQZaIiIiIiIiKCoMsERERERERFRUGWSIiIiIiIioq/x/hQDztht7n2wAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ratio = plt.subplots(figsize=(16, 4))\n", + "sns.scatterplot(data=exhaustive_data, x='n', y='time/n!', alpha=0.3, ax=ratio, color='#777') # actual data\n", + "sns.lineplot (data=exhaustive_data, x='n', y='time/n!', alpha=0.3, ci='sd', ax=ratio, color='red') # mean" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us estimate the constant, and then how long it will take to solve the problem for graphs of increasing size (using this code on the current machine)." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6.932201737113193e-07" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "exhaustive_constant = exhaustive_data[exhaustive_data.n==MAX_n-1]['time/n!'].mean() # use the largest n available\n", + "exhaustive_constant" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10\t2\n", + "11\t2\n", + "12\t5\n", + "13\t1\n", + "14\t1\n", + "15\t1\n", + "16\t5\n", + "17\t7\n", + "18\t1\n", + "19\t2\n", + "20\t5\n", + "30\t5\n", + "40\t1\n", + "50\t6\n", + "60\t1\n", + "70\t2\n", + "80\t1\n", + "90\t3\n", + "100\t2\n" + ] + } + ], + "source": [ + "def time_in_human_units(t):\n", + " if t<60: return f'{t} seconds'\n", + " t /= 60 # now in minutes\n", + " if t<60: return f'{t} minutes'\n", + " t /= 60 # now in hours\n", + " if t<24: return f'{t} hours'\n", + " t /= 24 # now in days\n", + " if t<30: return f'{t} days'\n", + " t /= 30 # now in months\n", + " if t<12: return f'{t} months'\n", + " t = t*30/365.25 # now in years\n", + " if t<100: return f'{t} years'\n", + " return f'{t/100} centuries'\n", + "\n", + "for n in chain(range(10,21), range(30,101,10)):\n", + " estimated_running_time = exhaustive_constant*factorial(n) # O(n!)\n", + " print(f'{n}\\t{time_in_human_units(estimated_running_time):.1}') # constant_min is used" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Clearly, we cannot wait that long! We need alternatives..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Discussion" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Exhaustive search exhibits combinatorial running time $O(n!)$:\n", + "* So it is only useful/possible when $n$ is small, up to about 13 on the current machine if it needs to finish within an hour." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3.2) Approximation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3.2.1) Greedy search" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Nearest neigbours" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Idea\n", + "\n", + "Start at city 0, move to the nearest city, then from there to the next nearest city, and so on, until all cities are visited. Finally, return back to the start city." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Pseudocode\n", + "\n", + "1. $city \\gets 0$\n", + "2. $visited\\gets []$\n", + "3. **while** not all cities are visited **do**\n", + "4. $\\quad$ $nearest\\_city \\gets \\text{nearest city to $city$ that has not been visited yet}$\n", + "5. $\\quad$ Append $city$ to $visited$ $\\qquad\\qquad\\text{(i.e. mark $city$ as visited)}$\n", + "5. $\\quad$ $city\\gets nearest\\_city$\n", + "6. **end while**\n", + "8. **return** $visited$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Running time analysis" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The while-loop costs $O(n)$, and searching for the nearest city on line 4 costs $O(n)$ also, while the rest can be assumed to cost $O(1)$.\n", + "So the total cost of this greedy approach is therefore $O(n)\\times O(n) = O(n^2)$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Implementation" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "def greedy_nearest_neighbour(G):\n", + " ''' Returns best found cycle and its cost '''\n", + " unvisited = G.vertices.copy()\n", + " visited = [] # solution to be built\n", + " city = 0 # Start city\n", + " while len(unvisited)>0:\n", + " # Find nearest neighbour\n", + " nearest_city = None\n", + " shortest_distance = oo\n", + " for neighbour in unvisited:\n", + " if G[city][neighbour] < shortest_distance:\n", + " shortest_distance = G[city][neighbour]\n", + " nearest_city = neighbour\n", + " # Update 'cycle' and 'cities' and G then 'city'\n", + " visited.append(city)\n", + " unvisited.remove(city)\n", + " city = nearest_city\n", + " return (visited, cost(G, visited+[0]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Example" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5x5 easy graph:\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01234
022121
122211
212212
321122
411222
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4\n", + "0 2 2 1 2 1\n", + "1 2 2 2 1 1\n", + "2 1 2 2 1 2\n", + "3 2 1 1 2 2\n", + "4 1 1 2 2 2" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "([0, 2, 3, 1, 4], 5)" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "G=Graph(5,'easy')\n", + "show(G)\n", + "draw(G)\n", + "greedy_nearest_neighbour(G)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test time and quality" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us first test the greedy approach on **cycle graphs**, as it should work perfectly all the time." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10 20 30 40 50 60 70 80 90 100 " + ] + } + ], + "source": [ + "MAX_REPETITIONS = 500\n", + "\n", + "greedy_data = pd.DataFrame(columns=['n','time'])\n", + "\n", + "i = 0\n", + "for n in range(10,101,10):\n", + " print(n, end=' ')\n", + " for repetitions in range(MAX_REPETITIONS):\n", + " G = Graph(n,'easy') # this has shortest cycle length = n\n", + " t0 = perf_counter()\n", + " cycle, length = greedy_nearest_neighbour(G)\n", + " t1 = perf_counter()\n", + " greedy_data.loc[i] = [n, t1-t0]\n", + " i += 1" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
time
minmaxmeanstd
n
10.00.0000370.0001800.0000540.000016
20.00.0000940.0004440.0001370.000042
30.00.0001800.0005520.0002540.000067
40.00.0002980.0007440.0004250.000104
50.00.0004410.0010650.0006330.000152
60.00.0006200.0037020.0008920.000249
70.00.0008180.0019730.0011600.000273
80.00.0010820.0029250.0015400.000345
90.00.0013250.0031200.0019240.000431
100.00.0016240.0039560.0023510.000550
\n", + "
" + ], + "text/plain": [ + " time \n", + " min max mean std\n", + "n \n", + "10.0 0.000037 0.000180 0.000054 0.000016\n", + "20.0 0.000094 0.000444 0.000137 0.000042\n", + "30.0 0.000180 0.000552 0.000254 0.000067\n", + "40.0 0.000298 0.000744 0.000425 0.000104\n", + "50.0 0.000441 0.001065 0.000633 0.000152\n", + "60.0 0.000620 0.003702 0.000892 0.000249\n", + "70.0 0.000818 0.001973 0.001160 0.000273\n", + "80.0 0.001082 0.002925 0.001540 0.000345\n", + "90.0 0.001325 0.003120 0.001924 0.000431\n", + "100.0 0.001624 0.003956 0.002351 0.000550" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "greedy_data.groupby('n').agg(['min','max','mean','std'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We estimated above that the time for this method will scale like $O(n^2)$, so if we expect a graph $y=c\\cdot x^2$. If we take logarithms of both sides then we get $\\log y = 2\\log x+\\log c$. So, wif we use a log-log plot then we should expect a straight line. Let us check this." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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IiIi6jkGvjYyDAOGYaBeryNVryPhOPAtC2YYjvpN81CVIJBrqRQwNibhLpuVcMehKkREREREOxKfqbdRrVaD7/tQVTV6CXwfpmH0+tZuzvMaQ1XCiZnxOFAqyUs4VCUW6/WdEhERERHRBjHwtZHjOHAcB5VKBWnDgGdZSKVScF2317fWyvcbQ1VcV8KdrssqhP37G0NVEole3ykREREREW0DA18bmaYJ0zRRLBaRq1SQSCRQtW1YvWzpDCdmmqacv1MUOV83NATs2SPDVcKJmRyqQkREREQ0UBj42sjzPAwPD6NSqcBxHGieh/zQEHzf795NhBMzbVteVxSp2O3dKyEvnJjJoSpERERERAOPga/NwjN8iqJAURT44bCTTnBdCXfNU0AzGWBysnVipqZ17h6IiIiIiGjHYuBroyAIouXrWF5GwnEwlEwiaEfou97EzEQCGBmRs3fhUBVOzCQiIiIiojVMB22kKArOnz8PQCp9vu9jbm4O09PTm/tAvt+YmOl50pYZi0mwO3CgMVQlHu/AoyAiIiIiokHBwNdGnuchk8mgVqtF15KpFLwbneELh6oYBuA4Eu40TVoy9+5thLtksguPgIiIiIiIBgkDXxul02kkEgn4vo9kIoG4okCNxZAMw1oQtA5VCSdm5vPAzAxQKDSGqnBiJhERERERbRMDXxslEgnMzMzgzJkziMXjSHgeJoeHkanVgPl5CXHZLDA11TpUhRMziYiIiIioAxj42mh0dBQXL17EbbfdBk3XMWRZqKZSSN57L3DXXRLuOFSFiIiIiIi6hOmjjTKZDABgZWUFXqmEJU1DKpVC8uBBadskIiIiIiLqIga+NvI8DyMjI1hdXYVt24jH48jn8/A8r9e3RkREREREuxADXxtlMhmk02nouh4tYI/H41Hlj4iIiIiIqJsY+NqoWCxibGwMS0tLUeArFosoFou9vjUiIiIiItqFGPja7MCBAygUCrAsC4lEgmGPiIiIiIh6hoGvAxjyiIiIiIhoJ+ACOCIiIiIiogHFwEdERERERDSgGPiIiIiIiIgGFAMfERERERHRgGLgIyIiIiIiGlAMfERERERERAOKgY+IiIiIiGhAMfARERERERENqL5fvH7x4kU8+uijvb4NIiIiIiKinrh48eK6b1OCIAi6eC9ERERERETUJWzpJCIiIiIiGlAMfERERERERAOKgY+IiIiIiGhAMfARERERERENKAY+IiIiIiKiAcXAR0RERERENKAY+Lro6aefxr/9t/+217dBRERERERt8PTTT+MP/uAP8Lu/+7t4+eWXe30719X3i9f7xblz5/DSSy/Bsqxe3woREREREbWBYRj4kz/5E7z00kv44Q9/iKNHj/b6lq7BCl+X7N+/H//4H//jXt8GERERERG1yfve9z4YhoFvfOMb+NjHPtbr27kuVviIiIiIiIi2YGlpCf/xP/5HfO5zn0OpVOr17VwXK3xt8Pzzz+PTn/40AMD3ffzhH/4hHnvsMXz605/GuXPnenx3RERERES0WRt5jv+lL30J8/Pz+LM/+zP87d/+bS9vd12s8G3T17/+dXznO99BKpUCAHzve9+Dbdv45je/iZMnT+JLX/oSvvrVr0Z//8tf/nKvbpWIiIiIiDZgo8/x/8N/+A89vtObY4Vvm/bt24evfOUr0evPPPMM3vnOdwIAjh8/jlOnTvXq1oiIiIiIaAsG6Tk+A982Pfzww9D1RqG0Wq0im81Gr2uaBtd1e3FrRERERES0BYP0HJ+Br82y2SxqtVr0uu/7LT8sRERERETUX/r5OT4DX5udOHECjz/+OADg5MmTOHz4cI/viIiIiIiItqOfn+P3RyztIw899BCefPJJfPKTn0QQBPjiF7/Y61siIiIiIqJt6Ofn+EoQBEGvb4KIiIiIiIjajy2dREREREREA4qBj4iIiIiIaEAx8BEREREREQ0oBj4iIiIiIqIBxcBHREREREQ0oBj4iIiIiIiIBhQDHxERERER0YBi4CMiIiIiIhpQDHxEREREREQDSu/1DRAREfWrb3/72/jBD34A0zTx5ptv4rd/+7fx6KOP9vq2iIiIIqzwERERbUO1WsVf/uVf4qtf/Sq+9rWv9fp2iIiIWjDwERERbcPRo0cBAJOTk7Btu8d3Q0RE1IqBj4iIaBsURen1LRAREa2LgY+IiIiIiGhAKUEQBL2+CSIiIiIiImo/VviIiIiIiIgGFAMfERERERHRgGLgIyIiIiIiGlAMfERERERERAOKgY+IiIiIiGhAMfARERERERENKAY+IiIiIiKiAcXAR0RERERENKD+fxgxs1zUW5+lAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(15,5))\n", + "sns.scatterplot(data=greedy_data, x='n', y='time', alpha=0.1, color='#777') # actual data\n", + "sns.lineplot(data=greedy_data, x='n', y='time', ci='sd', color='red') # mean\n", + "plt.xscale('log')\n", + "plt.yscale('log')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us estimate the slope of the mean line." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "MAX_REPETITIONS = 500\n", + "\n", + "greedy_data2 = pd.DataFrame(columns=['n','time'])\n", + "\n", + "for n in range(10,101,10):\n", + " greedy_data2.loc[n] = [n, n**3]\n", + "plt.figure(figsize=(15,5))\n", + "sns.scatterplot(data=greedy_data, x='n', y='time', color='#777') # actual data\n", + "sns.scatterplot(data=greedy_data2, x='n', y='time', color='#777') # actual data\n", + "sns.lineplot(data=greedy_data, x='n', y='time', ci='sd', color='red') # mean\n", + "plt.xscale('log')\n", + "plt.yscale('log')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That is pretty close to 2!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Symmetric" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us next see what happens with **symmetric graphs**. This time we will compare it against the exhaustive search to see if it is accurate." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2..............................3..............................4..............................5..............................6..............................7..............................8..............................9..............................10..............................11.............................." + ] + } + ], + "source": [ + "MAX_REPETITIONS = 30\n", + "\n", + "greedy_sym_data = pd.DataFrame(columns=['n','time','quality'])\n", + "\n", + "i = 0\n", + "for n in range(2,MAX_n):\n", + " print(n, end='')\n", + " for repetitions in range(MAX_REPETITIONS):\n", + " print('.', end='')\n", + " G = Graph(n,'symmetric')\n", + " # Solve exactly\n", + " actual_shortest_length = exhaustive_search(G)[1]\n", + " # Solve with Greedy\n", + " t0 = perf_counter()\n", + " cycle, greedy_length = greedy_nearest_neighbour(G)\n", + " t1 = perf_counter()\n", + " # Collect data\n", + " greedy_sym_data.loc[i] = [n, t1-t0, (greedy_length/actual_shortest_length-1)*100]\n", + " i += 1" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
timequality
minmaxmeanminmaxmean
n
2.00.0000100.0000540.0000160.00.0000000.000000
3.00.0000120.0000340.0000170.00.0000000.000000
4.00.0000160.0000610.0000210.067.2131155.500613
5.00.0000180.0000320.0000220.078.5123979.329975
6.00.0000230.0006740.0000530.0100.00000012.965886
7.00.0000280.0000580.0000390.063.15789516.696266
8.00.0000350.0001000.0000480.0108.88888926.950605
9.00.0000430.0000970.0000600.088.69565225.887296
10.00.0000470.0000920.0000630.087.97814235.665674
11.00.0000480.0001580.0000720.0101.40845123.185210
\n", + "
" + ], + "text/plain": [ + " time quality \n", + " min max mean min max mean\n", + "n \n", + "2.0 0.000010 0.000054 0.000016 0.0 0.000000 0.000000\n", + "3.0 0.000012 0.000034 0.000017 0.0 0.000000 0.000000\n", + "4.0 0.000016 0.000061 0.000021 0.0 67.213115 5.500613\n", + "5.0 0.000018 0.000032 0.000022 0.0 78.512397 9.329975\n", + "6.0 0.000023 0.000674 0.000053 0.0 100.000000 12.965886\n", + "7.0 0.000028 0.000058 0.000039 0.0 63.157895 16.696266\n", + "8.0 0.000035 0.000100 0.000048 0.0 108.888889 26.950605\n", + "9.0 0.000043 0.000097 0.000060 0.0 88.695652 25.887296\n", + "10.0 0.000047 0.000092 0.000063 0.0 87.978142 35.665674\n", + "11.0 0.000048 0.000158 0.000072 0.0 101.408451 23.185210" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "greedy_sym_data.groupby('n').agg(['min','max','mean'])" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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f/mXf9nU+x86dEh33nln42XbtnXXXXfp9ttv15133qnjx49Lkn75l39Zd911l774xS/qjW98Y1O/BmCper2uP/zDP9Qdd9yht771rTp69Oim3p9runtMT0/rla98pZ577rlNvR/XANrRJz7xCd1+++16y1veor/927/d1PtyTQPtac+ePXrHO97R6tPoCjRtuYCvfvWrSiQS+rM/+zPNzc3pzW9+s1772tc2Xn/69GmNjY2d97wkPfDAA/rqV7+qcDjcOPbQQw+pUqnowQcf1MGDB3X33Xfr3nvv1TXXXKO77757+74w9KxvfOMbkqQvfvGLevjhh/WRj3xE9957b+P1XNO9oVqt6q677lIoFDrvdVwD6DQPP/ywnnjiCf3N3/yNisWiPv3pTy97Pdc0gF5Hhe8CfvZnf1a/8zu/I0lyHEder7fxulKppPe85z166KGH9OlPf1r//b//92Xvu3v3bn3sYx9bduyxxx7TzTffLEm67rrr9NRTT23xVwAs9zM/8zP64Ac/KEk6c+bMsi5zXNO948Mf/rDuuOMODQ0NLTvONYBO9G//9m+64oor9O53v1vvfOc79apXvarxOq5poD0trayvVVVH81Dhu4BoNCpJyuVy+u3f/m295z3vabwuFArpU5/6lN7whjdoeHhYX/jCF5a976233qpTp04tO5bL5RSLxRove71e1Wo1+Xz8GLB9fD6f3ve+9+mf//mf9dGPfrRxnGu6N3zlK19RKpXSzTffrPvvv3/Z67gG0IlmZ2d15swZ3XfffTp16pT+43/8j/q///f/yrIsrmmgDa2srK9VVXfdc889rTrVrkGFbx1nz57V2972Nr3pTW/SG97whsZxx3H00Y9+VD/5kz+paDSqL3/5y+t+rFgspnw+33jZtm3+gaAlPvzhD+vrX/+6/viP/1iFQkES13Sv+D//5//oO9/5ju68804dPnxY73vf+xodB7kG0IkSiYR+6qd+SoFAQPv27VMwGNTMzIwkrmmgHa2srFNV33oEvguYmprSO97xDr33ve/Vbbfdtux1pVJJe/fu1Yc+9CHdd999qlar6368G264Qd/85jclSQcPHtQVV1yxJecNrOXv//7v9YlPfEKS6ThnWZY8HvNngGu6N3zhC1/Q5z//eX3uc5/TVVddpQ9/+MMaHByUxDWAzvSyl71M3/rWt+Q4jiYmJlQsFpVIJCRxTQPt6NZbb132IMpaVXU0Dw9ZXcB9992nTCajv/qrv9Jf/dVfSTJl6FAopHA4rH/37/6dJCkYDOptb3vbuh/vlltu0be//W3dcccdchxHH/rQh7b0/IGVXve61+kP//AP9au/+quq1Wr6oz/6o0bjDq5pcA2gE7361a/WI488ottuu02O4+iuu+5q7LnnmgbaH1X1rWc5juO0+iQAAAAA9IZTp07pd3/3d/WlL31JX//61/WNb3xDd999tw4ePKiPf/zj+uQnP9nqU+wqxGcAAAAALUFVfetR4QMAAACALkXTFgAAAADoUgQ+AAAAAOhSBD4AAAAA6FIEPgAAAADoUgQ+AAAAAOhSBD4AAAAA6FIEPgAAAADoUgQ+AAAAAOhSBD4AAAAA6FK+Vp8AAACd6itf+Yr+9V//VaVSSSdOnNBv/MZv6C1veUurTwsAgAYqfAAAXIJcLqdPfOITuvfee3X//fe3+nQAAFiGwAcAwCW48sorJUmjo6OqVCotPhsAAJYj8AEAcAksy2r1KQAAsCYCHwAAAAB0KctxHKfVJwEAAAAAaD4qfAAAAADQpQh8AAAAANClCHwAAAAA0KUIfAAAAADQpQh8AAAAANClCHwAAAAA0KUIfAAAAADQpQh8AAAAANCl/n+dT5r/UHSfMwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(15,5))\n", + "sns.scatterplot(data=greedy_sym_data, x='n', y='time', alpha=0.3, color='#777') # actual data\n", + "sns.lineplot(data=greedy_sym_data, x='n', y='time', ci='sd', color='red') # mean\n", + "plt.xscale('log')\n", + "plt.yscale('log')" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(15,5))\n", + "sns.scatterplot(data=greedy_sym_data, x='n', y='quality', alpha=0.3, color='#777') # actual data\n", + "sns.lineplot(data=greedy_sym_data, x='n', y='quality', ci='sd', color='green') # mean" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Euclidean graphs**" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2..............................3..............................4..............................5..............................6..............................7..............................8..............................9..............................10..............................11.............................." + ] + } + ], + "source": [ + "MAX_REPETITIONS = 30\n", + "\n", + "greedy_euc_data = pd.DataFrame(columns=['n','time','quality'])\n", + "\n", + "i = 0\n", + "for n in range(2,MAX_n):\n", + " print(n, end='')\n", + " for repetitions in range(MAX_REPETITIONS):\n", + " print('.', end='')\n", + " G = Graph(n,'Euclidean')\n", + " # Solve exactly\n", + " actual_shortest_length = exhaustive_search(G)[1]\n", + " # Solve with Greedy\n", + " t0 = perf_counter()\n", + " cycle, greedy_length = greedy_nearest_neighbour(G)\n", + " t1 = perf_counter()\n", + " # Collect data\n", + " greedy_euc_data.loc[i] = [n, t1-t0, (greedy_length/actual_shortest_length-1)*100]\n", + " i += 1" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
timequality
minmaxmeanminmaxmean
n
2.00.0000100.0000240.0000150.0000000.000000e+000.000000e+00
3.00.0000120.0000270.0000160.0000002.220446e-147.401487e-16
4.00.0000150.0000910.0000230.0000001.754992e+011.971334e+00
5.00.0000180.0000380.0000220.0000001.584175e+014.011366e+00
6.00.0000210.0001250.0000350.0000002.096390e+014.687610e+00
7.00.0000270.0000590.0000390.0000002.789743e+016.990823e+00
8.00.0000330.0000780.0000480.0000002.190020e+017.586625e+00
9.00.0000390.0001100.0000580.0000003.279997e+019.431038e+00
10.00.0000440.0001040.0000670.0000003.614096e+011.035504e+01
11.00.0000530.0001630.0000751.0173792.787008e+011.283263e+01
\n", + "
" + ], + "text/plain": [ + " time quality \n", + " min max mean min max mean\n", + "n \n", + "2.0 0.000010 0.000024 0.000015 0.000000 0.000000e+00 0.000000e+00\n", + "3.0 0.000012 0.000027 0.000016 0.000000 2.220446e-14 7.401487e-16\n", + "4.0 0.000015 0.000091 0.000023 0.000000 1.754992e+01 1.971334e+00\n", + "5.0 0.000018 0.000038 0.000022 0.000000 1.584175e+01 4.011366e+00\n", + "6.0 0.000021 0.000125 0.000035 0.000000 2.096390e+01 4.687610e+00\n", + "7.0 0.000027 0.000059 0.000039 0.000000 2.789743e+01 6.990823e+00\n", + "8.0 0.000033 0.000078 0.000048 0.000000 2.190020e+01 7.586625e+00\n", + "9.0 0.000039 0.000110 0.000058 0.000000 3.279997e+01 9.431038e+00\n", + "10.0 0.000044 0.000104 0.000067 0.000000 3.614096e+01 1.035504e+01\n", + "11.0 0.000053 0.000163 0.000075 1.017379 2.787008e+01 1.283263e+01" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "greedy_euc_data.groupby('n').agg(['min','max','mean'])" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3IAAAE7CAYAAACYH7NsAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABhSElEQVR4nO3dfYwkd30n/ndVdVV1V3dXP8zj7uzs7JPXjzEmB7YjiAkcxsTCgThGh8klOswhjiMihhPY+GwDMoLjCCQRYCBcpLszcD4gKFg6KUhnIZwD5F9yFxtsB9u7Xu/OPsxzP9dz1ff3R2/XTu/M2LMzPdNdM++XZO1MTa/7O7Uz3fWu7+f7+UpCCAEiIiIiIiJKDLnfAyAiIiIiIqJLwyBHRERERESUMAxyRERERERECcMgR0RERERElDAMckRERERERAnDIEdERERERJQwqX4PYC033HADJiYm+j0MIiIiIiKivjhz5gyefPLJVb82sEFuYmICP/zhD/s9DCIiIiIior64/fbb1/waSyuJiIiIiIgShkGOiIiIiIgoYRjkiIiIiIiIEoZBjoiIiIiIKGEY5IiIiIiIiBKGQY6IiIiIiChhGOSIiIiIiIgSZmD3kSMiIiIiom5CCFiWBdd1oes6DMOAJEn9Hhb1AYMcEREREVECCCEwMzODSqUSHyuVShgfH2eY24VYWklERERElACWZXWFOACoVCqwLKtPI6J+YpAjIiIiIkoA13Uv6TjtbAxyREREREQJoOv6JR2nnY1BjoiIiIgoAQzDQKlU6jpWKpVgGEafRkT9xGYnREREREQJIEkSxsfHYZomu1bS1gS5MAxx//3348SJE5AkCZ/5zGcQBAE++MEP4sCBAwCAO++8E7feeutWPD0RERER0Y4kSRKy2Syy2Wy/h0J9tiVB7ic/+QkA4NFHH8WTTz6JP//zP8db3vIWvO9978Ndd921FU9JRERERES0a2xJkHvrW9+K3/md3wEAnD17FqZp4plnnsGJEyfw+OOPY2pqCvfddx9yudxWPD0REREREdGOtmXNTlKpFO655x489NBDuO2223DttdfiE5/4BL7zne9gcnISX/va17bqqYmIiIiIiHa0Le1a+YUvfAE//vGP8cADD+CNb3wjrrnmGgDAzTffjOeee24rn5qIiIiIiGjH2pIg97d/+7f45je/CQDIZDKQJAl/8id/gl/+8pcAgF/84he4+uqrt+KpiYiIiIiIdrwtWSP3tre9DZ/85Cfxh3/4hwiCAPfddx/27NmDhx56CKqqYnh4GA899NBWPDUREREREdGOtyVBzjAM/OVf/uWK448++uhWPB0REREREdGusqVr5IiIiIiIiKj3GOSIiIiIiIgShkGOiIiIiIgoYRjkiIiIiIiIEoZBjoiIiIiIKGEY5IiIiIiIiBKGQY6IiIiIiChhtmQfOSIiIiIiIQQsy4LrutB1HYZhQJKkfg+LaEdgkCMiIiKinhNCYGZmBpVKJT5WKpUwPj7OMEfUAyytJCIiIqKesyyrK8QBQKVSgWVZfRoR0c7CIEdEREREPee67iUdJ6JLwyBHRERERD2n6/olHSeiS8MgR0REREQ9ZxgGSqVS17FSqQTDMPo0IqKdhc1OiIiIiKjnJEnC+Pg4TNNk10qiLcAgR0RERERbQpIkZLNZZLPZfg+FaMdhaSUREREREVHCMMgRERERERElDIMcERERERFRwjDIERERERERJQyDHBERERERUcIwyBERERERESUMgxwREREREVHCMMgRERERERElDIMcERERERFRwjDIERERERERJUxqK/6nYRji/vvvx4kTJyBJEj7zmc9A13Xce++9kCQJl112GT71qU9BlpkjiYiIiIiILtWWBLmf/OQnAIBHH30UTz75JP78z/8cQgjcfffduOGGG/Dggw/i8ccfx80337wVT09ERERERLSjbcmU2Fvf+lY89NBDAICzZ8/CNE08++yzuP766wEAN910E37+859vxVMTERERERHteFtW25hKpXDPPffgoYcewm233QYhBCRJAgBks1k0Go2temoiIiIiIqIdbUsXqX3hC1/Aj3/8YzzwwANwXTc+3mq1YJrmVj41ERERERHRjrUlQe5v//Zv8c1vfhMAkMlkIEkSrrnmGjz55JMAgCeeeAKve93rtuKpiYiIiIiIdrwtaXbytre9DZ/85Cfxh3/4hwiCAPfddx8OHz6MBx54AF/+8pdx6NAh3HLLLVvx1ERERERERDvelgQ5wzDwl3/5lyuOf/vb396KpyMiIiIiItpVuJEbERERERFRwjDIERERERERJQyDHBERERERUcIwyBERERERESUMgxwREREREVHCbEnXSiIiItp6QghYlgXXdaHrOgzDgCRJ/R4WERFtAwY5IiKiBBJCYGZmBpVKJT5WKpUwPj7OMEdEtE5JviHGIEdERJRAlmV1hTgAqFQqME0T2Wy2T6MiIkqOpN8Q4xo5IiKiBHJd95KOExFRt7VuiFmW1acRXRoGOSIiogTSdf2SjhMRUbek3xBjkCMiIkogwzBQKpW6jpVKJRiG0acRERElS9JviHGNHBERUQJJkoTx8XGYppnIRfpERP3WuSF28Rq5pNwQY5AjIiJKKEmSkM1m2dyEiGgDkn5DjEGOiIiIiIh2pSTfEOMaOSIiIiIiooRhkCMiIiIiIkoYBjkiIiIiIqKEYZAjIiIiIiJKGAY5IiIiIiKihGGQIyIiIiIiShgGOSIiIiIiooRhkCMiIiIiIkoYBjkiIiIiIqKEYZAjIiIiIiJKmFSv/4e+7+O+++7DmTNn4HkePvShD2HPnj344Ac/iAMHDgAA7rzzTtx66629fmoiIiIiIqJdoedB7rHHHkOxWMQXv/hFVKtVvOtd78KHP/xhvO9978Ndd93V66cjIiIiIiLadXoe5N7+9rfjlltuAQAIIaAoCp555hmcOHECjz/+OKampnDfffchl8v1+qmJiIh2FSEELMuC67rQdR2GYUCSpH4Pi4iItkHP18hls1nkcjk0m0185CMfwd13341rr70Wn/jEJ/Cd73wHk5OT+NrXvtbrpyUiItpVhBCYmZnByZMnu/4UQvR7aEREtA22pNnJuXPn8Md//Md45zvfidtuuw0333wzrrnmGgDAzTffjOeee24rnpaIiGjXsCwLlUql61ilUoFlWX0aERERbaeeB7mFhQXcdddd+PjHP4477rgDAPD+978fv/zlLwEAv/jFL3D11Vf3+mmJiIh2Fdd1L+k4Ee0MQgi0Wi0sLS2h1WpxFn4X6/kauW984xuo1+t4+OGH8fDDDwMA7r33Xnzuc5+DqqoYHh7GQw891OunJSIi2lV0Xb+k40SUfJ2S6uWz8aVSCePj41wfuwv1PMjdf//9uP/++1ccf/TRR3v9VERERLuWYRgolUorLugMw+jjqIhoK61VUm2aJrLZbJ9GRf3S8yBHREREW0+SJIyPj8M0TXatJNolXqmkmkFu92GQIyIiSihJkpDNZnkBR7RLsKSaltuSrpVERERERNRbnZLq5VhSvTlJbh7DGTkiIiIiogRgSXVvJb15DIMcEREREVFCsKS6d5LePIallUREREREtOskfT9OBjkiIiIiItp1kt48hkGOiIiIiCghktycY9AkvXkM18gRERERESVA0ptzDBpJkjA2NgZN09BsNpHL5VAqlRJzLhnkiIiIEkoIAcuy2L2OaJdIenOOQSOEwOzsbHxOW60WPM9LTDBmkCMiIkog3pkn2n1eqTkHg9yl6wRj13Xh+z5UVU1UMGaQIyIiSiDemSfafZLenGPQuK6LpaUlVKtVhGEIRVFQLBYxPj6eiNdRNjshIiJKoKS3zR5UbCRBgyzpzTkGTRRFmJ2dRa1WQ7PZRK1Ww+zsLKIo6vfQ1oUzckRERAnEO/O9x3JVGnSSJGF8fBymaXJtbA90SlJd14UQIt5sPSk3xBjkiIiIEqhzZ/7i0ME78xvHclVKgk7Y4M/k5smyDFmWMT4+jiAIkEqlEAQBZDkZRYsMckRERAnEO/O9x0YSRLtLPp9HqVTC0tISAMD3fZTLZeTz+T6PbH0Y5IiIiBKKd+Z7i+WqRLtLNpvFxMQEMplMPCNXLpcT85rKIEdERESEdrlqsVjE7Oxs3Ip8bGyM5ao0ULh/ZO9IkoQ9e/agUCgk8nwyyBER0bbhBQglgaqqkCQJqRQvk2iwsCEPLcdXKCIi2ha8AKFBZ1kWqtUqZFmGpmkAgGq1ikKhkJhSq0HDmze9xYY8vZX096VktGQhIqLEW+sCxLKsPo2IqBv35uutzkXyyZMnu/7k3nwb1/lZjKIInufF+53xZ3Rjkv6+xBk5IiLaFuwI2Huc7egtNjvpLc4e9Z6mafGG9R3lcjmeQaZLk/T3JQY5IiLaFrxI7q2klwQNIu7N11tJv0geVJ7nveLntH5Jf19ikCMiom3Bi+Te4mxH73Fvvt7qXAxHURS3dpdlOTEXyYPI87z4dbPTWVXXdYa5SySEQBAFkFQJalbFfGUekYhQ0AoYLg8n5n2p50HO933cd999OHPmDDzPw4c+9CEcOXIE9957LyRJwmWXXYZPfepTidkxnYiIeoMXyb3F2Y6twb35eieTyQAAzpw5Ex+bnJyMj9Ol64RgXde7AjHDMRBEAYIogB/6Fz6OfDiBA8d32n+GDtzAhRd6EBCQICESEdyUC8u18OY9b8Z4KTlVDT0Pco899hiKxSK++MUvolqt4l3veheuuOIK3H333bjhhhvw4IMP4vHHH8fNN9/c66cmIqIBx4vk3kl6SRDtfLZtAwBGR0fj2aPOcb4GbMxuqmwIoxB+5K8IaE7grPivE8w6JEhxU52UnIIiK1AkBSk5BUM1kNfy3WEtC8xb88hms4kJccAWBLm3v/3tuOWWWwC0py0VRcGzzz6L66+/HgBw00034Wc/+xmDHBER0Sbspgs6SqbOrPHFs0ecNd44SZIwNjYGTdPQbDaRy+VQKpUSET7CKOyaKet87PjtmbJOKHMDF07gtIOYdD6UnQ9pEiTIkhyHMkVWVg9mu0TPg1znF7PZbOIjH/kI7r77bnzhC1+IT242m0Wj0ej10xIREe0qLFWlQcdZ494TQmB2dja+gdNqteB5Xl+aHEUiWrWU0Qs92L59IZSdD2mRiLr+fiegyZDjUJaSU0in0siq2zczJoSA4zho1BtotVqJCoVb0uzk3Llz+PCHP4z3vve9uO222/DFL34x/lqr1YJpmlvxtERERLsKS1VpkHHWuPe2sslRJ5hdXMrohR7swI5nyjoBLRBB/HeXlzLKkhyHspScgiZryKQzkKXB648hhMDi4iLqjToqTgXTyjTgIjHdf3se5BYWFnDXXXfhwQcfxG/91m8BAK666io8+eSTuOGGG/DEE0/gxhtv7PXTEhEREdEA4axx711Kk6NOZ8aLSxm9wIsbfywvZfRDH0D73215KSOAOJR1ShrT6fRABrNL5TgO6o06oiiCH/iIoihR3X97HuS+8Y1voF6v4+GHH8bDDz8MAPiP//E/4rOf/Sy+/OUv49ChQ/EaOiIiIiLauThr3Fu6rre7LIYuvMiLw1lohTgXnOsqZfRDP15nBlwoZZQgxaGsM3OW1/JQZKW/31wfuJ4L27ZhtSxU3SrmpXkoJQWO4yTiZ7bnQe7+++/H/fffv+L4t7/97V4/FRERERHRjuUGLuzAhuVZqLk1VOwKTrZOot6ox8Esn88jcAKk/AuzZlk1i5TO7aJflQBqtRrqtTpqQQ2z7izUSMXBgwf7PbJ14b8wEREREVEf+aEPO7Bh+zbqbh1Vp4qaU4vXoUmQoMoq9JSOI3uPwHVdeL4HTdWQTqdZrrpBQRDAtu14fZ+AQKvVgu/7fR7Z+jDIERERERFtg0hEsH0bdmCj6TZRcSqoOlU4gQMAcdmjntJh6uaa5Y6ZTIYbq/eAEAJGxoCmavA9HwWzgFw6Fwe7QbeuIOd5HjRN2+qxEBERERElnhACbujC9m1YvoWqU0XVqaLpNduNRES7u6Oe0mGoBkydHd37IZvLImNkYFs2NGhIpVLI5XKJ6bC/riD3B3/wB7jxxhvx7ne/G0ePHt3qMRERERERJcLyssiaW0PVrqLm1hCKEEB7lk1TNOiKjqHMEMsgB0gmncHE3gnMzs7CalooFos4ePBgIhqdAOsMcj/60Y/w93//9/jqV7+KSqWC3/u938Ott96amG+SiIiIiGgzwiiMA1vDa6BqV1F1q/BCL36MKqvQFR3FdHFHtOffLdKZNLIim7g9DtcV5GRZxk033QQA+MEPfoBHHnkEf/M3f4N3vOMd+Nf/+l9v6QCJiIiItosQApZlcd+zXUwIASdw4m6RnXVsLb8VP0aRFOiKjqyaRUEv9HG0tBmO46DRbECWZagpFbIso1qtolAoJGLCal1B7j//5/+Mxx9/HNdffz0+8IEP4Nprr0UURbj99tsZ5IiIiGhHEEJgZmYGlUolPlYqlTA+Ps4wt0N5oRc3H+msY6u7dUQiAtDeB0+XdegpHSPGSJ9HS73m+d6qx1fbYH0QrSvIHTx4ED/84Q/jb6her8M0TXz1q1/d0sERERERbRfLsrpCHABUKhWYppmIizpaWxAFcWBruA3UnFq7LDLw2htmC0BVVKRTaZTSJZZF7hKaunozR13Xt3kkG/OKQW5+fh7NZhPf//738frXvx5zc3OIogj33HMPfvCDH2Dfvn3bNU4iehUsByIi2hzXddc8ziCXDJGI2mWRvo2W30LFbpdF2r4NIbW7RabkFMsiCQCQTqdh5k3UG/X4WKlUSsxauVcMck8//TT+23/7bzhx4gQeeOABAO31cm984xu3ZXBEtD4sB6Kk4A0HGmRr3YVPyt35QbSVv/Nu4Mbr2GpuDRWngqbXvFAWCQnpVBq6oiOn5XrynLSzSJKE8lAZKTUFa8nC6OgoxsbGEvO+9IpB7q1vfSve+ta34qc//Sne9KY3bdeYiOgSsRyIkoA3HGjQGYaBUqm04mc0KXfnB02vfueXl0XWnTqqbhVVu4pABADagU2VVegpHeV0ma8ntG5CCCwtLqHeqMN1XMzNzUGHnpj3pVcMcg8//DD+/b//9/jRj36Exx57rOtrX/rSl7Z0YES0fiwHoiTgDQcadJIkYXx8HKZpcta4Bzq/82EYwnEcpNPpV/ydj0QUB7am24y7RTqBA6Ad2FJyCnpKh6mbUGRlu78l2mEcx+kqqwSS9b70ikHuLW95CwDgPe95z7YMhog2huVAlAS84UBJIEkSstksfyZ7wLZtLC0t4dSpUxBCQJIk7N+/HyMjI1B0BbZvw/KtuFtk02tCoL2OTZZk6CkdhmrA1M1+fyu0Q+3orpVPP/00nn766VW/dv3112/JgIjo0rEciJKANxyIdhfP83Dy5Em4kQsncmBFFo4/fxyntdMo1ooA2rNsmqJBV3QMZYY4+0nbasd3rSSiwcdyIEoC3nAg2vmEEGj5LTTcBn45+0u8ELwAy7UgQoGUkkIunYMhG9yTbROEEHAcB57vQVM1pNNpvt9v0I7uWvknf/In8cdzc3MIggBCCMzNzW35wIjo0rAciAYdbzgQ7TyRiNDy2sFtrjWHeWseoQgBAK7kIi2nIUNGJEeQIUOTNWQNvk9tlBACi4uLXcHDzJsYGuJs5kZIkoShoaH2tVMNmJycxHgpGY1OgHVuCH7ffffhqaeegm3bcBwHk5OT+N73vrfVYyMioh2GNxyIki0SEZpeE3W3jrnmHBbsBYQihAwZ6VQaBb0QNyFpoYXRoVHMzMzEa+SGykNQNbXP30Vyrdaco96oI5vNIpPJ9GlUySZJEjKZDPIij2w2m5gQB6wzyP3617/G//pf/wsPPvggPvrRj+JP//RPt3pcRERERNRnYRSi6TVRc2uYa81hyV5CGIWQpXZwK6VLkCV51b8bBAHMgolcLgfXc6FrOmRFRhAE2/xd7Byd5hye5yEIAqRSKWiaBs/3GOR2oXUFuVKpBEmSYFkWyuXyVo+JiIiIiPogiAI0vSaqdhVzrTlUnAoiRJAlGRkl84rB7WKdRhKyIneFjLUaTNCrU1UV9XodtmXHxzJGBuPj430cFfXLuoLc1Vdfjb/+67/G6OgoPvrRj8K27Vf/S0RECSeEgGVZXM9FRDuWH/poeu092+Zac6jaVUBqd5PMqtlNdZJcrZGEmTeRTqd7NPrdSVVV2LC7PqfdaV1B7mMf+xiazSbS6TSeeOIJvOY1r9nqcRER9ZUQAjMzMys6LI6PJ2cRNBHRxbzQQ8NtoGJXMNuaRcNrAABkyMhqWQwbwz17jVveSIIdFnvD931kMhnomt5Vrur7PsDKyl1nXUHuq1/9atfnzz33XFdHSyKincayrK4QBwCVSgWmabJRBxElhhu4aHgNLNlLmGvNoeE2IEkSFEmBoW79NgCdRhJcv9UbqqrCtm3Ua8tmOQsmZ+V2qXUFueHhYQDtO9TPPfccoija0kEREfWb67prHmeQI6JBZfs2ml4TC9YC5lpzsHwLAKApGjKpDEazo30eIW2W7/uv+Dldms6+fI16A61WC3ktn5hZ43UFufe85z1dn//bf/tvt2QwRESDQtf1SzpO1A9cx7m7CSFgBxeC22xzFm7oQggBTdFgqAZyWq7fw6Qe8n0fptleZ7i8ayVLKzdGCIGFhQXU6jUsWAs4KZ2EcAT27NmTiNfSdQW5EydOxB/Pzc3h7Nmzr/p3nn76afzZn/0ZHnnkETz33HP44Ac/iAMHDgAA7rzzTtx6660bGzER0TYwDAOlUmnFGjnDMPo4KqILuI5z9xFCwPItNL1mvPm2G7SrB3RFh6EaMHWzz6OkrdTp+KlpGjRNW3GcLo3t2Jibn0O9VkctqOFscBZKoMA029tmDLp1BbkHH3wwflPQdR333nvvKz7+W9/6Fh577LG4HvrZZ5/F+973Ptx1112bHC4R0faQJAnj4+MwTZOzHTSQLMvCzMIMKm4Fc84cUkhBr+u4DJehlC9BUzSoitr+U1b5s5tAQgi0/BbqTh3z1jwWrAV4kQcJEnRFR1bNoqAX+j1M2kbsBNpbVsvqWm8IAEtLS2g0GjsnyNVqNTSbTei6Dtd18ZnPfAZCCEiShMcff3zF4/fv34+vfOUr+MQnPgEAeOaZZ3DixAk8/vjjmJqawn333ZeIk0NERL3FUsDNcwMXS/YSnpl+Bi/NvdRuJqFk4MNHI2jAnXWRa3W/x0qQoCkasmoWGTWDrJZFJpVZEfYUWenTd0UAEIkILa+FulvHXGsOC9YCgiiABAnpVBo5LYeUvK5LN9qh2Am0t4QQl3R80Kzr1eC1r30t3vWud+G1r30tnn/+efz1X/81PvvZz675+FtuuQWnT5+OP7/22mvx7ne/G9dccw2+/vWv42tf+xruueeezY+eiGiLsGyt93hON84LPVTsCk7XT2OuNQcJEmRZRjldXvHY8fz4ig6BQgiEIoQf+bAsC7PNWQQiAASAZac+JaVgaAYyqXbYM1IG9JTeFfZUhd3xeiWMQrT8FmpODfOteSzYCwhFCBky0qk0CnqB4ZpWYCfQ3snmsshkMrBsC2EQQgiBbDYL00xGifK6gtzx48fx2te+FgBw+eWX49y5c111ua/m5ptvjk/IzTffjIceemgDQyUi2j7cfqD3eE4vTRAFqNgVTNenMd+ah4BAJpXBiDECSZIghIDwxLpKrCRJQkpKISWnkE6tXYIVRiGCKEDdrWPJXkIQBe0708vCngQJhmq0Z/bU9sxeRs2sCHuyJPf0fOwEYRSi4TVQd+uYbc5iyV6CgIAECZlUBqV0ieeNaBul02mYBRONRgNhFCIMQ5TL5cSsh19XkMvn8/iLv/gLXHvttfjHf/xH7N2795Ke5P3vfz8eeOABXHvttfjFL36Bq6++ekODJSLaLtx+oPd4Tl9dGIWoOlWcaZzBucY5RCKCoRoYygytmLXcihIrRVagyAp0rN2dVQiBIApg+zYabgN+6CMSUVfYgwD0lN4V9rJativsaYo2kLNNvSz/DaIADbeBmlPDbGsWVafaDm6SBCO1+r8rEW0f12m/L+3ZuweqpWL/6H4AgG3biXhfWleQ+9KXvoTvfve7eOKJJ3D55ZfjYx/72CU9yac//Wk89NBDUFUVw8PDnJEjooHH7Qd6j+d0dZGIUHWqmGnO4HT9NMIoRDqVRjlTftXZmX6UWEmSBFV59RLLIAoQRAGW7CX4oY9QhN2zewJIySlk1Ew8w5dTc9BSWlfYS8mpbQs7QgicO3cOs7Oz8H0fqqpibGxs3a3I/dBHw2vE/551pw4hCciQkVWzDG7UE519z7hGbvM83wMAyLIMNaVCltuvuUm5wbiuIGcYxiXvHbdv3z5873vfAwBcffXVePTRRy99dES0bmwi0VvcfqD3eE4viESEulvHucY5nGmcgR/50GQNRb14SbNUg3xBl5JTr9qYo1PK2XAbq5dyinZwTKfScYOWrJpFWk13hb1elXK2Wi2cOHECzWYzPmZZ1pqtyN3ARdNrYslewlxrDg2vASEEUnIKhmpg2BgemH+Pfhnkn9EkEkJgcXFxRUn10BBvEmzEWts2JOUGI1sfEe0AbCLRe9x+oPd2+zkVQqDhNTDbnMWp2il4kQdN1pDX8hvqRLgTLugupZTT8R003AaCKEAYhStKObVUewPsTtjLqJl2o5ZlYe/VznO9Xu8KcQDQbDZRr9eRy+XgBA6aXhOL1iLmWnNoeS0ISUCVVGTU9vpFumAn/IwOGsdxus4nANQbdWSzWTY/2YDVtnNI0g1GBjmiHYBNJLaGJEnIZrM8hz20286pEAJNr4l5ax4nqyfhBA5Scgqmbm66jfxuuaBbXsqZwdrfV6eUs+pU47b9AstaiIt2cOyEPUMzYKgG0ql0HPb8yI+3VwIAN3JhhzZerLyIF70XYfkWJLTHY6gGRrIMbq9kt/yMbqdOKeBqx3lOL50kSSgPlZFSU7CWLIyOjmJsbCwxNxoY5Ih2ADaRIBosLa+F+dY8TtVOoeW3oMgKTM2EqfeupTUv6Lqtp5QzEhH80EfTa6LqVNvBbVnYs20b09E03KYLAQEv8pDP55GVshhWhpHTuAfupeDPaO+tVQq41nF6ZUIILC0uod6ow3VczM3NQYeemIomBjmiHYBNJIj6z/ZtLFgLOFk7iYbbgCzLyKt5jGZHt+T5OhdunuchCAKkUilomsYLulcgSzL0lL5mKafICKTDNJZqSwjDELqqo2AWMFzgWreNYOjovdVKAdfadoReXWfW2PM82I4N13UTVdHEIEe0A7CJBFF/OIGDJWsJJ2snUXWqkCUZOS23ZeFtOT3dDiOVpQu/92PjY/FxunSSJGFkZAT5fJ7NOXqAoaP3tmLbkd3M8z3U63XYlo1m0MQ85iH7MsbHxxnkiGh77PYmEpQcURShUqmg2Wwil8uhVCrF7Z6Twgs9LFqLOF0/jQVrAZIkIaduT3hbrrP/0cjoCMIwhKIo8XGWrW1cP7Z02KkYOrYGf0Z7RwgB27K7jjWbzXb33ARgkCPaIXZbEwlKniiK8Otf/xrT09PxscnJSVxxxRUDH+b80EfFqWC6No15ax4QaDe7MEb6dlG6fP+j5eeP649okDB00KAzCybqtQuzxuVyuY+juTQMckREtC0qlUpXiAOA6elpjI2NYWhoqE+jWlunA+Lp2mnMNGcgINp7g2UGY70U1x9tDe57RrR76JqOTCYDXdchWRL2ju5FVs8mpvyXQY6IiLbFxftzLT8+KEEujEJUnSrONc7hbOMsQoTIKBkMGUM92XC6l7j+qPe47xnR7pJOp6GkFfzzuX+GHdh4vfz6RPUYYJAjIqJtkcut3rp9rePbJRIRak4N55rncKZ+BkEUQFd0lDKlgQtvy3H9Ue9x37Pe4wxn7/GcbowQAvPWPF5YfAG/Xvg1Xlh6AS8svoDT9dMAgJHMCD5y00cwXkrG1gMAgxwREW2TUqmEycnJFWvkSqXSto9FCIG6W8dMcwbT9Wn4oQ9N0VDQC1BkZdvHs1Fcf9Rb3PestzjD2Xs8p+sTRiFO1k7ihcUX8Pzi8/GfVacaP2afuQ9Hh47itqO34fKhyzGea3eqTNJ5ZJAjIqJtIcsyrrjiCoyNjfWla6UQAg2vgbnmHKbr03ACB6qsIq/nX3UjadoduO6wtzoznFEUxZ1VOcO5OZw1Xsn2bRxbOobnF5+PQ9uxpWNww3ZnX1VWcbh8GDftvwlHh47iiuErcKR8BDmtuxpk3prvx/A3he9cRES0bWRZxtDQ0LauiWt6Tcy15nCqdgp2YEOBAlM3Yermto2BkoHrDnvL9VzYtt3VEdAsmHA9bpGxUbt91njJXsLzC+cD29ILeH7heZyqnYJAe7uAvJbH0aGj+IMr/wBHh47i8qHLcbB0cMferNuZ3xUREe1qlm9hvjWPU7VTaPpNKJKCvJZHXsv3e2g0wCRJQnmojJSagm3ZyBgZmKaZqFKrQbM8xHU+n5iY6NNokq8zOxyFEVzPha7pkBV5x80aRyLC6frpuCSyM9O2YC3Ej9mT24OjQ0fxtsNvw+VDl8flkbvp95VBjoiIdgTbt7FoL+Jk9STqbh2KpCCrZTFqbO9G3duJTQ96SwiBpcWleEbOdmwEfsD1RxvUWcNp2RaiMIKsyDAyBs/lJmi6Btu2cebMmficTkxMQNOTG+TcwMVLlZe6AtuLSy/C8i0AgCIpOFg6iBsmbohn2S4rX4ZCutCT5++8jjbqDbRaLeS1fGJ+RhnkiIgosdzAxaK1iOn6NJbsJUiQkNfzGM3u3PDWwaYHvcf1R72lqioAIAxChFEIRShdx+nSNeoNzM/Pw3M9RCKCHMiYn5/HxN4JFIvFfg/vVdWc2opZtperLyMUIQDAUA0cLR/FOy57R7ye7WDxIPSUviXjEUJgYWEBi0uLWLAWcCw4BrFPYM+ePYl4HWWQIyKiRPFCD0vWEqbr01i0FgEJyKrZXRHelmPo6L3dvv5oK6iailQqhdT5S05VY4jbjEajAduyoSgKFLSDsW3ZaDQaAxXkhBA41zy3IrTNNGfix4wYIzg6dBRvmnpTPNM2YU5s67YvtmPjzNkzsC0bzaCJecxD9mWYptn3rXHWg0GOiIgGnh/6qDpVTNenMdeagxACWTWLYWM4EXdNtwJDR++xa2Vv+b6PTCYDRVHgeR40TYOmafB9H+CP6IakUilIkgQhRHxMkiSkUv27pA+iAC9VXloR2ppeEwAgSzKmClN4zdhr8O6r3o3Lhy7H0aGjKGfKfRtzR6vZgm3ZXceazSbq9TqDHBER0UaFUYiKU8HZxlmca5xDJCIYqoHhzO4Nb8sxdPReOp1GPpfH4tIigiBAKpXCUHmIXSs3SFVV1Ov1+EK5hRYyRgbj4+N9HllymQUTI6MjmJ+bhxACkiRhZHQEZmF7uvA2vSZeXHyxK7C9VHkJfuQDAHRFx2VDl+GWw7fEs2xHykeQTg3m79Ba7yVJeY9hkCMiooERRiFqbg1n62dxtnkWoQiRVtIoZ8rbWm6TBGyVv3U6sx6KkpzN4QeVqqqwYXd9ThtnZAxMTk4im83Gs5zlchlGxujp8wghMG/Nr2j1f6ZxJn5MKV3C5UOX485r7ozXs02ak1Dk5PzeGFkDZsHs6q5aLpeRzyejwzGDHBHRGoQQsCwLrutC13UYBrutbYVIRKi7dZxrnMPp+mkEIoAu6yjqxURdEGw3SZIwNDTUvqBj18qecBwHjWYDsizHG9U3mg3kcjmWq25Ap7RS1/V4Q3BZlllauQmSJGFkeAT5XL5nv/dBFOBU7dSK0siqU40fM2lO4srhK/HOy98Zz7TthNL2TDqD0ZFR6LoOyZKwd3QvJsYmkM1m+z20dWGQIyJahRACMzMzqFQq8bFSqYTx8d21R81WEUKg7tYx25rFdG0aXuhBUzSYurljN27dCp327gwZvcF1h73VKfNdHoyXH6eN2czvve3bOLZ0rCuwHVs6Bjd0AQCqrOJI+UhXA5LLypchqyUj2FwqSZIwPDyMXC4HuSZjamoK46XkvM/z3ZKIaBWWZXWFOACoVCowTTMxd+oGRRiFcAIHTuDA9m3U3BrmWnNwAgcpOcXwRgOD6w57q7PmsFavxTNyBbPA8t9tsmgtrphlO1U7BYF2oxRTN3G0fBR3XHVHHNoOFA/w9ThB+C9FRLQK13XXPM4gtzo/9OPA1vJaqLk11NxavKkr0L77qckaMqkMTH17FucTrReDx9YIggBBEHR1WqTeiUSE0/XTeH7h/Fq286FtwVqIH7M3txdHh47ilsO34PLhy3H50OUYy44lZuZpqyzfj7PiVDCtTAMuElN9s2VB7umnn8af/dmf4ZFHHsHJkydx7733QpIkXHbZZfjUpz7VNcVORDRodH31zUfXOr5bCCHghV57di2wUXfr8X9eeKEsTYYMPaVDUzSMGCN9HDHRpWPw6I3OmsPOtgMA1xxeKiEEWn4rfp2tuTXUnTqqbhUvVV7C84vP48XFF2EH7YYyiqTgUOkQbpy4EUeHjsb/8cbZ6lbbjzNJ1TdbEuS+9a1v4bHHHot/ST//+c/j7rvvxg033IAHH3wQjz/+OG6++eateGoiop4wDAOlUmnFGjnD6G1nsEEViairHLJzAdFwGwiiAAAgQYKqqNAUDVk1i4Je6POodx8hBBzHYbOTHmHw6C2uObwgjEI0veaFMLY8mHU+dlY/Hopw1f9nVs3i6NBR/N7lvxeXRh4qHYKmsBR4vdb6GU1K9c2WBLn9+/fjK1/5Cj7xiU8AAJ599llcf/31AICbbroJP/vZzxjkiGigSZKE8fFxmKa5o7tWBlHQVQ5Zdaqou3VYvhWvo5AgQZVV6CkdxXRxU9sAMHj0zvKSoA4zb2JoaIjndIM6F3We58X7yGmatiuDRy/sxDWHQRSsmB1bM5gt+7jhNuLX1NV0boaZaROmbmIsNwZTb39c0AsrPi6kC9yWpQfW+llMSvXNlgS5W265BadPn44/72xYCADZbBaNRmMrnpaIiNbghR5s34YTOGi4jfgiww1cQGq/TsuSjHQqDU3RMJTpfRgQQmBhYWHFZsvDw8lvYd0Pq5UE1Rt1ZLNZho4NUlUV9VodjUYDYRRCkRXk83luYL1Bg7zXoRu4G5oda/mtNf+fEqQ4cJm6iaJexH5zfxy81gpmeT3PBiN9strPaJKqb7blp2b5erhWqwXTZJ0uEQ22JG4/IIToLof06vHd4uWlOSkpBU3RYKjGtq6bsB0bZ86egW1d2BzYcRxkc9meb2a7G3Rmj6Io6tqji7NHGyeEQBiFaLVa8U1oI2twrdwGbfVeh0KIeK3upcyO1Zxa3G5/NYqkdAWv0ewojpSPrD47lr5wLKflOEOWMMt/RlEDJicnuf3Axa666io8+eSTuOGGG/DEE0/gxhtv3I6nJSLasM72A1EUxbNHg7IAenk7/5bfiu8cN71mV+mOKqvQFR0FvTAQG2u3mq2uEAcAtmWj1WwxyG2AqqqwbRv12rLZjoIJVVX7OKpks1oWfM/H0NBQHI59z4fVspA1Bn+9zCBaz55nkYjiTrcXB6+1ZsY6n3fW7K5GU7QLpYh6Afvy+2AOv/LsmKmbMNSdV0ZPa+v8jOZFHtlsNlH/9tsS5O655x488MAD+PKXv4xDhw7hlltu2Y6nJSLaMMdx0Gq1sLS0FB8rl8vtGaRtCnKd7pBO4KDpNeMLGjuw27MFkCBJEnRF37JyyF5aa2yDPOZB5/v+K35Ol6bzs7i8a6UkSfwZ3YBIRFiwFjBdn8Z0bRqzrdmVgez8DFrDayAS0Zr/r071QCdsHSodetXZMVM3kU71v4RzK0QiQr1eh23ZyBgZmKbJmcBdasuC3L59+/C9730PAHDw4EF8+9vf3qqnIiLaEstDXOfzQ4cO9fQ5hBBwQzcObHW3jqrdbjgSRAEgARCAIivQFA26oiOn5Xo6hu1iZA2YBXPFDJKR5WzcRvi+D9Nsrzda3pjD932AlZUbks6koSgKFhYW4hm54eFhpDM7MxBsVhiFmGvNtcNafRqn66cxXbvw8cXlizkth4JeiMPW3vzeVWfELv5YVTjL3BGJCC+//DJmZ2bjY2PjYzhw4ADD3C7ElZVERKuQJAm5XA7NZjM+lsvlNnxnfnk5pO3b8WbZXZ3MBKAq7XJIUzcHohyylzLpDEZHRqHretdmy5k0U8dGdLqtLW+Vv/w4XTrf82E7NmzHRhRFkGUZtmPD93xgl1ZWBlGAmeZMHNDiwFafxpn6GfjRhVlgTdGwL78P+wr7cOO+G7Evvw8FqQATJob0ISiyws6qm1Sv17tCHADMzsyiXC6jWCj2Z1DUNwxyRESr0HU97lzlOA7S6TR0XX/VlsR+6He18++UEC3vdCZJEjRZg6Zou6p9tCRJGB4eRi6X4/YDPTDIHQGTqtlswmpZSKfTcZCzWhaazSZKpVK/h7dlvNDD2cbZVcPauca5rmZJmVQGk+YkDhYP4qb9N2GyMIlJcxL7zH0YzY52vZ7Zto1zM+fgeR5cx0UqlWJn1U26eJ3x8uMMcrsPgxwR0So6Fxmzs7Px7NH+/fuRyWQghIjXr3U6pnX+88ILm4vKkKGndOiKjhFjpF/fCu1QW90RcDdKpVIrOlQKIZBKJf9yyQkcnK6fjgPadO1CWJtpznQ1SsqqWewv7MeVw1fibYfe1hXWLmUtrud78VqujoyRwdDQEIPcBmWM1c/bWsdpZ0v+KxMR0RawLAuLi4uwPAuWbyFAgPlT85hJzSBUQoQijPdeS8ntdv6dDV1pddzAuvfW0xGQ1s8smMgYGSwsLAACgAQMDw/DLCRj26SW14pn0+LAdv7zudZc12MLegGThUlcN34d9pn7MGm2w9pkYRIFvdCT30khBGzLhoBAFEaQFbn9Obdz2DDTNDE2PrZijRy39tqdGOSIiHBhDzbLt9BwG/j1qV/jn87+EyIRQaDduS5VSyHfyGNifGLXlEP2UmcD6+X7nrHManOEEHAchzNyPSJJEkZGRqDIStxApjxUHqhzWnfrK2bUOmFtye5u0DSUGcI+cx+u33t9O6wtm1nblj0kRbu6YWZmJu4AOj4+DjDHbZgsyZiamkI+l0ez2UQul0N5aPeU6FM3Bjki2nUiEcH2bVi+hbpbx5K9hKpTjdeByJBhBzayShZRGCGMQiiSglQqhYya4RvmBrmeu+q+Z67nMshtAGc4e8/3fWQyGezZsweu50LXdMiKvK2dQIUQqDrVNTtB1txa1+PHsmPYZ+7DTftv6gprE/kJZLU+d2iR2jdwlu/L5zhOuxsvbYgQApWlChrNBgCg0WzEZdb8vd99GOSIaEeLRATLb5dHVp0qluwl1N16O7QJICWnkE6lUUwXuwJaGmnMp+cxPzcf30keGR3hOoRNWh7iOp9PTEz0aTTJ1pnhXI4znJuzXZusCyEu7LF2cSlkbbqrOZIsyRjPjmNfYR/eeuit8YzapDmJCXNioPdKkyQJ6Uw6XiMXBAEyRoaBYxP4e0/LMcgR0Y4RRmEc2ipOBUv20oX2/udb+6dTaZTSpVedVZMkCel0uutOMsvWNkeSJGSMzIrGBzynG+P53prHeUG3cb3aZD0SUXuPtVU6QZ6un4YTOPFjFUnB3vxeTJqTuHb02q4SyL35vdCUZG4poanaqnsdcouMjePvPS3HIEe0QwghYFkWXNeFruswDGNHXyAHUXAhtNnnQ5vXiL+uyu3Qdikd1pbrlFgt3/NMlre3xGqn4UVdb6113ng+N+5SN1nv7LG2fDatE9TONM50dbFVZRX7zH3xmrXlYW08N46UvPMuyZZvkdHZ65BbZGxO5/fb8zy+jhKDHNFOIITAzMwMKpVKfKxUKmF8fHxHhDkv9GD5FlpeC0v2EpbsJdi+3V5nIdqb0KZTaQxnhnv2/XbeFGVZhizLK47TpUun08jn8qjVa5AkCYqiIJ/L86Jug7iPXO+ttsl6EAWYsWbwq+qvupqMdMLa8j3WdEXHZGESB4oH8Mb9b+zqBDlitJuo7CbcIqP39HR7L9PK0oX3+7Hxsfg47S4MckQ7gGVZXSEOACqVCkzTRDbb58Xul8gNXFi+habXjEObEziQJAkSJOiKjnQqjZyW29Jx8CJ56wRBgCAI2IJ8k3iRvD5hFMIO7LgrrR3YcbOjzsd2YF+Y4W9UULWqmHfmMWPNYNFZRIQo/v9l1Sz2mftwdOgo/uWhf9nVun/Y6N3NpJ2CW2T0luu4AICR0ZG4WqRznOd492GQI9oBXNdd8/igBjkhBNzwQmhbtBZRcSpxKZIkSUgraRiqsT1tsi8iSRLKQ2Wk1BRsy0bGyMA0TV6kbYLjOGg0G12zHY1mA7lcjhcgG7STLpI7gWt5sFr+cSeILf84DmWBBcd3YAXnv37+Y9u34Yarvz6uxVANpJU0Ro1RXDd+HaZKU13dIEvpEl8HqG86a+SW3xDTNI1r5Dahs41Lo95Aq9VCXssn5necQY5oB9D11Usq1jq+3YQQ8cVYw21gyV5Cxa4gEAEAQIKEdCo9UBtqCyGwtLgUz8jZjo3AD9jieRO4SH9nCKIATuCsmNXqBKdXCmFrzYZdauCSICGjZpBJZZBRMzBSBtJqGjk1hxFjBJlUBoZqxI8xVAPpVPvG0FofZ1IZ6Cmd24vQQFNVFfV6fUXTqPHx8T6OKrmWb+NScSqYVqYBF4lZmsIgR7QDGIaBUqm0Yo2cYRjbPpble7TVnFp7jza3ijBqryNRJAXpVBqmbg70ehG2eO49NufovVfaELwTuNacxXqVMsPlISs+FthdDTxezfLA1QlLGTWDvJbHaHa069jyj18tiOmKnoiLLOKm9VtBVVXYsLs+p41Z7b0+SUtTGOSIdgBJkjA+Pg7TNLe1a2WnFOriPdoi0V5PkpJS6273P2g6s0cXdwbj7NHGcd1hb4RRiNP10zi2dAy/PP1LvLj0IhacBXiRBy/y4EbuhgLXxbNTGTUDUzfjwLXa17s+Thnds2QMXLseN63vvU5HZUVR4HleXKrOjsob03mvj6IIfuAjitrXL4O8NGU5BjmiHUKSJGSz2S174QmiIL5z/0p7tJXT5R3xBs3yld5jc45LI4TAor2IY0vHLvxXOYYTlRNxGaIECSP6CMpqGYVUAYZmYKQ0AjNtrghVqwWuzqwXAxdtBVY29N7F700ttPjetAmqqsK2bdRrddSCGs4GZ6GMKvE67kHHIEdEK/ihH7f774S2lteCgIAkSZveoy0pWL7SezupOUcvtbwWjleO43jleFdwq7m1+DFDmSEcLh/GH1z5BzhSPoIhaQj+vA+n4UCI9u+mWTBx2ZHLMDIy0sfvJtkiEcUXyp0mR0mrKBgUXBe7Nfje1Fu+73d97nnrr2boNwY5ol1u1T3agvYbhAQp3qNtJLu7Lgy5IThthSAKcLJ6EscqF8La8aXjONs8Gz8mk8rgcPkw3nzgzThSPoLDpcM4Uj6CUqbU9f86d+4cnn7p6XgbByEE6rU6giDY1u9pJ4lEhJdffhmzM7PxsbHxMRw4cIBhbgO4Lrb3+N7UW77vI5/PI6WkYDUtFItFFIvFxIQ5BjmiXWS1PdrcwAUkbOsebUnADcFpM4QQmG3Nds2uHa8cx4nqCQRRO2gpkoL9hf24evRq/N7lv4cj5SM4Uj6Cvfm96woNqVQKqqbCcy9ccKiailSKb+0bVa/XMTsziyAIEEYhFFnB7MwsyuUyioViv4eXOFwX23t8b+otVVXRaDRgWzb8wEe1WoUOHVNTU/0e2rrw1Z5oBxJCxB3qGm4DS84Sqk51YPZoSwJegNB61d06ji8d755lqxxH02vGjxnLjuFw+TB+a99vxYHtQPEANGXjF1/ZXBZD5SE0Go04dOTzeWRzg79Af1DZlg3LtrrCsaZrsC2bQW4DJElCsVSE7/uoN+ow8yaKpeKOLsnfanxv6j1VVdEIGnFzs6SsjwMY5Ih2DCEE5qvzOLZwDIveIlJaCpAAGfLA7dGWBGzMQRfzQg8nqie6SiKPVY5hrjUXPyan5XCkdARvP/x2HC4fxpHSERwuH96SGyaZdAZ7J/ZiaWkp7l5XLpeRSbO+aqNSqRR8r3u9jO/5nOXcoDAK8fzzz2P61HS8jnNy/ySuuOKKgd5+ZpDxvam3fN9HEARIp9PQJA2ZTAa+77O0koi2T82p4f879v/hpdmXkJJTyKk5FM0iWzxvEhtz7E6RiHC2cbZrdu3Y0jGcqp1CKNr7IabkFA4WD+Jf7PkX8Rq2I+UjGMuObevvnIT2c3VKrDqf08aoqorx8XHMzMzEwWN8fJzNJDZoaXEpDnFA+4bj9KlpjI6MsiHPJvC9qXeEELBa1vlP2sGu0WjEP7ODjkGOKKGEEKg6VRxfOo5TS6dQW6yhpJfii0i2eCZ6dRW7Erf17wS3lyovxQ1/AGAiP9HVfORI+Qj2F/YjJff3LdRxHDSajXgfKQBoNBvI5XL8vd8gXddhFkzkcjm4ngtd0yErMnRd7/fQEqnZbJcXy4oMEQlIsgQRCTSbTQY5GhhmwUS9dqFUtVwu93E0l4ZBjihhOntLvbD4AmpODYZqoKgWEarhiseyxTMNGiEEHMfZ9pIgJ3C6Wvt3yiKX7KX4McV0EUdKR/DOy98Zl0UeKh1CVhvMNWds7d57y9cfdc4h1x9tXDaXhRACzUYTEAAkIGtkuY6TBoau6e0uoJqOqBlhz/geZNPZxPzOb2uQ+/3f/33kcu1uePv27cPnP//57Xx6okQLoxDzrXm8sPgCWn4LOS2H0ewoAMAO7VX/DrtY0SARQmBxcXHFIv1elgAHUYDT9dNdJZHHlo7hdP10e/N6ALqi41DpEN4w+Yaussik7YvY+f3uLNBPpVLt2Tn+3m8Y1x/1VjabRaFYQMtqxccKxQKyWQY5Ggx6uj3bPj8/j0bQwDlxDoWDhcTcDNu2IOe6LoQQeOSRR7brKYl2hCAKMNOcwYuLL8IJHJi6GQe4DnaxoiRwHKfrZxTYeAmwEAIL1sKKssgT1RNxd1ZZkrHP3IfLhi7D7x753TiwTeQndkSjhc4FSGWpEh8bGx+Lj9PGcP1R7wRBgLGxMZimCcdxkE6nkclkuNchDQzXaeeTfD4f7yMnhIBt24m44bBtQe7Xv/41bNvGXXfdhSAI8LGPfQzXXXfddj09UeJ4oYez9bN4celFhFGIQrqwZuc73kWmJNhoKWDTa64oizxeOY6aW4sfM2wM40jpCF531evaga10BAdLB5FO7dybGa7jAgBGRkfijYE7xxlCaBBoqgZJkmAYBgzD6DpONAg831t1HznXdRnklkun03j/+9+Pd7/73Xj55ZfxgQ98AH/3d3/Hlr5EF3ECB9O1aZyonoAQAsV0cV1NFXgXmQbdWhdvneN+6ONk7eSKsshzzXPxYw3VwOHSYbzl4Fu6yiKL6eJ2fAsDpROML94YmGvkaFCwWoQGnRAC9WYdTuTEnWqbzSa7Vl7s4MGDmJqagiRJOHjwIIrFIubn57Fnz57tGgLRQGt5LZysncTJ6knIsoySXtoR5V9EHZ2Lulq9hgVnAaeapzDrz+LciXM4tnQMJ2snEUTtkitFUjBVnMJvjP0Gfv+K34+bj+zJ74Esya/yTLvDqwVjon6TJAnloTJSagq2ZSNjZGCaJqtFqK+EEGj5LdiBjZpVg5E3UHSKMFUThmKwa+VqfvCDH+CFF17Apz/9aczOzrL1LNF5dbeOE5UTONs4C1VRMWwM80KVBlIQBbB8C5Zvoek1449bfqv9p9eKP+583vl6fNyzUHfrcEIn/v+OZcdwpHwEb9z/xrgscqo4BU1hIHklnO2gQSeEwNLiUvwzajs2Aj/gHqe07YIoQNNrwgs9yJKMYWMYl5UvgzqsYj4zjyiK4qZRsiwn5nV024LcHXfcgU9+8pO48847IUkSPve5z7GsknateA+4ynHMNeegp3SMGCN8Y6OeEkLADd2uQHVJQWzZccu34Ibuup43JaeQVbPIqlkYmgFDNVDQC9ib2ws5kqEKFXuMPdif24+rxq7C1J4p/uxvANfG0qDrNDha3lmVe5zSdrF9Gy2/hUhE0FM69ub3YjQ7ikK6EC9ZEUIgsANUKpV4P85SqdS1pnOQbVuS0jQNX/rSl7br6YgGUmcPuGOLx1BxKsikMhjLjfV7WLSGfux5FkYh7MBeOZvlLQtWFwWsruNed2ALxcr9BVeTSWVgqEY7gGlZGKqBsexYO4ypBrJaNv648zhDMy4EtvOPMVRjzZk027ZxbuZc17HIjeA4Di/qNohrY2mQeb6Her0O27qwRU7GyGBoaIg/s9RzYRSi5bfgBO2Kj2K6iCtHrkQpXUJOy636/i1JEsbHx2GaJlzXha7rMAwjMTfEOCVGtA0iEWGuOYcXl15E02siq2ZXbCFAg+VS9jzzQm/12SzvorLCi2a9lpcbdh7XeQN6NYqkxMEpDmBqFiPGCHJarjtwrRXEzh/PpDLbsh6TG1hTEvRr0/qdSAjRFeIAwLbsxDSSoMHnBi6aXhMRIiiSgj25PRjLjaGQLqy7PF+SJGSz2UR0qbwYgxzRFlrPHnA0eJpeE8/PPo9fTf8KZ1pnUHErcEIHdmgjlNszZssDW6dBx6vRFb0rfOXUHIYzwzAKy4LVRbNbawUxXdETd3HJ5hw06LZj0/rdxiyYqNfqXZ8TbVQkovj9FwDyeh5Hho5gKDOEvJ7fdT0GGOSItkBnD7hjlWPwQx/FdHHNPeB6hXeRL00kIsw2Z/Fy9WW8XHsZL1dfxsnqSbxcexkL1kL8OEVSUNAKyKQyyCgZmBkTw+bwiqB1cdi6OIBl1My6tpHYydicgwZdLzetJ0DXdGQyGei6Hu91KMsydI2b1tP6+aGPpteEL3woUDCcHcbRoaMopovIqLv793J3X1UQ9ZgTODhdO40T1ROIRLTuPeA2i3eR12b7dntbh9rJdmg7H9hO1k52Ne/Ia3kcLB7Eb+37LUwVprDX2AvDMzCaGe36N9wzvocXdBvE5hw06Drlv8ubc2iaxvLfDVp+86az1yFv3tCrEULElS8RIqSVNCYLkxjJjsDUzV1/U3Q5ngmiHrB8Kw4HsiSjoBe29YWmcxc5CiO4ngtd03fVXWQhBBashVVn12aaM/HjJEjYm9+LA8UDeP3E6zFVmMKB4gEcKB5AKV3qChRrhWNegGwOm3PQIFNVddXmHOPj430cVXLx5g2tVxAFaHktuKHb3n8wXcbB0kGU0iUYanKaj2w3BjmiTWi4DbxcfRmn66ehKiqGMkN9qc92XRf1Wh0zMzMQQsRdmMql8o66YPZCD6dqp1adXWv5rfhxhmrgQOEAXjv+2q6wNmlOQk+tr6SHFyBEu5OqqrBhd31OG8ebN7QWJ3DQ9JuIRARN1rAnv6e9PYBegKrw9249GOSINmD5HnCaovV9Dzjf9+MQB7Rnk2ZmZjAxMdG3MW1UZ4+91WbXzjbOIhJR/Nix7BgOFA/gHUffgQPFA3Fo69W/h4CA67ntLmuGgJ7WIYFBjmin8n1/1TVdvu8DzCE0IJK6Jj4SEVpeC3bQvlFi6iYuL1+OslFGXsv37XsQQsCyLG4/QLSTCSGwZC/hxcUX4z3gBqUDZRAEUDUVnnuhvbuqqQiC9XVT7IcgCnC6fnrF7NrLtZdRdy+UM+qKjqnCFK4cvhK/e+R347A2VZja0kXOkYjw8ssvY3ZmNj42Nj6GAwcO7LquWL2U1AsQ2h06HVRlWY7XdC0/TpeOv/O9lbQ18V7ooek1EUQBFFnBqDGKK/NXopAuIJ3q/1KFzo3vSqUSHyuVShgfHx/I83kxBjmiVxGJCPOteby49CIabmMg94DLGBkYGQOaqiGMQiiyglQqhYzR/1vIdbceB7TlYW26Nt21WfVQZggHigdw86Gbu2bXxnPjfQlO9Xodc3Nz0HQNvu9DVVXMzc2hXC6jWChu+3h2gqRdgNDuw86qvcXf+d4b9M6qQghYvgU7sBGJqL3UoXgAw8YwTN3clj1LL4VlWahUKoiiKG5wVKlUYJpmIvaVY5AjWkMQBZhrzuH5xefhBA7yWn7gAlyHaZoYGx/D7MwsUud/rcfGx2Ca27NfTxiFONc8t+rs2pK9FD8uJaew39yPg8WDePOBN3etX8tpuW0Z63rZlo0wDHHmzBmISECS2+sObctmkNugQb8AIeLa2N7i73zvdTqrrna8X+c0iIL29gCRDwkSho1hHCkfQTFThKEafRnTejmOg1arhaWlC9cq5XIZjuMwyBElkR/6ONs4i2NLx+CFHgp6Ycv3gNssWZJx4MABlMtl2JaNjJGBaZo9n8nqdOe8eHbtVO0UvPDCm0sxXcRUYQq/vf+320GtcABTxSnsze9NVNvgmZkZiOj8usOoXX5x6OChPo8quQbxAoToYmzO0Tv8ne+9tcp8t7v81/ZttPwWIhFBT+nYm9+L0ewoTN1MXKOS5SGu8/mhQ8l4r0/OFRXRFnMDF6frp3F86TgiRCjqRRTTxX4Pa90kSNA1HZIkQVO1DTflEEJgtjW76uzaXGsufpwiKZjIT2CqOBXvvdaZXUvSeXslWSMLx3UAAUAC0jrLqzajc6Fx8R5dXH9EtDMNSujYSfpV/htGIVp+C07gQIKEQrqAK0euRCldQk7LJXbWWpIk5HI5NJvN+Fgul5zvh0GOdj3Lt3CqdgovV1+GDBmF9PbuAdcLG1mH4AQOpmvTcXfITlg7WT0Zd5QCgKyabe+7tvf1XbNr+8x90JSd+2acyWSQzqTh+edDh5JCOpPmXeRN0NPtrR8a9UbcEXBoeCg+TkQ7C9cc9t52lv+6gYum10SIECkphbHcGMZz4yjohXVv5TPodF1HsVhEKpWC4zhIp9PI5XLQ9WR8f8m6WiXqoc4ecNP1aahy//aA64W11iEYhgELVntW7fwM28lq+89zzXMQaJcNSpCwJ7cHB4oH8NoruvdeG8rszkXpqqbGd+lSqRRkWUYul4OqJatkZJA4jgPbtuEHPqIwQiQi2LYNx3FgZAZ7HQURXTquOdwaW1X+G4koblQiIJBTczgydARDmSHk9Xxir5FeSSaTgSRJqFarANrvU/l8PjE3bRnkaNepOlW8VHkJM80Z6IqOUWM08W8qTaeJU81TOGedw9nWWZy1zrb/tM92bZSdTqVxoHgAvzH2G7jt8ttwoHB+o+zC5EC0AR4kndK/0dHR+ONUKjXQWzoMOqtloV6rQ4IERWl3LqvX6rBaFoMcDQy2y6fdxA99tPwW/MiHDBnD2WEcHTqKYrq4pVv8DArbblcgTUxMxO/1neNsdkI0IDp7wB2vHMdCawEZNZO4ABeJCLPN9tq1k7WTOFU7hZPV9p/LZ9cAoKyXMZGdwC0Hb8Hh4cPxDNtodnRH3lHbCkII2Fb7BV6ChDAI23cphXiVv0lrWevc8ZzSoGC7/N7i+dwakYhQr9c31NxMCAE7sGH5FiJESCtp7DP3YSQ7AlM3E7e0ZLNc113zOIMcUZ9FIsKCtYAXF19E3a3DUA2M5cb6PaxXVHNq7ZB2PrB1Qtt0bRpueOEFJ6tmsb+wH9eOXYt3HH0HSnIJuTCHYW0YeT2PofIQhoeH+Wa5CWbBxNLiUrw3X3mo3O8hJVo2l0XGyMQBGWjvgZjNDf6bJe0ObJffWzyfvReJCC+//DJmZ2bjY2PjYzhw4MCaYS6IArS8FtzQhSRJKKVLOFA8gFKmhKya3dXXCZqmrbr9gKYlowcAgxztSGEUYq41hxcWX4DlWwO3B1ynQ2Y8s9YJbdWTqLm1+HGKpGDCnMBUYQo3TtyIqeIU9hf2Y6ow1bV2TQiBhYUF1Oq1uIkEbY6maQiCAOl0Oj6nQRAk5sV9EGXSGUzsncDi0mJcwjJUHkImzQs6GgyddvlRFMW/97Is7+h2+UIIRCKCgOj6OBLtdaxrfX15FQjQrly4+Fij3kDFqXStxxaSAOpAXuRX/XurfS5BgiRJkCUZEs7/KUldH3e+1vl4p1af1Ot1zM7MIgiC+Cbj7MwsyuVy1x6nTuCg5bcQRiFURcV4dhxjuTEU0oUd3ahsIzzPe8XPBxmDHO0ofuhjpjmDFxdfhBu6KOiFvgW4SESYa83h5erLcVjrlENeXAo5bAxjqjCFtxx8C6YKU5gqtAPbhDmxrjIHx3HQaDYgyzJkuf3m1Wg2kMvlduzFx3ZIpVKwWhaA9po5I8t1XJshSRKGh4eRy+W4/qhHuJ6rt1RVhW3bqNeWlQIWTKjq9jY5WitQdT5f6+vxzT2sXq7c2ZZmeTmzJElQJAWKrCAlp9p/Su0/Fal9LD7e+VhS4rC01n+SJMG2bExPT0NG+1hnvJOTk8gYma7xL/++uo5BIIiC+L9IRAijEEEUxH9GWHZMtP8UQqz4Pi8+N3FoXHa6Oo97pcDYCYnx97osQG4127Jh2RY890LY0PT2rFIqk4Lt24AE5LU8jpaPomyUkdNyOzbYbpbneat2rUxKmGOQox3BDVycaZzBsaVjiER7D7hCurAtz31xKWTn44tLIQ3VwFRhCr8x9ht4x9F3YH9hf7vRiDmJrLa50jJuutp7vu8jk8lA1/WuO/O+7wM8pRvGzZZ7h+uPtobv+6t+fimBavnXu0idP1bOXi0nS3Icrjp/qrLaFaiWf60TsFYNVJBeNXBtlYyZgTfkoVKpxMeGy8MomaVt+Rl9tYC4VohcHhCXB8ZQhIii9rFALAuW58NjJCIA5/99hej69wZWCZEXBc3VZhUvno0Usoj3N40QwYkcRHaEVtTCfn0/rhi+AoV0gQ3M1knTNFSr1XgfOcdxEAQBpqam+jyy9WGQo0SzfTveA66zQeVWLNTtlEKutnat6lTjx11cCrm/sB9TxakVpZC91tlc9eJyIG66unGdc7d8lnP5cdoYziD1Dtcf9Y4QAl7oYaG5gEAPAAkIw7DdqTYV4FztHIooxrNRywOVLMkXZrDOz2Ytn8VaHpheMVAtC1w75XdCkiSMj4/DNE24rgtd12EYxrZ9f9tdYrk8xK8VIi/+eucxnbDYCYlCXJiJDEWIMAoRihBQgOJIETOzM5AlGSPaCK6augq/eeA3MTY62D0ABtXFSyaStISCQY4Sqek1446NKTmFUroERd7curCLSyGXl0OebZxdUQq5v7Afbz7w5g2VQvZaZ0Pl+bn5+NjY+Bg3Wt4EbmTbe5xB6i3OxG+MEAJu6MIJHPjRhdm3vJbH/tJ+lMMyDMWAqqhxSeDBAwcT0cFuEEmShGw2uyvO3/IyzK3SKrdwMnUS7qQLy7JgGAZ0XUcum9uy59zJPM+Lb3511m7LsszSSqKtUHNq8R5wmqJh2Bi+5BfMulvHyWp3GWQnuF1cCrm/sB/XjF6DWy+7NQ5sk4VJ5LTBesF0nfa4S+VS1z4oruPygm6DuJFt73EGqbc4E//qukJb6ANSu6Qtr+cxYU6glC7BUA0YqgFFViCEwIw601UKWCqVYBhcH0uDofNaOTc3BwBoNpvtNYd8Dd0QXW/f8JZluWsmrnN80DHI0cATQqDiVHBs6RgWrAWklTRGjJFXvKD2Qg/TtelV166tKIXMT2CqOIXrJ66PZ9amClMYNpLTur9zZ17TtK4XIt6Z3xyu5+otziD1Fmfiu3VCm+3b8UybLMkopAuYLEyimC7CUA1kUpk1Kzj6XQpI9GqSvoH1oDEMA6VSKbE3bxjkaGBFIsKitYgXFl9Azakhq2Uxlh3r+vpca27F5tgna+2ukJ1FxwAwlBnCVHEqLoXcX9iP/YX92Gfu2xGbX651B5535mmQ8Oe0t5bPxHueF9/E2Q0z8ZGI4AbtmbZABADaoc3UTewv7kcxXURWzSKjZi65amM3lQJS8nQ2sL54BikpG1gPmqTfvNm2K9goivDpT38azz//PDRNw2c/+9nEdIQBgNOnT2NhYQGVSgWlUgnDw8PYt29fv4eVaGud04v3gBNCYN6axz+c/YcVa9dWK4W8evTquBSyE9gGrRSy19LpNNLpNJaWluKa+XK5zPVcm2TZFqanp9GoN5A385icnISRScZdukHU+TmdmZmJf07Hx8f5c7pBrufCallwPRe2bbfXePgBXG9nBblIRHACB07gIIxCQGqHtqJexHhuHIV0oT3TtoHQthrXdXH8+PH4venw4cOJKbMaRL7v4+TJk/H5nJqa2vbtHHaSzs+i53loNBrI5/PQNI0/o5uQ5Js32xbk/vf//t/wPA//83/+Tzz11FP4T//pP+HrX//6dj39ppw+fRq//OUv8bOf/Sxeh/CGN7wBABjmNujicyoUgcnrJmGVLLxovYiTtZOYac7gdP00Ks6F6e5OKeT+wn5cP3F9XAaZtFLIXqvVanjppZfw9NNPIwojyIqM17zmNTAyBorFYr+Hl0iWbeH//b//t+Kc/uZv/ibD3Aa1rBZeeuklPPfcc/E5veqqq2CaJhfqb4DrulhcWsQzzzwTn89rrrkGI6Mj/R7ahoVRGK9pC6L2TJsiKyjqRUyYEzB1My6P3IrXe9d18cQTT+DJJ5+M3+9vuOEG3HTTTbxQ3gDf9/Gzn/0MTz31VHw+r7vuOrzhDW9gmNsgVVVx7tw5/OM//mN8Tl/3utfhyJEj/R4a9cG2Bbn/+3//L377t38bAHDdddfhmWee2a6n3rSFhQX87Gc/w2K0iB9rP4YPH//9yf+OoeNDvPjYoGaricWFRQhFoJlqoi7VIZ670BVyKDOEqcIU3jT1JkwVL6xbm8hPQFX44n+x2bnZOHAAQBRGePrppzEyMsIgt0HT09NrntPLj17e59El05kzZ7rOKXzwnG5CtVrFc88+1/Uz+tyzz2F8fDwRbcjDKIxn2iK0vwdFUlDKlLYltK3m+PHjcYgD2lsQPPnkk5iYmMBVV121LWPYSU6ePBmHOKB9Pp966ins27ePwWODTp06hV/96leQ5fOblUsSfvWrX2FqaorndBfatiDXbDaRy10IPYqidC3SHGSVSgVhGEKS2ht4RogA0S5r2a2LyjfL9dz2figAiqKIvdFe5EQON15xI25+/c0YygxBU7RdO8N2qRr1xoWL4/OiMEKj3ujTiJKP57T3eE57q9lstt+b5Auvk2EYxhvbDpIgCrpCmwQJKSmFcqaM/YX9yOt5GKqBdKq/nWE77/fLhWHY1QiB1o/ns/c653T5/qY8p7vXtqWoXC6HVqsVfx5FUSJCHNDuXqMoCgphAe/x3gOgHUTf/S/fjeuuu66/g0uop556Ct///vfbZZUQCBBAKAJvP/x2TJQmUHWqWLQX4zd8CRLSqTQ0RYOmsDHCxfJmHrIid10ky4qMvJnv46iSjee093hOeyufz0PVVHjuhW6gmq4hn+/v+Vwe2gQEhBDQFA2ldAlThSmY6fZMm67oA3ezrvN+vzx8KIqCUqnUx1ElF89n7/Gc0nLblqR+8zd/Ez/5yU9w66234qmnnsLRo0e366k3bXh4GG94wxtWrJEbHh7u99AS6+JzmlbSeMMb3oCrJq/CvtH2usPOAnfbt9HyW6jYFdTdOmpuDUC71bQiKdBTOtKp9I7oPrlRY6NjeM1rXrNiPVcSyqsG1eTk5KrndHJyst9DS6yJiYlVz+nExES/h5ZIk/smcc011+BXv/pV1xq5yX3b9zMah7bQgRDt8vhOaDtYOoiclotn2pLg8OHDuOGGG1askTt8+HC/h5ZIU1NTuO6661askUtSs7tBw3NKy0mi88q7xTpdK1944QUIIfC5z33uFV8Yb7/9dvzwhz/cjqGtC7tW9t5Gz2kYhbADG07goOk2UXEqqDpVuIELSAAEkJJT0BQNekrfNQGvWq1idm427rA4NjrG9XGbxK6VvddsNXHmzJn4nE5MTHCt8SbYto3p09Oo1+swTROT+7ZuY+CLyyMhAD2lYygzhHKmHIc2PZXsJQfsWtlb7FrZezynu8srZaJtC3KXatCCHA2+IApg+zbswEbdqaPu1lF1q/ACD0ISkCBBlVXoig5N0dbcEJYIaM/4hiKEH/oIogCSJEGWZMiSDEVS2n/yZ4h2KD/04QQO3NCFgIhDWzlTxlBmCFkti6yWZak7EdEWe6VMtDumKmhXSMkp5PU88noeo9nR+LgXenGJZs2toWpXUXfr8SayEiSk5FS8Bq8X+xDR4AujEH7UDml+6Mc/Dx2ddZlZLYt0Kh0/3gs9eJEHP/ThRz4kSO2SslWW+nS+1gl9FwfB+HMGQuqjzmukF3rt0AYgk8pgyGjPtGW1LAzVYGgjIhowDHK043UapJi6ibHchTVjbuDGJZpVp4qqU0XFqSAS7UYMEqT47w7ionxaWySiOKB1wlrnArVDUzRkUhmU0qWuC9Xl/63n3zyMQoQiRBiFiEQUf7z8Ty/w4Ec+/NCHF3kIogBe6MEN3QshUiDujLvC+a9JkFYNhIqsxF8jeiXLQ1unPNJQDYwYI12hjdu8EBENPgY52rX0lB6v5RjPjQNol9O5oQvbt2H5FqpOFTW3hiVnCZGIICAgQ4autP+uKqsMeH2wPKT5oR/vQdUhQUJWzSKnt9fs5NQc9JTeFdJ6FXoUWYECBdjE/04IsSIERiJaNRB6kYcgDLpmBZ3A6QqEndlBCRcFw/OBcPls4MWBsHOMks8N3Di0ddYPZ7UsRrOjXTcwGNqIiJKJQY5oGUlql9OlU+l4U1rgQgdNJ3DQ8lrxDF7drcfrR2RJbodDReeF0SasVfIYhxIBpNU0jJSBUqaErJpFRs10hbSknX9JkqBIWxMILw6GnfPaCYJe2J4hXB4IQxGuKBftCoUXBUJFUuLvgYFwpeVL0ZcH67WOb/TvOoEDP/IBtP+9cloOe/J7UMqUYKgGDNXYNc2fiIh2A76iE62DLMnxhVA5U8Zkod3eO4zC9vq7wO4KeFWnGjdYUSQlnsHb7RdRQoh4Fq0T1gB0BYSUnIKhGSimi8iqFxoqLA9pDAir245A2Ckh7ZSHxiWjoRcHbzuw2zOlIlpz/WCcSfo8ob08oK74+HxYWl7yupHj8XOdn73v7I3ZObb8+PLHdj0Gy/6uJK34/8mSjL35vfHNDUM1WGpLRLTD7e6rSqJNUmQl7t42bAxjCu19XDptum3fRsNroGq3SzTd0AXQvlBWZTWewdspF1wXr0sLo/DChfr5WRxDNdptyrWtLXmkjetlIFxr/WAkoq6gEj/3KsFnJxwnIiLqNQY5oi2QklPIaTnktBxGsiNAqX3cD/24wUrdaW+PUHNq8EM/XsOiKmo8gzdIM0/LSx47/3XNtpxvT55Vs2uWPKbkFC9udxFJkpCSUrt+JpqIiGgr8N2VaBupigpVUWHq5ootEjp74FWdajvkOdX2WiW0SzQ1WYtn8HodhoQQ8TqpzozaxSGNJY9EREREg4NBjmgAdMJQAYUVHTSdwIHlWai5NVScStxBE2jPeGiyFm9yvlbA68ygdULaWiWPWTULI9v+s7Ovnqqo8WwaEREREQ0GXpkRDajlHTSL6SL2Yi+AdsDrNFixfTturrJoL3Y1DVnegl5TNGTVLArpwupdHrmNAhEREVGiMMgRJYwkScioGWTUDJDBii0SbN+GgOgKaix5JCIiItpZGOSIdojlWyQQERER0c7G2/REREREREQJwyBHRERERESUMAxyRERERERECcMgR0RERERElDAMckRERERERAnDIEdERERERJQwDHJEREREREQJwyBHRERERESUMAxyRERERERECcMgR0RERERElDCpfg9gLWfOnMHtt9/e72EQERERERH1xZkzZ9b8miSEENs4FiIiIiIiItokllYSERERERElDIMcERERERFRwjDIERERERERJQyDHBERERERUcIwyBERERERESUMg9w6+b6Pj3/843jve9+LO+64A48//ni/h0S0qsXFRbzpTW/C8ePH+z0UohW++c1v4l/9q3+F22+/Hd///vf7PRyiLr7v4z/8h/+A97znPXjve9/L11EaKE8//TT+6I/+CABw8uRJ3HnnnXjve9+LT33qU4iiqM+jo35gkFunxx57DMViEd/97nfxX/7Lf8FDDz3U7yERreD7Ph588EGk0+l+D4VohSeffBL/9E//hP/xP/4HHnnkEczMzPR7SERdfvrTnyIIAjz66KP48Ic/jL/4i7/o95CIAADf+ta3cP/998N1XQDA5z//edx999347ne/CyEEJxh2KQa5dXr729+OP/3TPwUACCGgKEqfR0S00he+8AW85z3vwejoaL+HQrTC//k//wdHjx7Fhz/8Yfy7f/fv8Du/8zv9HhJRl4MHDyIMQ0RRhGaziVQq1e8hEQEA9u/fj6985Svx588++yyuv/56AMBNN92En//85/0aGvURX6HWKZvNAgCazSY+8pGP4O677+7vgIgu8sMf/hDlchm//du/jb/6q7/q93CIVqhUKjh79iy+8Y1v4PTp0/jQhz6Ev/u7v4MkSf0eGhEAwDAMnDlzBr/7u7+LSqWCb3zjG/0eEhEA4JZbbsHp06fjz4UQ8WtnNptFo9Ho19CojzgjdwnOnTuHP/7jP8Y73/lO3Hbbbf0eDlGXv/mbv8HPf/5z/NEf/RH++Z//Gffccw/m5+f7PSyiWLFYxBvf+EZomoZDhw5B13UsLS31e1hEsf/6X/8r3vjGN+LHP/4xfvSjH+Hee++NS9mIBoksX7iEb7VaME2zj6OhfmGQW6eFhQXcdddd+PjHP4477rij38MhWuE73/kOvv3tb+ORRx7BlVdeiS984QsYGRnp97CIYv/iX/wL/P3f/z2EEJidnYVt2ygWi/0eFlHMNE3k83kAQKFQQBAECMOwz6MiWumqq67Ck08+CQB44okn8LrXva7PI6J+YGnlOn3jG99AvV7Hww8/jIcffhhAe+Epm0oQEa3Pm9/8ZvzDP/wD7rjjDggh8OCDD3K9MQ2Uf/Nv/g3uu+8+vPe974Xv+/joRz8KwzD6PSyiFe655x488MAD+PKXv4xDhw7hlltu6feQqA8kIYTo9yCIiIiIiIho/VhaSURERERElDAMckRERERERAnDIEdERERERJQwDHJEREREREQJwyBHRERERESUMAxyRERERERECcMgR0RERERElDDcEJyIiOgiP/zhD/HTn/4UjuPg1KlT+MAHPoDbb7+938MiIiKKcUaOiIhoFc1mE9/85jfx9a9/HX/1V3/V7+EQERF1YZAjIiJaxRVXXAEA2LNnDzzP6/NoiIiIujHIERERrUKSpH4PgYiIaE0MckRERERERAkjCSFEvwdBRERERERE68cZOSIiIiIiooRhkCMiIiIiIkoYBjkiIiIiIqKEYZAjIiIiIiJKGAY5IiIiIiKihGGQIyIiIiIiShgGOSIiIiIiooRhkCMiIiIiIkqY/x/c74hDmt1thAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(15,5))\n", + "sns.scatterplot(data=greedy_euc_data, x='n', y='quality', alpha=0.3, color='#777') # actual data\n", + "sns.lineplot(data=greedy_euc_data, x='n', y='quality', ci='sd', color='green') # mean" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Asymmetric" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2..............................3..............................4..............................5..............................6..............................7..............................8..............................9..............................10..............................11.............................." + ] + } + ], + "source": [ + "MAX_REPETITIONS = 30\n", + "\n", + "greedy_asym_data = pd.DataFrame(columns=['n','time','quality'])\n", + "\n", + "i = 0\n", + "for n in range(2,MAX_n):\n", + " print(n, end='')\n", + " for repetitions in range(MAX_REPETITIONS):\n", + " print('.', end='')\n", + " G = Graph(n,'asymmetric')\n", + " # Solve exactly\n", + " actual_shortest_length = exhaustive_search(G)[1]\n", + " # Solve with Greedy\n", + " t0 = perf_counter()\n", + " cycle, greedy_length = greedy_nearest_neighbour(G)\n", + " t1 = perf_counter()\n", + " # Collect data\n", + " greedy_asym_data.loc[i] = [n, t1-t0, (greedy_length/actual_shortest_length-1)*100]\n", + " i += 1" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
timequality
minmaxmeanminmaxmean
n
2.00.0000100.0000240.0000140.0000000.0000000.000000
3.00.0000120.0000240.0000140.000000495.83333322.519897
4.00.0000150.0000340.0000190.00000090.38461518.797977
5.00.0000180.0000370.0000230.000000121.27659632.716400
6.00.0000240.0000510.0000300.00000090.32258125.664783
7.00.0000320.0000730.0000440.000000103.19148928.995296
8.00.0000380.0000920.0000510.000000107.25806544.537797
9.00.0000400.0001720.0000590.000000217.46031763.980648
10.00.0000470.0002450.0000709.677419113.23529447.788109
11.00.0000530.0012400.0001270.000000113.66459655.202735
\n", + "
" + ], + "text/plain": [ + " time quality \n", + " min max mean min max mean\n", + "n \n", + "2.0 0.000010 0.000024 0.000014 0.000000 0.000000 0.000000\n", + "3.0 0.000012 0.000024 0.000014 0.000000 495.833333 22.519897\n", + "4.0 0.000015 0.000034 0.000019 0.000000 90.384615 18.797977\n", + "5.0 0.000018 0.000037 0.000023 0.000000 121.276596 32.716400\n", + "6.0 0.000024 0.000051 0.000030 0.000000 90.322581 25.664783\n", + "7.0 0.000032 0.000073 0.000044 0.000000 103.191489 28.995296\n", + "8.0 0.000038 0.000092 0.000051 0.000000 107.258065 44.537797\n", + "9.0 0.000040 0.000172 0.000059 0.000000 217.460317 63.980648\n", + "10.0 0.000047 0.000245 0.000070 9.677419 113.235294 47.788109\n", + "11.0 0.000053 0.001240 0.000127 0.000000 113.664596 55.202735" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "greedy_asym_data.groupby('n').agg(['min','max','mean'])" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABaoAAAFCCAYAAAAQQeqbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAACf+UlEQVR4nOzdeZRkZ30f/O9darm39qree2Z6Fu27dGQJjCRsAhEQMI5NIjmOczhgOzYvimWHGKyAABtjsAHjIENsYh/HKD4GAsfGxnmTFxksI4gwSDNaRxpJs09vtVfdW3XX5/3jdt3umu6e6Znprqru+n7m1Knqp7anuqt7bn3v7/4eSQghQERERERERERERETUJ3K/J0BEREREREREREREw41BNRERERERERERERH1FYNqIiIiIiIiIiIiIuorBtVERERERERERERE1FcMqomIiIiIiIiIiIiorxhUExEREREREREREVFfqf2ewKW6/fbbMT093e9pEBEREdEmO336NB5//PF+T4P6gNv4RERERDvTubbxt31QPT09ja997Wv9ngYRERERbbKf+qmf6vcUqE+4jU9ERES0M51rG5+tP4iIiIiIiIiIiIiorxhUExEREREREREREVFfMagmIiIiIiIiIiIior5iUE1EREREREREREREfcWgmoiIiIiIiIiIiIj6Su33BIiIiIiIaHv6l//yXyKZTAIAdu3ahXvuuQe//du/DUVRcMcdd+A973kPfN/Hhz/8YbzwwguIRqP46Ec/ipmZmT7PnIiIiIgGDYNqIiIiIiK6YJZlQQiBL37xi+HY2972Nnz2s5/F7t278Yu/+It47rnncOrUKdi2jS996Us4ePAgPv7xj+Pzn/98H2dORERERIOIQTURERERrUsIAdM0YVkWYrEYdF2HJEn9nhYNgMOHD6PVauGd73wnXNfFfffdB9u2sWfPHgDAHXfcge9+97tYXFzEnXfeCQC46aab8Mwzz/Rz2nQW/o4TERHRoGBQTURERERrEkJgbm4OlUolHMvlcpiYmGCQRYjH43jXu96Ff/Wv/hWOHTuGX/iFX0A6nQ6vTyQSOHnyJJrNZtgeBAAURYHrulBVfhTpN/6OExER0SDh1iERERERrck0za4ACwAqlQrS6TQSiUSfZkWDYt++fZiZmYEkSdi3bx9SqRSq1Wp4vWEYSKfTaLfbMAwjHPd9nyH1gODvOBEREQ0Sud8TICIiIqLBZFnWBY3TcPmf//N/4uMf/zgAYH5+Hq1WC7qu48SJExBC4Dvf+Q5uvfVW3HLLLXj00UcBAAcPHsQVV1zRz2nTCvwdJyIiokHCUgYiIiIiWlMsFrugcRoub3/72/Ebv/Eb+Jmf+RlIkoSPfexjkGUZ733ve+F5Hu644w7ceOONuP766/HYY4/h3nvvhRACH/vYx/o9dVrC33EiIiIaJAyqiYiIiGhNuq4jl8ut6l+r63ofZ0WDIhqN4lOf+tSq8S9/+ctdX8uyjN/8zd/s1bToAvB3nIiIiAYJg2oiIiIiWpMkSZiYmEA6nYZlWYjFYtB1nYusEe0Q/B0nIiKiQcKgmoiIiIjWJUkSEokEF1Yj2qH4O05ERESDgospEhEREREREREREVFfDVxF9TPPPIOHH34YQgj8p//0nzAyMtLvKRERERERERERERHRFhq4imrLsvDAAw/gta99LQ4ePNjv6RARERERERERERHRFut7RfWf/dmf4Xvf+x4A4KabbsIv//Iv48knn8Sf/umf4jOf+Ux/J0dEREREREREREREW67vQfU73vEOvOMd7wi/fuqpp3DttdfiC1/4Av7wD/8QH/jAB/o3OSIiIiIiIiIiIiLaclva+uPQoUP4uZ/7OQCA7/t48MEHcc899+Dnfu7ncPz48TXvYxgGHnjgAfzu7/4u3vKWt2zl9IiIiIiIiIiIiIhoAGxZRfUXvvAFfP3rX4emaQCAb37zm7BtG1/60pdw8OBBfPzjH8fnP//5Vfd79atfjVe/+tVbNS0iIiIiIiIiIiIiGjBbVlG9Z88efPaznw2//uEPf4g777wTQNCL+plnntmqpyYiIiIiIiIiIiKibWTLguq7774bqrpcsN1sNpFMJsOvFUWB67pb9fREREREREREREREtE1saY/qlZLJJAzDCL/2fb8ryCYiIiIiIiIiIiKi4dSzoPqWW27Bo48+CgA4ePAgrrjiil49NRERERERERERERENsJ6VNL/hDW/AY489hnvvvRdCCHzsYx/r1VMTERERERERERER0QDb0qB6165d+PKXvwwAkGUZv/mbv7mVT0dERERERERERERE21DPWn8QEREREREREREREa2FQTURERERERERERER9RWDaiIiIiIiIiIiIiLqKwbVRERERERERERERNRXDKqJiIiIiIiIiIiIqK8YVBMRERERERERERFRXzGoJiIiIiIiIiIiIqK+YlBNRERERERERERERH3FoJqIiIiIiIiIiIiI+opBNRERERERERERERH1FYNqIiIiIiIiIiIiIuorBtVERERERERERERE1FcMqomIiIiIiIiIiIiorxhUExEREREREREREVFfMagmIiIiIiIiIiIior5iUE1EREREREREREREfcWgmoiIiIiIiIiIiIj6ikE1EREREREREREREfUVg2oiIiIiIiIiIiIi6isG1URERERERERERETUVwyqiYiIiIiIiIiIiKivGFQTEREREdFFK5VKeO1rX4uXX34Zx48fx8/8zM/g3/ybf4MPfehD8H0fAPDQQw/h7W9/O+6991489dRTfZ4xEREREQ0iBtVERERERHRRHMfBgw8+iHg8DgD4nd/5Hdx///34i7/4Cwgh8Mgjj+DZZ5/F97//fXzlK1/Bpz/9aXzkIx/p86yJiIiIaBAxqCYiIiIioovyiU98Avfeey/GxsYAAM8++yxuu+02AMBdd92F7373u/jhD3+IO+64A5IkYWpqCp7noVwu93PaRERERDSAGFQTEREREdEF+9rXvoZ8Po8777wzHBNCQJIkAEAikUCj0UCz2UQymQxv0xknIiIiIlpJ7fcEiIiIiIho+/nqV78KSZLwve99D88//zze9773dVVKG4aBdDqNZDIJwzC6xlOpVD+mTEREREQDjBXVRERERER0wf7H//gfePjhh/HFL34RV199NT7xiU/grrvuwuOPPw4AePTRR3HrrbfilltuwXe+8x34vo8zZ87A933k8/k+z56IiIiIBg0rqomIiIiIaFO8733vwwc/+EF8+tOfxv79+3H33XdDURTceuutuOeee+D7Ph588MF+T5OIiIiIBhCDaiIiIiIiuiRf/OIXw8sPP/zwquvvu+8+3Hfffb2cEhERERFtM2z9QURERERERERERER9xaCaiIiIiIiIiIiIiPqKQTURERERERERERER9RWDaiIiIiIiIiIiIiLqKwbVRERERERERERERNRXDKqJiIiIiIiIiIiIqK8YVBMRERERERERERFRXzGoJiIiIiIiIiIiIqK+YlBNRERERERERERERH3FoJqIiIiIiIiIiIiI+opBNRERERERERERERH1FYNqIiIiIiIiIiIiIuorBtVERERERERERERE1FcMqomIiIiIiIiIiIiorxhUExEREREREREREVFfMagmIiIiIiIiIiIior5iUE1EREREREREREREfcWgmoiIiIiIiIiIiIj6ikE1EREREZ2f4/R7BkREREREtIMxqCYiIiKiczNN4Ic/7PcsiIiIiIhoB2NQTURERETrEkLAfPpp1E+ehGEYEEL0e0pERERERLQDqf2eABERERENJiEE5l98EdaTTwKyDOP4ceRyOUxMTECSpH5Pj4iIiIiIdhBWVBMRERHRmkzDgHnwIEQ8Ho5VKhWYptnHWRERERER0U7EoJqIiIiI1mTPzUEpl+EnEl3jlmX1aUZERERERLRTMagmIiIiotV8H7FXXoGfTK66KhaL9WFCRERERES0kzGoJiIiIqLV5uehuS6SY2Ndw7lcDrqu92lSRERERES0U3ExRSIiIiLq5rrA889DymYxEo0imUjAATAyMwNd17mQIhERERERbToG1URERETU7dQpwLaBTAYSAE3ToKXTwFm9qomIiIiIiDYLW38QERER0TLLAl58Ecjl+j0TIiIiIiIaIgyqiYiIiGjZ0aPBucoD74iIiIiIqHcYVBMRERFRwDCCoJrV1ERERERE1GMMqomIiIgo8NJLQDQKyNxEJCIiIiKi3uKnECIiIiICajXg9Gkgk+n3TIiIiIiIaAgxqCYiIiIadkIAhw8DiQQgSf2eDRERERERDSEG1UREREQDTAgBwzBQLpdhGAaEEJv/JKUSUC4DyeTmPzYREREREdEGcDl3IiIiogElhMDc3BwqlUo4lsvlMDExAWmzKp99H3juOSCV2pzHIyIiIiIiuggMqomIiIgGlGmaXSE1AFQqFaTTaSQSic15ktlZwDCAsbHNeTwaGp7n4QMf+ACOHj0KSZLwkY98BLFYDO9///shSRIuv/xyfOhDH4Isy3jooYfw7W9/G6qq4oEHHsANN9zQ7+kTERER0YBhUE1EREQ0oCzLWnd8U4Jq1w16U2ezl/5YNHS+9a1vAQD+8i//Eo8//jh+//d/H0II3H///bj99tvx4IMP4pFHHsHU1BS+//3v4ytf+QpmZ2dx33334atf/WqfZ09EREREg4ZBNREREdGAisViFzR+wU6cABwHiEY35/FoqLz+9a/Hj/3YjwEAzpw5g3Q6je9+97u47bbbAAB33XUXHnvsMezbtw933HEHJEnC1NQUPM9DuVxGPp/v4+yJiIiIaNBwMUUiIiKiAaXrOnK5XNdYLpeDruuX/uDtNvDSS8BZj090IVRVxfve9z781m/9Ft761rdCCBH2T08kEmg0Gmg2m0iuWKizM05EREREtBIrqomIiIgGlCRJmJiYQDqdhmVZiMVi0HV9cxZSPHo0OFe5OUiX5hOf+ATe+9734l//63/d1a7GMAyk02kkk0kYhtE1nuLinURERER0FlZUExEREQ0wSZKQSCSQz+eRSCQ2J6Q2DODYMVZT0yX5q7/6K/zRH/0RAEDTNEiShOuuuw6PP/44AODRRx/FrbfeiltuuQXf+c534Ps+zpw5A9/32faDiIiIiFZhCQ0RERHRsDlyJOhLLbNmgS7eP//n/xy/8Ru/gZ/92Z+F67p44IEHcODAAXzwgx/Epz/9aezfvx933303FEXBrbfeinvuuQe+7+PBBx/s99SJiIiIaAAxqCYiIiIaJtUqcOYMMDbW75nQNqfrOv7gD/5g1fjDDz+8auy+++7Dfffd14tpEREREdE2xTIaIiIiomEhBHD4MJBIAJvRQoSIiIiIiGiTMKgmIiIiGhbFIlAuA8lkv2dCRERERETUhUE1ERER0TDwPOC554BMpt8zISIiIiIiWoVBNREREdEwmJ0FDAOIx/s9EyIiIiIiolUYVBMRERHtdI4DvPACkM9f8F2FEGi1WqjX6zAMA0KILZggERERERENO7XfEyAiIiKiLXbyJOC6QCRyQXcTQqBYKqFRr0OpVGAcP45cLoeJiQlIXIyRiIiIiIg2ESuqiYiIiHaydhs4cgTIZi/irm006vWusUqlAtM0N2lyREREREREAQbVRERERDvZK68AsgyoF34gnW3ba45blnWpsyIiIiIiIurC1h9EREREZxFCwDRNWJaFWCwGXde3Z6uLZhM4fhwYGbmou0ej0TXHY7HYpcyKiIiIiIhoFQbVRERERCsIITA3N4dKpRKObdu+zC++CMRiQUX1RYjH40il013tP3K5HHRd36wZEhERERERAWBQTURERNTFNM2ukBoI+jKn02kkEok+zeoiVCrA/DwwNnbRDyFJEkYKBSQTCTgARmZmtm91ORERERERDTT2qCYiIiJaYb3+y9uqL7MQwOHDwCZUPkuSBE3TwqCeITUREREREW0F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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, (time, quality) = plt.subplots(nrows=1, ncols=2, figsize=(25, 5))\n", + "sns.scatterplot(data=greedy_asym_data, x='n', y='time', alpha=0.3, ax=time, color='#777')\n", + "sns.lineplot(data=greedy_asym_data, x='n', y='time', ci='sd', ax=time, color='red')\n", + "time.set(xscale=\"log\", yscale=\"log\")\n", + "sns.scatterplot(data=greedy_asym_data, x='n', y='quality', alpha=0.3, ax=quality, color='#777')\n", + "sns.lineplot(data=greedy_asym_data, x='n', y='quality', ci='sd', ax=quality, color='green')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Metaheuristics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "............................................................\n", + "\n", + "............................................................\n", + "\n", + "............................................................\n", + "\n", + "............................................................\n", + "\n", + "............................................................\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# References" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Garey, S. and Johnson, D. (1979). **Computers and Intractability: A Guide to the Theory of NP-Completeness.** Freeman.\n", + "\n", + "* Hoos, H. and Stutzler, T. (2005). **Stochastic Local Search: Foundations and Applications.** Morgan Kaufmann.\n", + "\n", + "* Sipser, M. (2013). **Introduction to the theory of computation.** (3rd international ed.). Cengage Learning." + ] + } + ], + "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.8.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": false, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Local Search and Neighbourhoods.ipynb b/Local Search and Neighbourhoods.ipynb new file mode 100644 index 0000000..0e3825c --- /dev/null +++ b/Local Search and Neighbourhoods.ipynb @@ -0,0 +1,467 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from random import randint, shuffle # random integers and random shuffling of a list\n", + "from itertools import permutations # iterate over all possible permutations of a list\n", + "from itertools import chain # concatenate range()'s'\n", + "from math import inf as oo # Infinity (∞) is larger than any number\n", + "from math import sqrt, log, factorial # square root, logarithm, and n!\n", + "from time import perf_counter # for measuring time. NB. 'perf_counter' is better/more accurate than 'time'\n", + "import networkx as nx # to draw sample graphs\n", + "import pandas as pd # to show the adjacency matrix in a nice format\n", + "import matplotlib.pyplot as plt # to plot graphs of time and quality vs n\n", + "import seaborn as sns # nice statistical plots -- see e.g. https://seaborn.pydata.org/tutorial/relational.html#relational-tutorial\n", + "sns.set_style(\"white\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Basics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let the set of vertices be $\\{0, 1, 2,\\ldots, n-1\\}$.\n", + "\n", + "For simplicity, we will consider $0$ to be the start and end point of cycles." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "class Graph:\n", + " ''' Random graphs '''\n", + " def __init__(self, n=0, type='asymmetric', MAX_WEIGHT=100, MAX_X=200, MAX_Y=200):\n", + " self.n = n\n", + " self.vertices = list(range(n)) # [0,1,...,n-1]\n", + " self.type = type\n", + " self.adj_matrix = [[oo for i in range(n)] for j in range(n)]\n", + " # Generate a random adjacency matrix according to the required type\n", + " if type=='symmetric': self.__random_symmetric_graph(n,MAX_WEIGHT)\n", + " elif type=='Euclidean': self.__random_euclidean_graph(n,MAX_X,MAX_Y)\n", + " elif type=='easy': self.__random_cycle_graph(n)\n", + " else: self.__random_asymmetric_graph(n,MAX_WEIGHT) # assume 'asymmetric' otherwise\n", + " \n", + " def __getitem__(self, i):\n", + " ''' Allow indexing to get the weights '''\n", + " return self.adj_matrix[i]\n", + " \n", + " def __random_asymmetric_graph(self,n, MAX_WEIGHT):\n", + " ''' Asymmetric adjacency matrix of size nxn '''\n", + " for i in range(n):\n", + " for j in range(n):\n", + " if i==j: continue # no self-loops\n", + " self.adj_matrix[i][j] = randint(1,MAX_WEIGHT)\n", + "\n", + " def __random_symmetric_graph(self,n,MAX_WEIGHT):\n", + " ''' Symmetric adjacency matrix of size nxn '''\n", + " for i in range(n):\n", + " for j in range(i+1,n):\n", + " w = randint(1,MAX_WEIGHT)\n", + " self.adj_matrix[i][j] = w\n", + " self.adj_matrix[j][i] = w\n", + "\n", + " def __random_cycle_graph(self,n):\n", + " ''' Symmetric adjacency matrix of size nxn with one reandomly chosen cycle\n", + " All the edge weights are 2 except for the cycle (weight=1) '''\n", + " self.adj_matrix = [[2 for _ in range(n)] for _ in range(n)] # All weights=2\n", + " # Select a random cycle which will have weight=1\n", + " cycle = list(range(1,n)) # don't include 0 as we want to be at the start\n", + " shuffle(cycle) # in-place random permutation\n", + " cycle = [0]+cycle+[0] # cycle starting and ending at 0\n", + " for a,b in zip(cycle, cycle[1:]): # set the cycle's weights to 1\n", + " self.adj_matrix[a][b] = 1\n", + " self.adj_matrix[b][a] = 1\n", + "\n", + " def __random_euclidean_graph(self,n,MAX_X,MAX_Y):\n", + " ''' Symmetric adjacency matrix of a Euclidean graph of size nxn '''\n", + " # (1/2) Generate random (x,y) points\n", + " points = set()\n", + " while len(points)\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0123456
0inf97.063.040.093.094.01.0
197.0inf55.025.043.075.096.0
263.055.0inf97.019.025.085.0
340.025.097.0inf43.03.043.0
493.043.019.043.0inf53.016.0
594.075.025.03.053.0inf30.0
61.096.085.043.016.030.0inf
\n", + "" + ], + "text/plain": [ + " 0 1 2 3 4 5 6\n", + "0 inf 97.0 63.0 40.0 93.0 94.0 1.0\n", + "1 97.0 inf 55.0 25.0 43.0 75.0 96.0\n", + "2 63.0 55.0 inf 97.0 19.0 25.0 85.0\n", + "3 40.0 25.0 97.0 inf 43.0 3.0 43.0\n", + "4 93.0 43.0 19.0 43.0 inf 53.0 16.0\n", + "5 94.0 75.0 25.0 3.0 53.0 inf 30.0\n", + "6 1.0 96.0 85.0 43.0 16.0 30.0 inf" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "G=Graph(7, 'symmetric')\n", + "neighbours = neighbourhood(G)\n", + "show(G)\n", + "draw(G)\n", + "show_neighbourhood(G, neighbours)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Another neighbourhood..." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def list_of_neighbours(cycle):\n", + " ''' List of all neighbours of: cycle = (0,...,0) calculated differently from 2-opt\n", + " Here I use swaps of adjacent vertices only -- meant to be less effective than 2-opt which is more general '''\n", + " nn=[]\n", + " for i in range(1,len(cycle)-2):\n", + " c = cycle[:i]+cycle[i:i+2][::-1]+cycle[i+2:] # [::-1] reverses a sequence\n", + " nn.append(c)\n", + " return nn" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "neighbours = neighbourhood(G)\n", + "show_neighbourhood(G, neighbours, 'neighbourhood_not_good.gexf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worse..." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "def list_of_neighbours(cycle):\n", + " ''' List of all neighbours of: cycle = (0,...,0) calculated differently from 2-opt\n", + " Here I use swaps of adjacent vertices only -- meant to be less effective than 2-opt which is more general '''\n", + " nn=[]\n", + " for i in range(1,len(cycle)-3):\n", + " c = cycle[:i]+cycle[i:i+2][::-1]+cycle[i+2:] # [::-1] reverses a sequence\n", + " nn.append(c)\n", + " return nn" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "neighbours = neighbourhood(G)\n", + "show_neighbourhood(G, neighbours, 'neighbourhood_worse.gexf')" + ] + } + ], + "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.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..cd79594 --- /dev/null +++ b/README.md @@ -0,0 +1,49 @@ +# Guide for the 380CT Assignment on TSP + +The actual part you need to submit is the **Metaheuristics section**. +The rest is meant to introduce you to the basics. + +--- + +- Ensure you have **Jupyter**. + - Either install [Jupyter](https://jupyter.org/install) alone or [Anaconda](https://www.anaconda.com/distribution). +- Familiarise yourself with Jupyter functionaility. Consider taking **LinkedIn Learning courses** (free through the university) or any suitable alternatives. Here is a recommended set (e.g. each member of the group takes one): + + - [Introducing Jupyter](https://www.linkedin.com/learning/introducing-jupyter/present-data-like-a-pro-with-jupyter) + - [Get Ready for Your Coding Interview](https://www.linkedin.com/learning/get-ready-for-your-coding-interview/welcome) + - [Python for Data Visualization](https://www.linkedin.com/learning/python-for-data-visualization/setting-marker-type-and-colors) + - [Python: Programming Efficiently](https://www.linkedin.com/learning/python-programming-efficiently/time-profiling) + - [Python Statistics Essential Training](https://www.linkedin.com/learning/python-statistics-essential-training/the-power-of-visualization) + +- Load and study `Investigating TSP.ipynb`. + - Can you improve any of the functions to make them more efficient? + - See how large you can make _n_ while testing `exhaustive_search()`. + - Check that `greedy_nearest_neighbours()` is correct. If not then fix it! + +- Read the [Wikipedia article on TSP](https://en.wikipedia.org/wiki/Travelling_salesman_problem). Pay attention to th **Computing a solution** section, and especially to the `2-opt` and `3-opt` techniques for defining neighbourhoods. + +- Experiment with generating your own graph families. For example: + - **Euclidean graphs**: generate points using _(x,y)_ coordinates, then generate the adjacency matrix by calculating all the required distances. Recall that the distance between two points _(x1,y1)_ and _(x2,y2)_ is _sqrt[(x1-x2)2+(y1-y2)2]_. + - **Graphs with obvious shortest cycle**: think of a graph where all the distances are 2 except for the edges on a predefined cycle, where the distance is 1. Such a graph would be useful for testing/debugging the *nearest neighbours greedy search*. + +--- + +- You can use `Template.ipynb` to start writing the part you need to submit (about meta-heuristics). +- I propose you work as follows (You don't have to follow this though!): + * Ensure you are familiar with the TSP problem, 2-opt and 3-opt local search techniques. (See this [Wikipedia article](https://en.wikipedia.org/wiki/Travelling_salesman_problem)) + * Decide which meta-heuristics you want to try. Watch the [guest lecture videos](https://github.coventry.ac.uk/pages/ab3735/380CT_2022/lectures/lecture7/) and check the literature related to TSP and the meta-heuristics you are thinking of. +- You may try Google Colab and/or Microsoft Azure if that helps you work better, but please be aware that I am not sure about their GDPR compliance. + +I should emphasise here that "exhaustive search" and "greedy" are **not* meta-heuristics, nor are 2-opt and 3-opt. Ensure this is clear to you. + + +## Bibliography + +- Applegate, DL, Bixby, RE, Chvátal, V, Cook, WJ, 2007, [The Traveling Salesman Problem: A Computational Study](https://locate.coventry.ac.uk/permalink/f/gr8698/COV_ALMA5199622620002011), Princeton University Press, Princeton. +- Cook, WJ 2012, [In Pursuit of the Traveling Salesman: Mathematics at the Limit of Computation](https://locate.coventry.ac.uk/permalink/f/gr8698/COV_ALMA5199665280002011), Princeton University Press, Princeton. +- Glover, F, & Kochenberger, GA (eds) 2002, [Handbook of Metaheuristics](https://locate.coventry.ac.uk/permalink/f/gr8698/COV_ALMA51109755880002011), Kluwer Academic Publishers, Secaucus. +- Gutin, G, & Punnen, AP (eds) 2002, [The Traveling Salesman Problem and Its Variations](https://locate.coventry.ac.uk/permalink/f/gr8698/COV_ALMA51125059450002011), Springer, New York, NY. +- Pintea, C.-M., 2014. [Advances in Bio-inspired Computing for Combinatorial Optimization Problems](https://locate.coventry.ac.uk/permalink/f/1r06c36/COV_ALMA5155140430002011). 1st ed. 2014. +- Steven, SS 2008, [The Algorithm Design Manual](https://locate.coventry.ac.uk/permalink/f/gr8698/COV_ALMA5190160580002011), Springer, England. + - You may also find its [companion website](http://algorist.com/problems/Traveling_Salesman_Problem.html) useful. +- Talbi, E.-G., 2009. [Metaheuristics from design to implementation](https://locate.coventry.ac.uk/permalink/f/gr8698/COV_ALMA51117060170002011), Hoboken, NJ: John Wiley & Sons. diff --git a/Template.ipynb b/Template.ipynb new file mode 100644 index 0000000..0549551 --- /dev/null +++ b/Template.ipynb @@ -0,0 +1,467 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# .... Title ...." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "... Author ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "https://github.coventry.ac.uk/380CT-2022/........" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1) Notation and definitions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let $G$ be a [complete]( \"graph is undirected, has no self-loops, and each node is connected to all the other vertices\") [weighted]( \"the edges have a weight (a positive integer)\") graph with $n$ vertices." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Optimisation TSP**:\n", + "> Given $G$, find a Hamiltonian cycle of minimal total cost.\n", + "\n", + "This problem is **NP-Hard** because its decision version is **NP-complete** (Garey and Johnson, 1979, p. 211)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 2) Testing methodology" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```\n", + ".................................................................\n", + ".................................................................\n", + "... You can add or improve this section and its subsections ...\n", + ".................................................................\n", + ".................................................................\n", + "```\n", + "\n", + "* **Exact method (Exhaustive search)**:\n", + " Average _time_ for instances with increasing $n$.\n", + "\n", + "* **Greedy and meta-heuristics**:\n", + " Average _time_ and _\"quality\"_ as $n$ increases.\n", + "\n", + "Instances will be generated randomly as shown in the next subsection." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2.1) Random instances sampling strategy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Four types of TSP instances will be generated by creating an **adjacency matrices** $M$ as follows:\n", + "1. **Asymmetric**: The edge weights are independent and uniformly random in an interval $[1,\\text{MAX_WEIGHT}]$, i.e the graph is assumed to be directed.\n", + "2. **Symmetric**: Like the asymmetric case but the graph is undirected, and the matrix is therefore symmetric: $M_{ij}=M_{ji}$.\n", + "3. **Euclidean**: Generate points using $(x,y)$ coordinates, then generate the adjacency matrix by calculating all the required distances. Recall that the distance between two points $(x_1,y_1)$ and $(x_2,y_2)$ is $\\sqrt{(x_1-x_2)^2+(y_1-y_2)^2}$. The points are generated in the rectangle defined by the points $(0,0)$ and $(\\text{MAX_Y},\\text{MAX_Y})$.\n", + "4. **Graphs with obvious shortest cycle**: A graph where all the distances are 2 except for the edges on a predefined cycle, where the distance is 1. Such a graph would be useful for testing/debugging the \"nearest neighbour greedy\" search." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Implementation of the instances generation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First start by importing relevant libraries." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from random import randint, shuffle # random integers and random shuffling of a list\n", + "from itertools import permutations # iterate over all possible permutations of a list\n", + "from itertools import chain # concatenate range()'s'\n", + "from math import inf as oo # Infinity (∞) is larger than any number\n", + "from math import sqrt, log, factorial # square root, logarithm, and n!\n", + "from time import perf_counter # for measuring time. NB. 'perf_counter' is better/more accurate than 'time'\n", + "import networkx as nx # to draw sample graphs\n", + "import pandas as pd # to show the adjacency matrix in a nice format\n", + "import matplotlib.pyplot as plt # to plot graphs of time and quality vs n\n", + "import seaborn as sns # nice statistical plots -- see e.g. https://seaborn.pydata.org/tutorial/relational.html#relational-tutorial\n", + "sns.set_style(\"white\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Basics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let the set of vertices be $\\{0, 1, 2,\\ldots, n-1\\}$.\n", + "\n", + "For simplicity, we will consider $0$ to be the start and end point of cycles." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "class Graph:\n", + " ''' Random graphs '''\n", + " def __init__(self, n=0, type='asymmetric', MAX_WEIGHT=100, MAX_X=200, MAX_Y=200):\n", + " self.n = n\n", + " self.vertices = list(range(n)) # [0,1,...,n-1]\n", + " self.type = type\n", + " self.adj_matrix = [[oo for i in range(n)] for j in range(n)]\n", + " # Generate a random adjacency matrix according to the required type\n", + " if type=='symmetric': self.__random_symmetric_graph(n,MAX_WEIGHT)\n", + " elif type=='Euclidean': self.__random_euclidean_graph(n,MAX_X,MAX_Y)\n", + " elif type=='easy': self.__random_cycle_graph(n)\n", + " else: self.__random_asymmetric_graph(n,MAX_WEIGHT) # assume 'asymmetric' otherwise\n", + " \n", + " def __getitem__(self, i):\n", + " ''' Allow indexing to get the weights '''\n", + " return self.adj_matrix[i]\n", + " \n", + " def __random_asymmetric_graph(self,n, MAX_WEIGHT):\n", + " ''' Asymmetric adjacency matrix of size nxn '''\n", + " for i in range(n):\n", + " for j in range(n):\n", + " if i==j: continue # no self-loops\n", + " self.adj_matrix[i][j] = randint(1,MAX_WEIGHT)\n", + "\n", + " def __random_symmetric_graph(self,n,MAX_WEIGHT):\n", + " ''' Symmetric adjacency matrix of size nxn '''\n", + " for i in range(n):\n", + " for j in range(i+1,n):\n", + " w = randint(1,MAX_WEIGHT)\n", + " self.adj_matrix[i][j] = w\n", + " self.adj_matrix[j][i] = w\n", + "\n", + " def __random_cycle_graph(self,n):\n", + " ''' Symmetric adjacency matrix of size nxn with one reandomly chosen cycle\n", + " All the edge weights are 2 except for the cycle (weight=1) '''\n", + " self.adj_matrix = [[2 for _ in range(n)] for _ in range(n)] # All weights=2\n", + " # Select a random cycle which will have weight=1\n", + " cycle = list(range(1,n)) # don't include 0 as we want to be at the start\n", + " shuffle(cycle) # in-place random permutation\n", + " cycle = [0]+cycle+[0] # cycle starting and ending at 0\n", + " for a,b in zip(cycle, cycle[1:]): # set the cycle's weights to 1\n", + " self.adj_matrix[a][b] = 1\n", + " self.adj_matrix[b][a] = 1\n", + "\n", + " def __random_euclidean_graph(self,n,MAX_X,MAX_Y):\n", + " ''' Symmetric adjacency matrix of a Euclidean graph of size nxn '''\n", + " # (1/2) Generate random (x,y) points\n", + " points = set()\n", + " while len(points)0:\n", + " # Find nearest neighbour\n", + " nearest_city = None\n", + " shortest_distance = oo\n", + " for neighbour in unvisited:\n", + " if G[city][neighbour] < shortest_distance:\n", + " shortest_distance = G[city][neighbour]\n", + " nearest_city = neighbour\n", + " # Update 'cycle' and 'cities' and G then 'city'\n", + " visited.append(city)\n", + " unvisited.remove(city)\n", + " city = nearest_city\n", + " return (visited, cost(G, visited+[0]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 4) Metaheuristic" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```\n", + "............................................................\n", + "............................................................\n", + "............................................................\n", + "............................................................\n", + "............................................................\n", + "............................................................\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Conclusion" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```\n", + "............................................................\n", + "............................................................\n", + "\n", + "(Based on your theoretical analysis and experimental findings, give clear and precise practical recommendations on which methods to use given the size and/or structure of the graph.)\n", + "\n", + "............................................................\n", + "............................................................\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# List of references" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```\n", + "............................................................\n", + "............................................................\n", + "```" + ] + }, + { + "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", + "version": "3.8.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": false, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}