Graph Algorithms. Networks, Maps, Possible paths, Resource Flow, etc.

Similar documents
Analysis of Algorithms, I

Social Media Mining. Graph Essentials

V. Adamchik 1. Graph Theory. Victor Adamchik. Fall of 2005

GRAPH THEORY LECTURE 4: TREES

Sample Questions Csci 1112 A. Bellaachia

2. (a) Explain the strassen s matrix multiplication. (b) Write deletion algorithm, of Binary search tree. [8+8]

Part 2: Community Detection

CSE 326, Data Structures. Sample Final Exam. Problem Max Points Score 1 14 (2x7) 2 18 (3x6) Total 92.

5.1 Bipartite Matching

CMPSCI611: Approximating MAX-CUT Lecture 20

DATA ANALYSIS II. Matrix Algorithms

Krishna Institute of Engineering & Technology, Ghaziabad Department of Computer Application MCA-213 : DATA STRUCTURES USING C

CSC 505, Fall 2000: Week 8

IE 680 Special Topics in Production Systems: Networks, Routing and Logistics*

A Fast Algorithm For Finding Hamilton Cycles

Any two nodes which are connected by an edge in a graph are called adjacent node.

Problem Set 7 Solutions

Simplified External memory Algorithms for Planar DAGs. July 2004

Class Notes CS Creating and Using a Huffman Code. Ref: Weiss, page 433

Data Structure [Question Bank]

Data Structures in Java. Session 15 Instructor: Bert Huang

Exam study sheet for CS2711. List of topics

Discrete Mathematics & Mathematical Reasoning Chapter 10: Graphs

5. A full binary tree with n leaves contains [A] n nodes. [B] log n 2 nodes. [C] 2n 1 nodes. [D] n 2 nodes.

Approximation Algorithms

Introduction Solvability Rules Computer Solution Implementation. Connect Four. March 9, Connect Four

Chapter 7: Termination Detection

International Journal of Software and Web Sciences (IJSWS)

SCAN: A Structural Clustering Algorithm for Networks

Course on Social Network Analysis Graphs and Networks

PES Institute of Technology-BSC QUESTION BANK

Scheduling Shop Scheduling. Tim Nieberg

5 Directed acyclic graphs

Handout #Ch7 San Skulrattanakulchai Gustavus Adolphus College Dec 6, Chapter 7: Digraphs

3. The Junction Tree Algorithms

Ordered Lists and Binary Trees

Home Page. Data Structures. Title Page. Page 1 of 24. Go Back. Full Screen. Close. Quit

Chapter 6: Graph Theory

Atmiya Infotech Pvt. Ltd. Data Structure. By Ajay Raiyani. Yogidham, Kalawad Road, Rajkot. Ph : ,

Protein Protein Interaction Networks

Data Structures. Chapter 8

Finding and counting given length cycles

Network (Tree) Topology Inference Based on Prüfer Sequence

Graph/Network Visualization

Outline. NP-completeness. When is a problem easy? When is a problem hard? Today. Euler Circuits

! Solve problem to optimality. ! Solve problem in poly-time. ! Solve arbitrary instances of the problem. !-approximation algorithm.

Data Structures and Algorithms Written Examination

Algorithms and Data Structures

Network File Storage with Graceful Performance Degradation

8.1 Min Degree Spanning Tree

CS 598CSC: Combinatorial Optimization Lecture date: 2/4/2010

6-1. Process Modeling

Analysis of Algorithms I: Binary Search Trees

Connectivity and cuts

Graph Theory and Complex Networks: An Introduction. Chapter 06: Network analysis. Contents. Introduction. Maarten van Steen. Version: April 28, 2014

Euclidean Minimum Spanning Trees Based on Well Separated Pair Decompositions Chaojun Li. Advised by: Dave Mount. May 22, 2014

Persistent Data Structures

Yousef Saad University of Minnesota Computer Science and Engineering. CRM Montreal - April 30, 2008

Lecture 1: Course overview, circuits, and formulas

! Solve problem to optimality. ! Solve problem in poly-time. ! Solve arbitrary instances of the problem. #-approximation algorithm.

How To Understand The Network Of A Network

5. Binary objects labeling

Warshall s Algorithm: Transitive Closure

CompSci-61B, Data Structures Final Exam

1. The memory address of the first element of an array is called A. floor address B. foundation addressc. first address D.

Binary Search Trees CMPSC 122

root node level: internal node edge leaf node Data Structures & Algorithms McQuain

Data Structure with C

Cluster detection algorithm in neural networks

Graph Theory and Complex Networks: An Introduction. Chapter 06: Network analysis

6.852: Distributed Algorithms Fall, Class 2

Determine If An Equation Represents a Function

Social Media Mining. Network Measures

Institut für Informatik Lehrstuhl Theoretische Informatik I / Komplexitätstheorie. An Iterative Compression Algorithm for Vertex Cover

136 CHAPTER 4. INDUCTION, GRAPHS AND TREES

Binary Search Trees. A Generic Tree. Binary Trees. Nodes in a binary search tree ( B-S-T) are of the form. P parent. Key. Satellite data L R

One last point: we started off this book by introducing another famously hard search problem:

Outline 2.1 Graph Isomorphism 2.2 Automorphisms and Symmetry 2.3 Subgraphs, part 1

Dynamic Programming. Lecture Overview Introduction

Practical Graph Mining with R. 5. Link Analysis

Random Map Generator v1.0 User s Guide

Dynamic programming. Doctoral course Optimization on graphs - Lecture 4.1. Giovanni Righini. January 17 th, 2013

USE OF EIGENVALUES AND EIGENVECTORS TO ANALYZE BIPARTIVITY OF NETWORK GRAPHS

Strong and Weak Ties

A linear combination is a sum of scalars times quantities. Such expressions arise quite frequently and have the form

3.1 Solving Systems Using Tables and Graphs

Chapter Load Balancing. Approximation Algorithms. Load Balancing. Load Balancing on 2 Machines. Load Balancing: Greedy Scheduling

On the k-path cover problem for cacti

CS104: Data Structures and Object-Oriented Design (Fall 2013) October 24, 2013: Priority Queues Scribes: CS 104 Teaching Team

On the Multiple Unicast Network Coding Conjecture

Data Structures and Algorithms

Graph Database Proof of Concept Report

Vector storage and access; algorithms in GIS. This is lecture 6

Max Flow, Min Cut, and Matchings (Solution)

Cpt S 223. School of EECS, WSU

Lecture 15 An Arithmetic Circuit Lowerbound and Flows in Graphs

CS154. Turing Machines. Turing Machine. Turing Machines versus DFAs FINITE STATE CONTROL AI N P U T INFINITE TAPE. read write move.

Directed Graphs. digraph search transitive closure topological sort strong components. References: Algorithms in Java, Chapter 19

Mining Social Network Graphs

On the independence number of graphs with maximum degree 3

Transcription:

Graph Algorithms Many problems are naturally represented as graphs Networks, Maps, Possible paths, Resource Flow, etc. Ch. 3 focuses on algorithms to find connectivity in graphs Ch. 4 focuses on algorithms to find paths within graphs G = (V,E) V is a set of vertices (nodes) E is a set of edges between vertices, can be directed or undirected Undirected: e = {x,y} Directed: e = (x,y) Degree of a node is the number of impinging edges Nodes in a directed graph have an in-degree and an out-degree WWW is a graph Directed or undirected? CS 312 Graph Algorithms 1

Graph Representation Adjacency Matrix n = V for vertices v 1, v 2,, v n Adjacency Matrix A is n n with " a ij = 1 if there is an edge from v i to v j # $ 0 otherwise A is symmetric if it is undirected One step lookup to see if an edge exists between nodes n 2 size is wasteful if A is sparse (i.e. not highly connected) If densely connected then E V 2 CS 312 Graph Algorithms 2

Graph Representation Adjacency List Adjacency List: n lists, one for each vertex Linked list for a vertex u contains the vertices to which u has an outgoing edge For directed graphs each edge appears in just one list For undirected graph each edge appears in both vertex lists Size is O( V + E ) Finding if two vertices are directly connected is no longer constant time Which representation is best? CS 312 Graph Algorithms 3

Graph Representation Adjacency List Adjacency List: n lists, one for each vertex Linked list for a vertex u contains the vertices to which u has an outgoing edge For directed graphs each edge appears in just one list For undirected graph each edge appears in both vertex lists Size is O( V + E ) Finding if two vertices are connected is no longer constant time Which representation is best? Depends on type of graph applications If dense connectivity, Matrix is usually best If sparse, then List is often best CS 312 Graph Algorithms 4

Depth-First Search of Undirected Graphs What parts of the graph are reachable from a given vertex Reachable if there is a path between the vertices Note that in our representations the computer only knows which are the neighbors of a specific vertex Deciding reachability is like exploring a labyrinth If we are not careful, we could miss paths, explore paths more than once, etc. What algorithm do you use if you are at a cave entrance and want to find the cave exit on the other side? Chalk or string is sufficient Recursive stack will be our string, and visited(v)=true our chalk Why not just "left/right-most" with no chalk/visited? Depth first vs Breadth first? CS 312 Graph Algorithms 5

Explore Procedure DFS algorithm to find which nodes are reachable from an initial node v previsit(v) and postvisit(v) are optional updating procedures Complexity? CS 312 Graph Algorithms 6

Explore Procedure DFS algorithm to find which nodes are reachable from an initial node v previsit(v) and postvisit(v) are optional updating procedures Complexity Each reachable edge e r checked exactly once (twice if undirected) O( E r + V ) CS 312 Graph Algorithms 7

Visiting Entire Graph - DFS An undirected graph is connected if there is a path between any pair of nodes Otherwise graph is made up of disjoint connected components Visiting entire graph is O( V + E ) Note this is the amount of time it would take just to scan through the adjacency list Why not just say O( E ) since V is usually smaller than E? What do we accomplish by visiting entire graph? CS 312 Graph Algorithms 8

Previsit and Postvisit Orderings Each pre and post visit is an ordered event Account for all edges Tree edges and Back edges 9

Previsit and Postvisit Orders DFS yields a forest (disjoint trees) when there are disjoint components in the graph Can use pre/post visit numbers to detect properties of graphs Account for all edges: Tree edges (solid) and back edges (dashed) Back edges detect cycles Properties still there even if explored in a different order (i.e. start with F, then J) CS 312 Graph Algorithms 10

Depth-First Search in Directed Graphs Can use the same DFS algorithm as before, but only traverse edges in the prescribed direction Thus, each edge just considered once (not twice like undirected) still can have separate edges in both directions (e.g. (e, b)) Root node of DFS tree is A in this case (if we go alphabetically), Other nodes are descendants of A in the DFS tree Natural definitions for ancestor, parent, child in the DFS Tree CS 312 Graph Algorithms 11

Depth-First Search in Directed Graphs Tree edges and back edges (2 below) the same as before Added terminology for DFS Tree of a directed graph Forward edges lead from a node to a nonchild descendant (2 below) Cross edges lead to neither descendant or ancestor, lead to a node which has already had its postvisit (2 below) CS 312 Graph Algorithms 12

Back Edge Detection Ancestor/descendant relations, as well as edge types can be read off directly from pre and post numbers of the DFS tree just check nodes connected by each edge Initial node of edge is u and final node is v Tree/forward reads pre(u) < pre(v) < post(v) < post(u) If G First? CS 312 Graph Algorithms 13

DAG Directed Acyclic Graph DAG a directed graph with no cycles Very common in applications Ordering of a set of tasks. Must finish pre-tasks before another task can be done How do we test if a directed graph is acyclic in linear time? CS 312 Graph Algorithms 14

DAG Directed Acyclic Graph DAG a directed graph with no cycles Very common in applications Ordering of a set of tasks. Must finish pre-tasks before another task can be done How do we test if a directed graph is acyclic in linear time? Property: A directed graph has a cycle iff DFS reveals a back edge Just do DFS and see if there are any back edges How do we check DFS for back edges and what is complexity? CS 312 Graph Algorithms 15

DAG Directed Acyclic Graph DAG a directed graph with no cycles Very common in applications Ordering of a set of tasks. Must finish pre-tasks before another task can be done How do we test if a directed graph is acyclic in linear time? Property: A directed graph has a cycle iff DFS reveals a back edge Just do DFS and see if there are any back edges How do we check DFS for back edges and what is complexity? O( E ) for edge check pre/post values of nodes Could equivalently test while building the DFS tree CS 312 Graph Algorithms 16

DAG Properties Every DAG can be linearized More than one linearization usually possible CS 312 Graph Algorithms 17

DAG Properties Every DAG can be linearized More than one linearization usually possible Algorithm to linearize Property: In a DAG, every edge leads to a node with lower post number Do DFS, then linearize by sorting nodes by decreasing post number Which node do we start DFS at? Makes no difference, B will always have largest post (Try A and F) Other linearizations may be possible Another property: Every DAG has at least one source and at least one sink Source has no input edges If multiple sources, linearization can start with any of them Sink has no output edges Is the above directed graph connected looks like it if it were undirected, but can any node can reach any other node? CS 312 Graph Algorithms 18

Alternative Linearization Algorithm Another linear time linearization algorithm This technique will help us in our next goal Find a source node and put it next on linearization list How do we find source nodes? Do a DFS and and count in-degree of each node Put nodes with 0 in-degree in a source list Each time a node is taken from the source list and added to the linearization, decrement the in-degree count of all nodes to which the source node had an out link. Add any adjusted node with 0 in-degree to the source list Delete the source node from the graph Repeat until the graph is empty CS 312 Graph Algorithms 19

Strongly Connected Components Two nodes u and v in a directed graph are connected if there is a path from u to v and a path from v to u The disjoint subsets of a directed graph which are connected are called strongly connected components How could we make the entire graph strongly connected? CS 312 Graph Algorithms 20

Meta-Graphs Every directed graph is a DAG of its strongly connected components This meta-graph decomposition will be very useful in many applications (e.g. a high level flow of the task with subtasks abstracted) CS 312 Graph Algorithms 21

Algorithm to Decompose a Directed Graph into its Strongly Connected Components explore(g,v) will terminate precisely when all nodes reachable from v have been visited If we could pick a v from any sink meta-node then call explore, it would explore that complete SCC and terminate We could then mark it as an SCC, remove it from the graph, and repeat How do we detect if a node is in a meta-sink? How about starting from the node with the lowest post-visit value? Won't work with arbitrary graphs (with cycles) which are what we are dealing with A B C CS 312 Graph Algorithms 22

Algorithm to Decompose a Directed Graph into its Strongly Connected Components explore(g,v) will terminate precisely when all nodes reachable from v have been visited If we could pick a v from any sink meta-node then call explore, it would explore that complete SCC and terminate We could then mark it as an SCC, remove it from the graph, and repeat How do we detect if a node is in a meta-sink? Property: Node with the highest post in a DFS search must lie in a source SCC Just temporarily reverse the edges in the graph and do a DFS on G R to get post ordering Then node with highest post in DFS of G R, where it is in a source SCC, must be in a sink SCC in G Repeat until graph is empty: Pick node with highest remaining post score (from DFS on G R ), explore and mark that SCC in G, and then prune that SCC CS 312 Graph Algorithms 23

Example Create G R by reversing graph G Do DFS on G R Repeat until graph G is empty: Pick node with highest remaining post score (from DFS tree on G R ), and explore starting from that node in G That will discover one sink SCC in G G Prune all nodes in that SCC from G and G R Complexity? Create G R Post-ordered list add nodes as do dfs(g R ) Do DFS with V reverse ordered from PO list visited flag = removed G R CS 312 Graph Algorithms

Biconnected Components If deleting vertex a from a component/graph G splits the graph then a is called a separating vertex (cut point, articulation point) of G A graph G is biconnected if and only if there are no separating vertices. That is, it requires deletion of at least 2 vertices to disconnect G. Why might this be good in computer networks, etc? A graph with just 2 connected nodes is also a biconnected component A bridge is an edge whose removal disconnects the graph Any 2 distinct biconnected components have at most one vertex in common a is a separating vertex of G if and only if a is common to more than one of the biconnected components of G CS 312 Graph Algorithms 25

Biconnected Algorithm Some hints DFS can be used to to identify the biconnected components, bridges, and separating vertices of an undirected graph in linear time a is a separating vertex of G if and only if either 1. a is the root of the DFS tree and has more than one child, or 2. a is not the root, and there exists a child s of a such that there is no backedge between any descendent of s (including s) and a proper ancestor of a. low(u) = min(pre(u), pre(w)), where (v,w) is a backedge for some descendant v of u Use low to identify separating vertices, and run another DFS with an extra stack of edges to remove biconnected components one at a time CS 312 Graph Algorithms 26

Discovering Separating Vertices with BFS a is a separating vertex of G if and only if either 1. a is the root of the DFS tree and has more than one child, or 2. a is not the root, and there exists a child s of a such that there is no backedge between any descendent of s (including s) and a proper ancestor of a. DFS tree with pre-ordering a c b d b:2 a:1 c:3 d:4 e e:5 CS 312 Graph Algorithms 27

a is a separating vertex of G if and only if either 1. a is the root of the DFS tree and has more than one child, or 2. a is not the root, and there exists a child s of a such that there is no backedge between any descendent of s (including s) and a proper ancestor of a. " low(u) = min# pre(u) $ pre(w) where (v,w) is a backedge from u or a descendant of u DFS tree with pre-ordering and low numbering a e c b d b:2,2 u is a sep. vertex iff there is any child v of u s.t. low(v) pre(u) a:1,1 c:3,3 d:4,3 e:5,3 CS 312 Graph Algorithms 28

a is a separating vertex of G if and only if either 1. a is the root of the DFS tree and has more than one child, or 2. a is not the root, and there exists a child s of a such that there is no backedge between any descendent of s (including s) and a proper ancestor of a. " low(u) = min# pre(u) $ pre(w) where (v,w) is a backedge from u or a descendant of u DFS tree with pre-ordering and low numbering a e c b d b:2,2 u is a sep. vertex iff there is any child v of u s.t. low(v) pre(u) a:1,1 c:3,1 d:4,1 e:5,1 CS 312 Graph Algorithms 29

a is a separating vertex of G if and only if either 1. a is the root of the DFS tree and has more than one child, or 2. a is not the root, and there exists a child s of a such that there is no backedge between any descendent of s (including s) and a proper ancestor of a. " low(u) = min# pre(u) $ pre(w) where (v,w) is a backedge from u or a descendant of u DFS tree with pre-ordering and low numbering f a e c b d b:2,2 a:1,1 f:6,6 u is a sep. vertex iff there is any child v of u s.t. low(v) pre(u) c:3,1 d:4,1 e:5,1 CS 312 Graph Algorithms 30

Example with pre and low a f e d g c b c,4 d,5 a,1 b,2 g,3 e,7 f,8 pre numbering h h,6 CS 312 Graph Algorithms 31

f e d g a c b Example " low(u) = min# pre(u) $ pre(w) where (v,w) is a backedge from u or a descendant of u h c,4,3 d,5,3 h,6,4 a,1,1 b,2,1 g,3,1 e,7,3 f,8,3 low numbering u is a sep. vertex iff there is any child v of u s.t. low(v) pre(u) CS 312 Graph Algorithms 32

f e d Example with pre and low " low(u) = min# pre(u) $ pre(w) where (v,w) is a backedge from u or a descendant of u a g h c b c,4,3 d,5,3 h,6,4 a,1,1 b,2,1 g,3,1 e,7,1 f,8,1 low numbering u is a sep. vertex iff there is any child v of u s.t. low(v) pre(u) CS 312 Graph Algorithms 33

HW a 3 b 9 5 c 2 d 4 1 e CS 312 Graph Algorithms 34

BIG TUNA CS 312 Graph Algorithms 35