Presentation laddar. Vänta.

Presentation laddar. Vänta.

Graph och graph-algoritmer. Några enkla graph teorier Hur IP trafik hittar destinationen i Internät ? GPS-system ? Sociala nätverk. Vanligaste frågeställningar:

Liknande presentationer


En presentation över ämnet: "Graph och graph-algoritmer. Några enkla graph teorier Hur IP trafik hittar destinationen i Internät ? GPS-system ? Sociala nätverk. Vanligaste frågeställningar:"— Presentationens avskrift:

1 Graph och graph-algoritmer

2 Några enkla graph teorier Hur IP trafik hittar destinationen i Internät ? GPS-system ? Sociala nätverk. Vanligaste frågeställningar: Hur hittar man från A->B? Hur man beräknar den kortaste vägen mellan dator A och B ?

3 Terminology Vertices & edges ( Noder och förbindelse) Paths (väg)  Viktad  Oviktad Riktad graph  Visa förbindelse är enbart envägs  Vikten för en förbindelse behövs inte vara dessama i båda riktningarna ( om båda finns) Halmstad Varberg Göteborg Borås Jönköping Växjö 40 70 100 200 120 60 Halmstad Varberg Göteborg Borås Jönköping Växjö 40 70 100 200 120 60

4 Mer terminology  Path length  Oviktad path length – antalet förbindelse mellan två nod  Viktad path length- summan av vikter mellan två nod Halmstad Varberg Göteborg Borås Jönköping Växjö 40 70 100 200 120 60 Halmstad Varberg Göteborg Borås Jönköping Växjö 40 70 100 200 120 60

5 Mer terminology Simple paths ( Enkla vägar)  Innehåller en nod enbart en gång Cyclic paths ( cykliska vägar)  Startar och slutar i samma nod. Halmstad Varberg Göteborg Borås Jönköping Växjö 40 70 100 200 120 60

6 Ännu mer terminology Graph täthet  Refererar till antalet förbindelse i grafen gles graph tät graph ( ~~ N 2 förbindelse ) Node 5Node 4 Node 1Node 2 Node 3Node 6 Node 5Node 4 Node 1Node 2 Node 3Node 6

7 Graph representation Adjacent list  Varje node håller en länkad lista som innehåller information om grann- noder och vikt. Node 6 Node 7 Node 1Node 2 Node 5Node 3 Node 4 2 1 2 2 6 10 3 1 4 54 8 1 1 2 2 3 3 4 4 5 5 6 6 2 (2) 4 (1) 7 7 5 (10) 4 (3) 1 (4) 6 (5) 5 (2) 7 (4) 6 (8) 3 (2) 7 (6) 6 (1)

8 Graph representation Adjacent matrix  En kvadratisk matris där raderna och kolumnerna är representerade av noder och elementen i matrisen av förbindelser. För viktad graph innehåller elemnenten i matrisen just vikten Node 6 Node 7 Node 1Node 2 Node 5Node 3 Node 4 2 1 2 2 6 10 3 1 4 54 8 1 1 2 2 3 3 4 4 5 5 6 6 7 7 1 1 2 2 3 3 4 4 5 5 6 6 7 7 21 310 45 2284 6 1

9 Vad är en förbindelse? public class Edge { public Vertex dest; public double cost; public Edge( Vertex d, double c) { dest=d; cost=c; } }

10 Vad är en nod (vertex) ? protected class Vertex { String name; List adjacents; Vertex (String n) { name = n; adjacents = new LinkedList(); } }

11 Viktiga frågor … Den kortaste vägen mellan node A och B  BreadthFirst Algorithm, oviktad graph  Dijkstra’s Algorithm, viktad graph

12 Breadth First Algorithm För oviktade graphs Node 6 Node 7 Node 1Node 2 Node 5Node 3 Node 4 0 12 3 3 2 1 Node 3 Node 1 Node 6 Node 2 Node 4 Node 5 Node 7 0 1 1 2 2 3 3

13 Dijkstra’s Algorithm For viktade graphs! Node 6 Node 7 Node 1Node 2 Node 5Node 3 Node 4 2 1 2 3 1 1 3 1 4 54 8 Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 Distance From

14 Dijkstra’s Algorithm För viktade grapher! Node 6 Node 7 Node 1Node 2 Node 5Node 3 Node 4 2 1 2 3 1 1 3 1 4 54 8 Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 Distance From 0- Node 1 (4) Node 6 (5) INF 4 5 3 3 Node 2 (6)Node 4 (5) 5 1 6 1

15 Dijkstra’s Algorithm For viktade grapher! Node 6 Node 7 Node 1Node 2 Node 5Node 3 Node 4 2 1 2 3 1 1 3 1 4 54 8 Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 Distance From 0- Node 6 (5) INF 4 5 3 3 Node 2 (6) Node 4 (5) 5 1 6 1 Node 5 (8) Node 7 (9) 8 4 9 4

16 Dijkstra’s Algorithm För viktade grapher! Node 6 Node 7 Node 1Node 2 Node 5Node 3 Node 4 2 1 2 3 1 1 3 1 4 54 8 Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 Distance From 0- 4 5 3 3 Node 2 (6) 5 1 6 1 Node 5 (8) Node 7 (9) 8 4 9 4 7 2 Node 5 (7) 8 5

17 Dijkstra’s Algorithm För viktade grapher! Node 6 Node 7 Node 1Node 2 Node 5Node 3 Node 4 2 1 2 3 1 1 3 1 4 54 8 Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 Distance From 0- 4 5 3 3 5 1 6 1 7 2 8 5 Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 3 3 1 1 3 3 1 1 3 3 2 2 1 1 3 3 3 3 5 5 2 2 1 1 3 3

18 Dijkstra’s algorithm in Java int[][] table = new int[locations.length][2]; for(int i = 0; i < table.length; i++) { table[i][0] = Integer.MAX_VALUE; table[i][1] = -1; } table[fromIndex][0] = 0; // start node PriorityQueue queue = new PriorityQueue(); queue.enqueue(new Distance(fromIndex, 0)); while(!queue.isEmpty()) { Distance d = (Distance)queue.dequeue(); int currentNode = d.getNode(); int currentDistance = d.getDistance(); for(int toNode = 0; toNode < distanceTable.length; toNode++) { int distance = distanceTable[currentNode][toNode]; if(distance > 0) { if((currentDistance + distance) < table[toNode][0]) { table[toNode][0] = currentDistance + distance; table[toNode][1] = currentNode; queue.enqueue(new Distance(toNode, currentDistance + distance)); }}}} System.out.println("Distance: " + table[toIndex][0]);

19 Dijktra’s algorithm Används för att lösa problem som avstånd mellan städer. GöteborgHalmstadJönköping... Göteborg–143148... Halmstad143 – 163... Jönköping148163–...


Ladda ner ppt "Graph och graph-algoritmer. Några enkla graph teorier Hur IP trafik hittar destinationen i Internät ? GPS-system ? Sociala nätverk. Vanligaste frågeställningar:"

Liknande presentationer


Google-annonser