Graph Traversals Depth-First Traversals. Algorithms. Example.

Slides:



Advertisements
Similar presentations
CSE 390B: Graph Algorithms Based on CSE 373 slides by Jessica Miller, Ruth Anderson 1.
Advertisements

CS 206 Introduction to Computer Science II 03 / 27 / 2009 Instructor: Michael Eckmann.
Binary Tree Traversals
CS 206 Introduction to Computer Science II 11 / 11 / Veterans Day Instructor: Michael Eckmann.
Using nextAdjacent() To list all vertices connected to a vertex u in graph G we can use the following loop: for (int v=G.nextAdjacent(u,-1); v>=0; v=G.nextAdjacent(u,v))
Graph Traversals Introduction Breadth-First Traversal. The Algorithm.
Topological Sort Introduction. Definition of Topological Sort.
Testing for Connectedness and Cycles
Lists A list is a finite, ordered sequence of data items. Two Implementations –Arrays –Linked Lists.
1 Testing for Connectedness and Cycles Connectedness of Undirected Graphs Implementation of Connectedness detection Algorithm for Undirected Graphs. Implementation.
Fall 2007CS 2251 Iterators and Tree Traversals. Fall 2007CS 2252 Binary Trees In a binary tree, each node has at most two subtrees A set of nodes T is.
Graph Traversals Depth-First Traversal. The Algorithm.
CS 206 Introduction to Computer Science II 11 / 03 / 2008 Instructor: Michael Eckmann.
Graph Traversals Depth-First Traversals. –Algorithms. –Example. –Implementation. Breadth-First Traversal. –The Algorithm. –Example. –Implementation. Review.
CS 206 Introduction to Computer Science II 11 / 05 / 2008 Instructor: Michael Eckmann.
CS 206 Introduction to Computer Science II 03 / 25 / 2009 Instructor: Michael Eckmann.
Graph Traversals General Traversal Algorithm Depth-First Traversals. –Algorithms. –Example. –Implementation. Breadth-First Traversal. –The Algorithm. –Example.
CS 206 Introduction to Computer Science II 11 / 09 / 2009 Instructor: Michael Eckmann.
Graphs & Graph Algorithms Nelson Padua-Perez Bill Pugh Department of Computer Science University of Maryland, College Park.
1 Topological Sort Introduction. Definition of Topological Sort. Topological Sort is Not Unique. Topological Sort Algorithms. An Example. Implementation.
CS 206 Introduction to Computer Science II 03 / 30 / 2009 Instructor: Michael Eckmann.
Testing for Connectedness and Cycles Connectedness of an Undirected Graph Implementation of Connectedness detection Algorithm. Implementation of Strong.
Preorder Traversal with a Stack Push the root onto the stack. While the stack is not empty n pop the stack and visit it.
Topological Sort Introduction. Definition of Topological Sort. Topological Sort is Not Unique. Topological Sort Algorithm. An Example. Implementation.
1 Chapter 18 Trees Objective To learn general trees and recursion binary trees and recursion tree traversal.
Search Related Algorithms. Graph Code Adjacency List Representation:
U n i v e r s i t y o f H a i l ICS 202  2011 spring  Data Structures and Algorithms  1.
Trees – Part 2 CS 367 – Introduction to Data Structures.
Graphs. Made up of vertices and arcs Digraph (directed graph) –All arcs have arrows that give direction –You can only traverse the graph in the direction.
COMP261 Lecture 6 Dijkstra’s Algorithm. Connectedness Is this graph connected or not? A Z FF C M N B Y BB S P DDGG AA R F G J L EE CC Q O V D T H W E.
Graphs – Part II CS 367 – Introduction to Data Structures.
Trees, Binary Search Trees, Balanced Trees, Graphs Graph Fundamentals Telerik Algo Academy
COSC 2007 Data Structures II
7. Graph Traversal Describe and compare depth-first and breadth-first graph searching, and look at the creation of spanning trees Contest Algorithms: 7.
1 Trees General Trees  Nonrecursive definition: a tree consists of a set of nodes and a set of directed edges that connect pairs of nodes.
Minimum Spanning Tree What is a Minimum Spanning Tree.
1 Trees General Trees  Nonrecursive definition: a tree consists of a set of nodes and a set of directed edges that connect pairs of nodes.
Graph Theory Def: A graph is a set of vertices and edges G={V,E} Ex. V = {a,b,c,d,e} E = {ab,bd,ad,ed,ce,cd} Note: above is a purely mathematical definition.
© 2006 Pearson Addison-Wesley. All rights reserved14 B-1 Chapter 14 (continued) Graphs.
Review Graph Directed Graph Undirected Graph Sub-Graph Spanning Sub-Graph Degree of a Vertex Weighted Graph Elementary and Simple Path Link List Representation.
Data Structures & Algorithm Analysis lec(8):Graph T. Souad alonazi
Breadth-First Search (BFS)
Graphs A New Data Structure
Graphs Chapter 15 introduces graphs which are probably the most general and commonly-used data structure. This lecture introduces heaps, which are used.
Minimum Spanning Tree What is a Minimum Spanning Tree.
CS212: Data Structures and Algorithms
Unit 10 Graphs (1) King Fahd University of Petroleum & Minerals
CSE 373 Topological Sort Graph Traversals
Csc 2720 Instructor: Zhuojun Duan
Data Structures and Algorithms for Information Processing
Graph Traversals Depth-First Traversals. Algorithms. Example.
Graph Traversals Depth-First Traversals. Algorithms. Example.
Trees 1: Theory, Models, Generic Heap Algorithms, Priority Queues
Graphs Representation, BFS, DFS
Testing for Connectedness and Cycles
Topological Sort Introduction. Definition of Topological Sort.
Graph Traversals Depth-First Traversals. Algorithms. Example.
Graphs Part 2 Adjacency Matrix
Instructor: Scott Kristjanson CMPT 125/125 SFU Burnaby, Fall 2013
COMP171 Depth-First Search.
Breadth First Search - A B C D E F G H I front FIFO Queue.
Depth-First Search CSE 2011 Winter April 2019.
Graph Implementation.
Depth-First Search CSE 2011 Winter April 2019.
Topological Sort Introduction. Definition of Topological Sort.
Chapter 14 Graphs © 2011 Pearson Addison-Wesley. All rights reserved.
Topological Sort Introduction. Definition of Topological Sort.
Topological Sort Introduction. Definition of Topological Sort.
INTRODUCTION A graph G=(V,E) consists of a finite non empty set of vertices V , and a finite set of edges E which connect pairs of vertices .
Presentation transcript:

Graph Traversals Depth-First Traversals. Algorithms. Example. Implementation. Breadth-First Traversal. The Algorithm. Review Questions.

Depth-First Traversal Algorithm In this method, After visiting a vertex v, which is adjacent to w1, w2, w3, ...; Next we visit one of v's adjacent vertices, w1 say. Next, we visit all vertices adjacent to w1 before coming back to w2, etc. Must keep track of vertices already visited to avoid cycles. The method can be implemented using recursion or iteration. The iterative preorder depth-first algorithm is: 1 push the starting vertex onto the stack 2 while(stack is not empty){ 3 pop a vertex off the stack, call it v 4 if v is not already visited, visit it push vertices adjacent to v, not visited, onto the stack } Note: Adjacent vertices can be pushed in any order; but to obtain a unique traversal, we will push them in reverse alphabetical order.

Example Demonstrates depth-first traversal using an explicit stack. Order of Traversal Stack A B C F E G D H I

Recursive preorder Depth-First Traversal Implementation dfsPreorder(v){ visit v; for(each neighbour w of v) if(w has not been visited) dfsPreorder(w); } The following is the code for the recursive preorderDepthFirstTraversal method of the AbstractGraph class: public void preorderDepthFirstTraversal(Visitor visitor, Vertex start) { boolean visited[] = new boolean[numberOfVertices]; for(int v = 0; v < numberOfVertices; v++) visited[v] = false; preorderDepthFirstTraversal(visitor, start, visited); }

Recursive preorder Depth-First Traversal Implementation (cont’d) private void preorderDepthFirstTraversal(Visitor visitor, Vertex v, boolean[] visited) { if(visitor.isDone()) return; visitor.visit(v); visited[getIndex(v)] = true; Iterator p = v.getSuccessors(); while(p.hasNext()) { Vertex to = (Vertex) p.next(); if(! visited[getIndex(to)]) preorderDepthFirstTraversal(visitor, to, visited); }

Recursive preorder Depth-First Traversal Implementation (cont’d) At each stage, a set of unvisited adjacent vertices of the current vertex is generated.

Recursive postorder Depth-First Traversal Implementation dfsPostorder(v){ mark v; for(each neighbour w of v) if(w is not marked) dfsPostorder(w); visit v; } The following is the code for the recursive postorderDepthFirstTraversal method of the AbstractGraph class: public void postorderDepthFirstTraversal(Visitor visitor, Vertex start) { boolean visited[] = new boolean[numberOfVertices]; for(int v = 0; v < numberOfVertices; v++) visited[v] = false; postorderDepthFirstTraversal(visitor, start, visited); }

Recursive postorder Depth-First Traversal Implementation (cont’d) private void postorderDepthFirstTraversal( Visitor visitor, Vertex v, boolean[] visited) { if(visitor.isDone()) return; // mark v visited[getIndex(v)] = true; Iterator p = v.getSuccessors(); while(p.hasNext()){ Vertex to = (Vertex) p.next(); if(! visited[getIndex(to)]) postorderDepthFirstTraversal(visitor, to, visited); } // visit v visitor.visit(v);

Recursive postorder Depth-First Traversal Implementation (cont’d) At each stage, a set of unmarked adjacent vertices of the current vertex is generated.

Breadth-First Traversal Algorithm In this method, After visiting a vertex v, we must visit all its adjacent vertices w1, w2, w3, ..., before going down next level to visit vertices adjacent to w1 etc. The method can be implemented using a queue. A boolean array is used to ensure that a vertex is enqueued only once. 1 enqueue the starting vertex 2 while(queue is not empty){ 3 dequeue a vertex v from the queue; 4 visit v. enqueue vertices adjacent to v that were never enqueued; } Note: Adjacent vertices can be enqueued in any order; but to obtain a unique traversal, we will enqueue them in alphabetical order.

Example Demonstrating breadth-first traversal using a queue. Order of Traversal Queue rear A B D E C G F H I Queue front

Breadth-First Traversal Implementation public void breadthFirstTraversal(Visitor visitor, Vertex start){ boolean enqueued[] = new boolean[numberOfVertices]; for(int i = 0; i < numberOfVertices; i++) enqueued[i] = false; Queue queue = new QueueAsLinkedList(); enqueued[getIndex(start)] = true; queue.enqueue(start); while(!queue.isEmpty() && !visitor.isDone()) { Vertex v = (Vertex) queue.dequeue(); visitor.visit(v); Iterator it = v.getSuccessors(); while(it.hasNext()) { Vertex to = (Vertex) it.next(); int index = getIndex(to); if(!enqueued[index]) { enqueued[index] = true; queue.enqueue(to); }

Review Questions 1. Considera depth-first traversal of the undirected graph GA shown above, starting from vertex a. List the order in which the nodes are visited in a preorder traversal. List the order in which the nodes are visited in a postorder traversal 2. Repeat exercise 1 above for a depth-first traversal starting from vertex d. 3. List the order in which the nodes of the undirected graph GA shown above are visited by a breadth first traversal that starts from vertex a. Repeat this exercise for a breadth-first traversal starting from vertex d. 4. Repeat Exercises 1 and 3 for the directed graph GB.