Graph and Graph Algorithms
Basic Concepts
Directed Graph (Digraph) and Undirected Graph
Vertices (nodes)
Edges (arcs)
Directed Arc, head, tail, adjacent
Emanate and Incident
Out-degree and in-degree
Path, length of path
Successor and Predecessor
Simple path, cycle, loop and simple cycle
Directed Acyclic Graph (DAG)
A DAG is a directed graph that contains no cycles
Labeled Graph
Sparse Graph: |E|=O (|V|)
Dense Graph: |E|=Θ(|V|^2)
Representing Graphs
Adjacency Matrices Dense Graph
Adjacency Lists Sparse Graph
Comparison
Strongly Connected
Weakly Connected
Topological Order Traversal
Graph Traversals
Depth-First Traversal O (|V|)
Breadth-First Traversal O (|V|)
Topological Sort
A topological sort of the vertices of G is a sequence S={v1, v2, … ,v|V|}, in which each element of V appears exactly once. For every pair of distinct vertices if vi->vj is a edge in G, then i<j.
Repeat the following steps until the graph is empty:
1 Select a vertex that has in-degree zero
2 Add the vertex to the sort
3 Delete the vertex and all the edges emanating from it from the graph
Running Time: adjacency matrix: O(|V|^2) adjacency lists: O(|V|+|E|)
Applications: Testing for Cycles and Connectedness
Application 1: Connectedness of a undirected graph:
Graph Traversal, Adjacency matrix: O(|V|^2) adjacency lists: O(|V|+|E|)
Application 2: Testing Strong Connectedness
Graph Traversal starting from every vertexes in the graph
Adjacency matrix: O(|V|^3) adjacency lists: O(|V|^2+)+|V|*|E|)
Application 3: Testing for cycles in a directed graph
If the topological sorting stopped before all vertexes are sorted, there are cycles in the directed graph adjacency matrix: O(|V|^2) adjacency lists: O(|V|+|E|)
Shortest Path Algorithms
Single Source Shortest Path
Dijkstra Algorithm
1 the boolean valued flag indicated that the shortest path to vertex v is known
2 the length of the shortest known path to v
3 the predecessor of v on the shortest path
Adjacency matrix: O(|V|^2+|E|log|E|) adjacency lists: O(|V|+|E|log|E|)
All Pair Source Shortest Path
Floyd Algorithm
Assume that Vk={v1, v2,…,vk}, The Floyd algorithm compute the shortest path length Dk in Vk where Dk(vi, vj)=min(L(vi, vk0, vk1…vkm, vj)).
O(|V|^3)
Minimum Cost Spanning Tree
Prim Algorithm: Add minimum vertexes into the result
Adjacency matrix: O(|V|^2+|E|log|E|) adjacency lists: O(|V|+|E|log|E|)
Kruskal Algorithm: Add minimum edges into the result
A priority queue to hold the edges and a partition to detect cycles
Adjacency matrix: O(|V|^2+|E|log|E|+|E|log|V|) adjacency lists: O(|V|+|E|log|E|+|E|log|V|)
Critical Path Analysis
Critical activities must be completed on time--any delay affects the overall completion time. A critical path is a path in the event-node graph from the initial vertex to the final vertex comprised solely of critical activities.
1 Visit the vertexes in the graph in topological order to compute the earliest time
2 Visit the vertexes in the reverse topological order (postorder depth-first traversal) to compute the latest time.
3 Compute the slack time for each edge
4 find the shortest path from start to finish in the slack graph