630 likes | 1.04k Views
Elementary Graph Algorithms. PART-1. Graph Terminology. A graph G = ( V , E ) V = set of vertices E = set of edges In an undirected graph: edge ( u , v ) = edge ( v , u ) In a directed graph: edge ( u , v ) goes from vertex u to vertex v , notated u v
E N D
ElementaryGraph Algorithms PART-1
Graph Terminology • A graph G = (V, E) • V = set of vertices • E = set of edges • In an undirected graph: • edge(u, v) = edge(v, u) • In a directed graph: • edge(u,v) goes from vertex u to vertex v, notated u v • edge(u, v) is not the same as edge(v, u)
Graph Terminology A A B B C C D D Directed graph: V = {A, B, C, D} E = {(A,B), (A,C), (A,D), (C,B)} Undirected graph: V = {A, B, C, D} E = {(A,B), (A,C), (A,D), (C,B), (B,A), (C,A), (D,A), (B,C)}
Graph Terminology a b d e c a b d e c Vertex a is adjacent to c and vertex cis adjacent to a Vertex c is adjacent to a, but vertex a is NOT adjacent to c • Adjacent vertices: connected by an edge • Vertex v is adjacent to u if and only if (u, v) E. • In an undirected graph with edge (u, v), and hence (v, u), v is adjacent to u and u is adjacent to v.
a b d e c a b d e c Graph Terminology • A Path in a graph from u to v is a sequence of edges between vertices w0, w1, …, wk, such that (wi, wi+1) E, u = w0 and v = wk, for 0 ik • The length of the path is k, the number of edges on the path abedce is a path. cdeb is a path. bca is NOT a path. acde is a path. abec is NOT a path.
a b d e c a b d e c Graph Terminology • Loops • If the graph contains an edge (v, v) from a vertex to itself, then the path v, v is sometimes referred to as aloop. • The graphs we will consider will generally be loopless. • A simplepath is a path such that all vertices are distinct, except that the first and last could be the same. abedc is a simple path. cdec is a simple path. abedce is NOT a simple path.
Graph Terminology • simple path:no repeated vertices
abeda is a simple cycle. abeceda is a cycle, but is NOT a simple cycle. abedc is NOT a cycle. a b d e c a b d e c aba is NOT a cycle. abedceda is NOT a cycle. abedcea is a cycle, but NOT simple. abea is a simple cycle. Graph Terminology • Cycles • Acyclein a directed graph is a path of length at least 2 such that the first vertex on the path is the same as the last one; if the path is simple, then the cycle is asimple cycle. • Acycle in a undirected graph • A path of length at least 3 such that the first vertex on the path is the same as the last one. • The edges on the path are distinct.
Graph Terminology • If each edge in the graph carries a value, then the graph is called weighted graph. • A weighted graph is a graph G = (V, E, W), where each edge, e E is assigned a real valued weight, W(e). • A complete graph is a graph with an edge between every pair of vertices. • A graph is called complete graph if every vertex is adjacent to every other vertex.
Graph Terminology n = 4 n = 1 n = 2 n = 3 • Complete Undirected Graph • has all possible edges
Graph Terminology • connected graph:any two vertices are connected by some path • An undirected graph is connected if, for every pair of vertices u and v there is a path from u to v.
Graph Terminology • tree- connected graph without cycles • forest - collection of trees
V a b h j U d X Z c e i W g f Y Graph Terminology • End vertices (or endpoints) of an edge a • U and V are the endpoints of a • Edges incident on a vertex V • a, d, and b are incident on V • Adjacent vertices • U and V are adjacent • Degree of a vertex X • X has degree 5 • Parallel edges • h and i are parallel edges • Self-loop • j is a self-loop
Graph Terminology • Path • sequence of alternating vertices and edges • begins with a vertex • ends with a vertex • Simple path • path such that all its vertices and edges are distinct. • Examples • P1 = (V, X, Z) is a simple path. • P2 = (U, W, X, Y, W, V) is a path that is not simple. V b a P1 d U X Z P2 h c e W g f Y
Graph Terminology • Cycle • circular sequence of alternating vertices and edges • 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
In-Degree of a Vertex 2 3 8 1 10 4 5 9 11 6 7 • in-degree is number of incoming edges • indegree(2) = 1, indegree(8) = 0
Out-Degree of a Vertex 2 3 8 1 10 4 5 9 11 6 7 • out-degree is number of outbound edges • outdegree(2) = 1, outdegree(8) = 2
Applications: Communication Network 2 3 8 1 10 4 5 9 11 6 7 • vertex = city, edge = communication link
Driving Distance/Time Map 2 4 3 8 8 1 6 10 2 4 5 4 4 3 5 9 11 5 6 7 6 7 • vertex = city, • edge weight = distance/time
Street Map • Some streets are one way • A bidirectional link represented by 2 directed edge • (5, 9) (9, 5) 2 3 8 1 10 4 5 9 11 6 7
Computer Networks • Electronic circuits • Printed circuit board • Computer networks • Local area network • Internet • Web
Graphs • We will typically express running times in terms of • |V| = number of vertices, and • |E| = number of edges • If |E| |V|2 the graph is dense • If |E| |V| the graph is sparse • If you know you are dealing with dense or sparse graphs, different data structures may make sense
Graph Representation • Adjacency Matrix • Adjacency Lists
Adjacency Matrix • Assume V = {1, 2, …, n} • An adjacency matrixrepresents the graph as a n n matrix A: • A[i, j] = 1 if edge(i, j) E (or weight of edge) = 0 if edge(i, j) E
Adjacency Matrix • Example: 1 a d 2 4 b c 3
Adjacency Matrix • Example: 1 a d 2 4 b c 3
Adjacency Matrix 1 2 3 4 5 2 1 3 2 1 3 4 4 5 5 • 0/1 nn matrix, where n = # of vertices • A(i, j) = 1 iff (i, j) is an edge 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 1 1 0
Adjacency Matrix 1 2 3 4 5 2 1 0 1 0 1 0 3 2 1 0 0 0 1 1 3 0 0 0 0 1 4 4 1 0 0 0 1 5 5 0 1 1 1 0 • Diagonal entries are zero • Adjacency matrix of an undirected graph is symmetric • A(i, j) = A(j, i) for all i and j
Adjacency Matrix 1 2 3 4 5 2 1 0 0 0 1 0 3 2 1 0 0 0 1 1 3 0 0 0 0 0 4 4 0 0 0 0 1 5 5 0 1 1 0 0 • Diagonal entries are zero • Adjacency matrix of a digraph need not be symmetric
Adjacency Matrix • How much storage does the adjacency matrix require? • Answer: O(|V|2) • What is the minimum amount of storage needed by an adjacency matrix representation of an undirected graph with 4 vertices? • (|V|-1)|V|/2 • Answer: 6 bits • Undirected graph matrix is symmetric • No self-loops don’t need diagonal
Adjacency Matrix • The adjacency matrix is a dense representation • Usually too much storage for large graphs • But can be very efficient for small graphs • Most large interesting graphs are sparse • For this reason the adjacency list is often a more appropriate representation
Adjacency List 2 3 1 4 5 • Adjacency list: for each vertex v V, store a list of vertices adjacent to v. • Adjacency list for vertex i is a linear list of vertices adjacent from vertex i • Each adjacency list is a chain. aList[1] 2 4 [2] 1 5 [3] 5 [4] 5 1 aList[5] 2 4 3 # of chain nodes = 2|E| (undirected graph) # of chain nodes = |E| (digraph)
Adjacency List • How much storage is required? • The degree of a vertex v = # incident edges • Directed graphs have in-degree and out-degree • For directed graphs: • # of items in adjacency lists is out-degree(v) = |E| • takes (V + E) storage (Why?) • For undirected graphs: • # items in adjacency lists is degree(v) = 2|E| • also (V + E) storage • So: Adjacency lists take O(V + E) storage
Graph Search Methods • Many graph problems solved using a search method • Path from one vertex to another • Is the graph connected? • etc. • Commonly used search methods: • Breadth-first search • Depth-first search
Graph Search Methods 2 3 8 1 4 5 9 10 6 7 11 • A vertex u is reachable from vertex v iff there is a path from v to u. • A search method starts at a given vertex v and visits every vertex that is reachable from v.
Breadth-First Search • Visit start vertex (s) and put into a FIFO queue. • Repeatedly remove a vertex from the queue, visit its unvisited adjacent vertices, put newly visited vertices into the queue. • All vertices reachable from the start vertex (s) (including the start vertex) are visited.
Breadth-First Search • Again will associate vertex “colors” to guide the algorithm • White vertices have not been discovered • All vertices start out white • Gray vertices are discovered but not fully explored • They may be adjacent to white vertices • Black vertices are discovered and fully explored • They are adjacent only to black and gray vertices • Explore vertices by scanning adjacency list of gray vertices
Breadth-First Search BFS(G, s) { // initialize vertices; 1 for each u V(G) – {s}{ 2 do color[u] = WHITE 3 d[u] = // distance from s to u 4 p[u] = NIL // predecessor or parent of u } 5 color[s] = GRAY 6 d[s] = 0 7 p[s] = NIL 8 Q = Empty; 9 Enqueue (Q,s); // Q is a queue; initialize to s 10 while (Q not empty) { 11 u = Dequeue(Q); 12 for each v adj[u] { 13 if (color[v] == WHITE) 14 color[v] = GRAY; 15 d[v] = d[u] + 1; 16 p[v] = u; 17 Enqueue(Q, v); } 18 color[u] = BLACK; } } What does d[v] represent? What does p[v] represent?
Breadth-First Search • Lines 1-4 paint every vertex white, set d[u] to be infinity for each vertex (u), and set p[u] the parent of every vertex to be NIL. • Line 5 paints the source vertex (s) gray. • Line 6 initializes d[s] to 0. • Line 7 sets the parent of the source to be NIL. • Lines 8-9 initialize Q to the queue containing just the vertex (s). • The while loop of lines 10-18 iterates as long as there remain gray vertices, which are discovered vertices that have not yet had their adjacency lists fully examined. • This while loop maintains the test in line 10, the queue Q consists of the set of the gray vertices.
Breadth-First Search • Prior to the first iteration in line 10, the only gray vertex, and the only vertex in Q, is the source vertex (s). • Line 11 determines the gray vertex (u) at the head of the queue Q and removes it from Q. • The for loop of lines 12-17 considers each vertex (v) in the adjacency list of (u). • If (v) is white, then it has not yet been discovered, and the algorithm discovers it by executing lines 14-17. • It is first grayed, and its distance d[v] is set to d[u]+1. • Then, u is recorded as its parent. • Finally, it is placed at the tail of the queue Q. • When all the vertices on (u’s) adjacency list have been examined, u is blackened in line 18.
Breadth-First Search: Example r s t u v w x y
Breadth-First Search: Example r s t u 0 v w x y Q: s
Breadth-First Search: Example r s t u 1 0 1 v w x y Q: w r
Breadth-First Search: Example r s t u 1 0 2 1 2 v w x y Q: r t x
Breadth-First Search: Example r s t u 1 0 2 2 1 2 v w x y Q: t x v
Breadth-First Search: Example r s t u 1 0 2 3 2 1 2 v w x y Q: x v u
Breadth-First Search: Example r s t u 1 0 2 3 2 1 2 3 v w x y Q: v u y
Breadth-First Search: Example r s t u 1 0 2 3 2 1 2 3 v w x y Q: u y