breadth-first search - carleton universitypeople.scs.carleton.ca/~sbtajali/2002/slides/11-2...

11
Breadth-First Search 1 © 2004 Goodrich, Tamassia Breadth-First Search C B A E D L 0 L 1 F L 2

Upload: others

Post on 22-May-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Breadth-First Search - Carleton Universitypeople.scs.carleton.ca/~sbtajali/2002/slides/11-2 Graphs... · 2009-09-15 · Breadth-first search (BFS) is a general technique for traversing

Breadth-First Search 1© 2004 Goodrich, Tamassia

Breadth-First Search

CB

A

E

D

L0

L1

FL2

Page 2: Breadth-First Search - Carleton Universitypeople.scs.carleton.ca/~sbtajali/2002/slides/11-2 Graphs... · 2009-09-15 · Breadth-first search (BFS) is a general technique for traversing

Breadth-First Search 2© 2004 Goodrich, Tamassia

Breadth-First Search (§ 12.3.3)Breadth-first search (BFS) is a general technique for traversing a graphA BFS traversal of a graph G n Visits all the vertices and

edges of Gn Determines whether G is

connectedn Computes the connected

components of Gn Computes a spanning

forest of G

BFS on a graph with nvertices and m edges takes O(n + m ) timeBFS can be further extended to solve other graph problemsn Find and report a path

with the minimum number of edges between two given vertices

n Find a simple cycle, if there is one

Page 3: Breadth-First Search - Carleton Universitypeople.scs.carleton.ca/~sbtajali/2002/slides/11-2 Graphs... · 2009-09-15 · Breadth-first search (BFS) is a general technique for traversing

Breadth-First Search 3© 2004 Goodrich, Tamassia

BFS AlgorithmThe algorithm uses a mechanism for setting and getting “labels” of vertices and edges

Algorithm BFS(G, s)L0 ← new empty sequenceL0.insertLast(s)setLabel(s, VISITED)i ← 0while ¬Li.isEmpty()

Li +1 ← new empty sequencefor all v ∈ Li.elements()

for all e ∈ G.incidentEdges(v)if getLabel(e) = UNEXPLORED

w ← opposite(v,e)if getLabel(w) = UNEXPLORED

setLabel(e, DISCOVERY)setLabel(w, VISITED)Li +1.insertLast(w)

elsesetLabel(e, CROSS)

i ← i +1

Algorithm BFS(G)Input graph GOutput labeling of the edges

and partition of the vertices of G

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

BFS(G, v)

Page 4: Breadth-First Search - Carleton Universitypeople.scs.carleton.ca/~sbtajali/2002/slides/11-2 Graphs... · 2009-09-15 · Breadth-first search (BFS) is a general technique for traversing

Breadth-First Search 4© 2004 Goodrich, Tamassia

Example

CB

A

E

D

discovery edgecross edge

A visited vertexA unexplored vertex

unexplored edge

L0

L1

F

CB

A

E

D

L0

L1

F

CB

A

E

D

L0

L1

F

Page 5: Breadth-First Search - Carleton Universitypeople.scs.carleton.ca/~sbtajali/2002/slides/11-2 Graphs... · 2009-09-15 · Breadth-first search (BFS) is a general technique for traversing

Breadth-First Search 5© 2004 Goodrich, Tamassia

Example (cont.)

CB

A

E

D

L0

L1

F

CB

A

E

D

L0

L1

FL2

CB

A

E

D

L0

L1

FL2

CB

A

E

D

L0

L1

FL2

Page 6: Breadth-First Search - Carleton Universitypeople.scs.carleton.ca/~sbtajali/2002/slides/11-2 Graphs... · 2009-09-15 · Breadth-first search (BFS) is a general technique for traversing

Breadth-First Search 6© 2004 Goodrich, Tamassia

Example (cont.)

CB

A

E

D

L0

L1

FL2

CB

A

E

D

L0

L1

FL2

CB

A

E

D

L0

L1

FL2

Page 7: Breadth-First Search - Carleton Universitypeople.scs.carleton.ca/~sbtajali/2002/slides/11-2 Graphs... · 2009-09-15 · Breadth-first search (BFS) is a general technique for traversing

Breadth-First Search 7© 2004 Goodrich, Tamassia

PropertiesNotation

Gs: connected component of sProperty 1

BFS(G, s) visits all the vertices and edges of Gs

Property 2The discovery edges labeled by BFS(G, s) form a spanning tree Tsof Gs

Property 3For each vertex v in Lin The path of Ts from s to v has i

edges n Every path from s to v in Gs has at

least i edges

CB

A

E

D

L0

L1

FL2

CB

A

E

D

F

Page 8: Breadth-First Search - Carleton Universitypeople.scs.carleton.ca/~sbtajali/2002/slides/11-2 Graphs... · 2009-09-15 · Breadth-first search (BFS) is a general technique for traversing

Breadth-First Search 8© 2004 Goodrich, Tamassia

AnalysisSetting/getting a vertex/edge label takes O(1) timeEach vertex is labeled twice n once as UNEXPLOREDn once as VISITED

Each edge is labeled twicen once as UNEXPLOREDn once as DISCOVERY or CROSS

Each vertex is inserted once into a sequence Li

Method incidentEdges is called once for each vertexBFS runs in O(n + m) time provided the graph is represented by the adjacency list structure

n Recall that Σv deg(v) = 2m

Page 9: Breadth-First Search - Carleton Universitypeople.scs.carleton.ca/~sbtajali/2002/slides/11-2 Graphs... · 2009-09-15 · Breadth-first search (BFS) is a general technique for traversing

Breadth-First Search 9© 2004 Goodrich, Tamassia

Applications

Using the template method pattern, we can specialize the BFS traversal of a graph G to solve the following problems in O(n + m) timen Compute the connected components of Gn Compute a spanning forest of Gn Find a simple cycle in G, or report that G is a

forestn Given two vertices of G, find a path in G between

them with the minimum number of edges, or report that no such path exists

Page 10: Breadth-First Search - Carleton Universitypeople.scs.carleton.ca/~sbtajali/2002/slides/11-2 Graphs... · 2009-09-15 · Breadth-first search (BFS) is a general technique for traversing

Breadth-First Search 10© 2004 Goodrich, Tamassia

DFS vs. BFS

CB

A

E

D

L0

L1

FL2

CB

A

E

D

F

DFS BFS

√Biconnected components

√Shortest paths

√√Spanning forest, connected components, paths, cycles

BFSDFSApplications

Page 11: Breadth-First Search - Carleton Universitypeople.scs.carleton.ca/~sbtajali/2002/slides/11-2 Graphs... · 2009-09-15 · Breadth-first search (BFS) is a general technique for traversing

Breadth-First Search 11© 2004 Goodrich, Tamassia

DFS vs. BFS (cont.)Back edge (v,w)

n w is an ancestor of v in the tree of discovery edges

Cross edge (v,w)n w is in the same level as

v or in the next level in the tree of discovery edges

CB

A

E

D

L0

L1

FL2

CB

A

E

D

F

DFS BFS