Basic Graph Definitions

Similar documents
CMSC 380. Graph Terminology and Representation

Chapter 9 Graph Algorithms

11/22/2016. Chapter 9 Graph Algorithms. Introduction. Definitions. Definitions. Definitions. Definitions

CS302 - Data Structures using C++

Chapter 9 Graph Algorithms

Chapter 14. Graphs Pearson Addison-Wesley. All rights reserved 14 A-1

CSE 100: GRAPH ALGORITHMS

UNIT Name the different ways of representing a graph? a.adjacencymatrix b. Adjacency list

Graph Algorithms. 1 Preliminary Denitions. CSci 335 Software Design and Analysis III Chapter 9 Graph Algorithms. Prof.

Introduction to Graphs. common/notes/ppt/

Chapter 9 Graph Algorithms

CSI 604 Elementary Graph Algorithms

UNIT 5 GRAPH. Application of Graph Structure in real world:- Graph Terminologies:

I A graph is a mathematical structure consisting of a set of. I Formally: G =(V, E), where V is a set and E V V.

Inf 2B: Graphs, BFS, DFS

GRAPHS Lecture 17 CS2110 Spring 2014

1. Graph and Representation

ROOT: A node which doesn't have a parent. In the above tree. The Root is A.

The ADT priority queue Orders its items by a priority value The first item removed is the one having the highest priority value

Graph Traversals. CS200 - Graphs 1

Graph Algorithms: Chapters Part 1: Introductory graph concepts

The Shortest Path Problem

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

IS 709/809: Computational Methods in IS Research. Graph Algorithms: Introduction

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

CS2 Algorithms and Data Structures Note 9

Graphs. Shortest Path and Topological Sort

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

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

Data Structures and Algorithms. Chapter 7. Graphs

W4231: Analysis of Algorithms

CS200: Graphs. Prichard Ch. 14 Rosen Ch. 10. CS200 - Graphs 1

DHANALAKSHMI COLLEGE OF ENGINEERING, CHENNAI. Department of Computer Science and Engineering CS6301 PROGRAMMING DATA STRUCTURES II

(Re)Introduction to Graphs and Some Algorithms

Konigsberg Bridge Problem

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

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

Graph Algorithms. Definition

Minimum Spanning Trees Ch 23 Traversing graphs

CS 310 Advanced Data Structures and Algorithms

CSE 373 Final Exam 3/14/06 Sample Solution

Directed Graphs. DSA - lecture 5 - T.U.Cluj-Napoca - M. Joldos 1

CS473-Algorithms I. Lecture 13-A. Graphs. Cevdet Aykanat - Bilkent University Computer Engineering Department

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

Today s Outline. Graph ADT? Graph Definitions. Trees as Graphs. Graphs Chapter 9 in Weiss. More Definitions: Simple Paths and Cycles.

Graph Representations and Traversal

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

UNIT III TREES. A tree is a non-linear data structure that is used to represents hierarchical relationships between individual data items.

GRAPHS Lecture 19 CS2110 Spring 2013

2. True or false: even though BFS and DFS have the same space complexity, they do not always have the same worst case asymptotic time complexity.

Algorithm Design and Analysis

Outline. Introduction. Representations of Graphs Graph Traversals. Applications. Definitions and Basic Terminologies

Graph Theory. ICT Theory Excerpt from various sources by Robert Pergl

22.3 Depth First Search

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

Graph Representation

Outline. Graphs. Divide and Conquer.

Copyright 2000, Kevin Wayne 1

1 Digraphs. Definition 1

Graph Algorithms Using Depth First Search

Shortest path problems


Lecture 9 Graph Traversal

Graph: representation and traversal

Lecture 26: Graphs: Traversal (Part 1)

Lecture 10. Elementary Graph Algorithm Minimum Spanning Trees

Elementary Graph Algorithms: Summary. Algorithms. CmSc250 Intro to Algorithms

Graph definitions. There are two kinds of graphs: directed graphs (sometimes called digraphs) and undirected graphs. An undirected graph

Graphs & Digraphs Tuesday, November 06, 2007

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

CS 206 Introduction to Computer Science II

Elementary Graph Algorithms

CS2 Algorithms and Data Structures Note 10. Depth-First Search and Topological Sorting

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

ECE4050 Data Structures and Algorithms. Lecture 8: Graphs

DFS & STRONGLY CONNECTED COMPONENTS

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

Unit #9: Graphs. CPSC 221: Algorithms and Data Structures. Will Evans 2012W1

Graphs. Tessema M. Mengistu Department of Computer Science Southern Illinois University Carbondale Room - Faner 3131

Graphs. A graph is a data structure consisting of nodes (or vertices) and edges. An edge is a connection between two nodes

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

Strongly connected: A directed graph is strongly connected if every pair of vertices are reachable from each other.

CS420/520 Algorithm Analysis Spring 2009 Lecture 14

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


8. Write an example for expression tree. [A/M 10] (A+B)*((C-D)/(E^F))

Design and Analysis of Algorithms

CS 61B Data Structures and Programming Methodology. Aug 5, 2008 David Sun

Topic 12: Elementary Graph Algorithms

Trees. Arash Rafiey. 20 October, 2015

Review: Graph Theory and Representation

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

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

LECTURE NOTES OF ALGORITHMS: DESIGN TECHNIQUES AND ANALYSIS

COT 6405 Introduction to Theory of Algorithms

Undirected Graphs. DSA - lecture 6 - T.U.Cluj-Napoca - M. Joldos 1

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

Directed Graphs (II) Hwansoo Han

Multidimensional Arrays & Graphs. CMSC 420: Lecture 3

Algorithm Design (8) Graph Algorithms 1/2

Transcription:

CMSC 341 Graphs

Basic Graph Definitions A graph G = (V,E) consists of a finite set of vertices, V, and a finite set of edges, E. Each edge is a pair (v,w) where v, w V. V and E are sets, so each vertex v V is unique, and each edge e E is unique. Edges are sometimes called arcs or lines. Vertices are sometimes called nodes or points. 8/3/2007 UMBC CMSC 341 Graphs 2

Graph Applications Graphs can be used to model a wide range of applications including Intersections and streets within a city Roads/trains/airline routes connecting cities/countries Computer networks Electronic circuits 8/3/2007 UMBC CMSC 341 Graphs 3

Basic Graph Definitions (2) A directed graph is a graph in which the edges are ordered pairs. That is, (u,v) (v,u), u, v V. Directed graphs are sometimes called digraphs. An undirected graph is a graph in which the edges are unordered pairs. That is, (u,v) = (v,u). A sparse graph is one with few edges. That is E = O( V ) A dense graph is one with many edges. That is E = O( V 2 ) 8/3/2007 UMBC CMSC 341 Graphs 4

Undirected Graph 1 2 5 All edges are two-way. Edges are unordered pairs. V = { 1, 2,3, 4, 5} 3 4 E = { (1,2), (2, 3), (3, 4), (2, 4), (4, 5), (5, 1) } 8/3/2007 UMBC CMSC 341 Graphs 5

Directed Graph 1 2 5 3 4 All edges are one-way as indicated by the arrows. Edges are ordered pairs. V = { 1, 2, 3, 4, 5} E = { (1, 2), (2, 4), (3, 2), (4, 3), (4, 5), (5, 4), (5, 1) } 8/3/2007 UMBC CMSC 341 Graphs 6

A Single Graph with Multiple Components 1 6 2 5 7 8 3 4 9 8/3/2007 UMBC CMSC 341 Graphs 7

Basic Graph Definitions (3) Vertex w is adjacent to vertex v if and only if (v, w) E. For undirected graphs, with edge (v, w), and hence also (w, v), w is adjacent to v and v is adjacent to w. An edge may also have: weight or cost -- an associated value label -- a unique name The degree of a vertex, v, is the number of vertices adjacent to v. Degree is also called valence. 8/3/2007 UMBC CMSC 341 Graphs 8

Basic Graph Definitions (4) For directed graphs vertex w is adjacent to vertex v if and only if (v, w) E. Indegree of a vertex w is the number of edges (v,w). OutDegree of a vertex w is the number of edges(w,v). 1 1 2 5 2 5 3 4 3 4

Paths in Graphs A path in a graph is a sequence of vertices w 1, w 2, w 3,, w n such that (w i, w i+1 ) E for 1 i < n. The length of a path in a graph is the number of edges on the path. The length of the path from a vertex to itself is 0. A simple path is a path such that all vertices are distinct, except that the first and last may be the same. A cycle in a graph is a path w 1, w 2, w 3,, w n, w V such that: there are at least two vertices on the path w 1 = w n (the path starts and ends on the same vertex) if any part of the path contains the subpath w i, w j, w i, then each of the edges in the subpath is distinct (i. e., no backtracking along the same edge) A simple cycle is one in which the path is simple. A directed graph with no cycles is called a directed acyclic graph, often abbreviated as DAG 8/3/2007 UMBC CMSC 341 Graphs 10

Paths in Graphs (2) How many simple paths from 1 to 4 and what are their lengths? 1 1 2 5 2 5 3 4 3 4

Connectedness in Graphs An undirected graph is connected if there is a path from every vertex to every other vertex. A directed graph is strongly connected if there is a path from every vertex to every other vertex. A directed graph is weakly connected if there would be a path from every vertex to every other vertex, disregarding the direction of the edges. A complete graph is one in which there is an edge between every pair of vertices. A connected component of a graph is any maximal connected subgraph. Connected components are sometimes simply called components. 8/3/2007 UMBC CMSC 341 Graphs 12

Disjoint Sets and Graphs Disjoint sets can be used to determine connected components of an undirected graph. For each edge, place its two vertices (u and v) in the same set -- i.e. union( u, v ) When all edges have been examined, the forest of sets will represent the connected components. Two vertices, x, y, are connected if and only if find( x ) = find( y ) 8/3/2007 UMBC CMSC 341 Graphs 13

Undirected Graph/Disjoint Set Example 1 6 2 5 7 8 3 4 Sets representing connected components { 1, 2, 3, 4, 5 } { 6 } { 7, 8, 9 } 9 8/3/2007 UMBC CMSC 341 Graphs 14

DiGraph / Strongly Connected Components a b g d c f h e j i 8/3/2007 UMBC CMSC 341 Graphs 15

A Graph ADT Has some data elements Vertices and Edges Has some operations getdegree( u ) -- Returns the degree of vertex u (outdegree of vertex u in directed graph) getadjacent( u ) -- Returns a list of the vertices adjacent to vertex u (list of vertices that u points to for a directed graph) isadjacentto( u, v ) -- Returns TRUE if vertex v is adjacent to vertex u, FALSE otherwise. Has some associated algorithms to be discussed. 8/3/2007 UMBC CMSC 341 Graphs 16

Adjacency Matrix Implementation Uses array of size V V where each entry (i,j) is boolean TRUE if there is an edge from vertex i to vertex j FALSE otherwise store weights when edges are weighted Very simple, but large space requirement = O( V 2 ) Appropriate if the graph is dense. Otherwise, most of the entries in the table are FALSE. For example, if a graph is used to represent a street map like Manhattan in which most streets run E/W or N/S, each intersection is attached to only 4 streets and E < 4* V. If there are 3000 intersections, the table has 9,000,000 entries of which only 12,000 are TRUE. 8/3/2007 UMBC CMSC 341 Graphs 17

Undirected Graph / Adjacency Matrix 1 2 5 3 4 1 2 3 4 5 1 0 1 0 0 1 2 1 0 1 1 0 3 0 1 0 1 0 4 0 1 1 0 1 5 1 0 0 1 0 8/3/2007 UMBC CMSC 341 Graphs 18

Directed Graph / Adjacency Matrix 1 2 5 3 4 1 2 3 4 5 1 0 1 0 0 0 2 0 0 0 1 0 3 0 1 0 0 0 4 0 0 1 0 1 5 1 0 0 1 0 8/3/2007 UMBC CMSC 341 Graphs 19

Weighted, Directed Graph / Adjacency Matrix 2 1 8 2 5 6 5 7 2 3 4 3 1 2 3 4 5 1 0 2 0 0 0 2 0 0 0 6 0 3 0 7 0 0 0 4 0 0 3 0 2 5 8 0 0 5 0 8/3/2007 UMBC CMSC 341 Graphs 20

Adjacency Matrix Performance Storage requirement: O( V 2 ) Performance: getdegree ( u ) isadjacentto( u, v ) getadjacent( u ) 8/3/2007 UMBC CMSC 341 Graphs 21

Adjacency List Implementation If the graph is sparse, then keeping a list of adjacent vertices for each vertex saves space. Adjacency Lists are the commonly used representation. The lists may be stored in a data structure or in the Vertex object itself. Vector of lists: A vector of lists of vertices. The i- th element of the vector is a list, L i, of the vertices adjacent to v i. If the graph is sparse, then the space requirement is O( E + V ), linear in the size of the graph If the graph is dense, then the space requirement is O( V 2 ) 8/3/2007 UMBC CMSC 341 Graphs 22

Vector of Lists 1 2 8 2 5 6 5 7 3 4 3 2 1 2 3 4 2 4 2 3 5 5 1 4 8/3/2007 UMBC CMSC 341 Graphs 23

Adjacency List Performance Storage requirement: Performance: getdegree( u ) isadjacentto( u, v ) getadjacent( u ) 8/3/2007 UMBC CMSC 341 Graphs 24

Graph Traversals Like trees, graphs can be traversed breadthfirst or depth-first. Use stack (or recursion) for depth-first traversal Use queue for breadth-first traversal Unlike trees, we need to specifically guard against repeating a path from a cycle. Mark each vertex as visited when we encounter it and do not consider visited vertices more than once. 8/3/2007 UMBC CMSC 341 Graphs 25

Breadth-First Traversal void bfs() { Queue<Vertex> q; Vertex u, w; } for all v in V, d[v] = // mark each vertex unvisited q.enqueue(startvertex); // start with any vertex d[startvertex] = 0; // mark visited while (!q.isempty() ) { u = q.dequeue( ); for each Vertex w adjacent to u { if (d[w] == ) { // w not marked as visited d[w] = d[u]+1; // mark visited path[w] = u; // where we came from q.enqueue(w); } } } 8/3/2007 UMBC CMSC 341 Graphs 26

Breadth-First Example v1 0 1v1 v3 q v1 v2 v3 v4 u v2 1v1 v5 v4 2v2 BFS Traversal v1 v2 v3 v4 8/3/2007 UMBC CMSC 341 Graphs 27

Unweighted Shortest Path Problem Unweighted shortest-path problem: Given as input an unweighted graph, G = ( V, E ), and a distinguished starting vertex, s, find the shortest unweighted path from s to every other vertex in G. After running BFS algorithm with s as starting vertex, the length of the shortest path length from s to i is given by d[i]. If d[i] =, then there is no path from s to i. The path from s to i is given by traversing path[] backwards from i back to s. 8/3/2007 UMBC CMSC 341 Graphs 28

Recursive Depth First Traversal void dfs() { } for (each v V) dfs(v) void dfs(vertex v) { if (!v.visited) { v.visited = true; for each Vertex w adjacent to v) if (!w.visited ) dfs(w) } } 8/3/2007 UMBC CMSC 341 Graphs 29

DFS with explicit stack void dfs() { Stack<Vertex> s; Vertex u, w; s.push(startvertex); startvertex.visited = true; while (!s.isempty() ) { u = s.pop(); for each Vertex w adjacent to u { if (!w.visited) { w.visited = true; s.push(w); } } } 8/3/2007 UMBC CMSC 341 Graphs 30

DFS Example v1 v3 s v1 v2 v4 v3 u v2 v5 v4 DFS Traversal v1 v3 v2 v4 8/3/2007 UMBC CMSC 341 Graphs 31

Traversal Performance What is the performance of DF and BF traversal? Each vertex appears in the stack or queue exactly once in the worst case. Therefore, the traversals are at least O( V ). However, at each vertex, we must find the adjacent vertices. Therefore, df- and bftraversal performance depends on the performance of the getadjacent operation. 8/3/2007 UMBC CMSC 341 Graphs 32

GetAdjacent Method 1: Look at every vertex (except u), asking are you adjacent to u? List<Vertex> L; for each Vertex v except u if (v.isadjacentto(u)) L.push_back(v); Assuming O(1) performance for push_back and isadjacentto, then getadjacent has O( V ) performance and traversal performance is O( V 2 ); 8/3/2007 UMBC CMSC 341 Graphs 33

GetAdjacent (2) Method 2: Look only at the edges which impinge on u. Therefore, at each vertex, the number of vertices to be looked at is D(u), the degree of the vertex This approach is O( D( u ) ). The traversal performance is O( V i= 1 D( vi )) = O ( E ) since getadjacent is done O( V ) times. However, in a disconnected graph, we must still look at every vertex, so the performance is O( V + E ). 8/3/2007 UMBC CMSC 341 Graphs 34

Number of Edges Theorem: The number of edges in an undirected graph G = (V,E ) is O( V 2 ) Proof: Suppose G is fully connected. Let p = V. Then we have the following situation: vertex connected to 1 2,3,4,5,, p 2 1,3,4,5,, p p 1,2,3,4,,p-1 There are p(p-1)/2 = O( V 2 ) edges. So O( E ) = O( V 2 ). 8/3/2007 UMBC CMSC 341 Graphs 35

Weighted Shortest Path Problem Single-source shortest-path problem: Given as input a weighted graph, G = ( V, E ), and a distinguished starting vertex, s, find the shortest weighted path from s to every other vertex in G. Use Dijkstra s algorithm Keep tentative distance for each vertex giving shortest path length using vertices visited so far. Record vertex visited before this vertex (to allow printing of path). At each step choose the vertex with smallest distance among the unvisited vertices (greedy algorithm). 8/3/2007 UMBC CMSC 341 Graphs 36

Dijkstra s Algorithm The pseudo code for Dijkstra s algorithm assumes the following structure for a Vertex object class Vertex { public List adj; //Adjacency list public boolean known; public DisType dist; //DistType is probably int public Vertex path; //Other fields and methods as needed } 8/3/2007 UMBC CMSC 341 Graphs 37

Dijkstra s Algorithm void dijksra(vertex start) { for each Vertex v in V { v.dist = Integer.MAX_VALUE; v.known = false; v.path = null; } start.distance = 0; } while there are unknown vertices { v = unknown vertex with smallest distance v.known = true; for each Vertex w adjacent to v if (!w.known) if (v.dist + weight(v, w)< w.distance){ decrease(w.dist to v.dist+weight(v, w)) w.path = v; } } 8/3/2007 UMBC CMSC 341 Graphs 38

Dijkstra Example v1 3 v2 v7 1 5 1 3 2 7 v4 v3 1 v6 3 v8 4 6 4 2 v5 v10 1 v9 8/3/2007 UMBC CMSC 341 Graphs 39

Correctness of Dijkstra s Algorithm The algorithm is correct because of a property of shortest paths: If P k = v 1, v 2,..., v j, v k, is a shortest path from v 1 to v k, then P j = v 1, v 2,..., v j, must be a shortest path from v 1 to v j. Otherwise P k would not be as short as possible since P k extends P j by just one edge (from v j to v k ) Also, P j must be shorter than P k (assuming that all edges have positive weights). So the algorithm must have found P j on an earlier iteration than when it found P k. i.e. Shortest paths can be found by extending earlier known shortest paths by single edges, which is what the algorithm does. 8/3/2007 UMBC CMSC 341 Graphs 40

Running Time of Dijkstra s Algorithm The running time depends on how the vertices are manipulated. The main while loop runs O( V ) time (once per vertex) Finding the unknown vertex with smallest distance (inside the while loop) can be a simple linear scan of the vertices and so is also O( V ). With this method the total running time is O ( V 2 ). This is acceptable (and perhaps optimal) if the graph is dense ( E = O ( V 2 ) ) since it runs in linear time on the number of edges. If the graph is sparse, ( E = O ( V ) ), we can use a priority queue to select the unknown vertex with smallest distance, using the deletemin operation (O( lg V )). We must also decrease the path lengths of some unknown vertices, which is also O( lg V ). The deletemin operation is performed for every vertex, and the decrease path length is performed for every edge, so the running time is O( E lg V + V lg V ) = O( ( V + E ) lg V ) = O( E lg V ) if all vertices are reachable from the starting vertex 8/3/2007 UMBC CMSC 341 Graphs 41

Dijkstra and Negative Edges Note in the previous discussion, we made the assumption that all edges have positive weight. If any edge has a negative weight, then Dijkstra s algorithm fails. Why is this so? Suppose a vertex, u, is marked as known. This means that the shortest path from the starting vertex, s, to u has been found. However, it s possible that there is negatively weighted edge from an unknown vertex, v, back to u. In that case, taking the path from s to v to u is actually shorter than the path from s to u without going through v. Other algorithms exist that handle edges with negative weights for weighted shortest-path problem. 8/3/2007 UMBC CMSC 341 Graphs 42

Directed Acyclic Graphs A directed acyclic graph is a directed graph with no cycles. A strict partial order R on a set S is a binary relation such that for all a S, ara is false (irreflexive property) for all a,b,c S, if arb and brc then arc is true (transitive property) To represent a partial order with a DAG: represent each member of S as a vertex for each pair of vertices (a,b), insert an edge from a to b if and only if arb 8/3/2007 UMBC CMSC 341 Graphs 43

More Definitions Vertex i is a predecessor of vertex j if and only if there is a path from i to j. Vertex i is an immediate predecessor of vertex j if and only if ( i, j ) is an edge in the graph. Vertex j is a successor of vertex i if and only if there is a path from i to j. Vertex j is an immediate successor of vertex i if and only if ( i, j ) is an edge in the graph. The indegree of a vertex, v, is the number of edges (u, v), i.e. the number of edges that come into v. 8/3/2007 UMBC CMSC 341 Graphs 44

Topological Ordering A topological ordering of the vertices of a DAG G = (V,E) is a linear ordering such that, for vertices i, j V, if i is a predecessor of j, then i precedes j in the linear order, i.e. if there is a path from v i to v j, then v i comes before v j in the linear order 8/3/2007 UMBC CMSC 341 Graphs 45

Topological Sort 8/3/2007 UMBC CMSC 341 Graphs 46

TopSort Example 1 2 3 4 5 6 7 8 9 10 8/3/2007 UMBC CMSC 341 Graphs 47

Running Time of TopSort 1. At most, each vertex is enqueued just once, so there are O( V ) constant time queue operations. 2. The body of the for loop is executed at most once per edges = O( E ) 3. The initialization is proportional to the size of the graph if adjacency lists are used = O( E + V ) 4. The total running time is therefore O ( E + V ) 8/3/2007 UMBC CMSC 341 Graphs 48