DSA1 | Week 8
Navigating Graphs using BFS & DFS
Try them all
Explore one thoroughly
What do you do when you have many different options?
Navigating Graphs
Navigating Graphs
Try them all
Explore one thoroughly
What do you do when you have many different options?
Phase 0.
Identify a
starting point \(s\).
Phase 1.
Collect
all friends of \(s\).
Phase 0.
Identify a
starting point \(s\).
Phase 1.
Collect
all friends of \(s\).
Phase 0.
Identify a
starting point \(s\).
Phase k.
Collect
anyone who is a
friend of
anyone seen before.
\(\cdots\)
\(s\)
\(x\)
\(y\)
\(w\)
\(z\)
\(s\)
\(x\)
\(y\)
\(w\)
\(z\)
\(s\)
\(x\)
\(y\)
\(w\)
\(z\)
\(s\)
\(x\)
\(y\)
\(w\)
\(z\)
Phase 1.
Collect
all friends of \(s\).
Phase 0.
Identify a
starting point \(s\).
Phase k.
Collect
anyone NEW
who is a
friend of
anyone seen before.
\(\cdots\)
Implementation?
ask every unvisited node if
they are adjacent to
any visited node.
Phase #\(k\).
execute_one_round(): for all v in V(G):
if v is not in visited:
for all u in N(v): if u is in visited: add v to visited
visited = [s] repeat n times:
execute_one_round()
visited[s] = true
add s to head of Q
while Q is non-empty:
v = pop(Q) //remove the head of Q
for u in N(v):
if visited[u] is false:
add u to visited and push(Q,u)
0
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
0
01
03
04
05
07
08
09
11
12
13
14
15
16
17
18
19
20
21
22
23
24
0
01
04
05
08
09
12
13
14
16
17
18
19
20
21
22
23
24
DSA1 | Week 8
By Neeldhara Misra
DSA1 | Week 8
- 715