Presentation is loading. Please wait.

Presentation is loading. Please wait.

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.

Similar presentations


Presentation on theme: "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."— Presentation transcript:

1 Elementary Graph Algorithms CLRS Chapter 22

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

3 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)}

4 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

5 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

6 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

7 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

8 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

9 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

10 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

11 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

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

13 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

14 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

15 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) 25 1 4 3 52 514 4 235 412 1234512345

16 25 1 4 3 01001 10011 00010 01101 11010 1234512345 1 2 3 4 5 Adjacency Matrix

17 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)

18 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

19 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

20 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

21 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

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

23 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

24 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.

25 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

26 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

27 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)

28 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)

29 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

30 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?

31 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

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


Download ppt "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."

Similar presentations


Ads by Google