Top Banner
GRAPH ALGORITHM Nattee Niparnan
28

Nattee Niparnan. Graph A pair G = (V,E) V = set of vertices (node) E = set of edges (pairs of vertices) V = (1,2,3,4,5,6,7) E = ((1,2),(2,3),(3,5),(1,4),(4,

Dec 29, 2015

Download

Documents

Arleen Adams
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

GRAPH ALGORITHMNattee Niparnan

Page 2: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Graph

A pair G = (V,E) V = set of vertices

(node) E = set of edges

(pairs of vertices)

V = (1,2,3,4,5,6,7) E = ((1,2),(2,3),(3,5),

(1,4),(4,5),(6,7))

1

2

3

45

67

Page 3: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Term you should already know

directed, undirected graph Weighted graph Bipartite graph Tree

Spanning tree Path, simple path Circuit, simple circuit Degree

Page 4: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Representing a Graph

Adjacency Matrix A = |V|x|V| matrix

axy = 1 when there is an edge connecting node x and node y

axy = 0 otherwise

1

2

3

45

0 1 0 1 0

1 0 1 1 0

0 1 0 0 1

1 1 0 0 1

0 0 1 1 0

1 2 3 4 5

123

45

Page 5: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Representing a Graph

Adjacency List Use a list instead of a matrix For each vertex, we have a linked list of

their neighbor

1

2

3

45

1 2 4

2 1 3 4

. . .

Page 6: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Representing a Graph

Incidences Matrix Row represent edge Column represent node

1

2

3

45

1 1 0 0 0

1 0 0 1 0

0 1 0 1 0

0 1 1 0 0

0 0 1 0 1

0 0 0 1 1

1 2 3 4 5

Page 7: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Exploring a Maze

Page 8: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Exploring Problem

Input: A Graph

Maybe as an adjacency matrix A Starting node v

Output: List of node reachable from v

Maybe as an array indexed by a node

Page 9: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Depth-First-Search

procedure explore(G; v)// Input: G = (V;E) is a graph; v V// Output: visited(u) is set to true for all nodes u reachable from v{ visited(v) = true previsit(v) for each edge (v,u) E if not visited(u)

explore(u) postvisit(v)}

Page 10: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Example

Explore(A)

Page 11: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Extend to Graph Traversal

Traversal is walking in the graph We might need to visit each component

in the graph Can be done using explore

Do “explore” on all non-visited node The result is that we will visit every node

What is the difference between just looking into V (the set of vertices?)

Page 12: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Graph Traversal using DFS

procedure dfs(G){

for all v V visited(v) = falsefor all v V if not visited(v)

explore(v)}

Page 13: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Complexity Analysis

Each node is visited once Each edge is visited twice

Why?

O( |V| + |E|)

Page 14: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Another Example

Page 15: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Another Example

Page 16: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Connectivity in Undirected Graph

If A can reach B Then B can reach A

If A can reach B && B can reach C Then A can reach C

Also C can reach A

Divide V into smaller subset of vertices that can reach each other

Page 17: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Connected Component Problem Input:

A graph Output:

Marking in every vertices identify the connected component Let it be an array ccnum, indexed by

vertices

Page 18: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Solution

Define global variable cc

In previsit() ccnum[v] = cc

Before calling each explore cc++

Page 19: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Ordering in Visit

procedure previsit(v)pre[v] = clockclock = clock + 1

procedure postvisit(v)post[v] = clockclock = clock + 1

Page 20: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Ordering in Visit

•The interval for node u is [pre(u),post(u)]•The inverval for u,v is either• Contained • disjointed• Never intersect

Page 21: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

DFS in Directed Graph

Page 22: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Type of Edge in Directed Graph

Page 23: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Directed Acyclic Graph (DAG)

A directed Graph without a cycle Has “source”

A node having only “out” edge Has “sink”

A node having only “in” edge

How can we detect that a graph is a DAG What should be the property of “source” and

“sink” ?

Page 24: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Solution

A directed graph is acyclic if and only if it has no back edge

Sink Having lowest post number

Source Having highest post number

Page 25: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Linearization of Graph

for DAG, we can have an ordering of node

Think of an edge as Causality Time-dependency

AB means A has to be done before B

Linearization ordering of node by causality

Page 26: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Linearization

One possible linearizationB,A,D,C,E,F

Order of work that can be done w/o violating the causality constraints

Page 27: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Topological Sorting Problem

Input: A DAG (non-dag cannot be linearized)

Output: A sequence of vertices

If we have a path from A to B A must come before B in the sequence

Page 28: Nattee Niparnan. Graph  A pair G = (V,E)  V = set of vertices (node)  E = set of edges (pairs of vertices)  V = (1,2,3,4,5,6,7)  E = ((1,2),(2,3),(3,5),(1,4),(4,

Topological Sorting

Do DFS List node by post number

(descending)

1,12

2,9

3,8 4,5

6,7

10,11