Elementary Graph Algorithms CLRS Chapter 22. Graph A graph is a structure that consists of a set of vertices and a set of edges between pairs of vertices.

Slides:



Advertisements
Similar presentations
Comp 122, Fall 2004 Elementary Graph Algorithms. graphs Lin / Devi Comp 122, Fall 2004 Graphs  Graph G = (V, E) »V = set of vertices »E = set of.
Advertisements

Tirgul 7 Review of graphs Graph algorithms: –DFS –Properties of DFS –Topological sort.
1 Graphs Traversals In many graph problems, we need to traverse the vertices of the graph in some order Analogy: Binary tree traversals –Pre-order Traversal.
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.
CS 473Lecture 141 CS473-Algorithms I Lecture 15 Graph Searching: Depth-First Search and Topological Sort.
Graph Traversals. For solving most problems on graphs –Need to systematically visit all the vertices and edges of a graph Two major traversals –Breadth-First.
ALGORITHMS THIRD YEAR BANHA UNIVERSITY FACULTY OF COMPUTERS AND INFORMATIC Lecture eight Dr. Hamdy M. Mousa.
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.
Graphs Breadth First Search & Depth First Search by Shailendra Upadhye.
Graphs II Kruse and Ryba Chapter 12. Undirected Graph Example: Subway Map.
TECH Computer Science Graphs and Graph Traversals  // From Tree to Graph  // Many programs can be cast as problems on graph Definitions and Representations.
Graph Searching (Graph Traversal) Algorithm Design and Analysis Week 8 Bibliography: [CLRS] – chap 22.2 –
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:
Graphs - Definition G(V,E) - graph with vertex set V and edge set E
Cs420dl lecture 7 Graph traversals wim bohm cs csu.
Graph traversals / cutler1 Graph traversals Breadth first search Depth first search.
Tirgul 11 DFS Properties of DFS Topological sort.
CS 473Lecture 151 CS473-Algorithms I Lecture 15 Graph Searching: Depth-First Search and Topological Sort.
Lecture 11 Graph Algorithms. Definitions Graph is a set of vertices V, with edges connecting some of the vertices (edge set E). An edge can connect two.
1 Data Structures DFS, Topological Sort Dana Shapira.
Lecture 14: Graph Algorithms Shang-Hua Teng. Undirected Graphs A graph G = (V, E) –V: vertices –E : edges, unordered pairs of vertices from V  V –(u,v)
Data Structures, Spring 2004 © L. Joskowicz 1 Data Structures – LECTURE 12 Graphs and basic search algorithms Motivation Definitions and properties Representation.
Lecture 10 Graph Algorithms. Definitions Graph is a set of vertices V, with edges connecting some of the vertices (edge set E). An edge can connect two.
Lecture 15: Depth First Search Shang-Hua Teng. Graphs G= (V,E) B E C F D A B E C F D A Directed Graph (digraph) –Degree: in/out Undirected Graph –Adjacency.
Tirgul 7 Review of graphs Graph algorithms: – BFS (next tirgul) – DFS – Properties of DFS – Topological sort.
Graph Algorithms Introduction to Algorithms Graph Algorithms CSE 680 Prof. Roger Crawfis Partially from io.uwinnipeg.ca/~ychen2.
November 6, Algorithms and Data Structures Lecture XI Simonas Šaltenis Aalborg University
COSC 3101A - Design and Analysis of Algorithms 10
Elementary Graph Algorithms CSc 4520/6520 Fall 2013 Slides adapted from David Luebke, University of Virginia and David Plaisted, University of North Carolina.
Spring 2015 Lecture 10: Elementary Graph Algorithms
Sept Elementary Graph Algorithms Graph representation Graph traversal -Breadth-first search -Depth-first search Parenthesis theorem.
Graphs Chapter 12.
1 Depth-First Search Idea: –Starting at a node, follow a path all the way until you cannot move any further –Then backtrack and try another branch –Do.
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.
Elementary Graph Algorithms Comp 122, Fall 2004.
Elementary Graph Algorithms Many of the slides are from Prof. Plaisted’s resources at University of North Carolina at Chapel Hill.
 2004 SDU Lectrue4-Properties of DFS Properties of DFS Classification of edges Topological sort.
Introduction to Graphs And Breadth First Search. Graphs: what are they? Representations of pairwise relationships Collections of objects under some specified.
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|
Chapter 22: Elementary Graph Algorithms
Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 20.
Graph. Graphs G = (V,E) V is the vertex set. Vertices are also called nodes and points. E is the edge set. Each edge connects two different vertices.
Liaquat Majeed Sheikh 1 1/25/2016 Graph Algorithms.
Graph. Graph Usage I want to visit all the known famous places starting from Seoul ending in Seoul Knowledge: distances, costs Find the optimal(distance.
Graphs & Paths Presentation : Part II. Graph representation Given graph G = (V, E). May be either directed or undirected. Two common ways to represent.
Shahed University Dr. Shahriar Bijani May  A path is a sequence of vertices P = (v 0, v 1, …, v k ) such that, for 1 ≤ i ≤ k, edge (v i – 1, v.
ALGORITHMS THIRD YEAR BANHA UNIVERSITY FACULTY OF COMPUTERS AND INFORMATIC Lecture nine Dr. Hamdy M. Mousa.
Chapter 20: Graphs. Objectives In this chapter, you will: – Learn about graphs – Become familiar with the basic terminology of graph theory – Discover.
Chapter 05 Introduction to Graph And Search Algorithms.
November 19, Algorithms and Data Structures Lecture XI Simonas Šaltenis Nykredit Center for Database Research Aalborg University
G RAPH A LGORITHMS Dr. Tanzima Hashem Assistant Professor CSE, BUET.
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.
Chapter 22: Elementary Graph Algorithms Overview: Definition of a graph Representation of graphs adjacency list matrix Elementary search algorithms breadth-first.
CS138A Elementary Graph Algorithms Peter Schröder.
Introduction to Algorithms
Graphs Breadth First Search & Depth First Search
Elementary Graph Algorithms
Chapter 22 Elementary Graph Algorithms
CS200: Algorithm Analysis
Graphs Breadth First Search & Depth First Search
Graph: representation and traversal CISC4080, Computer Algorithms
Elementary Graph Algorithms
Graph Representation Adjacency list representation of G = (V, E)
Lecture 10 Algorithm Analysis
Finding Shortest Paths
Advanced Algorithms Analysis and Design
Elementary Graph Algorithms
CSC 325: Algorithms Graph Algorithms David Luebke /24/2019.
Presentation transcript:

Elementary Graph Algorithms CLRS Chapter 22

Graph A graph is a structure that consists of a set of vertices and a set of edges between pairs of vertices

Graph A graph is a pair (V, E), where –V is a set of vertices –E is a set of pairs of vertices, called edges Example: –V = {A, B, C, D, E} –E = {(A,B), (A,D), (C,E), (D, E)}

Directed graph (digraph) Directed edge –ordered pair of vertices (u,v) Undirected edge –unordered pair of vertices (u,v) A graph with directed edges is called a directed graph or digraph A graph with undirected edges is an undirected graph or simply a graph

Weighted Graphs The edges in a graph may have values associated with them known as their weights A graph with weighted edges is known as a weighted graph

Terminology End vertices (or endpoints) of an edge –U and V are the endpoints of a Edges incident on a vertex –a, d, and b are incident on V Adjacent vertices –U and V are adjacent Degree of a vertex –X has degree 5 Parallel edges –h and i are parallel edges Self-loop –j is a self-loop XU V W Z Y a c b e d f g h i j

P1P1 Terminology (cont.) A path is a sequence of vertices in which each successive vertex is adjacent to its predecessor In a simple path, the vertices and edges are distinct except that the first and last vertex may be the same Examples –P 1 =(V,X,Z) is a simple path –P 2 =(U,W,X,Y,W,V) is a path that is not simple XU V W Z Y a c b e d f g hP2P2

Terminology (cont.) A cycle is a simple path in which only the first and final vertices are the same Simple cycle –cycle such that all its vertices and edges are distinct Examples –C 1 =(V,X,Y,W,U,V) is a simple cycle –C 2 =(U,W,X,Y,W,V,U) is a cycle that is not simple C1C1 XU V W Z Y a c b e d f g hC2C2

Subgraphs A subgraph S of a graph G is a graph such that –The vertices of S are a subset of the vertices of G –The edges of S are a subset of the edges of G A spanning subgraph of G is a subgraph that contains all the vertices of G Subgraph Spanning subgraph

Connectivity A graph is connected if there is a path between every pair of vertices A connected component of a graph G is a maximal connected subgraph of G Connected graph Non connected graph with two connected components

Trees and Forests A (free) tree is an undirected graph T such that –T is connected –T has no cycles A forest is an undirected graph without cycles The connected components of a forest are trees Tree Forest

DAG A directed acyclic graph (DAG) is a digraph that has no directed cycles B A D C E DAG G

Spanning Trees and Forests A spanning tree of a connected graph is a spanning subgraph that is a tree A spanning tree is not unique unless the graph is a tree A spanning forest of a graph is a spanning subgraph that is a forest Graph Spanning tree

Representation of Graphs Two standard ways: Adjacency List –preferred for sparse graphs (|E| is much less than |V|^2) –Unless otherwise specified we will assume this representation Adjacency Matrix –Preferred for dense graphs

Adjacency List An array Adj of |V| lists, one per vertex For each vertex u in V, –Adj[u] contains all vertices v such that there is an edge (u,v) in E (i.e. all the vertices adjacent to u) Space required Θ(|V|+|E|) (Following CLRS, we will use V for |V| and E for |E|) thus Θ(V+E)

Adjacency Matrix

Graph Traversals For solving most problems on graphs –Need to systematically visit all the vertices and edges of a graph Two major traversals –Breadth-First Search (BFS) –Depth-First Search(DFS)

BFS Starts at some source vertex s Discover every vertex that is reachable from s Also produces a BFS tree with root s and including all reachable vertices Discovers vertices in increasing order of distance from s –Distance between v and s is the minimum number of edges on a path from s to v i.e. discovers vertices in a series of layers

BFS : vertex colors stored in color[] Initially all undiscovered: white When first discovered: gray –They represent the frontier of vertices between discovered and undiscovered –Frontier vertices stored in a queue –Visits vertices across the entire breadth of this frontier When processed: black

Additional info stored (some applications of BFS need this info) pred[u]: points to the vertex which first discovered u d[u]: the distance from s to u

BFS(G=(V,E),s) for each (u in V) color[u] = white d[u] = infinity pred[u] = NIL color[s] = gray d[s] = 0 Q.enqueue(s) while (Q is not empty) do u = Q.dequeue() for each (v in Adj[u]) do if (color(v] == white) then color[v] = gray //discovered but not yet processed d[v] = d[u] + 1 pred[v] = u Q.enqueue(v) //added to the frontier color[u] = black //processed

Analysis Each vertex is enqued once and dequeued once : Θ(V) Each adjacency list is traversed once: Total: Θ(V+E)

BFS Tree predecessor pointers after BFS is completed define an inverted tree –Reverse edges: BFS tree rooted at s –The edges of the BFS tree are called : tree edges –Remaining graph edges are called: cross edges

BFS and shortest paths Theorem: Let G=(V,E) be a directed or undirected graph, and suppose BFS is run on G starting from vertex s. During its execution BFS discovers every vertex v in V that is reachable from s. Let δ(s,v) denote the number of edges on the shortest path form s to v. Upon termination of BFS, d[v] = δ(s,v) for all v in V.

DFS Start at a source vertex s Search as far into the graph as possible and backtrack when there is no new vertices to discover –recursive

color[u] and pred[u] as before color[u] –Undiscovered: white –Discovered but not finished processing: gray –Finished: black pred[u] –Pointer to the vertex that first discovered u

Time stamps, We store two time stamps: –d[u]: the time vertex u is first discovered (discovery time) –f[u]: the time we finish processing vertex u (finish time)

DFS(G) for each (u in V) do color[u] = white pred[u] = NIL time = 0 for each (u in V) do if (color[u] == white) DFS-VISIT(u) //vertex u is just discovered color[u] = gray time = time +1 d[u] = time for each (v in Adj[u]) do //explore neighbor v if (color[v] == white) then //v is discovered by u pred[v] = u DFS-VISIT(v) color[u] = black // u is finished f[u] = time = time+ 1 DFS-VISIT invoked by each vertex exactly once. Θ(V+E)

DFS Forest Tree edges: inverse of pred[] pointers –Recursion tree, where the edge (u,v) arises when processing a vertex u, we call DFS-VISIT(v) Remaining graph edges are classified as: Back edges: (u, v) where v is an ancestor of u in the DFS forest (self loops are back edges) Forward edges: (u, v) where v is a proper descendent of u in the DFS forest Cross edges: (u,v) where u and v are not ancestors or descendents of one another. D B A C E s

If DFS run on an undirected graph No difference between back and forward edges: all called back edges No cross edges: can you see why?

Parenthesis Theorem In any DFS of a graph G= (V,E), for any two vertices u and v, exactly one of the following three conditions holds: –The intervals [d[u],f[u]] and [d[v],f[v]] are entirely disjoint and neither u nor v is a descendent of the other in the DFS forest – The interval [d[u],f[u]] is contained within interval [d[v],f[v]] and u is a descendent of v in the DFS forest –The interval [d[v],f[v]] is contained within interval [d[u],f[u]] and v is a descendent of u in the DFS forest

How can we use DFS to determine whether a graph contains any cycles?