claus brabrand, itu, denmark mar 17, 2009graphs & graph algorithms claus brabrand [...

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

Post on 21-Dec-2015

216 views

Category:

Documents


0 download

TRANSCRIPT

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

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

Graphs &Graph Algorithms

Claus Brabrand[ [email protected] ]

( “FÅP”: First-year Project Course, ITU, Denmark )

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

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

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

[ 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”

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

[ 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 ’v1’ and ’v2’ if (v1, v2) E (abbreviated: ”v1

v2”)

Example:

V = { 1, 2, 3, 4 }

E = { (1,2), (2,1), (2,3), (3,1), (4,2) }vertex

edge

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

[ 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) }

v1 v2 v2 v1

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

[ 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

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

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

Graph Terminology

A path (sti) is a sequence of adjacent edges: p = (e0, e1, …, en)

A cycle (kreds) is a non-empty path from a vertex to itself:

p = (e0, e1, …, en)

v0 v1 … vn+1e0 e1 en

v0 v1 … v0

(v0,_) (_,v0)

= =

(v0,v1) (vn,vn+1)

= =

(v1,v2)=

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

[ 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 acyclicgraph every node has indegree 0 or 1 (i.e., a DAG w/o ”sharing”):

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

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

Graph Properties

A graph ”G = (V,E)” is:

Reflexive:

Symmetric:

Transitive:

v1V: v1 v1

v1,v2V: v1 v2 v2 v1

v1,v2,v3V: v1 v2 v2 v3 v1 v3

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

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

What is this?

The”borders-with”

relation(for the

Europeanmainland)

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

[ 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

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

[ 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 kmKBHAarhus

175 min

220 V Agave70Outlet

Mr. & Mrs. Smith A.JolieB.Pitt

10 A

2005

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

[ 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

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

[ 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”

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

[ 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<Node> inEdges(Node n) O( |E| ) List<Node> 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| )

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

[ 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<Node> inEdges(Node n) O( indeg(n) ) List<Node> 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:

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

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

3) Adjacency Matrix Repr.

Performance: boolean isEdge(Node n, Node m) O( 1 ) List<Node> inEdges(Node n) O( |V| ) List<Node> outEdges(Node n) O( |V| )

Space: O( |V|2 ) always!

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

[ 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”

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

[ 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):

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

[ 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”:(x1,y1) = (725696.40753, 6174169.66806)(x2,y2) = (725860.58568, 6174110.34971)

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

[ 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, meters208484,208484,6, // road type'Rued Langgaards Vej’, // name0,0,0,0, // to/from house#s,,,,0,0, 2300,2300, // to/from zipcode101,6005,0,,0,0,10, // speed limit1.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”

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

[ 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<N extends Node> { // 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!

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

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

”graphlib” Representation

Graph:public class Graph<E extends Edge<N>, N extends Node> { // fields: public ArrayList<N> nodes; //list of all nodes int edgeCount = 0; public ArrayList<ArrayList<E>> edges; //nodes: list of edges ArrayList<ArrayList<E>> reverse_edges; //nodes: list of rev-edges //(excepting the BOTH edges) // constructor: public Graph(ArrayList<N> nodes) {…}

// methods: public int getEdgeCount() {…} public void addEdges(Collection<E> c) {…} public void addEdge(E e) {…} public N getNode(int index) {…} public Iterator<E> outGoingEdges(Node n) {…} public Iterator<E> incomingEdges(Node n) {…}}

NB!: all lists start at index 1 (index 0 is bogus)NB!: ”node.index” are numbered & initialized 1..N+1

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

[ 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”

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

[ 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 visited2) Enqueue start node in queue3) While queue not empty do:4) Dequeue node v from queue5) If v not already visited then:6) Mark v as visited (count++)7) Enqueue all of v’s neighbours

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

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

BFS.java

Set<Node> exploredNodes = new HashSet<Node>();Queue<Node> queue = new LinkedList<Node>(); (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<Node> edge: graph.edges.get(v.index)) {(7) Node w = edge.getOtherEnd(v); queue.offer(w); } }}

dequeue

1) Make queue of nodes to be visited2) Enqueue start node in queue3) While queue not empty do:4) Dequeue node v from queue5) If v not already visited then:6) Mark v as visited (count++)7) Enqueue all of v’s neighbours

enqueue

enqueue

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

[ 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”

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

[ 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 visited2) Push start node onto stack3) While stack not empty do:4) Pop node v from stack5) If v not already visited then:6) Mark v as visited (count++)7) Push all of v’s neighbours onto stack

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

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

Exercise: DFS.java

pop

1) Make stack of nodes to be visited2) Push start node onto stack3) While stack not empty do:4) Pop node v from stack5) If v not already visited then:6) Mark v as visited (count++)7) Push all of v’s neighbours onto stack

push

push

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

[ 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”

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

[ 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

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

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

Topological Sorting (cont’d)

Topological Sorting:

Efficient implementation: Maintain ”HashMap<Node,Integer>” of all indegrees Maintain ”Stack<Node>” of nodes with indegree zero

1) Initialize empty topologically ordered node list2) Repeat until no more nodes:3) Pick a node v without incoming edges*4) Push v onto topologically ordered list5) Remove v from graph; and6) Remove all edges out of v

*) if no such node exists, the graph is cyclic

Time: O( |V| + |E| )

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

[ 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”

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

[ 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<Node> topsort(Graph<…>)”

[cf. Homepage]