Você está na página 1de 33

UNIT V

GRAPHS

Syllabus
Graph Terminology - Graph Traversal Topological sorting - Minimum spanning
tree Prims Kruskals - Network flow
problem Dijkstra shortest Path Algorithm
- Hashing Hash functions - Collision
avoidance Separate chaining - Open
addressing Linear probing Quadratic
Probing - Rehashing - Extensible Hashing

Network Flow Problems

Given a graph which represents a flow network


where every edge has a capacity. Also given two
vertices source s and sink t in the graph, find
the maximum possible flow from s to t with
following constraints:

a) Flow on an edge doesnt exceed the given


capacity of the edge.
b) Incoming flow is equal to outgoing flow for
every vertex except s and t.

Example

The objective is to find the maximum


possible flow from source to sink i.e.
from 0 to 5

Lets understand what is Augmented


Path

The idea behind the algorithm is as follows:


as long as there is a path from the source (start
node) to the sink (end node), with available
capacity on all edges in the path, we send flow
along one of the paths.
Then we find another path, and so on. A path with
available capacity is called an Augmenting Path

To find the maximum flow we use


Ford Fulkerson Algorithm

Ford--Fulkerson Algorithm
Ford
The following is simple idea of FordFulkerson algorithm:
1) Start with initial flow as 0.
2) While there is a augmenting path from
source to sink.
Add this path-flow to flow.
3) Return flow.

Ford--Fulkerson Max Flow


Ford
4

4
1

t
2

3
This is the original network,
and the original residual
network.

Ford--Fulkerson Max Flow


Ford
4

4
1

t
2

3
This is the original network,
plus reversals of the arcs.

Ford--Fulkerson Max Flow


Ford
4

4
1

t
2

3
Find any s-t path in G(x)

Ford--Fulkerson Max Flow


Ford
4

2
3

5
1

1
2

1
2/ 1

33/ 2

4
1/0

1
2

3
Determine the capacity D of the path.
Send D units of flow in the path.
Update residual capacities.

Ford--Fulkerson Max Flow


Ford
4

2
3

5
1

1
2

1
2/ 1

33/ 2

4
1/0

1
2

Ford--Fulkerson Max Flow


Ford
4

2
3

5
1

1
2

23

12

4
1

3
Find any s-t path

2 1

Ford--Fulkerson Max Flow


Ford
4

1
12

23

1
11

1
1

12 1
1

Determine the capacity D of the path.


Send D units of flow in the path.
Update residual capacities.

Ford--Fulkerson Max Flow


Ford
4

1
12

23

1
11

1
1

3
Find any s-t path

12 1
1

Ford--Fulkerson Max Flow


Ford
4

1
1

23

1
11

21
1

1 21
1

Determine the capacity D of the path.


Send D units of flow in the path.
Update residual capacities.

Ford--Fulkerson Max Flow


Ford
4

1
21

23

1
11

21
1

3
Find any s-t path

1 21
1

Ford--Fulkerson Max Flow


Ford
4

21

21

11

21
1

21

21

1
21

Determine the capacity D of the path.


Send D units of flow in the path.
Update residual capacities.

Ford--Fulkerson Max Flow


Ford
4

1
21

21

1
11

21
1

21

3
Find any s-t path

21
21

Ford--Fulkerson Max Flow


Ford
34

23

21

21

21

21

21

Determine the capacity D of the path.


Send D units of flow in the path.
Update residual capacities.

Ford--Fulkerson Max Flow


Ford
34

23

21

21

21

21

21

There is no s-t path in the residual


network. This flow is optimal

Ford--Fulkerson Max Flow


Ford
34

23

21

21

21

21

21

These are the nodes that are reachable


from node s.

Ford--Fulkerson Max Flow


Ford
1

1
2

t
2

3
Here is the optimal flow

Dijkstra Shortest Path Algorithm


Graph Initialization
We start with a weighted, directed graph with a
weight function w defined on its edges. We will
generally consider a distinguished vertex, called the
source, and usually denoted by s.

Relaxing an edge

Single source shortest Path


Algorithm

For Non-negative, Directed and weighted


graph

Example

Bi--connected Components
Bi

A biconnected component is a maximal biconnected subgraph.

Biconnected Graph: A biconnected graph is a connected graph on


two or more vertices having no articulation vertices .

A vertex in an undirected connected graph is an articulation point


(or cut vertex) iff removing it (and edges through it) disconnects the
graph.

To find biconnected component in a graph using


algorithm by John Hopcroft and Robert Tarjan
Tarjan..

Idea is to store visited edges in a stack while DFS on a graph


and keep looking for Articulation Points

As soon as an Articulation Point u is found, all edges visited


while DFS from node u onwards will form one biconnected
component.

When DFS completes for one connected component, all edges


present in stack will form a biconnected component.

If there is no Articulation Point in graph, then graph is


biconnected and so there will be one biconnected component
which is the graph itself.

In above graph, following are the biconnected


components for the graph
Articulation points are
A, B, G

Solve Worksheet 5 & 6

Thank You

Você também pode gostar