bfs and dfs

33
Welcome To Our Presentation

Upload: masud-parvaze

Post on 13-Apr-2017

379 views

Category:

Engineering


0 download

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