graphs - department of computer sciencehager/teaching/cs226/notes/graphs2011.ppt.pdf · a vertex...

102
© 2004 Goodrich, Tamassia Graphs 1 Graphs ORD DFW SFO LAX 802 1843 1233 337

Upload: others

Post on 09-May-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 1

Graphs

ORD

DFW

SFO

LAX

802

1843

1233

337

Page 2: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

Johns Hopkins Department of Computer Science Course 600.226: Data Structures, Professor: Greg Hager (via Jonathan Cohen)

2

What is a Graph?

(in computer science, it’s not a data plot)

General structure for representing positions with an arbitrary connectivity structure

• Collection of vertices (nodes) and edges (arcs)

— Edge is a pair of vertices - it connects the two vertices, making them adjacent

• A tree is a special type of graph!

Page 3: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 3

Graphs " A graph is a pair (V, E), where

n  V is a set of nodes, called vertices n  E is a collection of pairs of vertices, called edges n  Vertices and edges are positions and store elements

" Example: n  A vertex represents an airport and stores the three-letter airport code n  An edge represents a flight route between two airports and stores the

mileage of the route

ORD PVD

MIA DFW

SFO

LAX

LGA

HNL

849

802

1843

1120 1233

337 2555

Page 4: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 4

John

DavidPaul

brown.edu

cox.net

cs.brown.edu

att.netqwest.net

math.brown.edu

cslab1bcslab1a

Applications " Electronic circuits

n  Printed circuit board n  Integrated circuit

" Transportation networks n  Highway network n  Flight network

" Computer networks n  Local area network n  Internet n  Web

" Databases n  Entity-relationship diagram

Page 5: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

Johns Hopkins Department of Computer Science Course 600.226: Data Structures, Professor: Greg Hager (via Jonathan Cohen)

5

What can we do with graphs?

Find a path from one place to another

Determine connectivity

Find the shortest path from one place to another

Find the “weakest link” (min cut) •  check amount of redundancy in case of failures

Find the amount of flow that will go through them

Page 6: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 6

Edge Types " Directed edge

n  ordered pair of vertices (u,v) n  first vertex u is the origin n  second vertex v is the destination n  e.g., a flight

" Undirected edge n  unordered pair of vertices (u,v) n  e.g., a flight route

" Directed graph n  all the edges are directed n  e.g., route network

" Undirected graph n  all the edges are undirected n  e.g., flight network

ORD PVD flight

AA 1206

ORD PVD 849 miles

Page 7: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 7

Terminology " End vertices (or endpoints) of

an edge n  U and V are the endpoints of a

" Edges incident on a vertex n  a, d, and b are incident on V

" Adjacent vertices n  U and V are adjacent

" Degree of a vertex n  X has degree 5

" Parallel edges n  h and i are parallel edges

" Self-loop n  j is a self-loop

" Simple Graph n  No self-loops or parallel edges

X U

V

W

Z

Y

a

c

b

e

d

f

g

h

i

j

Page 8: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 8

P1

Terminology (cont.) " Path

n  sequence of alternating vertices and edges

n  begins with a vertex n  ends with a vertex n  each edge is preceded and

followed by its endpoints " Simple path

n  path such that all its vertices and edges are distinct

" Examples n  P1=(V,b,X,h,Z) is a simple path n  P2=(U,c,W,e,X,g,Y,f,W,d,V) is a

path that is not simple

X U

V

W

Z

Y

a

c

b

e

d

f

g

h P2

Page 9: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 9

Terminology (cont.) " Cycle

n  circular sequence of alternating vertices and edges

n  each edge is preceded and followed by its endpoints

" Simple cycle n  cycle such that all its vertices

and edges are distinct

" Examples n  C1=(V,b,X,g,Y,f,W,c,U,a,↵) is a

simple cycle n  C2=(U,c,W,e,X,g,Y,f,W,d,V,a,↵)

is a cycle that is not simple

C1

X U

V

W

Z

Y

a

c

b

e

d

f

g

h C2

Page 10: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 10

Terminology (cont.) " Connected

n  A path from every node to every other node

n  Digraph is strongly connected if directed path

n  Digraph is weakly connected if undirected path

" Complete n  An edge between every node

" Sparse: |E| = O(V)

" Question: What is the min and max # of edges in a fully connected simple graph?

C1

X U

V

W

Z

Y

a

c

b

e

d

f

g

C2

Page 11: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 11

Digraphs

" A digraph is a graph whose edges are all directed n  Short for “directed graph”

" Applications n  one-way streets n  flights n  task scheduling

A

C

E

B

D

Page 12: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 12

Digraph Properties

" A graph G=(V,E) such that n  Each edge goes in one direction:

w  Edge (a,b) goes from a to b, but not b to a.

" If G is simple, m < n*(n-1). " If we keep in-edges and out-edges in separate

adjacency lists, we can perform listing of in-edges and out-edges in time proportional to their size.

A

C

E

B

D

Page 13: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 13

Digraph Application " Scheduling: edge (a,b) means task a must be

completed before b can be started

The good life

ics141 ics131 ics121

ics53 ics52 ics51

ics23 ics22 ics21

ics161

ics151

ics171

Page 14: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 14

Properties Notation

n number of vertices m number of edges deg(v) degree of vertex v

Property 1 Σv deg(v) = 2m Proof: each edge is

counted twice Property 2

In an undirected graph with no self-loops and no multiple edges

m ≤ n (n - 1)/2

Proof: each vertex has degree at most (n - 1)

What is the bound for a directed graph?

Example n  n = 4 n  m = 6 n  deg(v) = 3

Page 15: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Johns Hopkins Department of Computer Science

Course 600.226: Data Structures, Professor: Greg Hager (via Jonathan Cohen)

Concrete graph representations

" Edge List: simple but inefficient in time " Adjacency List: moderately simple and

efficient " Adjacency Matrix: simple but inefficient in

space

Page 16: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Johns Hopkins Department of Computer Science

Course 600.226: Data Structures, Professor: Greg Hager (via Jonathan Cohen)

Adjacency List

" Similar to Edge List " Each vertex also has container of

references to incident edges

Page 17: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs

Adjacency List Structure " Incidence sequence

for each vertex n  sequence of

references to vertex objects of incident edges

" Augmented edge objects n  references to

edges which in turn provide references to adjacent nodes

u

v

w a b

v u, w

u v

w v

Page 18: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Johns Hopkins Department of Computer Science

Course 600.226: Data Structures, Professor: Greg Hager (via Jonathan Cohen)

Adjacency list (linked list) efficiency " vertices( ) : O(n) " edges( ): O(m) " endVertices(e): O(1) " incidentEdges(v): O(deg(v)) " areAdjacent(v, w): O(min(deg(v), deg(w)) " removeEdge(e): O(deg(u)+deg(v)) (can be O(1) with

back links " e = (u,v)

" removeVertex(v): O(deg(v) + Σ deg(u) ) (can be O(deg(v)) with back links)

" u ∈ adj(v)

Page 19: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Johns Hopkins Department of Computer Science

Course 600.226: Data Structures, Professor: Greg Hager (via Jonathan Cohen)

Adjacency Matrix

" Extend edge list with v x v array n  each entry holds null reference or reference

to edge connected vertex i to vertex j

v u w

v ∅ a ∅

u a ∅ b

w ∅ b ∅ u

v

w a b

Page 20: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Johns Hopkins Department of Computer Science

Course 600.226: Data Structures, Professor: Greg Hager (via Jonathan Cohen)

Adjacency Matrix efficiency " vertices( ) : O(n) " edges( ): O(m) " endVertices(e): O(1) " incidentEdges(v): O(n) " areAdjacent(v, w): O(1) " removeEdge(e): O(1) " removeVertex(v): O(n2)

n  perhaps O(n) with amortization

Page 21: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 27

Asymptotic Performance " n vertices, m edges " no parallel edges " no self-loops " Bounds are “big-Oh”

Edge List

Adjacency List

Adjacency Matrix

Space n + m n + m n2

incidentEdges(v) m deg(v) n areAdjacent (v, w) m min(deg(v), deg(w)) 1 insertVertex(o) 1 1 n2

insertEdge(v, w, o) 1 1 1 removeVertex(v) m deg(v) n2 removeEdge(e) 1 1 1

Page 22: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 28

DAGs and Topological Ordering " A directed acyclic graph (DAG) is a

digraph that has no directed cycles " A topological ordering of a digraph is a

numbering v1 , …, vn

of the vertices such that for every edge (vi , vj), we have i < j

" Example: in a task scheduling digraph, a topological ordering a task sequence that satisfies the precedence constraints

Theorem A digraph admits a topological ordering if and only if it is a DAG

B

A

D

C

E

DAG G

B

A

D

C

E

Topological ordering of G

v1

v2

v3

v4 v5

Page 23: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 29

write c.s. program

play

Topological Sorting " Number vertices, so that (u,v) in E implies u < v

wake up

eat

nap

study computer sci.

more c.s.

work out

sleep dream about graphs

A typical student day 1

2 3

4 5

6

7

8

9

10 11

make cookies for professors

Page 24: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 30

" Running time: ???

Algorithm for Topological Sorting TopologicalSort(G) counter = 0; q is empty queue for all v in G

if (indegree(v) == 0) q.enqueue(v)

while q is not empty do v = q.dequeue v.index = ++counter; for each w adjacent to v w.indegree— if (w.indegree == 0) q.enqueue(w)

if (counter != G.size()) throw cycleFoundException

Page 25: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 53

Topological Sorting Example

Page 26: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 54

Topological Sorting Example

9

Page 27: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 55

Topological Sorting Example

8

9

Page 28: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 56

Topological Sorting Example

7 8

9

Page 29: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 57

Topological Sorting Example

7 8

6

9

Page 30: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 58

Topological Sorting Example

7 8

5 6

9

Page 31: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 59

Topological Sorting Example

7

4

8

5 6

9

Page 32: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 60

Topological Sorting Example

7

4

8

5 6

3

9

Page 33: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 61

Topological Sorting Example 2

7

4

8

5 6

3

9

Page 34: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 62

Topological Sorting Example 2

7

4

8

5 6

1

3

9

Page 35: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 63

Shortest Paths

C B

A

E

D

F

0

3 2 8

5 8

4 8

7 1

2 5

2

3 9

Page 36: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 64

Weighted Graphs " In a weighted graph, each edge has an associated numerical

value, called the weight of the edge " Edge weights may represent, distances, costs, etc. " Example:

n  In a flight route graph, the weight of an edge represents the distance in miles between the endpoint airports

ORD PVD

MIA DFW

SFO

LAX

LGA

HNL

849

802

1843

1120 1233

337 2555

1205

Page 37: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 65

Shortest Paths " Given a weighted graph and two vertices u and v, we want to

find a path of minimum total weight between u and v. n  Length of a path is the sum of the weights of its edges.

" Example: n  Shortest path between Providence and Honolulu

" Applications n  Internet packet routing n  Flight reservations n  Driving directions

ORD PVD

MIA DFW

SFO

LAX

LGA

HNL

849

802

1843

1120 1233

337 2555

1205

Page 38: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 66

Shortest Path Properties Property 1:

A subpath of a shortest path is itself a shortest path Property 2:

There is a tree of shortest paths from a start vertex to all the other vertices Example:

Tree of shortest paths from Providence

ORD PVD

MIA DFW

SFO

LAX

LGA

HNL

849

802

1843

1120 1233

337 2555

1205

Page 39: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 67

Unweighted SP: BFS Algorithm Algorithm BFS(G, s)

for all u ∈ G.vertices() setLabel(u, UNEXPLORED) L ← new empty queue L.insertLast(s) setLabel(s, VISITED) setDist(s,0) i ← 1 while ¬L.isEmpty()

v = L.dequeue() for all w ∈ G.Adjacent(v) if getLabel(w) = UNEXPLORED setLabel(w, VISITED) setDist(w, i) setPath(w, v) L.insertLast(w) end end i ← i +1

end

Page 40: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 68

Dijkstra’s Algorithm " The distance of a vertex v

from a vertex s is the length of a shortest path between s and v

" Dijkstra’s algorithm computes the distances of all the vertices from a given start vertex s

" Assumptions: n  the graph is connected n  the edges are undirected n  the edge weights are

nonnegative

" We grow a “cloud” of vertices, beginning with s and eventually covering all the vertices

" We store with each vertex v a label d(v) representing the distance of v from s in the subgraph consisting of the cloud and its adjacent vertices

" At each step n  We add to the cloud the vertex u

outside the cloud with the smallest distance label, d(u)

n  We update the labels of the vertices adjacent to u

Page 41: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 70

Dijkstra’s Algorithm " A priority queue stores

the vertices outside the cloud n  Key: distance n  Element: vertex

" Locator-based methods n  insert(k,e) returns a

locator n  replaceKey(l,k) changes

the key of an item " We store two labels

with each vertex: n  Distance (d(v) label) n  locator in priority

queue

Algorithm DijkstraDistances(G, s) Q ← new heap-based priority queue for all v ∈ G.vertices() if v = s setDistance(v, 0) else setDistance(v, ∞) l ← Q.insert(getDistance(v), v)

setLocator(v,l) while ¬Q.isEmpty()

u ← Q.removeMin() for all e ∈ G.incidentEdges(u) { relax edge e } z ← G.opposite(u,e) r ← getDistance(u) + weight(e) if r < getDistance(z) setDistance(z,r)

Q.replaceKey(getLocator(z),r)

Page 42: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 71

Example

C B

A

E

D

F

0

4 2 8

∞ ∞

4 8

7 1

2 5

2

3 9

C B

A

E

D

F

0

3 2 8

5 11

4 8

7 1

2 5

2

3 9

C B

A

E

D

F

0

3 2 8

5 8

4 8

7 1

2 5

2

3 9

C B

A

E

D

F

0

3 2 7

5 8

4 8

7 1

2 5

2

3 9

Page 43: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 72

Example (cont.)

C B

A

E

D

F

0

3 2 7

5 8

4 8

7 1

2 5

2

3 9

C B

A

E

D

F

0

3 2 7

5 8

4 8

7 1

2 5

2

3 9

Page 44: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 73

Analysis of Dijkstra’s Algorithm " Graph operations

n  Method incidentEdges is called once for each vertex " Label operations

n  We set/get the distance and locator labels of vertex z O(deg(z)) times n  Setting/getting a label takes O(1) time

" Priority queue operations n  Each vertex is inserted once into and removed once from the priority

queue, where each insertion or removal takes O(log n) time n  The key of a vertex in the priority queue is modified at most deg(w)

times, where each key change takes O(log n) time " Dijkstra’s algorithm runs in O((n + m) log n) time provided the

graph is represented by the adjacency list structure

n  Recall that Σv deg(v) = 2m " The running time can also be expressed as O(m log n) since the

graph is connected

Page 45: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 74

Shortest Paths Tree " Using the template

method pattern, we can extend Dijkstra’s algorithm to return a tree of shortest paths from the start vertex to all other vertices

" We store with each vertex a third label: n  parent edge in the

shortest path tree " In the edge relaxation

step, we update the parent label

Algorithm DijkstraShortestPathsTree(G, s)

for all v ∈ G.vertices() …

setParent(v, ∅) …

for all e ∈ G.incidentEdges(u) { relax edge e } z ← G.opposite(u,e) r ← getDistance(u) + weight(e) if r < getDistance(z) setDistance(z,r) setParent(z,e) Q.replaceKey(getLocator(z),r)

Page 46: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 75

Why Dijkstra’s Algorithm Works " Dijkstra’s algorithm is based on the greedy method. It

adds vertices by increasing distance.

C B

A

E

D

F

0

3 2 7

5 8

4 8

7 1

2 5

2

3 9

n  Suppose it didn’t find all shortest distances. Let F be the first wrong vertex the algorithm processed.

n  When the previous node, D, on the true shortest path was considered, its distance was correct.

n  But the edge (D,F) was relaxed at that time!

n  Thus, so long as d(F)>d(D), F’s distance cannot be wrong. That is, there is no wrong vertex.

Page 47: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 76

DAG-based Algorithm

" Works even with negative-weight edges

" Uses topological order " Doesn’t use any fancy

data structures " Is much faster than

Dijkstra’s algorithm " Running time: O(n+m).

Algorithm DagDistances(G, s) for all v ∈ G.vertices() if v = s setDistance(v, 0) else setDistance(v, ∞) Perform a topological sort of the vertices for u ← 1 to n do {in topological order}

for each e ∈ G.outEdges(u) { relax edge e } z ← G.opposite(u,e) r ← getDistance(u) + weight(e) if r < getDistance(z) setDistance(z,r)

Page 48: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 77

-2

DAG Example

∞ ∞

0

4 8

7 1

-5 5

-2

3 9

0

4 8

7 1

-5 5 3 9

Nodes are labeled with their d(v) values

-2

-2 8

0

4

4 8

7 1

-5 5 3 9

-2 4

-1

1 7

-2 5

0

1

-1

7

4 8

7 1

-5 5

-2

3 9 4

1

2 4 3

6 5

1

2 4 3

6 5

8

1

2 4 3

6 5

1

2 4 3

6 5

5

0

(two steps)

Page 49: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 78

Why It Doesn’t Work for Negative-Weight Edges

n  If a node with a negative incident edge were to be added late to the cloud, it could mess up distances for vertices already in the cloud.

C B

A

E

D

F

0

4 5 7

5 9

4 8

7 1

2 5

6

0 -8

" Dijkstra’s algorithm is based on the greedy method. It adds vertices by increasing distance.

C’s true distance is 1, but it is already in the cloud

with d(C)=5!

Page 50: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 79

Bellman-Ford Algorithm " Works even with negative-

weight edges " Must assume directed

edges (for otherwise we would have negative-weight cycles)

" Iteration i finds all shortest paths that use i edges.

" Running time: O(nm).

Algorithm BellmanFord(G, s) for all v ∈ G.vertices() if v = s setDistance(v, 0) else setDistance(v, ∞) for i ← 1 to n-1 do

for each e ∈ G.edges() { relax edge e } u ← G.origin(e) z ← G.opposite(u,e) r ← getDistance(u) + weight(e) if r < getDistance(z) setDistance(z,r)

Page 51: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 80

-2

Bellman-Ford Example

∞ ∞

0

4 8

7 1

-2 5

-2

3 9

0

4 8

7 1

-2 5 3 9

Nodes are labeled with their d(v) values

-2

-2 8

0

4

4 8

7 1

-2 5 3 9

8 -2 4

-1 5

6 1

9

-2 5

0

1

-1

9

4 8

7 1

-2 5

-2

3 9 4

Page 52: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 81

Subgraphs " A subgraph S of a graph G is a

graph such that n  The vertices of S are a subset

of the vertices of G n  The edges of S are a subset of

the edges of G

" A spanning subgraph of G is a subgraph that contains all the vertices of G

Subgraph

Spanning subgraph

Page 53: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 82

Connectivity

" A graph is connected if there is a path between every pair of vertices

" A connected component of a graph G is a maximal connected subgraph of G

Connected graph

Non connected graph with two connected components

Page 54: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 83

Trees and Forests " A (free) tree is an

undirected graph T such that n  T is connected n  T has no cycles This definition of tree is

different from the one of a rooted tree

" A forest is an undirected graph without cycles

" The connected components of a forest are trees

Tree

Forest

Page 55: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 84

Spanning Trees and Forests " A spanning tree of a

connected graph is a spanning subgraph that is a tree

" A spanning tree is not unique unless the graph is a tree

" Spanning trees have applications to the design of communication networks

" A spanning forest of a graph is a spanning subgraph that is a forest

Graph

Spanning tree

Page 56: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 85

Minimum Spanning Trees Spanning subgraph

n  Subgraph of a graph G containing all the vertices of G

Spanning tree n  Spanning subgraph that is itself a

(free) tree

Minimum spanning tree (MST) n  Spanning tree of a weighted graph

with minimum total edge weight

" Applications n  Communications networks n  Transportation networks

ORD

PIT

ATL

STL

DEN

DFW

DCA

10 1

9

8

6

3

2 5

7

4

Page 57: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 86

Prim-Jarnik’s Algorithm " Similar to Dijkstra’s algorithm (for a connected graph) " We pick an arbitrary vertex s and we grow the MST as a

cloud of vertices, starting from s " We store with each vertex v a label d(v) = the smallest

weight of an edge connecting v to a vertex in the cloud " At each step:

n  We add to the cloud the vertex u outside the cloud with the smallest distance label n  We update the labels of the vertices adjacent to u

Page 58: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 87

Prim-Jarnik’s Algorithm (cont.) " A priority queue stores

the vertices outside the cloud n  Key: distance n  Element: vertex

" Locator-based methods n  insert(k,e) returns a

locator n  replaceKey(l,k) changes

the key of an item " We store three labels

with each vertex: n  Distance n  Parent edge in MST n  Locator in priority queue

Algorithm PrimJarnikMST(G) Q ← new heap-based priority queue s ← a vertex of G for all v ∈ G.vertices() if v = s setDistance(v, 0) else setDistance(v, ∞) setParent(v, ∅) l ← Q.insert(getDistance(v), v) while ¬Q.isEmpty()

u ← Q.removeMin() for all e ∈ G.incidentEdges(u) z ← G.opposite(u,e) r ← weight(e) if r < getDistance(z) setDistance(z,r) setParent(z,e)

Q.replaceKey(z,r)

Page 59: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 88

Example

B D

C

A

F

E

7 4

2 8

5

7

3

9

8

0 7

2

8 ∞

B D

C

A

F

E

7 4

2 8

5

7

3

9

8

0 7

2

5 ∞

7

B D

C

A

F

E

7 4

2 8

5

7

3

9

8

0 7

2

5 ∞

7

B D

C

A

F

E

7 4

2 8

5

7

3

9

8

0 7

2

5 4

7

Page 60: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 89

Example (contd.)

B D

C

A

F

E

7 4

2 8

5

7

3

9

8

0 3

2

5 4

7

B D

C

A

F

E

7 4

2 8

5

7

3

9

8

0 3

2

5 4

7

Page 61: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 90

Analysis " Graph operations

n  Method incidentEdges is called once for each vertex " Label operations

n  We set/get the distance, parent and locator labels of vertex z O(deg(z)) times

n  Setting/getting a label takes O(1) time " Priority queue operations

n  Each vertex is inserted once into and removed once from the priority queue, where each insertion or removal takes O(log n) time

n  The key of a vertex w in the priority queue is modified at most deg(w) times, where each key change takes O(log n) time

" Prim-Jarnik’s algorithm runs in O((n + m) log n) time provided the graph is represented by the adjacency list structure

n  Recall that Σv deg(v) = 2m " The running time is O(m log n) since the graph is connected

Page 62: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 91

A 2nd Idea: Cycle Property Cycle Property:

n  Let T be a minimum spanning tree of a weighted graph G

n  Let e be an edge of G that is not in T and C let be the cycle formed by e with T

n  For every edge f of C, weight(f) ≤ weight(e)

Proof: n  By contradiction n  If weight(f) > weight(e) we

can get a spanning tree of smaller weight by replacing e with f

8 4

2 3 6

7

7

9

8 e

C

f

8 4

2 3 6

7

7

9

8

C

e

f

Replacing f with e yields a better spanning tree

Page 63: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 92

U V

Partition Property Partition Property:

n  Consider a partition of the vertices of G into subsets U and V

n  Let e be an edge of minimum weight across the partition

n  There is a minimum spanning tree of G containing edge e

Proof: n  Let T be an MST of G n  If T does not contain e, consider the

cycle C formed by e with T and let f be an edge of C across the partition

n  By the cycle property, weight(f) ≤ weight(e)

n  Thus, weight(f) = weight(e) n  We obtain another MST by replacing

f with e

7 4

2 8 5

7

3

9

8 e

f

7 4

2 8 5

7

3

9

8 e

f

Replacing f with e yields another MST

U V

Page 64: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 93

Kruskal’s Algorithm " A priority queue stores

the edges outside the cloud n  Key: weight n  Element: edge

" At the end of the algorithm n  We are left with one

cloud that encompasses the MST

n  A tree T which is our MST

Algorithm KruskalMST(G) for each vertex V in G do define a Cloud(v) of ß {v} let Q be a priority queue. Insert all edges into Q using their weights as the key T ß ∅ while T has fewer than n-1 edges do edge e = T.removeMin() Let u, v be the endpoints of e if Cloud(v) ≠ Cloud(u) then Add edge e to T Merge Cloud(v) and Cloud(u) return T

Page 65: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 94

Data Structure for Kruskal Algorithm " The algorithm maintains a forest of trees " An edge is accepted it if connects distinct trees " We need a data structure that maintains a partition,

i.e., a collection of disjoint sets, with the operations: -find(u): return the set storing u -union(u,v): replace the sets storing u and v with

their union

Page 66: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 95

Representation of a Partition " Each set is stored in a sequence " Each element has a reference back to the set

n  operation find(u) takes O(1) time, and returns the set of which u is a member.

n  in operation union(u,v), we move the elements of the smaller set to the sequence of the larger set and update their references

n  the time for operation union(u,v) is min(nu,nv), where nu and nv are the sizes of the sets storing u and v

" Whenever an element is processed, it goes into a set of size at least double, hence each element is processed at most log n times

Page 67: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 96

Partition-Based Implementation " A partition-based version of Kruskal’s Algorithm

performs cloud merges as unions and tests as finds. Algorithm Kruskal(G): Input: A weighted graph G. Output: An MST T for G. Let P be a partition of the vertices of G, where each vertex forms a separate set. Let Q be a priority queue storing the edges of G, sorted by their weights Let T be an initially-empty tree while Q is not empty do (u,v) ← Q.removeMinElement() if P.find(u) != P.find(v) then

Add (u,v) to T P.union(u,v)

return T

Running time: O(m log n)

or O(m log*n) with path compression

Page 68: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia

Example

B D

C

A

F

E

7 4

2 8

5

3

9

8

B D

C

A

F

E

7 4

2 8

5

3

9

8

B D

C

A

F

E

7 4

2 8

5

3

9

8

B D

C

A

F

E

7 4

2 8

5

3

9

8

6 6

6 6

Page 69: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia

Example

B D

C

A

F

E

7 4

2 8

5

3

9

8

B D

C

A

F

E

7 4

2 8

5

3

9

8

6 6

Page 70: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 100

Depth-First Search

D B

A

C

E

Page 71: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 102

Connectivity

" A graph is connected if there is a path between every pair of vertices

" A connected component of a graph G is a maximal connected subgraph of G

Connected graph

Non connected graph with two connected components

Page 72: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 105

Depth-First Search " Depth-first search (DFS)

is a general technique for traversing a graph

" A DFS traversal of a graph G n  Visits all the vertices and

edges of G n  Determines whether G is

connected n  Computes the connected

components of G n  Computes a spanning

forest of G

" DFS on a graph with n vertices and m edges takes O(n + m ) time

" DFS can be further extended to solve other graph problems n  Find and report a path

between two given vertices

n  Find a cycle in the graph

" Depth-first search is to graphs what Euler tour is to binary trees

Page 73: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 106

DFS Algorithm " The algorithm uses a mechanism for

setting and getting “labels” of vertices and edges Algorithm DFS(G, v)

Input graph G and a start vertex v of G Output labeling of the edges of G in the connected component of v as discovery edges and back edges setLabel(v, VISITED) for all e ∈ G.incidentEdges(v)

if getLabel(e) = UNEXPLORED w ← opposite(v,e) if getLabel(w) = UNEXPLORED setLabel(e, DISCOVERY) DFS(G, w) else setLabel(e, BACK)

Algorithm DFS(G) Input graph G Output labeling of the edges of G as discovery edges and back edges for all u ∈ G.vertices() setLabel(u, UNEXPLORED) for all e ∈ G.edges() setLabel(e, UNEXPLORED) for all v ∈ G.vertices() if getLabel(v) = UNEXPLORED DFS(G, v)

Page 74: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 107

Example

D B

A

C

E

D B

A

C

E

D B

A

C

E

discovery edge back edge

A visited vertex A unexplored vertex

unexplored edge

Page 75: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 108

Example (cont.)

D B

A

C

E

D B

A

C

E

D B

A

C

E

D B

A

C

E

Page 76: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 110

Properties of DFS Property 1

DFS(G, v) visits all the vertices and edges in the connected component of v

Property 2 The discovery edges labeled by DFS(G, v) form a spanning tree of the connected component of v

D B

A

C

E

Page 77: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia

DFS Analysis

" Each edge or vertex initialized: O(n+m) " Each edge or vertex marked once O(n+m) " Each edge visited twice (once for each vertex): O(m) " Each vertex v visited ind(v) times: O(m) " Assumes opposite is constant time " Method incidentEdges is called once for each vertex " DFS runs in O(n + m) time provided the graph is

represented by the adjacency list structure n  Recall that Σv deg(v) = 2m

Graphs 111

Page 78: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 112

Path Finding " We can specialize the DFS

algorithm to find a path between two given vertices u and z using the template method pattern

" We call DFS(G, u) with u as the start vertex

" We use a stack S to keep track of the path between the start vertex and the current vertex

" As soon as destination vertex z is encountered, we return the path as the contents of the stack

Algorithm pathDFS(G, v, z) setLabel(v, VISITED) S.push(v) if v = z

return S.elements() for all e ∈ G.incidentEdges(v)

if getLabel(e) = UNEXPLORED w ← opposite(v,e) if getLabel(w) = UNEXPLORED setLabel(e, DISCOVERY) S.push(e) x = pathDFS(G, w, z) if (not x=null) return x S.pop(e) else setLabel(e, BACK)

S.pop(v) return null

Page 79: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 113

Cycle Finding " We can specialize the DFS

algorithm to find a simple cycle using the template method pattern

" We use a stack S to keep track of the path between the start vertex and the current vertex

" As soon as a back edge (v, w) is encountered, we return the cycle as the portion of the stack from the top to vertex w

Algorithm cycleDFS(G, v, z) setLabel(v, VISITED) S.push(v) for all e ∈ G.incidentEdges(v)

if getLabel(e) = UNEXPLORED w ← opposite(v,e) S.push(e) if getLabel(w) = UNEXPLORED setLabel(e, DISCOVERY) x = pathDFS(G, w, z) if (x=null) S.pop(e) else return x; else T ← new empty stack repeat o ← S.pop() T.push(o) until o = w return T.elements()

S.pop(v) return null

Page 80: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia

Finding Articulation Points

" An articulation point is a vertex such that removing the vertex would disconnect the graph

" How can we find such points?

Graphs 114

Page 81: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia

DFS for articulation pts " Key idea—if I do a DFS, v cannot be an articulation

point if it has a child that has a back edge to an ancestor (i.e. there is a cycle)

" Do a DFS to keep track of: n  Order of visitation n  lowest # back edge in descendents

" Finally, check if some child’s “low” is at least as large as v’s “num”

" Special case for root; if it has 2 (or more) children, it is automatically an articulation pt

Graphs 115

Page 82: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia

Algorithm " findArt(v)

n  v.visited = true n  v.low=v.num = counter++ // low=num at start n  foreach w adjacent to v, (v,w) not visited

w  if (!w.visited) n  mark e= (v,w) visited n  findArt(w) n  if (w.low >= v.num) // no cycle back to anc. in decendants

n  output v as articulation pt n  v.low=min(v.low,w.low); // record if cycle dec. to anc.

w else n  v.low = min(v.low, w.num) // back edge

Graphs 116

Page 83: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 117

Directed DFS " We can specialize DFS and to

digraphs by traversing edges only along their direction

" In the directed DFS algorithm, we have four types of edges n  discovery edges n  back edges n  forward edges n  cross edges

" A directed DFS starting at a vertex s determines the vertices reachable from s A

C

E

B

D

Page 84: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 118

Reachability

" DFS tree rooted at v: vertices reachable from v via directed paths

A

C

E

B

D

F A

C

E D

A

C

E

B

D

F

Page 85: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 119

Strong Connectivity " Each vertex can reach all other vertices

a

d

c

b

e

f

g

Page 86: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 120

" Pick a vertex v in G. " Perform a DFS from v in G.

n  If there’s a w not visited, print “no”.

" Let G’ be G with edges reversed. " Perform a DFS from v in G’.

n  If there’s a w not visited, print “no”. n  Else, print “yes”.

" Running time: O(n+m).

Strong Connectivity Algorithm

G:

G’:

a

d

c

b

e

f

g

a

d

c

b

e

f

g

Page 87: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 121

Topological Sorting Algorithm using DFS " Simulate the algorithm by using

depth-first search

" O(n+m) time.

Algorithm topologicalDFS(G, v) Input graph G and a start vertex v of G Output labeling of the vertices of G in the connected component of v setLabel(v, VISITED) for all e ∈ G.incidentEdges(v)

if getLabel(e) = UNEXPLORED w ← opposite(v,e) if getLabel(w) = UNEXPLORED setLabel(e, DISCOVERY) topologicalDFS(G, w) else {e is a forward or cross edge}

Label v with topological number n n ← n - 1

Algorithm topologicalDFS(G) Input dag G Output topological ordering of G

n ← G.numVertices() for all u ∈ G.vertices() setLabel(u, UNEXPLORED) for all e ∈ G.edges() setLabel(e, UNEXPLORED) for all v ∈ G.vertices() if getLabel(v) = UNEXPLORED topologicalDFS(G, v)

Page 88: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 122

" Maximal subgraphs such that each vertex can reach all other vertices in the subgraph

" Can also be done in O(n+m) time using DFS, but is more complicated (similar to biconnectivity).

Strongly Connected Components

{ a , c , g }

{ f , d , e , b }

a

d

c

b

e

f

g

Page 89: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia

Network Flow Problems " What is the max flow

from a source to a sink " Dual problem is min cut

(lowest cost to disconnect source from sink graph)

" Basic idea is to find paths from source to sink, compute flow, and keep track of residual graph

A possible algorithm sketch: FG = RG = G Set weights in FG to zero while P = NonZeroPath(RG, s, t)

FG = Addpath(FG, P, flow(P)) RG = G – FG

end

Graphs 123

Page 90: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 124

Flow Path Finding " We can specialize the DFS

algorithm to find a nonzero flow path between two given vertices u and z using the template method pattern

Algorithm nonZeroPath(G, v, z) setLabel(v, VISITED) S.push(v) if v = z

if flow(S) > 0 return S.elements()

else return null;

for all e ∈ G.incidentEdges(v) if getLabel(e) = UNEXPLORED w ← opposite(v,e) if getLabel(w) = UNEXPLORED setLabel(e, DISCOVERY) S.push(e) x = pathDFS(G, w, z) if (not x=null) return x S.pop(e) else setLabel(e, BACK)

S.pop(v) return null

Page 91: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia

Network Flow Problems " What is the max flow

from a source to a sink " Dual problem is min cut

(lowest cost to disconnect source from sink)

" Basic idea is to find paths from source to sink, compute flow, and keep track of residual graph

A possible algorithm sketch: FG = RG = G Set weights in FG to zero while P = NonZeroPath(RG, s, t)

FG = Addpath(FG, P, flow(P)) RG = G – FG

end

Graphs 125

Where is the problem here?

Page 92: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia

Network Flow Problems " What is the max flow

from a source to a sink " Dual problem is min cut

(lowest cost to disconnect source and sink)

" Basic idea is to find paths from source to sink, compute flow, and keep track of residual graph

A possible algorithm sketch: FG = RG = G Set weights in FG to zero while P = NonZeroPath(RG, s, t)

FG = Addpath(FG, P, flow(P)) RG = G – FG Augment(RG, P, G)

end Good algorithms are

O(|E||V| + |V|2+e) Graphs 126

Page 93: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia

A Few Words on Complexity

" Computational Problems are curiously brittle n  Euler Tour – visit all

edges once = polynomial time

n  Hamiltonian Cycle – visit all vertices once = very hard (exponential)

Graphs 127

Page 94: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia

Complexity Theory

" Complexity theory studies the difficulty of computation problems

" The key is a complexity heirarchy of problems

Graphs 128

Page 95: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia

P=NP is THE open question

" Consider only decision problems

" P – polynomial time " NP –

nondeterministic polynomial time

" NP complete – hardest problems in NP

Graphs 129

Page 96: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia

The recipe

" Establishing NP: Cook 1971 – any NP problem can be reduced to SAT

" Proving NP-complete n  Show is in NP by

exhibiting an algorithm n  Show complete by

reducing some known problem to it

Graphs 130

SAT

TSP HG

Cook’s theorem

Page 97: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia

The recipe

" Establishing NP: Cook 1971 – any NP problem can be reduced to SAT

" Proving NP-complete n  Show is in NP by

exhibiting an algorithm n  Show complete by

polynomial reduction of some known problem to it

Graphs 131

SAT

TSP HG

Reduction

Page 98: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia

The recipe

" Establishing NP: Cook 1971 – any NP problem can be reduced to SAT

" Proving NP-complete n  Show is in NP by

exhibiting an algorithm n  Show complete by

reducing some known problem to it

Graphs 132

SAT

TSP HG

Your Problem

http://en.wikipedia.org/wiki/List_of_NP-complete_problems

Page 99: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia

Even Worse

" The Halting Problem n  Will a given program

halt on a given input?

n  halt(prog)=> yes/no n  Loop(P)

w  If (halt(P(P))) inf loop n  Else halt

n  What is Loop(Loop)?

" If loop(loop) halts, then loop(loop)=inf loop

" If loop(loop) is inf loop, then loop(loop) halts

Graphs 133

Page 100: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 134

Summary

" Graphs - directed/undirected weighted " Data structures " Traversals (BFS, DFS)

n  what you can compute with them

" Shortest path " Minimum Spanning Trees

Page 101: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 135

Page 102: Graphs - Department of Computer Sciencehager/Teaching/cs226/Notes/Graphs2011.ppt.pdf · A vertex represents an airport and stores the three-letter airport code ! ... adjacency lists,

© 2004 Goodrich, Tamassia Graphs 136