400 likes | 563 Views
GRAPHS. Definition. The Graph Data Structure set V of vertices collection E of edges (pairs of vertices in V) Drawing of a Graph vertex <-> circle/oval edge <-> line connecting the vertex pair. Sample Uses. Airports and flights Persons and acquaintance relationships
E N D
Definition • The Graph Data Structure • set V of vertices • collection E of edges (pairs of vertices in V) • Drawing of a Graph • vertex <-> circle/oval • edge <-> line connecting the vertex pair
Sample Uses • Airports and flights • Persons and acquaintance relationships • Intersections and streets • Computers and connections; the Internet
Graph Example Graph G=(V,E): V={a,b,c,d}, E={(a,b),(b,c),(b,d),(a,d)} a b c d
Adjacency • Vertices connected by an edge are adjacent • An edge e is incident on a vertex v (and vice-versa) if v is an endpoint of e • Degree of a vertex v, deg(v) • number of edges incident on v • if directed graph, indeg(v) and outdeg(v)
Graph Properties Graph G with n vertices and m edges • v in G deg(v) = 2m • v in G indeg(v) = v in G outdeg(v) = m • m is O(n2) • m <= n(n-1)/2 if G is undirected • m <= n(n-1) if G is directed
Subgraphs • Graph H a subgraph of graph G • vertex set of H is a subset of vertex set of G • edge set of H is a subset of edge set of G • Spanning subgraph • vertex set of H identical to vertex set of G
Paths and Cycles • (simple) Path • sequence of distinct vertices such that consecutive vertices are connected through edges • (simple) Cycle • same as path except that first and last vertices are identical • Directed paths and cycles • edge directions matter
Connectivity • Connected graph • there is a path between any two vertices
Graph Methods • Container methods • General or Global methods • numVertices(),numEdges(),vertices(),edges() • Directed Edge methods • indegree(v), inadjacentVertices(v), inincidentEdges(v) • Update methods • adding/removing vertices or edges
General Methods • numvertices()-returns the number of vertices in G • numedges()- returns the number of edges in G • vertices()- return an enumeration of the vertex positions in G • edges()- returns an enumeration of the edge positions in G
General Methods • Degree (v) - returns the degree of v • adjacentvertices(v)- returns an enumeration of the vertices adjacent to v • incidentedges(v)- returns an enumeration of the edges incident upon v • endvertices(e)- return an array of size 2 storing the end vertices of e
Directed Edges • Directededges()- return an enumeration of all directed edges • indegree(v)- return the indegree of v • outdegree(v)- return the outdegree of v • origin (v)- return the origin of directed edge e • other functions- inadjacentvertices(), outadjacentvertices(), destination()
Updating Graphs • Insertedge(v,w,o)- insert and return an undirected edge between vertices v and w storing the object o at this position • Insertvertex(o)- insert and return a new vertex storing the object o at this position • removevertex (v)- remove the vertex v and all incident edges • removeedge(e)- remove edge e
Graph Implementations • Edge List • vertices and edges are nodes • edge nodes refer to incident vertex nodes • Adjacency List • same as edge list but vertex nodes also refer to incident edge nodes • Adjacency Matrix • 2D matrix of vertices; entries are edges
Implementation Examples • Illustrate the following graph using the different implementations 4 a b 5 1 3 c d 2
Implementation Examples-Query • Illustrate the following graph using the different implementations 4 a b 8 5 e 1 3 6 c 7 d 2
Comparing Implementations • Edge List • simplest but most inefficient • Adjacency List • many vertex operations are O(d) time where d is the degree of the vertex • Adjacency Matrix • adjacency test is O(1) • addition/removal of a vertex: resize 2D array
Graph Traversals • Traversal- A systematic procedure for exploring a graph by examining all of its vertices and edges • Consistency- rules to determine the order of visits (top-down, alphabetical,etc.)- make the path consistent with the actual graph (don’t change conventions)
Graph Traversals • Depth First Search (DFS) • visit a starting vertex s • recursively visit unvisited adjacent vertices • Breadth First Search (BFS) • visit starting vertex s • visit unvisited vertices adjacent to s, then visit unvisited vertices adjacent to them, and so on … (visit by levels)
DFS Traversal • Depth First Search- recursively visit (traverse) unvisited vertices • Dead End- reaching a vertex where all the incident edges go to a previously visited vertex • Back Track- If a dead-end vertex is reached, go to the previous vertex
Traversal Examples • DFS: a,b,c,d,h,e,f,g,l,k,j,i c b d a e g f h i j l k
DFS Traversal • Path of the DFS traversal- path=a,b,c,d,h- h is a dead end vertex- back track to d,c,b,a and go to another adjacent (unvisited) vertex -> e- path=a,e,f,g,k,j,i- i is a dead end vertex - back track to all the way back to a (also a dead end vertex) • finished
BFS Traversal • Visit adjacent vertices by levels • discovery edges- edges that lead to an unvisited vertex • cross edge- edges that lead to a previously visited vertex
Traversal Examples • BFS: a,b,e,i,c,f,j,d,g,k,h,l c b d a e g f h i j l k
DFS Algorithm Algorithm DFS(v) Input: Vertex v Output: Depends on the application mark v as visited; perform processing for each vertex w adjacent to v do if w is unmarked then DFS(w)
BFS Algorithm Algorithm BFS(s) Input: Starting vertex s Output: Depends on the application // traversal algorithm uses a queue Q // loop terminates when Q is empty
BFS Algorithm continued Q new Queue() mark s as visited and Q.enqueue(s) while not Q.isEmpty() v Q.dequeue() perform processing on v for each vertex w adjacent to v do if w is unmarked then mark w as visited and Q.enqueue(w)
Query • Let G be a graph whose vertices are the integers 1 through 8 and let the adjacent vertices of each vertex be given by the table below :Vertex Adjacent Vertices1 (2,3,4)2 (1,3,4)3 (1,2,4)4 (1,2,3,6)5 (6,7,8)6 (4,5,7) 7 (5,6,8)8 (5,7)
Query • Assume that in the traversal of G, the adjacent vertices of a given vertex are returned in the same order as they are listed in the above table: a) Draw G b) Give the sequence of vertices of G visited using a DFS traversal order starting at vertex 1 c) Give the sequence of vertices visited using a BFS traversal starting at vertex 1
Weighted Graphs • Graph G = (V,E) such that there are weights/costs associated with each edge • w((a,b)): cost of edge (a,b) • representation: matrix entries <-> costs a 20 35 e b 12 32 c 65 d
Problems on Weighted Graphs • Minimum-cost Spanning Tree • Given a weighted graph G, determine a spanning tree with minimum total edge cost • Single-source shortest paths • Given a weighted graph G and a source vertex v in G, determine the shortest paths from v to all other vertices in G • Path length: sum of all edges in path
Weighted Graphs-Concerns • Minimum Cost • Shortest Path
Weighted Graphs • Shortest Path- Dijkstra’s Algorithm • Minimum Spanning Trees- Kruskal’s Algorithm