Presentation is loading. Please wait.

Presentation is loading. Please wait.

Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Claus Brabrand [ ] ( “FÅP”: First-year Project Course, ITU, Denmark.

Similar presentations


Presentation on theme: "Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Claus Brabrand [ ] ( “FÅP”: First-year Project Course, ITU, Denmark."— Presentation transcript:

1 Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Claus Brabrand [ brabrand@itu.dk ] ( “FÅP”: First-year Project Course, ITU, Denmark )

2 [ 2 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms

3 [ 3 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Outline Graphs Graph Representations Krak Data Representation Breadth First Search (BFS) Depth First Search (DFS) Topological Sorting Exercises Project (part 1): ”Visualization”

4 [ 4 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Definition: GRAPH A ”graph G = (V,E)” consists of: V: a set of vertices (nodes)(knuder) E: a set of edges (arcs)(kanter) where E  V  V There is an edge between ’v 1 ’ and ’v 2 ’ if (v 1, v 2 )  E(abbreviated: ”v 1  v 2 ”) Example: V = { 1, 2, 3, 4 } E = { (1,2), (2,1), (2,3), (3,1), (4,2) } vertex edge

5 [ 5 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Oriented vs. Non-oriented Directed graph: (orienteret graf) Undirected graph: (ikke-orienteret) V = { 1, 2, 3, 4 } E = { (1,2), (2,1), (2,3), (3,1), (4,2) } V = { 1, 2, 3, 4 } E = { (1,2), (2,1), (1,3), (3,1), (2,3), (3,2), (2,4), (4,2) } v 1  v 2  v 2  v 1

6 [ 6 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Graph Examples Roadmap: roads and intersections project! Powergrid: wires and connexions Rivers: river and confluences World Wide Web: pages and links Facebook: people and friends-of Data structures: objects and references Class hierarchies: classes and inheritances Bacon index: people and co-starring

7 [ 7 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Graph Terminology A path (sti) is a sequence of adjacent edges: p = (e 0, e 1, …, e n ) A cycle (kreds) is a non-empty path from a vertex to itself: p = (e 0, e 1, …, e n ) v 0  v 1  …  v n+1 e0e0 e1e1 enen v 0  v 1  …  v 0 (v 0,_)(_,v 0 ) = = (v 0,v 1 )(v n,v n+1 ) = = (v 1,v 2 ) =

8 [ 8 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Graph Terminology (cont’d) A directed acyclic graph (DAG) (orienteret acyklisk graf) is a connected graph w/o cycles: A tree (træ) is a connected acyclic graph every node has indegree 0 or 1 (i.e., a DAG w/o ”sharing”):

9 [ 9 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Graph Properties A graph ”G = (V,E)” is: Reflexive: Symmetric: Transitive:  v 1  V: v 1  v 1  v 1,v 2  V: v 1  v 2  v 2  v 1  v 1,v 2,v 3  V: v 1  v 2  v 2  v 3  v 1  v 3

10 [ 10 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms What is this? The ”borders-with” relation (for the European mainland)

11 [ 11 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Graph Visualization The ”Graphviz” Tool: [ http://www.graphviz.org ] graph nfa { overlap=false; splines=true; DK -- DE; DE -- NL; DE -- BE; DE -- LU; DE -- FR; DE -- CH; DE -- AT; DE -- CZ; DE -- PL; … } graphviz ’.dot ’ file

12 [ 12 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Edge Information Often, information associated with edges e.g., Roadmaps: e.g., Powergrid: e.g., Bacon-index: … 305 km KBHAarhus 175 min 220 V Agave 70 Outlet Mr. & Mrs. Smith A.Jolie B.Pitt 10 A 2005

13 [ 13 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Graph Visualization (cont’d) The ”Graphviz” Tool: [ http://www.graphviz.org ] graph nfa { n571 -- n9 [label="Kirkevej"]; n9 -- n184 [label="Kongeledet"]; n7 -- n200 [label="Norasvej"]; n46 -- n10 [label="Norasvej"]; n7 -- n160 [label="Skovagervej"]; n28 -- n71 [label="Kirkevej"]; … } graphviz ’.dot ’ file

14 [ 14 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Outline Graphs Graph Representations Krak Data Representation Breadth First Search (BFS) Depth First Search (DFS) Topological Sorting Exercises Project (part 1): ”Visualization”

15 [ 15 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms 1) Edge List Representation Problem: We have to examine entire edge-list (in linear time) to answer questions about a node ’N’ Performance: boolean isEdge(Node n, Node m) O ( |E| ) List inEdges(Node n) O ( |E| ) List outEdges(Node n) O ( |E| ) E = [ (1,2), (2,1), (2,3), (3,1), (4,2) ] Just put all edges in ”one big” edge list: Space: O ( |E| )

16 [ 16 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms 2) Adjacency List Repr. Performance: boolean isEdge(Node n, Node m) O ( outdeg(n) ) List inEdges(Node n) O ( indeg(n) ) List outEdges(Node n) O ( outdeg(n) ) outgoing: 1: [ [ (1,2) ], 2: [ (2,1), (2,3) ], 3: [ (3,1) ], 4: [ (4,2) ] ] Each node has its own edge list of… incoming: 1: [ [ (2,1), (3,1) ], 2: [ (1,2), (4,2) ], 3: [ (2,3) ], 4: [ ] ] Space: O ( |V| + |E| ) outgoing… …and incoming edges:

17 [ 17 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms 3) Adjacency Matrix Repr. Performance: boolean isEdge(Node n, Node m) O ( 1 ) List inEdges(Node n) O ( |V| ) List outEdges(Node n) O ( |V| ) Space: O ( |V| 2 ) always! 

18 [ 18 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Outline Graphs Graph Representations Krak Data Representation Breadth First Search (BFS) Depth First Search (DFS) Topological Sorting Exercises Project (part 1): ”Visualization”

19 [ 19 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms ”KRAK” Data Representation Krak data: NB: only for teaching and research at ITU ! Size: ~ 150 MB (big) Sealand: 209.402 roads Lots of challenges: Efficient visualization Effective browsing Efficient road searching Calculate fastest routes … ”KDV” (Kraks Danske Vejnet):

20 [ 20 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms UTM Coordinates UTM (Universal Transverse Mercator net): Approximated (x,y)- coordinates for earth 60x24 zones: (west) 01, …, 60 (east) (south) A, …, Z (north) Denmark is in zones: 32V + 32U + 33U KRAK: Coord’s converted to (”zone 32”, meters N of equator) E.g., US military 1940s ”Rued Langgaards Vej”: (x 1,y 1 ) = (725696.40753, 6174169.66806) (x 2,y 2 ) = (725860.58568, 6174110.34971)

21 [ 21 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms ”KRAK” Data Representation Edges (roads): Vertices (intersections): 132371, // from node# 132196, // to node# 199.34533, // length, meters 208484, 208484, 6, // road type 'Rued Langgaards Vej’, // name 0,0,0,0, // to/from house#s,,,,0,0, 2300,2300, // to/from zipcode 101,6005,0,,0,0, 10, // speed limit 1.375, // drive time, min,,,10178744, 09/04/02, 4164866 208484, // arc node# // (not used) 132371, // node# 441762, // national node# 725696.40753, // UTM: # meters // west of zone 28 6174169.66806 // UTM: # meters // north of equ’tr ”kdv_unload.txt””kdv_node_unload.txt”

22 [ 22 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms ”graphlib” Representation Node: Edge: package graphlib; public class Node { public final int index; public Node(int index) { this.index = index; } public final int getIndex() { return index; } package graphlib; public class Edge { // fields: public N v1; public N v2; protected byte direction; public static final byte FORWARD = 1, BACKWARD = 2, BOTH = FORWARD | BACKWARD; // constructors: protected Edge() {} public Edge(N n1, N n2, byte dir) {…} // methods: public N getStart() {…} public N getOtherEnd(N n) {…} public N getEnd(){…} } ”krak-kode-faap-1.zip”: Contains code for reading the KRAK data format and for building a graph!

23 [ 23 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms ”graphlib” Representation Graph: public class Graph, N extends Node> { // fields: public ArrayList nodes; //list of all nodes int edgeCount = 0; public ArrayList > edges; //  nodes: list of edges ArrayList > reverse_edges; //  nodes: list of rev-edges //(excepting the BOTH edges) // constructor: public Graph(ArrayList nodes) {…} // methods: public int getEdgeCount() {…} public void addEdges(Collection c) {…} public void addEdge(E e) {…} public N getNode(int index) {…} public Iterator outGoingEdges(Node n) {…} public Iterator incomingEdges(Node n) {…} } NB!: all lists start at index 1 (index 0 is bogus) NB!: ”node.index” are numbered & initialized 1..N+1

24 [ 24 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Outline Graphs Graph Representations Krak Data Representation Breadth First Search (BFS) Depth First Search (DFS) Topological Sorting Exercises Project (part 1): ”Visualization”

25 [ 25 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Breadth First Search (BFS) Breadth First Search (BFS): 1) Make queue of nodes to be visited 2) Enqueue start node in queue 3) While queue not empty do: 4) Dequeue node v from queue 5) If v not already visited then: 6) Mark v as visited (count++) 7) Enqueue all of v ’s neighbours

26 [ 26 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms BFS.java Set exploredNodes = new HashSet (); Queue queue = new LinkedList (); (1) queue.offer(start); (2) while (!queue.isEmpty()) { (3) Node v = queue.poll(); (4) if (!exploredNodes.contains(v)) { (5) System.out.print(v.index + " "); // print exploredNodes.add(v); (6) for (Edge edge: graph.edges.get(v.index)) {(7) Node w = edge.getOtherEnd(v); queue.offer(w); } dequeue 1) Make queue of nodes to be visited 2) Enqueue start node in queue 3) While queue not empty do: 4) Dequeue node v from queue 5) If v not already visited then: 6) Mark v as visited (count++) 7) Enqueue all of v ’s neighbours enqueue

27 [ 27 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Outline Graphs Graph Representations Krak Data Representation Breadth First Search (BFS) Depth First Search (DFS) Topological Sorting Exercises Project (part 1): ”Visualization”

28 [ 28 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Depth First Search (DFS) Depth First Search (DFS): 1) Make stack of nodes to be visited 2) Push start node onto stack 3) While stack not empty do: 4) Pop node v from stack 5) If v not already visited then: 6) Mark v as visited (count++) 7) Push all of v ’s neighbours onto stack

29 [ 29 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Exercise: DFS.java pop 1) Make stack of nodes to be visited 2) Push start node onto stack 3) While stack not empty do: 4) Pop node v from stack 5) If v not already visited then: 6) Mark v as visited (count++) 7) Push all of v ’s neighbours onto stack push

30 [ 30 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Outline Graphs Graph Representations Krak Data Representation Breadth First Search (BFS) Depth First Search (DFS) Topological Sorting Exercises Project (part 1): ”Visualization”

31 [ 31 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Topological Sorting (a DAG) (Assumption: no cycles) Uses: Sequence of activities in a building project Recalculation sequence in a spread-sheet Observation: In a finite acyclic graph there exists at least one node with indegree zero… “A topological ordering of a DAG is a linear ordering of its nodes in which each node comes before all nodes to which it has outbound edges.” -- Wikipedia

32 [ 32 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Topological Sorting (cont’d) Topological Sorting: Efficient implementation: Maintain ”HashMap ” of all indegrees Maintain ”Stack ” of nodes with indegree zero 1) Initialize empty topologically ordered node list 2) Repeat until no more nodes: 3) Pick a node v without incoming edges* 4) Push v onto topologically ordered list 5) Remove v from graph; and 6) Remove all edges out of v *) if no such node exists, the graph is cyclic Time: O ( |V| + |E| )

33 [ 33 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Outline Graphs Graph Representations Krak Data Representation Breadth First Search (BFS) Depth First Search (DFS) Topological Sorting Exercises Project (part 1): ”Visualization”

34 [ 34 ] Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Exercises (week 8) 8.1: Breadth First Search Run the code (from lecture) on example graph in book 8.2: Breadth First Search w/ Levels Implement BFS, with explicit levels (distance from start) 8.3: Depth First Search Change the BFS to a DFS algorithm (try it on book ex.) 8.4: Indegrees Implement method ”int indegree(Node node)” in Graph 8.5: Topological Sorting Implement ”static ArrayList topsort(Graph )” [cf. Homepage]


Download ppt "Claus Brabrand, ITU, Denmark Mar 17, 2009Graphs & Graph Algorithms Claus Brabrand [ ] ( “FÅP”: First-year Project Course, ITU, Denmark."

Similar presentations


Ads by Google