Top Banner
Welcome To Our Presentation
33

Bfs and Dfs

Apr 13, 2017

Download

Engineering

Masud Parvaze
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Bfs and Dfs

Welcome To Our Presentation

Page 2: Bfs and Dfs

Group Name : Quantative

Page 3: Bfs and Dfs

Depth First Search (DFS) Breadth First Search (BFS)

Topics

Page 4: Bfs and Dfs

What is a graph?

1.Directed/Undirected

2.Weighted/Unweighted3.Cyclic/Acyclic

A set of vertices and edges

Page 5: Bfs and Dfs

Breadth First Search (BFS)Start several paths at a time, and advance in each one step at a time

The breadth-first search uses a FIFO queue.

Depth First Search (DFS)Once a possible path is found, continue the search until the end of the path

The Depth-first search uses a LIFO Stack.

Graph Traversal

Page 6: Bfs and Dfs

How It Works? 1.Pick a source vertex S to start. 2.Discover the vertices that are adjacent to S.

Depth-first: visit all neighbors of a neighbor before visiting your other neighbors

Breadth First: Pick each child of S

in turn and discover their vertices adjacent to that child.

Done when all children have been discovered and examined.

Page 7: Bfs and Dfs

For a Graph G=(V, E) and n = |V| and m=|E|

When Adjacency List is used Complexity is O(m + n)

When Adjacency Matrix is used Scanning each row for checking the connectivity of a Vertex is in order O(n).

So, Complexity is O(n2 )

DFS uses space O(|V|) in the worst case to store the stack of vertices on the current search path as well as the set of already-visited vertices.

Analysis of DFS

Page 8: Bfs and Dfs

Example:

Page 9: Bfs and Dfs

Depth-first search: Directed graphs

The algorithm is essentially the same as for undirected graphs, the difference residing in the interpretation of the word "adjacent". 

In a directed graph, node w is adjacent to node v if the directed edge (v, w) exists. 

If (v, w) exists but (w, v) does not, then w is adjacent to v but v is not adjacent to w. 

With this change of interpretation the procedures dfs and search apply equally well in the case of a directed graph.

Page 10: Bfs and Dfs

DFS Example

Data Structure and Algorithm

sourcevertex

Page 11: Bfs and Dfs

DFS Example

Data Structure and Algorithm

1 | | |

| | |

| |

sourcevertex d f

Page 12: Bfs and Dfs

DFS Example

Data Structure and Algorithm

1 | | |

| | |

2 | |

sourcevertex d f

Page 13: Bfs and Dfs

DFS Example

Data Structure and Algorithm

1 | | |

| | 3 |

2 | |

sourcevertex d f

Page 14: Bfs and Dfs

DFS Example

Data Structure and Algorithm

1 | | |

| | 3 | 4

2 | |

sourcevertex d f

Page 15: Bfs and Dfs

DFS Example

Data Structure and Algorithm

1 | | |

| 5 | 3 | 4

2 | |

sourcevertex d f

Page 16: Bfs and Dfs

DFS Example

Data Structure and Algorithm

1 | | |

| 5 | 63 | 4

2 | |

sourcevertex d f

Page 17: Bfs and Dfs

DFS Example

Data Structure and Algorithm

1 | | |

| 5 | 63 | 4

2 | 7 |

sourcevertex d f

Page 18: Bfs and Dfs

DFS Example

Data Structure and Algorithm

1 | 8 | |

| 5 | 63 | 4

2 | 7 |

sourcevertex d f

Page 19: Bfs and Dfs

DFS Example

Data Structure and Algorithm

1 | 8 | |

| 5 | 63 | 4

2 | 7 9 |

sourcevertex d f

Page 20: Bfs and Dfs

DFS Example

Data Structure and Algorithm

1 | 8 | |

| 5 | 63 | 4

2 | 7 9 |10

sourcevertex d f

Page 21: Bfs and Dfs

DFS Example

Data Structure and Algorithm

1 | 8 |11 |

| 5 | 63 | 4

2 | 7 9 |10

sourcevertex d f

Page 22: Bfs and Dfs

DFS Example

Data Structure and Algorithm

1 |12 8 |11 |

| 5 | 63 | 4

2 | 7 9 |10

sourcevertex d f

Page 23: Bfs and Dfs

DFS Example

Data Structure and Algorithm

1 |12 8 |11 13|

| 5 | 63 | 4

2 | 7 9 |10

sourcevertex d f

Page 24: Bfs and Dfs

DFS Example

Data Structure and Algorithm

1 |12 8 |11 13|

14| 5 | 63 | 4

2 | 7 9 |10

sourcevertex d f

Page 25: Bfs and Dfs

DFS Example

Data Structure and Algorithm

1 |12 8 |11 13|

14|155 | 63 | 4

2 | 7 9 |10

sourcevertex d f

Page 26: Bfs and Dfs

DFS Example

Data Structure and Algorithm

1 |12 8 |11 13|16

14|155 | 63 | 4

2 | 7 9 |10

sourcevertex d f

Page 27: Bfs and Dfs

Algorithm stepsStep:1 Push the root node in stack.Step:2 Loop until stack is empty.Step:3 Peek the node of the stack.Step:4 If the node has unvisited child nodes get the unvisited child node mark it has travers and push it on stack.

Page 28: Bfs and Dfs

Data Structure and Algorithm

DFS: AlgorithmDFS(G) for each vertex u in V, color[u]=white; p[u]=NIL time=0; for each vertex u in V

if (color[u]=white) DFS-VISIT(u)

Page 29: Bfs and Dfs

Data Structure and Algorithm

DFS-VISIT(u) color[u]=gray; time = time + 1; d[u] = time; for each v in Adj(u) do if (color[v] = white) p[v] = u; DFS-VISIT(v); color[u] = black; time = time + 1; f[u]= time;

DFS: Algorithm (Cont.)

sourcevertex

Page 30: Bfs and Dfs

BFS:*Testing a graph for bipartitions*To find the shortest path from a vertex s to a vertex v in an un weighted graph*To find the length of such a path*To find out if a graph contains cycles *To construct a BSF tree/forest from a graph *Copying garbage collection

Applications

Page 31: Bfs and Dfs

ApplicationsDFS:* Finding connected components.*Topological sorting. *Finding the bridges of a graph. *cycle Detecting *Finding strongly connected components. *Finding biconnectivity in graphs.

Page 32: Bfs and Dfs
Page 33: Bfs and Dfs