Computer Science & Engineering 423/823 Design and Analysis of Algorithms

Similar documents
Computer Science & Engineering 423/823 Design and Analysis of Algorithms

Computer Science & Engineering 423/823 Design and Analysis of Algorithms

Representations of Graphs

Graph Representation

Chapter 22. Elementary Graph Algorithms

Basic Graph Algorithms

Graph representation

Elementary Graph Algorithms

Design and Analysis of Algorithms

Graphs. Graph G = (V, E) Types of graphs E = O( V 2 ) V = set of vertices E = set of edges (V V)

DFS & STRONGLY CONNECTED COMPONENTS

Graph Algorithms. Definition

Elementary Graph Algorithms. Ref: Chapter 22 of the text by Cormen et al. Representing a graph:

Taking Stock. IE170: Algorithms in Systems Engineering: Lecture 16. Graph Search Algorithms. Recall BFS

Graph: representation and traversal

Taking Stock. IE170: Algorithms in Systems Engineering: Lecture 17. Depth-First Search. DFS (Initialize and Go) Last Time Depth-First Search

Graph Search. Adnan Aziz

Graph Theory. Many problems are mapped to graphs. Problems. traffic VLSI circuits social network communication networks web pages relationship

Elementary Graph Algorithms

Trees and Graphs Shabsi Walfish NYU - Fundamental Algorithms Summer 2006

Introduction to Algorithms. Lecture 11

COT 6405 Introduction to Theory of Algorithms

CSI 604 Elementary Graph Algorithms

Graph Algorithms: Chapters Part 1: Introductory graph concepts

Graph implementations :

CISC 320 Introduction to Algorithms Fall Lecture 15 Depth First Search

Basic Graph Algorithms (CLRS B.4-B.5, )

Week 5. 1 Analysing BFS. 2 Depth-first search. 3 Analysing DFS. 4 Dags and topological sorting. 5 Detecting cycles. CS 270 Algorithms.

Minimum Spanning Trees Ch 23 Traversing graphs

CHAPTER 23: ELEMENTARY GRAPH ALGORITHMS Representations of graphs

CS 270 Algorithms. Oliver Kullmann. Analysing BFS. Depth-first search. Analysing DFS. Dags and topological sorting.

CS 270 Algorithms. Oliver Kullmann. Breadth-first search. Analysing BFS. Depth-first. search. Analysing DFS. Dags and topological sorting.

CS Elementary Graph Algorithms

CS Elementary Graph Algorithms

Lecture 10. Elementary Graph Algorithm Minimum Spanning Trees

Design and Analysis of Algorithms

Graphs. Graphs. Representation of Graphs. CSE 680 Prof. Roger Crawfis. Two standard ways. Graph G = (V, E)» V = set of vertices

Part VI Graph algorithms. Chapter 22 Elementary Graph Algorithms Chapter 23 Minimum Spanning Trees Chapter 24 Single-source Shortest Paths

Data Structures. Elementary Graph Algorithms BFS, DFS & Topological Sort

Outlines: Graphs Part-2

Unit 2: Algorithmic Graph Theory

Strongly Connected Components

CS473-Algorithms I. Lecture 14-A. Graph Searching: Breadth-First Search. Cevdet Aykanat - Bilkent University Computer Engineering Department

Proof: if not f[u] < d[v], then u still grey while v is being visited. DFS visit(v) will then terminate before DFS visit(u).

Review: Graph Theory and Representation

W4231: Analysis of Algorithms

22.3 Depth First Search

CS 341: Algorithms. Douglas R. Stinson. David R. Cheriton School of Computer Science University of Waterloo. February 26, 2019

Graph Algorithms. Chapter 22. CPTR 430 Algorithms Graph Algorithms 1

Announcements. HW3 is graded. Average is 81%

Tutorial. Question There are no forward edges. 4. For each back edge u, v, we have 0 d[v] d[u].

Graphs. CSE 2320 Algorithms and Data Structures Alexandra Stefan and Vassilis Athitsos University of Texas at Arlington

Graph: representation and traversal

Chapter 22 Elementary Graph Algorithms

Practical Session No. 12 Graphs, BFS, DFS Topological Sort

Taking Stock. Last Time Flows. This Time Review! 1 Characterize the structure of an optimal solution

Unit 5F: Layout Compaction

Unit 3: Layout Compaction

Graph Representations and Traversal

Practical Session No. 12 Graphs, BFS, DFS, Topological sort

CSCE 750, Fall 2002 Notes 6 Page Graph Problems ffl explore all nodes (breadth first and depth first) ffl find the shortest path from a given s

Graph Algorithms. Andreas Klappenecker. [based on slides by Prof. Welch]

Announcements Problem Set 4 is out!

Figure 1: A directed graph.

Graph. Vertex. edge. Directed Graph. Undirected Graph

Lecture 9 Graph Traversal

Data Structures and Algorithms. Chapter 7. Graphs

CSC263 Week 8. Larry Zhang.

1 Start with each vertex being its own component. 2 Merge two components into one by choosing the light edge

Topic 12: Elementary Graph Algorithms

LECTURE NOTES OF ALGORITHMS: DESIGN TECHNIQUES AND ANALYSIS

Algorithm Design and Analysis

Scribes: Romil Verma, Juliana Cook (2015), Virginia Williams, Date: May 1, 2017 and Seth Hildick-Smith (2016), G. Valiant (2017), M.

Slides credited from Hsueh-I Lu, Hsu-Chun Hsiao, & Michael Tsai

csci 210: Data Structures Graph Traversals

Algorithm Design and Analysis

Sample Solutions to Homework #4

Data Structures and Algorithms. Werner Nutt

22.1 Representations of graphs

Graphs. Part I: Basic algorithms. Laura Toma Algorithms (csci2200), Bowdoin College

Lecture 10: Strongly Connected Components, Biconnected Graphs

Homework Assignment #3 Graph

Graphs: basic concepts and algorithms

Graduate Algorithms CS F-15 Graphs, BFS, & DFS

CS 220: Discrete Structures and their Applications. graphs zybooks chapter 10

Suggested Study Strategy

Computer Science & Engineering 423/823 Design and Analysis of Algorithms

Inf 2B: Graphs II - Applications of DFS

811312A Data Structures and Algorithms, , Exercise 6, solution

Graph Algorithms Using Depth First Search

CS 310 Advanced Data Structures and Algorithms

Copyright 2000, Kevin Wayne 1

CS 161 Lecture 11 BFS, Dijkstra s algorithm Jessica Su (some parts copied from CLRS) 1 Review

ECE250: Algorithms and Data Structures Elementary Graph Algorithms Part B

Homework No. 4 Answers

Konigsberg Bridge Problem

Final Exam. EECS 2011 Prof. J. Elder - 1 -

Undirected Graphs. V = { 1, 2, 3, 4, 5, 6, 7, 8 } E = { 1-2, 1-3, 2-3, 2-4, 2-5, 3-5, 3-7, 3-8, 4-5, 5-6 } n = 8 m = 11

CS 125 Section #6 Graph Traversal and Linear Programs 10/13/14

Elementary Graph Algorithms CSE 6331

Transcription:

s of s Computer Science & Engineering 423/823 Design and Analysis of Lecture 03 (Chapter 22) Stephen Scott (Adapted from Vinodchandran N. Variyam) 1 / 29

s of s s are abstract data types that are applicable to numerous problems Can capture entities, relationships between them, the degree of the relationship, etc. This chapter covers basics in graph theory, including representation, and algorithms for basic graph-theoretic problems We ll build on these later this semester 2 / 29

s s of s A (simple, or undirected) graph G = (V, E) consists of V, a nonempty set of vertices and E a set of unordered pairs of distinct vertices called edges A D B E C V={A,B,C,D,E} E={ (A,D),(A,E),(B,D), (B,E),(C,D),(C,E)} 3 / 29

s (2) s A directed graph (digraph) G = (V, E) consists of V, a nonempty set of vertices and E a set of ordered pairs of distinct vertices called edges of s 4 / 29

s (3) s of s A weighted graph is an undirected or directed graph with the additional property that each edge e has associated with it a real number w(e) called its weight 3-6 3 12 7 0 4 Other variations: multigraphs, pseudographs, etc. 5 / 29

of s s of s Adjacency List Adjacency Matrix Two common ways of representing a graph: Adjacency list and adjacency matrix Let G = (V, E) be a graph with n vertices and m edges 6 / 29

Adjacency List s of s Adjacency List Adjacency Matrix a d For each vertex v V, store a list of vertices adjacent to v For weighted graphs, add information to each node How much is space required for storage? c b e a b c d e b c d a e a d c a c e b c d 7 / 29

Adjacency Matrix s of s Adjacency List Adjacency Matrix 8 / 29 a d Use an n n matrix M, where M(i, j) = 1 if (i, j) is an edge, 0 otherwise If G weighted, store weights in the matrix, using for non-edges How much is space required for storage? c b e a 0 a b 1 c 1 d 1 e 0 b 1 0 0 0 1 c 1 0 0 1 1 d 1 0 1 0 1 e 0 1 1 1 0

Breadth-First (BFS) s of s Breadth-First Depth-First Given a graph G = (V, E) (directed or undirected) and a source node s V, BFS systematically visits every vertex that is reachable from s Uses a queue data structure to search in a breadth-first manner Creates a structure called a BFS tree such that for each vertex v V, the distance (number of edges) from s to v in tree is the shortest path in G Initialize each node s color to white As a node is visited, color it to gray ( in queue), then black ( finished) 9 / 29

BFS(G, s) s of s Breadth-First Depth-First 10 / 29 for each vertex u V \ {s} do 1 color[u] = white 2 d[u] = 3 π[u] = nil 4 end 5 color[s] = gray 6 d[s] = 0 7 π[s] = nil 8 Q = 9 Enqueue(Q, s) 10 while Q do 11 u = Dequeue(Q) 12 for each v Adj[u] do 13 if color[v] == white then 14 color[v] = gray 15 d[v] = d[u] + 1 16 π[v] = u 17 Enqueue(Q, v) 18 19 end 20 color[u] = black 21 end

BFS Example s of s Breadth-First Depth-First 11 / 29

BFS Example (2) s of s Breadth-First Depth-First 12 / 29

BFS Properties s of s Breadth-First Depth-First What is the running time? Hint: How many times will a node be enqueued? After the end of the algorithm, d[v] = shortest distance from s to v Solves unweighted shortest paths Can print the path from s to v by recursively following π[v], π[π[v]], etc. If d[v] ==, then v not reachable from s Solves reachability 13 / 29

Depth-First (DFS) s of s Breadth-First Depth-First Another graph traversal algorithm Unlike BFS, this one follows a path as deep as possible before backtracking Where BFS is queue-like, DFS is stack-like Tracks both discovery time and finishing time of each node, which will come in handy later 14 / 29

DFS(G) s of s Breadth-First Depth-First for each vertex u V do 1 color[u] = white 2 π[u] = nil 3 end 4 time = 0 5 for each vertex u V do 6 if color[u] == white then 7 DFS-Visit(u) 8 9 end 15 / 29

DFS-Visit(u) s of s Breadth-First Depth-First color[u] = gray 1 time = time + 1 2 d[u] = time 3 for each v Adj[u] do 4 if color[v] == white then 5 π[v] = u 6 DFS-Visit(v) 7 8 end 9 color[u] = black 10 f[u] = time = time + 1 16 / 29

DFS Example s of s Breadth-First Depth-First 17 / 29

DFS Example (2) s of s Breadth-First Depth-First 18 / 29

DFS Properties s of s Breadth-First Depth-First Time complexity same as BFS: Θ( V + E ) Vertex u is a proper descendant of vertex v in the DF tree iff d[v] < d[u] < f[u] < f[v] Parenthesis structure: If one prints (u when discovering u and u) when finishing u, then printed text will be a well-formed parenthesized sentence 19 / 29

DFS Properties (2) s of s Breadth-First Depth-First 20 / 29 Classification of edges into groups A tree edge is one in the depth-first forest A back edge (u, v) connects a vertex u to its ancestor v in the DF tree (includes self-loops) A forward edge is a nontree edge connecting a node to one of its DF tree descendants A cross edge goes between non-ancestral edges within a DF tree or between DF trees See labels in DFS example Example use of this property: A graph has a cycle iff DFS discovers a back edge (application: deadlock detection) When DFS first explores an edge (u, v), look at v s color: color[v] == white implies tree edge color[v] == gray implies back edge color[v] == black implies forward or cross edge

Application: Topological Sort A directed acyclic graph (dag) can represent precedences: an edge (x, y) implies that event/activity x must occur before y s of s Topological Sort Strongly Connected Components 21 / 29

Application: Topological Sort (2) s of s A topological sort of a dag G is an linear ordering of its vertices such that if G contains an edge (u, v), then u appears before v in the ordering Topological Sort Strongly Connected Components 22 / 29

Topological Sort Algorithm s of s Topological Sort Strongly Connected Components 1 Call DFS algorithm on dag G 2 As each vertex is finished, insert it to the front of a linked list 3 Return the linked list of vertices Thus topological sort is a descending sort of vertices based on DFS finishing times Why does it work? When a node is finished, it has no unexplored outgoing edges; i.e. all its descendant nodes are already finished and inserted at later spot in final sort 23 / 29

Application: Strongly Connected Components s Given a directed graph G = (V, E), a strongly connected component (SCC) of G is a maximal set of vertices C V such that for every pair of vertices u, v C u is reachable from v and v is reachable from u of s Topological Sort Strongly Connected Components 24 / 29 What are the SCCs of the above graph?

Transpose s of s Our algorithm for finding SCCs of G depends on the transpose of G, denoted G T G T is simply G with edges reversed Fact: G T and G have same SCCs. Why? Topological Sort Strongly Connected Components 25 / 29

SCC Algorithm s of s Topological Sort Strongly Connected Components 1 Call DFS algorithm on G 2 Compute G T 3 Call DFS algorithm on G T, looping through vertices in order of decreasing finishing times from first DFS call 4 Each DFS tree in second DFS run is an SCC in G 26 / 29

SCC Algorithm Example After first round of DFS: s of s Topological Sort Strongly Connected Components Which node is first one to be visited in second DFS? 27 / 29

SCC Algorithm Example (2) After second round of DFS: s of s Topological Sort Strongly Connected Components 28 / 29

SCC Algorithm Analysis s of s Topological Sort Strongly Connected Components What is its time complexity? How does it work? 1 Let x be node with highest finishing time in first DFS 2 In G T, x s component C has no edges to any other component (Lemma 22.14), so the second DFS s tree edges define exactly x s component 3 Now let x be the next node explored in a new component C 4 The only edges from C to another component are to nodes in C, so the DFS tree edges define exactly the component for x 5 And so on... 29 / 29