Problem Solving with Networks 18/08/2012 Jamie Sneddon j.sneddon@auckland.ac.nz Networks, graphs A graph is collection of points with lines between them point line vertex (vertices) edge node arc A network is a graph with positive numbers assigned to its edges as weights Distances in miles between some US cities Distances in miles between some US cities Buffalo NY Rochester NY Detroit MI Toledo OH Cleveland OH Scranton PA New York NY Harrisburg PA Columbus OH Pittsburgh PA Philadelphia PA Washington DC Distances in miles between NE state US cities Buffalo NY Rochester NY Detroit MI Toledo OH Cleveland OH Scranton PA New York NY Harrisburg PA Columbus OH Pittsburgh PA Philadelphia PA Washington DC Distances in miles between NE state US cities Buffalo NY Rochester NY Detroit MI Toledo OH Cleveland OH Scranton PA New York NY Harrisburg PA Columbus OH Pittsburgh PA Philadelphia PA Washington DC Distances in miles between NE state US cities 73 255 217 190 61 117 144 134 112 142 185 204 246 107 121 141 121 125 95 Distances in miles between NE state US cities Buffalo NY Detroit MI Toledo OH 61 73 255 217 190 117 144 Rochester NY Cleveland OH Scranton PA 134 142 185 Columbus OH Harrisburg PA 204 Pittsburgh PA 246 112 107 New York NY 121 125 95 Philadelphia PA 121 141 Washington DC Distances in miles between NE state US cities R B D T 73 255 217 190 61 117 144 Cl 134 142 185 Co S Pi 204 246 H 112 107 121 141 W 121 125 95 Ph N Spanning Tree with edge deletion R B D T 73 255 217 190 61 117 144 Cl 134 142 185 Co S Pi 204 246 H 112 107 121 141 W 121 125 95 Ph N Spanning Tree with edge inclusion (1) R B D T 73 255 217 190 61 117 144 Cl 134 142 185 Co S Pi 204 246 H 112 107 121 141 W 121 125 95 Ph N Spanning Tree with edge inclusion (2) R B D T 73 255 217 190 61 117 144 S Cl 134 142 Pi 185 Co 204 246 H 112 107 121 141 Total weight = 1356 miles W 121 125 95 Ph N Problems in networks (0) Are all the nodes connected? (1) What is the lowest weight (smallest) tree which connects all the nodes? (2) What is the shortest distance from A to B? (3) Can every edge be used exactly once? (4) Can every node be visited exactly once? (5) What is the shortest way to visit every node exactly once? (0) Connectedness It’s usually easy to tell if a real-world network is connected or not. Starting at an arbitrary node, if we list that node’s neighbours, then their neighbours, then theirs, we might eventually visit all the nodes. [ACTIVITY] If we don’t, it’s not c0nnected. (1) Spanning Tree A minimum weight spanning tree is a subgraph without cycles which connects all the nodes. A tree with n nodes has n-1 edges. Sometimes it’s easier to add edges, sometimes remove them. (2) Shortest Path Starting at a particular node A, what is the shortest path to another vertex B (or to all other vertices). [ACTIVITY 2] (3) Traversability Is it possible to start at a node A and follow a route through the network which uses every edge exactly once? If so, does the path return to A, or end elsewhere? Easily characterised with node parity (even/odd) (4) Visiting nodes Is it possible to start at a node A and follow a route through the network visits every NODE exactly once? If so, does the path return to A, or end elsewhere? Called Hamiltonian: no characterisation, and hard to find (5) Travelling Salesman What is the shortest Hamiltonian cycle/path? This is harder still! TSP (Travelling Salesman Problem) is the definitive “hard” problem of computational mathematics Real World / Mathematical World Networks don’t always model the real world perfectly – what could go wrong? One way edges Different weight directions on edges Variable data (time of day, day of week) Roads branching outside towns Questions beyond the procedural Why did you use this algorithm? Compare two algorithms edge inclusion vs edge deletion How could the network be changed to give (or remove) a property What does this mean in relation to the given problem How does adding / deleting nodes / edges change the shortest paths / spanning trees? Where to add connections? Where in the network should edges be added/removed so that it is traversable? Optional nodes What if we want to allow the possibility of a node outside a town? Construct two spanning trees: with/without 5 2.5 4 1 3 3 2.5 2 5 5 For more: Wikipedia! Prim’s Algorithm (connected sub-tree) Kruskal’s Algorithm (partial trees) Reverse-Delete Algorithm (remove edges) Dijkstra’s Algorithm Euler Path – Fleury’s Algorithm Jamie Sneddon j.sneddon@auckland.ac.nz