🖨️ Printing Instructions: Press Ctrl/Cmd + P and select "Save as PDF".
1

Graphs, BFS, and DFS

2

Learning Goals

3

Graph Theory Basics

4

What is a Graph?

5

Types of Graphs

6

Terminology

7

Sparse vs Dense

8

Graph Representations

9

1. Adjacency Matrix

10

2. Adjacency List

11

Breadth-First Search (BFS)

12

Intuition

13

BFS(G, s)

for each u in V - {s}
  d[u] = infinity
  pi[u] = NIL
d[s] = 0
Q = {s} // FIFO Queue
while Q is not empty
  u = Dequeue(Q)
  for each v in Adj[u]
    if d[v] == infinity
      d[v] = d[u] + 1
      pi[v] = u
      Enqueue(Q, v)
14

BFS Properties

15

BFS Analysis

16

Depth-First Search (DFS)

17

Intuition

18

DFS(G)

for each u in V
  color[u] = WHITE
  pi[u] = NIL
time = 0
for each u in V
  if color[u] == WHITE
    DFS-Visit(u)
19

DFS-Visit(u)

time = time + 1
d[u] = time  // Discovery Time
color[u] = GRAY
for each v in Adj[u]
  if color[v] == WHITE
    pi[v] = u
    DFS-Visit(v)
color[u] = BLACK
time = time + 1
f[u] = time // Finish Time
20

Timestamps

21

Parenthesis Theorem

22

Classification of Edges

23

Cycle Detection

24

BFS vs DFS

25

Comparison

26

Applications

27

Connected Components

28

Bipartite Checking

29

Practice Problems

30

Problem 1

31

Problem 2

32

Problem 3

33

Common Pitfalls & Anti-Patterns

34

Watch Out For...

35

Interactive Demo

36

BFS vs DFS Visualization

37

Interactive Practice

38

Activity 1: BFS Trace

39

Solution 1

40

Activity 2: DFS Timestamps

41

Solution 2

42

Activity 3: Edge Classification

43

Solution 3

44

Activity 4: Bipartite Check

45

Solution 4

46

Lecture Summary

47

All Interactive Demos

48

Supplementary Resources