Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
{
"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: # We may get duplicate (x,y) so we try until we get enough points\n",
" x,y = randint(0,MAX_X), randint(0,MAX_Y)\n",
" points.add((x,y))\n",
" points = list(points) # Sets are not indexed, so convert into a list\n",
" # (2/2) Now compute the adjacency matrix\n",
" for i in range(n):\n",
" p1 = points[i]\n",
" for j in range(i+1,n):\n",
" p2 = points[j]\n",
" distance = sqrt((p1[0]-p2[0])**2+(p1[1]-p2[1])**2)\n",
" self.adj_matrix[i][j] = distance\n",
" self.adj_matrix[j][i] = distance\n",
" self.points=points"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"def cost(G, cycle):\n",
" ''' Calculate the cost of the given cycle (0,...,0) in G '''\n",
" return sum(G[a][b] for a,b in zip(cycle, cycle[1:]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Functions to show the graphs as **adjacency matrices** or as a **drawing**:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def show(G):\n",
" ''' Show adjacency matrix. Useful for debugging.\n",
" 'type' is a string from: Euclidean, Cycle, ...\n",
" The distances are round to 1 decimal point for clarity/simplicity\n",
" '''\n",
" print(f\"{G.n}x{G.n} {G.type} graph:\")\n",
" if G.type=='Euclidean': print(\"Points:\",G.points)\n",
" r = pd.DataFrame({str(i): G[i] for i in range(G.n)})\n",
" display(r)\n",
" \n",
"def nx_graph(G):\n",
" ''' Convert G into NetworkX format '''\n",
" nxG = nx.Graph() if G.type!='asymmetric' else nx.DiGraph() # undirected/directed graph\n",
" nxG.add_nodes_from(G.vertices) # Add the vertices\n",
" # Now add the edges\n",
" for a in G.vertices:\n",
" for b in G.vertices:\n",
" if a==b: continue # no self-loops\n",
" nxG.add_edge(a, b, weight=G[a][b]) \n",
" if G.type=='Euclidean': # add (x,y) coordinates if available\n",
" pos=dict(enumerate(G.points)) # vertex:(x,y) pairs\n",
" nx.set_node_attributes(nxG, pos, 'coord')\n",
" return nxG\n",
"\n",
"def draw(G):\n",
" ''' Draw the graph G using NetworkX '''\n",
" nxG = nx_graph(G)\n",
" weights_dictionary = nx.get_edge_attributes(nxG,'weight')\n",
" edges,weights = zip(*weights_dictionary.items())\n",
" pos = nx.circular_layout(nxG) if G.type!='Euclidean' else nx.get_node_attributes(nxG,'coord')\n",
" nx.draw(nxG, pos, \\\n",
" with_labels=True, node_color='red', font_color='white', font_weight='bold', font_size=14,\\\n",
" edge_color=weights, width=1.5, connectionstyle=\"arc3,rad=0.1\", edge_cmap=plt.cm.copper)\n",
" # see https://matplotlib.org/stable/gallery/color/colormap_reference.html\n",
" nx.draw_networkx_edge_labels(nxG, pos, edge_labels=weights_dictionary, label_pos=0.5 if G.type!=\"asymmetric\" else 0.25)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 2-opt local search and neighbourhoods"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def list_of_neighbours(cycle):\n",
" ''' List of all 2-opt neighbours of: cycle = (0,...,0) '''\n",
" nn=[]\n",
" for i in range(1,len(cycle)):\n",
" for j in range(i+2,len(cycle)):\n",
" c = cycle[:i]+cycle[i:j][::-1]+cycle[j:] # [::-1] reverses a sequence -- this is the 2-opt operation\n",
" nn.append(c)\n",
" return nn\n",
"\n",
"def neighbourhood(G):\n",
" ''' Return a dictionary of k:v = cycle:[list of neighbours of cycle] '''\n",
" neighbours = {}\n",
" for cycle in permutations(range(1,G.n)):\n",
" cycle = (0,)+cycle+(0,) # tuples instead of lists\n",
" neighbours[cycle] = list_of_neighbours(cycle) # k:v\n",
" return neighbours\n",
"\n",
"def show_neighbourhood(G, neighbours, output_filename='neighbourhood.gexf'):\n",
" ''' Compute a graph that shows the cycles as vertices, and \n",
" two vertices are connected if they can be obtained from each other using 2-opt '''\n",
" # Create dictionary of costs of cycles, k:v = cycle:cost(cycle) and find minimal cost\n",
" costs = {}\n",
" all_vertices = neighbours.keys() # each vertex here represents a cycle in G\n",
" min_cost = oo # infinity\n",
" for v in all_vertices:\n",
" c = cost(G,v)\n",
" costs[v] = c\n",
" if c<min_cost: min_cost=c\n",
" # Generate neighbourhood graph H\n",
" H=nx.Graph()\n",
" for v in all_vertices:\n",
" # Before adding a vertex we wish to check if it is a local/global minimum\n",
" minimum='local minimum' # assume this, then change later if required\n",
" if costs[v]==min_cost: minimum='global minimum'\n",
" else:\n",
" for n in neighbours[v]: # check if not a local minimum\n",
" if costs[n]<costs[v]: # not a local minimum because a neighbour costs less\n",
" minimum='.' # not a minimum\n",
" break\n",
" H.add_node(v, cost=costs[v], minimum=minimum)\n",
" for v in neighbours:\n",
" for n in neighbours[v]:\n",
" H.add_edge(v,n)\n",
" # Export graph in GEXF format for use with Gephi\n",
" nx.write_gexf(H,output_filename)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"7x7 symmetric graph:\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>6</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>inf</td>\n",
" <td>97.0</td>\n",
" <td>63.0</td>\n",
" <td>40.0</td>\n",
" <td>93.0</td>\n",
" <td>94.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>97.0</td>\n",
" <td>inf</td>\n",
" <td>55.0</td>\n",
" <td>25.0</td>\n",
" <td>43.0</td>\n",
" <td>75.0</td>\n",
" <td>96.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>63.0</td>\n",
" <td>55.0</td>\n",
" <td>inf</td>\n",
" <td>97.0</td>\n",
" <td>19.0</td>\n",
" <td>25.0</td>\n",
" <td>85.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>40.0</td>\n",
" <td>25.0</td>\n",
" <td>97.0</td>\n",
" <td>inf</td>\n",
" <td>43.0</td>\n",
" <td>3.0</td>\n",
" <td>43.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>93.0</td>\n",
" <td>43.0</td>\n",
" <td>19.0</td>\n",
" <td>43.0</td>\n",
" <td>inf</td>\n",
" <td>53.0</td>\n",
" <td>16.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>94.0</td>\n",
" <td>75.0</td>\n",
" <td>25.0</td>\n",
" <td>3.0</td>\n",
" <td>53.0</td>\n",
" <td>inf</td>\n",
" <td>30.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>1.0</td>\n",
" <td>96.0</td>\n",
" <td>85.0</td>\n",
" <td>43.0</td>\n",
" <td>16.0</td>\n",
" <td>30.0</td>\n",
" <td>inf</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"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": [
"<Figure size 432x288 with 1 Axes>"
]
},
"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
}