40
Alyce Brady Alyce Brady CS 510: Computer CS 510: Computer Algorithms Algorithms Breadth-First Graph Traversal Algorithm

Alyce Brady CS 510: Computer Algorithms Breadth-First Graph Traversal Algorithm

  • View
    227

  • Download
    0

Embed Size (px)

Citation preview

Alyce BradyAlyce Brady

CS 510: Computer Algorithms CS 510: Computer Algorithms

Breadth-FirstGraph

Traversal Algorithm

Search vs Traversal

Search: Look for a given nodeSearch: Look for a given node– stop when node found, even if not all stop when node found, even if not all

nodes were visitednodes were visited Traversal: Always visit all nodesTraversal: Always visit all nodes

Breadth-first Search

Similar to Breadth-first Traversal of a Similar to Breadth-first Traversal of a Binary TreeBinary Tree

Choose a starting vertexChoose a starting vertex Search all adjacent verticesSearch all adjacent vertices Return to each adjacent vertex in turn Return to each adjacent vertex in turn

and visit all of its adjacent verticesand visit all of its adjacent vertices

Pseudo-Code forBreadth-First Search

breadth-first-searchbreadth-first-searchmark starting vertex as visited; put on queuemark starting vertex as visited; put on queuewhile the queue is not emptywhile the queue is not empty

dequeue the next nodedequeue the next node

for all unvisited vertices adjacent to this onefor all unvisited vertices adjacent to this one–mark vertex as visitedmark vertex as visited–add vertex to queueadd vertex to queue

Breadth-First Search

A

B C

D E F G

Queue:

Current:

Breadth-First Search

A

B C

D E F G

Queue:

Current:

Av

Breadth-First Search

A

B C

D E F G

Queue:

Current:

A

A

v

Breadth-First Search

A

B C

D E F G

Queue:

Current:A

AA

v

Breadth-First Search

A

B C

D E F G

Queue:

Current:

B

A

AA

v

v

Breadth-First Search

A

B C

D E F G

Queue:

Current:

CB

A

AA

v

v v

Breadth-First Search

A

B C

D E F G

Queue:

Current:B

AA

CB

v

v v

Breadth-First Search

A

B C

D E F G

Queue:

Current:B

C

A BA B

v

v v

Breadth-First Search

A

B C

D E F G

Queue:

Current:B

C

A BA B

v

v v

Breadth-First Search

A

B C

D E F G

Queue:

Current:

DC

B

A BA B

v

v

v

v

Breadth-First Search

A

B C

D E F G

Queue:

Current:

EDC

B

A BA B

v

v

v

v

v

Breadth-First Search

A

B C

D E F G

A BA B

v Queue:

Current:B

FEDC

v

v

v v

v

Breadth-First Search

A

B C

D E F G

A BA B

v

v

Queue:

Current:C

FEDCv

v v

v

Breadth-First Search

A

B C

D E F G

Queue:

A B CA B C

FED

v

v v

v

v v Current:C

Breadth-First Search

A

B C

D E F G

Queue:

A B CA B C

FED

v

v v

v

v v Current:C

Breadth-First Search

A

B C

D E F G

Queue:

A B CA B C

FED

v

v v

v

v v Current:C

Breadth-First Search

A

B C

D E F G

Queue:

Current:C

A B CA B C

GFED

v

v v

v

v vv

Breadth-First Search

A

B C

D E F G

Queue:

Current:D

A B CA B C

GFED

v

v v

v

v vv

A B C DA B C D

Breadth-First Search

A

B C

D E F G

Queue:

Current:D

GFE

v

v v

v

v vv

A B C DA B C D

Breadth-First Search

A

B C

D E F G

Queue:

Current:D

GFE

v

v v

v

v vv

A B C DA B C D

Breadth-First Search

A

B C

D E F G

Queue:

Current:D

GFE

v

v v

v

v vv

Breadth-First Search

A

B C

D E F G

A B C DA B C D

Queue:

Current:E

GFE

v

v

v vv

v v

Breadth-First Search

A

B C

D E F G

Queue:

Current:E

GF

A B C D EA B C D E

v

v

v vv

v v

Breadth-First Search

A

B C

D E F G

Queue:

Current:E

GF

A B C D EA B C D E

v

v

v vv

v v

Breadth-First Search

A

B C

D E F G

Queue:

Current:E

GF

A B C D EA B C D E

v

v

v vv

v v

Breadth-First Search

A

B C

D E F G

Queue:

Current:F

GF

A B C D EA B C D E

v

v

v vv

v v

Breadth-First Search

A

B C

D E F G

Queue:

Current:F

G

A B C D E FA B C D E F

v

v

v vv

v v

Breadth-First Search

A

B C

D E F G

Queue:

Current:F

G

A B C D E FA B C D E F

v

v

v vv

v v

Breadth-First Search

A

B C

D E F G

Queue:

Current:F

G

A B C D E FA B C D E F

v

v

v vv

v v

Breadth-First Search

A

B C

D E F G

Queue:

Current:G

G

A B C D E FA B C D E F

v

v

v vv

v v

Breadth-First Search

A

B C

D E F G

Queue:

Current:G

A B C D E F GA B C D E F G

v

v

v vv

v v

Breadth-First Search

A

B C

D E F G

Queue:

Current:G

A B C D E F GA B C D E F G

v

v

v vv

v v

Breadth-First Search

A

B C

D E F G

A B C D E F GA B C D E F G

Was this a true search?Was this a true search?– How would we make it a true search?How would we make it a true search?

Was this a true traversal?Was this a true traversal?– How would we make it a true traversal?How would we make it a true traversal?

Time and Space Complexityfor Breadth-First Search

Time ComplexityTime Complexity– Adjacency ListsAdjacency Lists

Each node is added to queue onceEach node is added to queue once Each node is checked for each incoming edgeEach node is checked for each incoming edge O (v + e)O (v + e)

– Adjacency MatrixAdjacency Matrix Have to check all entries in matrix: O(nHave to check all entries in matrix: O(n22))

Space ComplexitySpace Complexity– Queue to handle unexplored nodesQueue to handle unexplored nodes

Worst case: all nodes put on queue (if all are Worst case: all nodes put on queue (if all are adjacent to first node) adjacent to first node)

O(n)O(n)

Time and Space Complexityfor Breadth-First Search