Download presentation
Presentation is loading. Please wait.
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]
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.