Data Structures Algorithms Graphs Richard Newman based on
Data Structures & Algorithms Graphs Richard Newman based on book by R. Sedgewick and slides by S. Sahni
Definitions G = (V, E) V is the vertex set Vertices are also called nodes E is the edge set Each edge connects two different vertices. • Edges are also called arcs • • •
Definitions • Directed edge has an orientation u v (u, v) • Undirected edge has no orientation {u, v} u v • Undirected graph => no oriented edge • Directed graph (a. k. a. digraph) => every edge has an orientation
(Undirected) Graph 2 3 8 1 10 4 5 6 9 7 11
Directed Graph 2 3 8 1 10 4 5 6 9 7 11
Application: Communication NW 2 3 8 1 10 4 5 6 9 11 7 Vertex = city, edge = communication link
Driving Distance/Time Map 2 4 3 8 8 1 6 2 10 4 4 4 5 9 5 6 6 5 3 11 7 7 Vertex = city edge weight = driving distance/time
Street Map 2 3 8 1 10 4 5 6 9 7 Some streets are one way. 11
Complete Undirected Graph Has all possible edges. n=1 n=2 n=3 Also known as clique n=4
Number Of Edges—Undirected Graph • Each edge is of the form (u, v), u != v • Number of such pairs in an n = |V| vertex graph is n(n-1) • Since edge (u, v) is the same as edge (v, u), the number of edges in a complete undirected graph is n(n-1)/2 • Number of edges in an undirected graph is |E| <= n(n-1)/2
Number Of Edges—Directed Graph • Each edge is of the form (u, v), u != v • Number of such pairs in an n = |V| vertex graph is n(n-1) • Since edge (u, v) is NOT the same as edge (v, u), the number of edges in a complete directed graph is n(n-1) • Number of edges in a directed graph is |E| <= n(n-1)
Vertex Degree 2 3 8 1 10 4 5 6 9 11 7 Number of edges incident to vertex. degree(2) = 2, degree(5) = 3, degree(3) = 1
Sum Of Vertex Degrees 8 10 9 11 Sum of degrees = 2 e (e is number of edges)
In-Degree Of A Vertex 2 3 8 1 10 4 5 6 9 11 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 6 9 11 7 out-degree is number of outbound edges outdegree(2) = 1, outdegree(8) = 2
Sum Of In- And Out-Degrees • each edge contributes 1 to the indegree of some vertex and 1 to the out-degree of some other vertex • sum of in-degrees = sum of outdegrees = e, • where e = |E| is the number of edges in the digraph
Sample Graph Problems • • • Path problems Connectedness problems Spanning tree problems Flow problems Coloring problems
Path Finding Path between 1 and 8 2 4 3 8 8 1 6 2 10 4 4 4 5 3 9 5 6 6 Path length is 20 7 7 11
Path Finding Another path between 1 and 8 2 4 3 8 8 1 6 2 10 4 4 4 5 3 9 5 6 6 Path length is 28 7 7 11
Path Finding No path between 1 and 10 2 4 3 8 8 1 6 2 10 4 4 4 5 3 9 5 6 6 7 7 11
Connected Graph • Undirected graph • There is a path between every pair of vertices
Example of Not Connected 2 4 3 8 8 1 6 2 10 4 4 4 5 3 9 5 6 6 7 7 11
Example of Connected 2 4 3 8 8 1 6 2 10 4 4 4 5 9 5 6 6 7 7 3 5 11
Connected Component • A maximal subgraph that is connected • Cannot add vertices and edges from original graph and retain connectedness • A connected graph has exactly 1 component
Connected Components 2 3 8 1 10 4 5 6 9 7 11
Communication Network 2 3 8 1 10 4 5 6 9 7 Each edge is a link that can be constructed (i. e. , a feasible link) 11
Communication Network Problems • Is the network connected? • Can we communicate between every pair of cities? • Find the components • Want to construct smallest number of feasible links so that resulting network is connected
Cycles And Connectedness 2 3 8 1 10 4 5 6 9 11 7 Removal of an edge that is on a cycle does not affect connectedness.
Cycles And Connectedness 2 3 8 1 10 4 5 6 9 11 7 Connected subgraph with all vertices and minimum number of edges has no cycles
Tree • Connected graph that has no cycles • n vertex connected graph with n-1 edges
Spanning Tree • Subgraph that includes all vertices of the original graph • Subgraph is a tree • If original graph has n vertices, the spanning tree has n vertices and n-1 edges
Minimum Cost Spanning Tree 2 4 3 8 8 1 6 2 10 4 4 4 5 5 9 6 2 6 5 8 3 11 7 7 Tree cost is sum of edge weights/costs
A Spanning Tree 2 4 3 8 8 1 6 2 10 4 4 4 5 5 9 6 2 6 5 7 7 Spanning tree cost = 51 8 3 11
Minimum Cost Spanning Tree 2 4 3 8 8 1 6 2 10 4 4 4 5 5 9 6 2 6 5 7 7 Spanning tree cost = 41. 8 3 11
A Wireless Broadcast Tree 2 4 3 8 8 1 6 2 10 4 4 4 5 5 9 6 2 6 5 8 3 11 7 7 Source = 1, weights = needed power. Cost = 4 + 8 + 5 + 6 + 7 + 8 + 3 = 41
Graph Representation • Adjacency Matrix • Adjacency Lists • Linked Adjacency Lists • Array Adjacency Lists
Adjacency Matrix • Binary (0/1) n x n matrix, • where n = # of vertices • A(i, j) = 1 iff (i, j) is an edge 2 3 1 4 5 1 2 3 4 5 1 0 1 0 2 1 0 0 0 1 3 0 0 1 4 1 0 0 0 1 5 0 1 1 1 0
Adjacency Matrix Properties 2 3 1 4 5 1 2 3 4 5 1 0 1 0 2 1 0 0 0 1 3 0 0 1 4 1 0 0 0 1 • Diagonal entries are zero • Adjacency matrix of an undirected graph is symmetric • A(i, j) = A(j, i) for all i and j 5 0 1 1 1 0
Adjacency Matrix (Digraph) 2 3 1 4 5 1 2 3 4 5 1 0 0 0 1 0 2 1 0 0 0 1 3 0 0 0 4 0 0 1 5 0 1 1 0 0 • Diagonal entries are zero • Adjacency matrix of a digraph need not be symmetric.
Adjacency Matrix • n 2 bits of space • For an undirected graph, may store only lower or upper triangle (exclude diagonal). • Space? (n-1)n/2 bits • Time to find vertex degree and/or vertices adjacent to a given vertex? O(n)
Adjacency Lists Adjacency list for vertex i is a linear list of vertices adjacent from vertex i Graph is an array of n adjacency lists a. List[1] = (2, 4) 2 3 a. List[2] = (1, 5) a. List[3] = (5) 1 a. List[4] = (5, 1) 4 5 a. List[5] = (2, 4, 3)
Linked Adjacency Lists Each adjacency list is a chain. a. List[1] [2] 3 [3] [4] a. List[5] 2 1 4 2 1 5 5 2 4 5 1 4 5 Array Length = n # of chain nodes = 2 e (undirected graph) # of chain nodes = e (digraph) 3
Array Adjacency Lists Each adjacency list is an array list 2 3 1 4 5 a. List[1] [2] [3] [4] a. List[5] 2 4 1 5 5 5 1 2 4 3 Array Length = n # of list elements = 2 e (undirected graph) # of list elements = e (digraph)
Weighted Graph Representations • Cost adjacency matrix • C(i, j) = cost of edge (i, j) • Adjacency lists • Each list element is a pair • (adjacent vertex, edge weight)
Paths • Simple Path • List of distinct vertices v 0, v 1, … , vn • Each pair of successive vertices is an edge in E (vi, vi+1) • Hamilton Path • Visit each node exactly once • Euler Path • Visit each edge exactly once
Bipartite Graph • Vertex set V can be partitioned into two disjoint subsets, V 0 and V 1 • No two vertices in Vi have an edge between them Complete bipartite graphs
Hamilton Path Does this graph have a Hamilton path? 2 3 8 1 10 4 5 6 Yes! 2 or 7 to 10 9 11 7 Very hard in general
Euler Path Does this graph have a Euler path? 2 3 8 1 10 4 5 6 Yes! 9 to 10 9 11 7 Very easy in general
Euler Path • Bridges of Königsberg • People wanted to walk over all bridges without crossing one twice So they asked Euler …
Euler Path • Bridges of Königsberg • People wanted to walk over all bridges without crossing one twice Does this graph have a Euler path?
Euler Path • Easy to determine existence • Graph must be connected • Degree of all nodes… • … must be even, except for two • A little work to find the path • But also efficient… • Find path between odd nodes • Add loops as encountered
Graph Problems • These two problems • Seem very similar • One is easy • The other is really hard! • Classify graph problems • Easy • Tractable • Intractable • Unknown
Easy Graph Problems • Simple, efficient algorithms exist • Linear or small polynomial time • Simple connectivity • Strong connectivity in digraphs • Transitive closure • Minimum spanning tree • Single-source shortest path (SSSP)
Tractable Graph Problems • Polynomial time algorithm is known… but … hard to make into a practical program • Planarity • Can graph be drawn without any lines representing edges intersecting? • Matching • Largest subset of edges where no two connect to same vertex • Even cycles in digraphs
Graph Planarity • Kuratowski’s theorem: For a graph to be non-planar It must contain (after removal of degree-2 nodes) a subgraph isomorphic to either 6 -node complete bipartite graph, or 5 -clique
More Tractable Graph Problems • Often tractable problems can be solved with general purpose algorithm through graph transformation • Assignment (network-flow) • Bipartite weighted matching – minimum weight perfect matching in bipartite graph • Edge-connectivity (network-flow) • What is minimum number of edges whose removal will partition graph? • Node-connectivity (network-flow)
More Tractable Graph Problems • Mail carrier problem • Tour with minimum number of edges that uses every edge at least once • Harder than Euler tour • Easier than Hamilton tour
Intractable Graph Problems • No known polynomial time algorithm • NP-hard complexity class • However, may be polynomial time to verify a solution (class NP) • Longest path (version of Hamilton Path) • What is the longest simple path in G? • Independent Set • Largest subset of vertices where no two have an edge between them
Intractable Graph Problems • Colorability • Assign k colors to vertices such that no edge connects two vertices of same color • Easy for k=2 (bipartite graph) • Only even length cycles • Hard for k=3! • Clique • What is largest complete subgraph? (What is relationship to Independent Set? )
Graph Coloring Can this graph be 2 -colored? No! Why not? Odd cycle! Can it be 3 -colored? Yes!
Graph Edge Coloring Color each edge so that no two edges of same color are adjacent to same vertex Chromatic Index = min # colors needed Vizing’s Theorem: CI is either max degree D or D+1 Yes! Can it be 4 -edge colored?
Graph Edge Coloring • Despite the narrow range of possibilities • This problem is still intractable!!!!! • There are polynomial time algorithms for bipartite graphs • Brings up larger issue: • Can we solve exactly hard problem for special case? • Can we “get close” for all cases? • How close is “close”?
Unknown Graph Problems • Graph Isomorphism • Are two graphs identical other than the names of their vertices? • Note that subgraph isomorphism is hard! • How do you know this already? • Clique problem!
Summary • Graph definitions, properties • Graph representations • Graph problems and classifications • Next: Graph Search, Digraphs, DAGs
- Slides: 64