Graph Algorithms "A charlatan makes obscure what is clear; a thinker makes clear what is obscure. " - Hugh Kingsmill.

Slides:



Advertisements
Similar presentations
Tirgul 7 Review of graphs Graph algorithms: –DFS –Properties of DFS –Topological sort.
Advertisements

Introduction to Algorithms Second Edition by Cormen, Leiserson, Rivest & Stein Chapter 22.
Elementary Graph Algorithms Depth-first search.Topological Sort. Strongly connected components. Chapter 22 CLRS.
More Graphs COL 106 Slides from Naveen. Some Terminology for Graph Search A vertex is white if it is undiscovered A vertex is gray if it has been discovered.
David Luebke 1 5/9/2015 CS 332: Algorithms Graph Algorithms.
Graph Searching (Graph Traversal) Algorithm Design and Analysis Week 8 Bibliography: [CLRS] – chap 22.2 –
CS 3343: Analysis of Algorithms Lecture 24: Graph searching, Topological sort.
1 Graph Programming Gordon College. 2 Graph Basics A graph G = (V, E) –V = set of vertices, E = set of edges –Dense graph: |E|  |V| 2 ; Sparse graph:
Graph traversals / cutler1 Graph traversals Breadth first search Depth first search.
Tirgul 11 DFS Properties of DFS Topological sort.
Graphs-Part II Depth First Search (DFS). We Already Covered Breadth First Search(BFS) Traverses the graph one level at a time – Visit all outgoing edges.
Shortest Path Problems
1 7/3/2015 ITCS 6114 Graph Algorithms. 2 7/3/2015 Depth-First Search ● Depth-first search is another strategy for exploring a graph ■ Explore “deeper”
Tirgul 7 Review of graphs Graph algorithms: – BFS (next tirgul) – DFS – Properties of DFS – Topological sort.
Review of Graphs A graph is composed of edges E and vertices V that link the nodes together. A graph G is often denoted G=(V,E) where V is the set of vertices.
November 6, Algorithms and Data Structures Lecture XI Simonas Šaltenis Aalborg University
David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.
COSC 3101A - Design and Analysis of Algorithms 10
Sept Elementary Graph Algorithms Graph representation Graph traversal -Breadth-first search -Depth-first search Parenthesis theorem.
Lecture 11 Algorithm Analysis Arne Kutzner Hanyang University / Seoul Korea.
1 Chapter 22 Elementary Graph Algorithms. 2 Introduction G=(V, E) –V = vertex set –E = edge set Graph representation –Adjacency list –Adjacency matrix.
CSC 201: Design and Analysis of Algorithms Lecture # 18 Graph Algorithms Mudasser Naseer 1 12/16/2015.
Graph Algorithms Searching. Review: Graphs ● A graph G = (V, E) ■ V = set of vertices, E = set of edges ■ Dense graph: |E|  |V| 2 ; Sparse graph: |E|
Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 20.
David Luebke 1 1/6/2016 CS 332: Algorithms Graph Algorithms.
CS 2133: Algorithms Intro to Graph Algorithms (Slides created by David Luebke)
David Luebke 1 1/25/2016 CSE 207: Algorithms Graph Algorithms.
Graphs & Paths Presentation : Part II. Graph representation Given graph G = (V, E). May be either directed or undirected. Two common ways to represent.
ALGORITHMS THIRD YEAR BANHA UNIVERSITY FACULTY OF COMPUTERS AND INFORMATIC Lecture nine Dr. Hamdy M. Mousa.
November 19, Algorithms and Data Structures Lecture XI Simonas Šaltenis Nykredit Center for Database Research Aalborg University
CSC317 1 At the same time: Breadth-first search tree: If node v is discovered after u then edge uv is added to the tree. We say that u is a predecessor.
CS 3343: Analysis of Algorithms Lecture 24: Graph searching, Topological sort.
CS138A Elementary Graph Algorithms Peter Schröder.
64 Algorithms analysis and design BY Lecturer: Aisha Dawood.
Introduction to Algorithms
Breadth-First Search (BFS)
Graphs – Breadth First Search
Graphs Breadth First Search & Depth First Search
Topological Sorting.
Elementary Graph Algorithms
Chapter 22 Elementary Graph Algorithms
Graphs-Part II Depth First Search (DFS)
Main algorithm with recursion: We’ll have a function DFS that initializes, and then calls DFS-Visit, which is a recursive function and does the depth first.
CSC317 Graph algorithms Why bother?
Topological Sort Minimum Spanning Tree
Depth-First Search Depth-first search is a strategy for exploring a graph Explore “deeper” in the graph whenever possible Edges are explored out of the.
CS200: Algorithm Analysis
Graphs Breadth First Search & Depth First Search
Graph: representation and traversal CISC4080, Computer Algorithms
Many slides here are based on E. Demaine , D. Luebke slides
Elementary Graph Algorithms
CS 3343: Analysis of Algorithms
Graphs A graph G = (V, E) V = set of vertices, E = set of edges
Intro to Graph Algorithms (Slides originally created by David Luebke)
Graph Representation Adjacency list representation of G = (V, E)
Lecture 10 Algorithm Analysis
Finding Shortest Paths
Advanced Algorithms Analysis and Design
Advanced Algorithms Analysis and Design
"Learning how to learn is life's most important skill. " - Tony Buzan
Graph Representation (23.1/22.1)
Basic Graph Algorithms
Chapter 22: Elementary Graph Algorithms
Graph Algorithms "A charlatan makes obscure what is clear; a thinker makes clear what is obscure. " - Hugh Kingsmill CLRS, Sections 22.2 – 22.4.
Algorithms Searching in a Graph.
Text Book: Introduction to algorithms By C L R S
Data structure for graph algorithms: Adjacent list, Adjacent matrix
Elementary Graph Algorithms
CSC 325: Algorithms Graph Algorithms David Luebke /24/2019.
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 Algorithms "A charlatan makes obscure what is clear; a thinker makes clear what is obscure. " - Hugh Kingsmill

Graph Searches Breadth-First Search (BFS) Depth-First Search (DFS) CS 321 - Data Structures

Breadth-First Search Given a graph G=(V,E) and a source vertex s, Breadth-First search explores G’s edges to discover all the vertices reachable from s. Computes the distance from s to each reachable vertex. Produces the Breadth-First Tree tree with root s contains all reachable from s and shortest paths between s and these vertices. CS 321 - Data Structures

BFS Algorithm The BFS algorithm works for both directed and undirected graphs. Input is a graph G=(V,E) represented as an adjacency-list and a source or start vertex s in V. Each BFS node stores several attributes for each vertex in V: v.color: a color (white, gray, or black) v.π: the predecessor of v v.d: the distance from s It uses a Queue during computation. CS 321 - Data Structures

BFS Node Colors Meaning of the node color: gray: nodes that are in the Queue, awaiting processing black: nodes that have been dequeued, are processed white: unexplored nodes, haven’t been processed Node color keeps track of status of a given node. CS 321 - Data Structures

BFS Algorithm CS 321 - Data Structures

Example: BFS         r s t u v w x y source node r s t u         v w x y The number within the node represents the distance from the source node s CS 321 - Data Structures

Example: BFS        Q: r s t u v w x y s s.π=NIL       v w x y Q: s CS 321 - Data Structures

Example: BFS 1    1   Q: r s t u v w x y w r r.π=s s.π=NIL w.π=s    1   w.π=s v w x y Q: w r CS 321 - Data Structures

Example: BFS 1 2   1 2  Q: r s t u v w x y r t x r.π=s s.π=NIL t.π=w 1 2   1 2  w.π=s x.π=w v w x y Q: r t x CS 321 - Data Structures

Example: BFS 1 2  2 1 2  Q: r s t u v w x y t x v r.π=s s.π=NIL t.π=w 1 2  2 1 2  v.π=r w.π=s x.π=w v w x y Q: t x v CS 321 - Data Structures

Example: BFS 1 2 3 2 1 2  Q: r s t u v w x y x v u r.π=s s.π=NIL t.π=w u.π=t 1 2 3 2 1 2  v.π=r w.π=s x.π=w v w x y Q: x v u CS 321 - Data Structures

Example: BFS 1 2 3 2 1 2 3 Q: r s t u v w x y v u y r.π=s s.π=NIL t.π=w u.π=t 1 2 3 2 1 2 3 v.π=r w.π=s x.π=w y.π=x v w x y Q: v u y CS 321 - Data Structures

Example: BFS 1 2 3 2 1 2 3 Q: r s t u v w x y u y r.π=s s.π=NIL t.π=w u.π=t 1 2 3 2 1 2 3 v.π=r w.π=s x.π=w y.π=x v w x y Q: u y CS 321 - Data Structures

Example: BFS 1 2 3 2 1 2 3 Q: r s t u v w x y y r.π=s s.π=NIL t.π=w u.π=t 1 2 3 2 1 2 3 v.π=r w.π=s x.π=w y.π=x v w x y Q: y CS 321 - Data Structures

Example: BFS 1 2 3 2 1 2 3 Q: r s t u v w x y Ø r.π=s s.π=NIL t.π=w u.π=t 1 2 3 2 1 2 3 v.π=r w.π=s x.π=w y.π=x v w x y Q: Ø CS 321 - Data Structures

constructed by using the nodes π attribute Example: BFS root r s t u r.π=s s.π=NIL t.π=w 1 2 3 u.π=t 2 1 2 3 v.π=r w.π=s x.π=w y.π=x v w x y Breadth-First Tree constructed by using the nodes π attribute CS 321 - Data Structures

The running time for BFS is O(n+m) Analysis of BFS O(|V|)= O(n) The running time for BFS is O(n+m) O(1) For each vertex, scan each adjacency list at most once. Total time for the while loop: O(m) O(|E|) = O(m) CS 321 - Data Structures

Computing Shortest Paths Because BFS discovers all the vertices at the distance k from s before discovering any vertex at distance k+1 from s, BFS can be used to compute shortest paths. If there are multiple paths from s to a vertex u, u will be discovered through the shortest one. CS 321 - Data Structures

Depth-First Search Depth-first search is another strategy for exploring a graph: Explore “deeper” in the graph whenever possible An unexplored edge out of the most recently discovered vertex v is explored first When all of v’s edges have been explored, backtrack to the predecessor of v. CS 321 - Data Structures

DFS Algorithm As with BFS, the DFS algorithm works for both directed and undirected graphs. Input is a graph G=(V,E) represented as an adjacency-list and a start vertex s in V. Each DFS node stores several attributes for each vertex in V: v.color: a color (white, gray, or black) v.π: the predecessor of v v.d: time vertex v is first visited v.f: the time finished processing v CS 321 - Data Structures

DFS Colors Meaning of the colors: There is a global variable time gray: when nodes first visited black: nodes that are done processing white: unexplored nodes There is a global variable time assigns timestamps to attributes v.d and v.f. CS 321 - Data Structures

DFS Algorithm CS 321 - Data Structures

Example: DFS start vertex r s t v u w x y CS 321 - Data Structures

Example: DFS r s t v u w x y 1 | | | | | | | | r.π=NIL r.d r.f CS 321 - Data Structures

Example: DFS r s t v u w x y 1 | | | 2 | | | | | r.π=NIL v.π=r CS 321 - Data Structures

Example: DFS r s t v u w x y 1 | | | 2 | | 3 | | | r.π=NIL v.π=r w.π=v CS 321 - Data Structures

Example: DFS r s t v u w x y 1 | | | 2 | | 3 | 4 | | r.π=NIL v.π=r w.π=v x y CS 321 - Data Structures

Example: DFS r s t v u w x y 1 | | | 2 | | 3 | 4 5 | | r.π=NIL v.π=r w.π=v x x.π=v y CS 321 - Data Structures

Example: DFS r s t v u w x y 1 | | | 2 | | 3 | 4 5 | 6 | r.π=NIL v.π=r w.π=v x x.π=v y CS 321 - Data Structures

Example: DFS r s t v u w x y 1 | 1 | | | | 2 | 7 | | 3 | 4 3 | 4 5 | 6 r.π=NIL 1 | 1 | | | | v u 2 | 7 | | v.π=r 3 | 4 3 | 4 5 | 6 5 | 6 | | w w.π=v x x.π=v y CS 321 - Data Structures

Example: DFS r s t v u w x y 1 | 1 | 8 | | | 2 | 7 | | 3 | 4 3 | 4 r.π=NIL s.π=r 1 | 1 | 8 | | | v u 2 | 7 | | v.π=r 3 | 4 3 | 4 5 | 6 5 | 6 | | w w.π=v x x.π=v y CS 321 - Data Structures

Example: DFS r s t v u w x y 1 | 8 | | 2 | 7 9 | 3 | 4 5 | 6 | r.π=NIL v.π=r u.π=s 3 | 4 5 | 6 | w w.π=v x x.π=v y CS 321 - Data Structures

Example: DFS r s t v u w x y 1 | 8 | | 2 | 7 9 |10 3 | 4 5 | 6 | r.π=NIL s.π=r 1 | 8 | | v u 2 | 7 9 |10 v.π=r u.π=s 3 | 4 5 | 6 | w w.π=v x x.π=v y CS 321 - Data Structures

Example: DFS r s t v u w x y 1 | 8 |11 | 2 | 7 9 |10 3 | 4 5 | 6 | r.π=NIL s.π=r 1 | 8 |11 | v u 2 | 7 9 |10 v.π=r u.π=s 3 | 4 5 | 6 | w w.π=v x x.π=v y CS 321 - Data Structures

Example: DFS r s t v u w x y 1 |12 8 |11 | 2 | 7 9 |10 3 | 4 5 | 6 | r.π=NIL s.π=r 1 |12 8 |11 | v u 2 | 7 9 |10 v.π=r u.π=s 3 | 4 5 | 6 | w w.π=v x x.π=v y CS 321 - Data Structures

Example: DFS r s t v u w x y 1 |12 8 |11 13| 2 | 7 9 |10 3 | 4 5 | 6 | new start vertex r s t r.π=NIL s.π=r t.π=NIL 1 |12 8 |11 13| v u 2 | 7 9 |10 v.π=r u.π=s 3 | 4 5 | 6 | w w.π=v x x.π=v y CS 321 - Data Structures

Example: DFS r s t v u w x y 1 |12 8 |11 13| 2 | 7 9 |10 3 | 4 5 | 6 r.π=NIL s.π=r t.π=NIL 1 |12 8 |11 13| v u 2 | 7 9 |10 v.π=r u.π=s 3 | 4 5 | 6 14| w w.π=v x x.π=v y y.π=t CS 321 - Data Structures

Example: DFS r s t v u w x y 1 |12 8 |11 13| 2 | 7 9 |10 3 | 4 5 | 6 r.π=NIL s.π=r t.π=NIL 1 |12 8 |11 13| v u 2 | 7 9 |10 v.π=r u.π=s 3 | 4 5 | 6 14|15 w w.π=v x x.π=v y y.π=t CS 321 - Data Structures

Example: DFS r s t v u w x y 1 |12 8 |11 13|16 2 | 7 9 |10 3 | 4 5 | 6 r.π=NIL s.π=r t.π=NIL 1 |12 8 |11 13|16 v u 2 | 7 9 |10 v.π=r u.π=s 3 | 4 5 | 6 14|15 w w.π=v x x.π=v y y.π=t CS 321 - Data Structures

Depth-First Search Properties The predecessor sub-graph: constructed using the predecessor attribute π, of the nodes forms the depth-first forest - set of trees because the search may be repeated from multiple sources CS 321 - Data Structures

Example: DFS Forest r s t v u w x y 1 |12 8 |11 13|16 2 | 7 9 |10 r.π=NIL s.π=r t.π=NIL 1 |12 8 |11 13|16 v u 2 | 7 9 |10 v.π=r u.π=s 3 | 4 5 | 6 14|15 w w.π=v x x.π=v y y.π=t CS 321 - Data Structures

Depth-First Search Properties Discovering and finishing times have parenthesis structure As soon as we assign the attribute d to a node v we write (d As soon as we assign the attribute f to a node v we write f) CS 321 - Data Structures

Example: Parenthesis Structure (1 r s t r.π=NIL 1 | | | r.d r.f v u | | | | | w x y CS 321 - Data Structures

Example: Parenthesis Structure (1 (2 r s t r.π=NIL 1 | | | v u 2 | | v.π=r | | | w x y CS 321 - Data Structures

Example: Parenthesis Structure (1 (2 (3 r s t r.π=NIL 1 | | | v u 2 | | v.π=r 3 | | | w w.π=v x y CS 321 - Data Structures

Example: Parenthesis Structure (1 (2 (3 4) r s t r.π=NIL 1 | | | v u 2 | | v.π=r 3 | 4 | | w w.π=v x y CS 321 - Data Structures

Example: Parenthesis Structure (1 (2 (3 4) (5 r s t r.π=NIL 1 | | | v u 2 | | v.π=r 3 | 4 5 | | w w.π=v x x.π=v y CS 321 - Data Structures

Example: Parenthesis Structure (1 (2 (3 4) (5 6) r s t r.π=NIL 1 | | | v u 2 | | v.π=r 3 | 4 5 | 6 | w w.π=v x x.π=v y CS 321 - Data Structures

Example: Parenthesis Structure (1 (2 (3 4) (5 6) 7) r s t r.π=NIL 1 | 1 | | | | v u 2 | 7 | | v.π=r 3 | 4 3 | 4 5 | 6 5 | 6 | | w w.π=v x x.π=v y CS 321 - Data Structures

Example: Parenthesis Structure (1 (2 (3 4) (5 6) 7) (8 r s t r.π=NIL s.π=r 1 | 1 | 8 | | | v u 2 | 7 | | v.π=r 3 | 4 3 | 4 5 | 6 5 | 6 | | w w.π=v x x.π=v y CS 321 - Data Structures

Example: Parenthesis Structure (1 (2 (3 4) (5 6) 7) (8 (9 r s t r.π=NIL s.π=r 1 | 8 | | v u 2 | 7 9 | v.π=r u.π=s 3 | 4 5 | 6 | w w.π=v x x.π=v y CS 321 - Data Structures

Example: Parenthesis Structure (1 (2 (3 4) (5 6) 7) (8 (9 10) r s t r.π=NIL s.π=r 1 | 8 | | v u 2 | 7 9 |10 v.π=r u.π=s 3 | 4 5 | 6 | w w.π=v x x.π=v y CS 321 - Data Structures

Example: Parenthesis Structure (1 (2 (3 4) (5 6) 7) (8 (9 10) 11) r s t r.π=NIL s.π=r 1 | 8 |11 | v u 2 | 7 9 |10 v.π=r u.π=s 3 | 4 5 | 6 | w w.π=v x x.π=v y CS 321 - Data Structures

Example: Parenthesis Structure (1 (2 (3 4) (5 6) 7) (8 (9 10) 11) 12) r s t r.π=NIL s.π=r 1 |12 8 |11 | v u 2 | 7 9 |10 v.π=r u.π=s 3 | 4 5 | 6 | w w.π=v x x.π=v y CS 321 - Data Structures

Example: Parenthesis Structure (1 (2 (3 4) (5 6) 7) (8 (9 10) 11) 12) (13 r s t r.π=NIL s.π=r t.π=NIL 1 |12 8 |11 13| v u 2 | 7 9 |10 v.π=r u.π=s 3 | 4 5 | 6 | w w.π=v x x.π=v y CS 321 - Data Structures

Example: Parenthesis Structure (1 (2 (3 4) (5 6) 7) (8 (9 10) 11) 12) (13 (14 r s t r.π=NIL s.π=r t.π=NIL 1 |12 8 |11 13| v u 2 | 7 9 |10 v.π=r u.π=s 3 | 4 5 | 6 14| w w.π=v x x.π=v y y.π=t CS 321 - Data Structures

Example: Parenthesis Structure (1 (2 (3 4) (5 6) 7) (8 (9 10) 11) 12) (13 (14 15) r s t r.π=NIL s.π=r t.π=NIL 1 |12 8 |11 13| v u 2 | 7 9 |10 v.π=r u.π=s 3 | 4 5 | 6 14|15 w w.π=v x x.π=v y y.π=t CS 321 - Data Structures

Example: Parenthesis Structure (1 (2 (3 4) (5 6) 7) (8 (9 10) 11) 12) (13 (14 15) 16) r s t r.π=NIL s.π=r t.π=NIL 1 |12 8 |11 13|16 v u 2 | 7 9 |10 v.π=r u.π=s 3 | 4 5 | 6 14|15 w w.π=v x x.π=v y y.π=t CS 321 - Data Structures

Depth-first Search Properties (1 (2 (3 4) (5 6) 7) (8 (9 10) 11) 12) (13 (14 15) 16) A node u is a descendent of a node v in the DFS forest iff the interval (u.d,u.f) is contained in the interval (v.d,v.f), i.e. v.d < u.d < u.f < v.f Node u is unrelated to node v in the DFS forest iff the intervals (u.d,u.f) and (v.d,v.f) are disjoint, i.e. u.f < v.d OR v.f < u.d E.G. nodes w and x are unrelated CS 321 - Data Structures

Analysis of DFS The DFS running time is Θ (n + m) O(|V|)= O(n) O(1) O(|E|) = O(m) The DFS running time is Θ (n + m) CS 321 - Data Structures

Topological Sort CS 321 - Data Structures

Topological Sort Topological Sort Topological sorting problem: given directed acyclic graph (DAG) G = (V, E) , find a linear ordering of vertices such that for any edge (v, w) in E, v precedes w in the ordering Topological Sort CS 321 - Data Structures

Not a Valid Topological Sort Topological sorting problem: given directed acyclic graph (DAG) G = (V, E) , find a linear ordering of vertices such that for any edge (v, w) in E, v precedes w in the ordering Not a Valid Topological Sort CS 321 - Data Structures

Topological Sort Applications Given a DAG where nodes are courses and there is an edge (u,v) if course u is a prereq for course v, the topological sort of the graph represents the order in which the courses can be taken. CS 321 - Data Structures

Topological Sort Applications This DAG shows how a person can get dressed. The topological sort suggests a way to get dressed. CS 321 - Data Structures

Topological Sort with DFS The topological sort of a DAG G can by computed by leveraging the DFS algorithm CS 321 - Data Structures

Topological Sort: Example CS 321 - Data Structures

Analysis of Topological Sort with DFS The topological sort of a DAG G can by computed by leveraging the DFS algorithm Running Time: As inserting in front of a list takes O(1), the cost of topological sort is the same as DFS, i.e. O(n + m) CS 321 - Data Structures

CS 321 - Data Structures