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)