graph search bfs & dfsarashr/parminder.pdf · breadth-first search (bfs) c g h s d e f b a {a b...

41
GRAPH SEARCH BFS & DFS By: Parminder Benipal

Upload: others

Post on 28-Jun-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

GRAPH SEARCH BFS & DFS By: Parminder Benipal

Page 2: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Usage 2

!  Transportation networks (airline carrier, airports as node and direct flights as edges (direct edge).

!  Communication networks (a collection of computers as nodes and the physical link between them as edges).

!  Information networks (World Wide Web can be viewed as directed graph, the Web pages are nodes and the hyperlink between the pages are directed edges).

!  Social Network (People are nodes and friendship is an edge).

Page 3: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Breadth-First Search (BFS) 3

!  BFS begins at a root node and inspects all the neighboring nodes. Then for each of those neighbor nodes in turn, it inspects their neighbor nodes which were unvisited, and so on

Page 4: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Breadth-First Search (BFS)

C

G H

S

D

E

F

B

A

4

Page 5: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Breadth-First Search (BFS)

C

G H

S

D

E

F

B

A

5

Page 6: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Breadth-First Search (BFS)

C

G H

S

D

E

F

B

A

6

Page 7: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Breadth-First Search (BFS)

C

G H

S

D

E

F

B

A

7

Page 8: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Breadth-First Search (BFS)

C

G H

S

D

E

F

B

A

8

Page 9: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Breadth-First Search (BFS)

C

G H

S

D

E

F

B

A

9

Page 10: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Breadth-First Search (BFS)

C

G H

S

D

E

F

B

A

10

Page 11: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Breadth-First Search (BFS)

C

G H

S

D

E

F

B

A

11

Page 12: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Breadth-First Search (BFS)

C

G H

S

D

E

F

B

A

12

Page 13: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Breadth-First Search (BFS)

C

G H

S

D

E

F

B

A

13

Page 14: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Breadth-First Search (BFS)

C

G H

S

D

E

F

B

A

14

Page 15: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Breadth-First Search (BFS)

C

G H

S

D

E

F

B

A

15

Page 16: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Breadth-First Search (BFS)

C

G H

S

D

E

F

B

A

{A B S C G D E F H}

16

Page 17: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Tree after BFS run

C G

H

S

D E F

B

A

17

Page 18: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

BFS Algorithm 18

Page 19: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

BFS running time

1)  If we represent the graph G by adjacency matrix then the running time of BFS algorithm is O(n ), where n is the number of nodes.

2)  If we represent the graph G by link lists then the running time of BFS algorithm is O(m + n), where m is the number of edges and n is the number of nodes.

19

2

Page 20: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

BFS Applications

!  Breadth-first search can be used to solve many problems in graph theory, for example: ¤  Finding all nodes within one connected component ¤ Finding the shortest path between two nodes u and v ¤ Finding the diameter of a graph (seen in assignment). ¤ Testing a graph for bipartiteness (how ?). If there are

two vertices x,y in the same level (layer) L_i that are adjacent then the graph is not bipartite.

¤ More…

20

Page 21: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Depth-First Search (DFS) 21

!  We don’t visit the nodes level by level! As long as there is an unvisited node adjacent to the current visited node we continue! Once we are stuck, trace back and go to a different branch!

Page 22: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Depth-First Search (DFS)

C

G H

S

D

E

F

B

A

22

Page 23: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Depth-First Search (DFS)

C

G H

S

D

E

F

B

A

23

Page 24: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Depth-First Search (DFS)

C

G H

S

D

E

F

B

A

24

Page 25: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Depth-First Search (DFS)

C

G H

S

D

E

F

B

A

25

Page 26: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Depth-First Search (DFS)

C

G H

S

D

E

F

B

A

26

Page 27: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Depth-First Search (DFS)

C

G H

S

D

E

F

B

A

27

Page 28: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Depth-First Search (DFS)

C

G H

S

D

E

F

B

A

28

Page 29: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Depth-First Search (DFS)

C

G H

S

D

E

F

B

A

29

Page 30: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Depth-First Search (DFS)

C

G H

S

D

E

F

B

A

30

Page 31: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Depth-First Search (DFS)

C

G H

S

D

E

F

B

A

{A B S C D E H G F}

31

Page 32: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Edges of G that are not in DFS

C

G H

S

D

E

F

B

A

32

Page 33: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Tree after DFS run and edges in G

C

G

H

S

D E

F

B

A 33

Page 34: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Tree after DFS run

C

G

H

S

D E

F

B

A 34

No edge of G goes from a left subtree to a right subtree. The edges of G outside tree are called back edge. No cross edge !

Page 35: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

Depth-First Algorithm using Stack 35

Page 36: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

DFS running time

1)  If we represent the graph G by adjacency matrix then the running time of DFS algorithm is O(n ), where n is the number of nodes.

2)  If we represent the graph G by link lists then the running time of DFS algorithm is O(m + n), where m is the number of edges and n is the number of nodes.

2

36

Page 37: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

DFS Applications

!  We use DFS to find a cycle or shortest cycle. We also use DFS to find strong components in digraph (used in Tarjan’s algorithm)

37

Page 38: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

BFS & DFS Example 38

V(G) = {a,b,c,d,e,f,g} E(G) = {ab,bc,bd,de,ef,fc,fg}

Page 39: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

BFS & DFS Example 39

BFS: ab, bd, bc, de, cf, fg DFS: ab, bd, de, ef, fg, fc

Page 40: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

BFS & DFS Example 40

!  Previous example shows that if there is a cycle in graph G then the BFS tree and DFS tree are different.

Page 41: GRAPH SEARCH BFS & DFSarashr/parminder.pdf · Breadth-First Search (BFS) C G H S D E F B A {A B S C G D E F H} 16 . Tree after BFS run C G H S D E F B A 17 . BFS Algorithm 18 . BFS

41