Elementary Graph Algorithms

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

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.
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.
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.
Graph Searching (Graph Traversal) Algorithm Design and Analysis Week 8 Bibliography: [CLRS] – chap 22.2 –
1 Data Structures DFS, Topological Sort Dana Shapira.
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
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.
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.
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 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.
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.
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.
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 ORD SFO LAX DFW Graphs 1 Graphs Graphs
Graphs CSE 2320 – Algorithms and Data Structures Alexandra Stefan
Graphs Breadth First Search & Depth First Search
CS 201: Design and Analysis of Algorithms
Elementary Graph Algorithms
Chapter 22 Elementary Graph Algorithms
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?
CS200: Algorithm Analysis
Graphs Breadth First Search & Depth First Search
Graph: representation and traversal CISC4080, Computer Algorithms
Graph Algorithms Using Depth First Search
Graph.
Graph Representation, DFS and BFS
Binhai Zhu Computer Science Department, Montana State University
Elementary Graph Algorithms
Intro to Graph Algorithms (Slides originally created by David Luebke)
Graph Representation Adjacency list representation of G = (V, E)
Lecture 10 Algorithm Analysis
Graph & BFS.
Finding Shortest Paths
BFS,DFS Topological Sort
Graphs Chapter 15 explain graph-based algorithms Graph definitions
BFS,DFS Topological Sort
Advanced Algorithms Analysis and Design
Advanced Algorithms Analysis and Design
Graph Representation (23.1/22.1)
Elementary Graph Algorithms
Basic 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
CSC 325: Algorithms Graph Algorithms David Luebke /24/2019.
Premaster Course Algorithms 1 Chapter 5: Basic Graph Algorithms
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:

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 X U V W Z Y a c b e d f g h i j 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 X U V W Z Y a c b e d f g h i j

Terminology (cont.) V a b P1 d U X Z P2 h c e W g f Y 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 P1=(V,X,Z) is a simple path P2=(U,W,X,Y,W,V) is a path that is not simple V a b P1 d U X Z P2 h c e W g f Y

Terminology (cont.) V a b d U X Z C2 h e C1 c W g f Y 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 C1=(V,X,Y,W,U,V) is a simple cycle C2=(U,W,X,Y,W,V,U) is a cycle that is not simple V a b d U X Z C2 h e C1 c W g f Y

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

Non connected graph with two connected components 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 1 2 3 4 5 2 5 1 1 5 4 5 2 4 2 3 5 4 3 4 1 2 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 1 2 3 4 5 1 2 3 4 5 1 1 5 2 4 3

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

Example identified vertex visited vertex unexplored edge B C D unexplored edge discovery edge E F cross edge A A B C D B C D E F E F

Example (cont.) A A B C D B C D E F E F A A B C D B C D E F E F

Example (cont.) A A B C D B C D L2 E F E F A A B C D B C D E F E F

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 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 if (color[u] == white) DFS-VISIT(u) 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 A C B D E 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. s D B A C E

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?