graph introduction , searching
DESCRIPTION
Graph Introduction , Searching. Graph Theory Basics. - Anil Kishore. Graph. A collections of objects and pair wise relations between them A mathematical structure Objects are called Vertices ( or Nodes ) Relationship is shown using Edges. Graph. 2. 5. 1. 4. 6. 3. - PowerPoint PPT PresentationTRANSCRIPT
Graph Introduction , Searching
Graph Theory Basics
- Anil Kishore
Graph
• A collections of objects and pair wise relations between them
• A mathematical structure• Objects are called Vertices ( or Nodes )• Relationship is shown using Edges
Graph
1
6
5
4
3
2
Vertex Set V = { 1, 2, 3, 4, 5, 6}
Edge Set E = { 12, 14, 34, 45, 46, 25, 56 }
We use N and M for the corresponding sizes|V| = N , |E| = M
Storing a Graph
• How to store a Graph ? The two popular representations are– Adjacency Matrix• N x N matrix A of 0s and 1s
– Adjacency List• A list of neighbors for each of the vertices
Adjacency Matrix
1
6
5
4
3
2
1 2 3 4 5 61 1 1 0 1 0 0
2 1 1 0 0 1 0
3 0 0 1 1 0 0
4 1 0 1 1 1 1
5 0 1 0 1 1 1
6 0 0 0 1 1 1
A
A[u][v] = 1, if vertex u and vertex v are adjacent
= 0, otherwise
Space : O(N2)
Symmetric Matrix
Adjacency List
1
6
5
4
3
2
1 : { 2, 4 }2 : { 1, 5 }3 : { 4 }4 : { 1, 3, 5, 6 }5 : { 2, 4, 6 }6 : { 4, 5 }
Space : O(N+2M)
Vertex u : list of all neighbors of u
Directions and Weights
1
6
5
4
3
2
1
6
5
4
3
23
2
6
4
7
51
• Edges and Vertices can have weight e.g.: length of the road, toll gate charge in a city.
• Edges can have direction ( like one-way roads )
Path, Cycle
• A Path of length n-1 is a sequence of vertices u1, u2, … , un such that vertices ui and ui+1 are adjacento e.g. 1 – 2 – 5 – 4 – 3 is a path
1
6
5
4
3
2
• A Cycle of length n is a sequence of vertices u1, u2, … , un such that vertices ui and ui+1 are adjacent and also u1 and un adjacento e.g. 1 – 2 – 5 – 4 is a cycle
Power of Adjacency Matrix
• Number of paths ( possibly cyclic ) of length K from u to v
F(u, v, K) = Sum of ( F(u, w, k-1) * F(w, v, 1) ) ( for all possible intermediate vertices w )
This is similar to the only computation step in Matrix Multiplication
• Note that F(u, v, 1) = A[u][v]
• AK[u][v] = Number of paths of length exactly Kfrom u to v
Connected, Tree, Complete
• A graph is said to be connected if there exists a path between all pairs of vertices– How many minimum edges we need to make a n vertices
graph connected ?– Cycles introduce redundant edges
• A Tree is a connected graph with out cycles ( acyclic )– A tree on n vertices has exactly (n-1) edges
• A Complete Graph has all possible edges present in it– A complete on n vertices (Kn) has nC2 edges
Traversing a graph
• Visit all the vertices in the graph in a particular order– Depth-first Search (DFS)• visit child nodes before visiting sibling nodes
– Breadth-first Search (BFS)• visit sibling nodes before visiting child nodes
Depth-first Searchalgorithm DFS( u )
// start time of uMark u as ‘visited’FOR each node v Adj.List(∈ u)
IF NOT visited(v) THENpar[v] := uDFS(v)
ENDIFENDFOR//end time of u
END-DFS
• Visit an unvisited neighbor, thus recursively traverse along depth of the graph
• par[v] denotes the first preceding vertex from which vertex v was visited, and defines a DFS tree
• Applications :• Checking connectivity• Finding Connected
Components• Topological ordering
many more…
DFS
1
6
5
4
3
2
DFS
1
6
5
4
3
2
DFS
1
6
5
4
3
2
DFS
1
6
5
4
3
2
DFS
1
6
5
4
3
2
DFS
1
6
5
4
3
2
DFS
1
6
5
4
3
2
DFS
1
6
5
4
3
2
DFS
1
6
5
4
3
2
DFS
1
6
5
4
3
2
DFS
1
6
5
4
3
2
DFS
1
6
5
4
3
2
DFS
1
6
5
4
3
2
DFS TREE
DFS
• Recursive algorithm• The active nodes in the recursion are Pushed
and Popped, similar to a Stack• Instead of recursion, can implement using a
Stack data structure
• Complexity : O( N + M )
Breadth-first Searchalgorithm BFS( s )
Mark all vertices u ‘unvisited’Create an empty queue QEnQueue(s, Q)mask s as ‘visited’WHILE NOT Empty(Q) DO
u := DeQueue(Q)FOR each v Adj.List(∈ u) DO IF NOT visited(v)
EnQueue(v, Q)mask v as ‘visited’
ENDFORENDWHILE
End-BFS
• Visit the vertices in the order encountered
• Vertices nearer to s are processed before farther ones
• Applications :• Checking connectivity• Finding Connected
Components• Shortest path in
unweighted graphsmany more…
BFS
1
6
5
4
3
2
Q :
BFS
1
6
5
4
3
2
Q : 1
BFS
1
6
5
4
3
2
Q : u = 1
BFS
1
6
5
4
3
2
Q : 2, 4u = 1
BFS
1
6
5
4
3
2
Q : 4u = 2
BFS
1
6
5
4
3
2
Q : 4, 5u = 2
BFS
1
6
5
4
3
2
Q : 5u = 4
BFS
1
6
5
4
3
2
Q : 5, 3, 6u = 4
BFS
1
6
5
4
3
2
Q : 3, 6u = 5
BFS
1
6
5
4
3
2
Q : 6u = 3
BFS
1
6
5
4
3
2
Q : u = 6
BFS
1
6
5
4
3
20
12
• Visit the nodes level by level ( level order traversal )• All nodes at level k are the ones with shortest path to s equals to k• Complexity : O( N + M )
s
References
• Introduction to Algorithms– Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein
• www.derekroconnor.net/home/MMS406/
- End -