Graphs + Shortest Paths David Kauchak cs302 Spring 2013

Preview:

DESCRIPTION

Tree BFS

Citation preview

Graphs + Shortest Paths

David Kauchakcs302

Spring 2013

Admin

Tree BFS

Running time of Tree BFSAdjacency list

How many times does it visit each vertex? How many times is each edge traversed? O(|V|+|E|)

Adjacency matrix For each vertex visited, how much work is done? O(|V|2)

BFS RecursivelyHard to do!

BFS for graphsWhat needs to change for graphs?

Need to make sure we don’t visit a node multiple times

B

D E

F

A

C

G

distance variable keeps track of how far from the starting node and whether we’ve seen the node yet

B

D E

F

A

C

G

B

D E

F

A

C

G

set all nodes as unseen

B

D E

F

A

C

G

check if the node has been seen

B

D E

F

A

C

G

set the node as seen and record distance

B

D E

F

A

C

G

B

D E

F

A

C

G

B

D E

F

A

C

G

0

Q: A

B

D E

F

A

C

G

0

Q:

B

D E

F

A

C

G

0 1

11

Q: D, E, B

B

D E

F

A

C

G

0 1

11

Q: E, B

B

D E

F

A

C

G

0 1

11

Q: B

B

D E

F

A

C

G

0 1

11

Q: B

B

D E

F

A

C

G

0 1

11

Q:

B

D E

F

A

C

G

0 1

11

Q:

B

D E

F

A

C

G

0 1

2

2

11

Q: F, C

B

D E

F

A

C

G

0 1

2

2 3

11

B

D E

F

A

C

G

0 1

2

2 3

11

B

D E

F

A

C

G

0 1

2

2 3

11

Is BFS correct?Does it visit all nodes reachable from the starting node?Can you prove it?

Assume we “miss” some node ‘u’, i.e. a path exists, but we don’t visit ‘u’

S … U

Is BFS correct?Does it visit all nodes reachable from the starting node?Can you prove it?

Find the last node along the path to ‘u’ that was visited

S … U… Z W

why do we know that such a node exists?

Is BFS correct?Does it visit all nodes reachable from the starting node?Can you prove it?

We visited ‘z’ but not ‘w’, which is a contradiction, given the pseudocode

S … U… Z W

contradiction

Is BFS correct?Does it correctly label each node with the shortest distance from the starting node?

Is BFS correct?Does it correctly label each node with the shortest distance from the starting node?

Assume the algorithm labels a node with a longer distance. Call that node ‘u’

S … U

Is BFS correct?Does it correctly label each node with the shortest distance from the starting node?

Find the last node in the path with the correct distance

S … U… Z W

correct incorrect

Is BFS correct?Does it correctly label each node with the shortest distance from the starting node?

Find the last node in the path with the correct distance

S … U… Z W

contradiction

Runtime of BFSNothing changed over our analysis of TreeBFS

Runtime of BFS

Adjacency list: O(|V| + |E|)Adjacency matrix: O(|V|2)

Depth First Search (DFS)

Depth First Search (DFS)

Tree DFS

A

B

C

ED

F G

Tree DFS

A

B

C

ED

F G

Tree DFS

A

B

C

ED

F G

Tree DFS

A

B

C

ED

F G

Tree DFS

A

B

C

ED

F G

Frontier?

Tree DFS

A

B

C

ED

F G

Tree DFS

A

B

C

ED

F G

Tree DFS

A

B

C

ED

F G

Tree DFS

A

B

C

ED

F G

DFS on graphs

DFS on graphs

mark all nodes as not visited

DFS on graphs

until all nodes have been visited repeatedly call DFS-Visit

DFS on graphs

What happened to the stack?

What does DFS do?Finds connected components

Each call to DFS-Visit from DFS starts exploring a new set of connected components

Helps us understand the structure/connectedness of a graph

Is DFS correct?

Does DFS visit all of the nodes in a graph?

Running time?

Like BFS Visits each node exactly once Processes each edge exactly twice (for an

undirected graph) O(|V|+|E|)

DAGsCan represent dependency graphs

underwear

pants

belt

shirt

tie

jacket

socks

shoes

watch

Topological sortA linear ordering of all the vertices such that for all edges (u,v) E, u appears before v in the ordering

An ordering of the nodes that “obeys” the dependencies, i.e. an activity can’t happen until it’s dependent activities have happened

underwear

pants

belt

shirt

tie

jacket

socks

shoes

watch

underwear

pants

belt

watch

shirt

tie

socks

shoes

jacket

Topological sort

Topological sort

underwear

pants

belt

shirt

tie

jacket

socks

shoes

watch

Topological sort

underwear

pants

belt

shirt

tie

jacket

socks

shoes

watch

Topological sort

underwear

pants

belt

shirt

tie

jacket

socks

shoes

watch

Topological sort

underwear

pants

belt

shirt

tie

jacket

socks

shoes

watch

Topological sort

underwear

pants

belt

shirt

tie

jacket

socks

shoes

watch

Topological sort

underwear

pants

belt

shirt

tie

jacket

socks

shoes

watch

Topological sort

underwear

pants

belt

shirt

tie

jacket

socks

shoes

watch

Topological sort

underwear

pants

belt

shirt

tie

jacket

socks

shoes

watch

Running time?

Running time?

O(|V|+|E|)

Running time?

O(E) overall

Running time?

How many calls? |V|

Running time?

Overall running time?

O(|V|2+|V| |E|)

Can we do better?

Topological sort 2

Topological sort 2

Topological sort 2

Topological sort 2

Running time?How many times do we process each node?How many times do we process each edge?

O(|V| + |E|)

Connectedness

Given an undirected graph, for every node u V, can we reach all other nodes in the graph?

Run BFS or DFS-Visit (one pass) and mark nodes as we visit them. If we visit all nodes, return true, otherwise false.

Running time: O(|V| + |E|)

Strongly connectedGiven a directed graph, can we reach any node v from any other node u?

Ideas?

Transpose of a graphGiven a graph G, we can calculate the transpose of a graph GR by reversing the direction of all the edges

A

B

C

ED

A

B

C

ED

G GR

Running time to calculate GR? O(|V| + |E|)

Strongly connected

Is it correct?What do we know after the first pass?

Starting at u, we can reach every node

What do we know after the second pass? All nodes can reach u. Why? We can get from u to every node in GR, therefore, if we reverse

the edges (i.e. G), then we have a path from every node to u

Which means that any node can reach any other node. Given any two nodes s and t we can create a path through u

s u t… …

Runtime?

O(|V| + |E|)

O(|V| + |E|)

O(|V| + |E|)

O(|V| + |E|)

O(|V|)

O(|V|)

Detecting cyclesUndirected graph

BFS or DFS. If we reach a node we’ve seen already, then we’ve found a cycle

Directed graph

A

BD

have to be careful

Detecting cyclesUndirected graph

BFS or DFS. If we reach a node we’ve seen already, then we’ve found a cycle

Directed graph Call TopologicalSort If the length of the list returned ≠ |V| then a cycle exists

Shortest pathsWhat is the shortest path from a to d?

A

B

C E

D

Shortest pathsBFS

A

B

C E

D

Shortest pathsWhat is the shortest path from a to d?

A

B

C E

D

1

1

3

2

23

4

Shortest pathsWe can still use BFS

A

B

C E

D

1

1

3

2

23

4

Shortest pathsWe can still use BFS

A

B

C E

D

1

1

3

2

23

4

A

B

C E

D

Shortest pathsWe can still use BFS

A

B

C E

D

Shortest pathsWhat is the problem?

A

B

C E

D

Shortest pathsRunning time is dependent on the weights

A

B

C4

1

2

A

B

C200

50

100

Shortest paths

A

B

C200

50

100

A

B

C

Shortest paths

A

B

C

Shortest paths

A

B

C

Shortest paths

A

B

C

Nothing will change as we expand the frontier until we’ve gone out 100 levels

Dijkstra’s algorithm

Dijkstra’s algorithm

Dijkstra’s algorithmprev keeps track of the shortest path

Dijkstra’s algorithm

Dijkstra’s algorithm

Dijkstra’s algorithm

A

B

C E

D

1

1

3

3

21

4

A

B

C E

D

1

1

3

3

21

4

A

B

C E

D

1

1

3

3

21

4

0

Heap

A 0B C D E

A

B

C E

D

1

1

3

3

21

4

0

Heap

B C D E

A

B

C E

D

1

1

3

3

21

4

0

Heap

B C D E

A

B

C E

D

1

1

3

3

21

4

1

0

Heap

C 1B D E

A

B

C E

D

1

1

3

3

21

4

1

0

Heap

C 1B D E

A

B

C E

D

1

1

3

3

21

4

3

1

0

Heap

C 1B 3D E

A

B

C E

D

1

1

3

3

21

4

3

1

0

Heap

C 1B 3D E

3

A

B

C E

D

1

1

3

21

4

3

1

0

Heap

B 3D E

3

A

B

C E

D

1

1

3

21

4

3

1

0

Heap

B 3D E

3

A

B

C E

D

1

1

3

21

4

3

1

0

Heap

B 3D E

3

A

B

C E

D

1

1

3

21

4

2

1

0

Heap

B 2D E

3

A

B

C E

D

1

1

3

21

4

2

1

0

Heap

B 2D E

3

A

B

C E

D

1

1

3

21

4

2

51

0

Heap

B 2E 5D

3

A

B

C E

D

1

1

3

21

4

2

51

0

Heap

B 2E 5D

Frontier?

3

A

B

C E

D

1

1

3

21

4

2

51

0

Heap

B 2E 5D

All nodes reachable from starting node within a given distance

3

A

B

C E

D

1

1

3

21

4

2 5

31

0

Heap

E 3D 5

3

A

B

C E

D

1

1

3

21

4

2 5

31

0

Heap

D 5

3

A

B

C E

D

1

1

3

21

4

2 5

31

0

Heap

A

B

C E

D

1

11

2 5

31

0

Heap

3

Recommended