Slides Prepared by JOHN
LOUCKS
© 2000 South-Western College Publishing/ITP
Network Models
The Shortest-Route Problem
The Minimal Spanning Tree Problem
The Maximal Flow Problem
Shortest-Route Problem
The shortest-route problem is concerned with
finding the shortest path in a network from
one node (or set of nodes) to another node (or
set of nodes).
If all arcs in the network have nonnegative
values then a labeling algorithm can be used
to find the shortest paths from a particular
node to all other nodes in the network.
The criterion to be minimized in the shortest-
route problem is not limited to distance even
though the term "shortest" is used in
describing the procedure. Other criteria
include time and cost. (Neither time nor cost
are necessarily linearly related to distance.)
Shortest-Route Algorithm
Note: We use the notation [ ] to represent a permanent
label and ( ) to represent a tentative label.
Step 1: Assign node 1 the permanent label [0,S]. The
first number is the distance from node 1; the
second number is the preceding node. Since node 1
has no preceding node, it is labeled S for the starting
node.
Step 2: Compute tentative labels, (d,n), for the nodes
that can be reached directly from node 1. d = the
direct distance from node 1 to the node in
question -- this is called the distance value. n indicates
the preceding node on the route from node 1 -- this is
called the preceding node value.
Shortest-Route Algorithm
Step 3: Identify the tentatively labeled node with the
smallest distance value. Suppose it is node k. Node k is
now permanently labeled (using [ , ] brackets). If all
nodes are permanently labeled, GO TO STEP 5.
Step 4: Consider all nodes without permanent labels
that can be reached directly from the node k identified
in Step 3. For each, calculate the quantity t, where
t = (arc distance from node k to node i)
+ (distance value at node k).
Shortest-Route Algorithm
Step 4: (continued)
If the non-permanently labeled node has a tentative label,
compare t with the current distance value at the
tentatively labeled node in question.
If t < distance value of the tentatively labeled node,
replace the tentative label in question with (t,k).
If t > distance value of the tentatively labeled node, keep the
current tentative label.
If the non-permanently labeled node does not have a
tentative label, create a tentative label of (t,k) for the node
in question.
In either case, now GO TO STEP 3.
Shortest-Route Algorithm
Step 5: The permanent labels identify the shortest
distance from node 1 to each node as well as the
preceding node on the shortest route. The
shortest route to a given node can be found by working
backwards by starting at the given node and moving to
its preceding node. Continuing this procedure from the
preceding node will provide the shortest route from
node 1 to the node in question.
Example: Shortest Route
Find the Shortest Route From Node 1 to All Other Nodes
in the Network:
5
2 5
4 6
3
2
7 3
1 3 7
1
5 6 2
4 6
8
Example: Shortest Route
Iteration 1
Step 1: Assign Node 1 the permanent label [0,S].
Step 2: Since Nodes 2, 3, and 4 are directly connected to
Node 1, assign the tentative labels of (4,1) to Node 2; (7,1)
to Node 3; and (5,1) to Node 4.
Example: Shortest Route
(4,1)
Tentative Labels2 Shown 5 5
4 6
3
2
7 3
[0,S] 1 3 (7,1) 7
1
5 6 2
(5,1) 4 6
8
Example: Shortest Route
Iteration 1
Step 3: Node 2 is the tentatively labeled node
with the smallest distance (4) , and hence
becomes the new permanently labeled node.
Example: Shortest Route
[4,1]
5
Permanent Label
2 Shown 5
4 6
3 2
7 3
[0,S] 1 3 (7,1) 7
5 1 2
6
(5,1) 4 6
8
Example: Shortest Route
Iteration 1
Step 4: For each node with a tentative label
which is connected to Node 2 by just one arc,
compute the sum of its arc length plus the
distance value of Node 2 (which is 4).
Node 3: 3 + 4 = 7 (not smaller
than current label; do not change.)
Node 5: 5 + 4 = 9 (assign
tentative label to Node 5 of (9,2) since node 5
had no label.)
Example: Shortest Route
[4,1] (9,2)
5
Iteration 1, Step2 4 Results 5
4 6
3 2
7 3
[0,S] 1 3 (7,1) 7
5 1 2
6
(5,1) 4 6
8
Example: Shortest Route
Iteration 2
Step 3: Node 4 has the smallest tentative label distance (5).
It now becomes the new permanently labeled node.
Example: Shortest Route
[4,1] (9,2)
Iteration 2, Step 3 Results5
2 5
4 6
3 2
7 3
[0,S] 1 3 (6,4) 7
1
5 6 2
[5,1] 4 6
8
Example: Shortest Route
Iteration 2
Step 4: For each node with a tentative label
which is connected to node 4 by just one arc,
compute the sum of its arc length plus the
distance value of node 4 (which is 5).
Node 3: 1 + 5 = 6 (replace the
tentative label of node 3 by (6,4) since 6 < 7, the
current distance.)
Node 6: 8 + 5 = 13 (assign
tentative label to node 6 of (13,4) since node 6
had no label.)
Example: Shortest Route
Iteration 2, Step 4 Results
[4,1] (9,2)
5
2 5
4 6
3 2
7 3
[0,S] 1 3 (6,4) 7
1
5 6 2
[5,1] 4 6 (13,4)
8
Example: Shortest Route
Iteration 3
Step 3: Node 3 has the smallest tentative
distance label (6). It now becomes the new
permanently labeled node.
Example: Shortest Route
[4,1] (9,2)
Iteration 3, Step 3 Results5
2 5
4 6
3 2
7 3
[0,S] 1 3 [6,4] 7
1
5 6 2
[5,1] 4 6 (13,4)
8
Example: Shortest Route
Iteration 3
Step 4: For each node with a tentative label
which is connected to node 3 by just one arc,
compute the sum of its arc length plus the
distance to node 3 (which is 6).
Node 5: 2 + 6 = 8 (replace the
tentative label of node 5 with (8,3) since 8 < 9,
the current distance)
Node 6: 6 + 6 = 12 (replace the
tentative label of node 6 with (12,3) since 12 <
13, the current distance)
Example: Shortest Route
[4,1] (8,3)
Iteration 3, Step 4 5
Results
2 5
4 6
3
2
7 3
[0,S] 1 3 [6,4] 7
1
5 6 2
[5,1] 4 6 (12,3)
8
Example: Shortest Route
Iteration 4
Step 3: Node 5 has the smallest tentative label
distance (8). It now becomes the new
permanently labeled node.
Example: Shortest Route
[4,1] [8,3]
Iteration 4, Step 3 5
Results
2 5
4 6
3
2
7 3
[0,S] 1 3 [6,4] 7
1
5 6 2
[5,1] 4 6 (12,3)
8
Example: Shortest Route
Iteration 4
Step 4: For each node with a tentative label
which is connected to node 5 by just one arc,
compute the sum of its arc length plus the
distance value of node 5 (which is 8).
Node 6: 3 + 8 = 11 (Replace the
tentative label with (11,5) since 11 < 12, the
current distance.)
Node 7: 6 + 8 = 14 (Assign
Example: Shortest Route
[4,1] [8,3]
5
Iteration 4, Step 4 Results
2 5
4 6
3
2
7 3 (14,5)
[0,S] 1 3 [6,4] 7
1
5 6 2
[5,1] 4 6 (11,5)
8
Example: Shortest Route
Iteration 5
Step 3: Node 6 has the smallest tentative label
distance (11). It now becomes the new
permanently labeled node.
Example: Shortest Route
[4,1] [8,3]
5
Iteration 5, Step 3 Results
2 5
4 6
3
2
7 3 (14,5)
[0,S] 1 3 [6,4] 7
1
5 6 2
[5,1] 4 6 [11,5]
8
Example: Shortest Route
Iteration 5
Step 4: For each node with a tentative label
which is connected to Node 6 by just one arc,
compute the sum of its arc length plus the
distance value of Node 6 (which is 11).
Node 7: 2 + 11 = 13 (replace the
tentative label with (13,6) since 13 < 14, the
current distance.)
Example: Shortest Route
[4,1] [8,3]
5
Iteration 5, Step 4 Results
2 5
4 6
3
2
7 3 (13,6)
[0,S] 1 3 [6,4] 7
5 1 2
6
[5,1] 4 6 [11,5]
8
Example: Shortest Route
Iteration 6
Step 3: Node 7 becomes permanently labeled, and hence all
nodes are now permanently labeled. Thus proceed to
summarize in Step 5.
Step 5: Summarize by tracing the shortest routes backwards
through the permanent labels.
Example: Shortest Route
Solution Summary
Node Minimum Distance Shortest
Route
2 4 1-2
3 6 1-4-
3
4 5 1-4
5 8 1-4-
3-5
6 11 1-4-
3-5-6
Minimal Spanning Tree
Problem
A tree is a set of connected arcs that does not
form a cycle.
A spanning tree is a tree that connects all nodes
of a network.
The minimal spanning tree problem seeks to
determine the minimum sum of arc lengths
necessary to connect all nodes in a network.
The criterion to be minimized in the minimal
spanning tree problem is not limited to distance
even though the term "closest" is used in
describing the procedure. Other criteria include
time and cost. (Neither time nor cost are
necessarily linearly related to distance.)
Minimal Spanning Tree
Algorithm
Step 1: Arbitrarily begin at any node and connect
it to the closest node. The two nodes are referred
to as connected nodes, and the remaining
nodes are referred to as unconnected nodes.
Step 2: Identify the unconnected node that is
closest to one of the connected nodes (break ties
arbitrarily). Add this new node to the set of
connected nodes. Repeat this step until all nodes
have been connected.
Note: A problem with n nodes to be connected
will require n - 1 iterations of the above steps.
Example: Minimal
Spanning Tree
3 60
Find the Minimal
45 Spanning Tree: 9
20 30
50
1 45
4 6
40
40
30 35
5 15
25
7 20
10
2 35
30
25
50
8
Example: Minimal
Spanning Tree
Iteration 1: Arbitrarily selecting node 1, we see that its
closest node is node 2 (distance = 30). Therefore,
initially we have:
Connected nodes: 1,2
Unconnected nodes: 3,4,5,6,7,8,9,10
Chosen arcs: 1-2
Iteration 2: The closest unconnected node to a
connected node is node 5 (distance = 25 to node 2).
Node 5 becomes a connected node.
Connected nodes: 1,2,5
Unconnected nodes: 3,4,6,7,8,9,10
Chosen arcs: 1-2, 2-5
Example: Minimal
Spanning Tree
Iteration 3: The closest unconnected node to a
connected node is node 7 (distance = 15 to node 5).
Node 7 becomes a connected node.
Connected nodes: 1,2,5,7
Unconnected nodes: 3,4,6,8,9,10
Chosen arcs: 1-2, 2-5, 5-7
Iteration 4: The closest unconnected node to a
connected node is node 10 (distance = 20 to node 7).
Node 10 becomes a connected node.
Connected nodes: 1,2,5,7,10
Unconnected nodes: 3,4,6,8,9
Chosen arcs: 1-2, 2-5, 5-7, 7-10
Example: Minimal
Spanning Tree
Iteration 5: The closest unconnected node to a
connected node is node 8 (distance = 25 to node 10).
Node 8 becomes a connected node.
Connected nodes: 1,2,5,7,10,8
Unconnected nodes: 3,4,6,9
Chosen arcs: 1-2, 2-5, 5-7, 7-10, 10-8
Iteration 6: The closest unconnected node to a
connected node is node 6 (distance = 35 to node 10).
Node 6 becomes a connected node.
Connected nodes: 1,2,5,7,10,8,6
Unconnected nodes: 3,4,9
Chosen arcs: 1-2, 2-5, 5-7, 7-10, 10-8, 10-6
Example: Minimal
Spanning Tree
Iteration 7: The closest unconnected node to a
connected node is node 3 (distance = 20 to node 6).
Node 3 becomes a connected node.
Connected nodes: 1,2,5,7,10,8,6,3
Unconnected nodes: 4,9
Chosen arcs: 1-2, 2-5, 5-7, 7-10, 10-8, 10-6, 6-3
Iteration 8: The closest unconnected node to a
connected node is node 9 (distance = 30 to node 6).
Node 9 becomes a connected node.
Connected nodes: 1,2,5,7,10,8,6,3,9
Unconnected nodes: 4
Chosen arcs: 1-2, 2-5, 5-7, 7-10, 10-8, 10-6, 6-3, 6-9
Example: Minimal
Spanning Tree
Iteration 9: The only remaining unconnected
node is node 4. It is closest to connected node
6 (distance = 45).
Thus, the minimal spanning tree (displayed on
the next slide) consists of:
Arcs: 1-2, 2-5, 5-7, 7-10, 10-8, 10-6, 6-3,
6-9, 6-4
Values: 30 + 25 + 15 + 20 + 25 + 35 +
20 + 30 + 45
= 245
Example: Minimal
Spanning Tree
3 60
Optimal Spanning
45 Tree 9
20 30
50
1 45
4 6
40
40
35
30
5
15
25
7 20
10
2 35
30
50 25
8
Maximal Flow Problem
The maximal flow problem is concerned with
determining the maximal volume of flow from
one node (called the source) to another node
(called the sink).
In the maximal flow problem, each arc has a
maximum arc flow capacity which limits the
flow through the arc.
It is possible that an arc, (i,j), may have a
different flow capacity from i to j than from j to
i.
Maximal Flow Algorithm
Step 1: Find any path from the source node to the
sink node that has positive flow capacities (in the
direction of the flow) for all arcs on the path. If no
path is available, then the optimal solution has been
found.
Step 2: Find the smallest arc capacity, Pf , on the path
selected in Step 1. Increase the flow through the
network by sending the amount, Pf , over this path.
Step 3: For the path selected in Step 1 reduce all arc
flow capacities in the direction of the flow by Pf and
increase all arc flows in the opposite direction of the
flow by Pf . Go to Step 1.
Maximal Flow Algorithm
NOTE:
Students often ask if it is necessary to
increase the arc flow capacities in the opposite
direction of the flow (latter part of step 3), since
it appears to be a wasted effort. The answer is
YES, it is necessary.
This creation of fictitious capacity allows
us to alter a previous flow assignment if we
need to. Otherwise, we might have to
terminate the algorithm before reaching an
optimal solution.
Example: Maximal Flow
Find the maximal flow3 from node
3 1 to node 7 in
2 5
the following 0network:
2 4 2
4 3 3 0
4 0 3 0
1 4 7
3 5 1 0
0 3 1 5
6 0
3 6
Example: Maximal Flow
Iteration 1
Step 1: Find a path from the source node, 1, to the sink node,
7, that has flow capacities greater than zero on all arcs of the
path. One such path is 1-2-5-7.
Step 2: The smallest arc flow capacity on the path 1-2-5-7 is
the minimum of {4, 3, 2} = 2.
Step 3: Reduce all arc flows in the direction of the flow by 2
on this path and increase all arc flows in the reverse direction
by 2:
(1-2) 4 - 2 = 2 (2-1) 0 + 2 = 2
(2-5) 3 - 2 = 1 (5-2) 3 + 2 = 5
(5-7) 2 - 2 = 0 (7-5) 0 + 2 = 2
Example: Maximal Flow
1 5
2
Iteration 1 Results
5
2 0
2 4
2 3 3 2
4 0 3 0
1 4 7
3 5 1
0
3 1 5
0
6 0
3 6
Example: Maximal Flow
Iteration 2
Step 1: Path 1-4-7 has flow capacity greater than zero
on all arcs.
Step 2: The minimum arc flow capacity on 1-4-7 is 3.
Step 3: Reduce the arc flow capacities on the path in
the direction of the flow by 3, and increase these
capacities in the reverse direction by 3:
(1-4) 4 - 3 = 1 (4-1) 0 + 3 = 3
(4-7) 3 - 3 = 0 (7-4) 0 + 3 = 3
Example: Maximal Flow
1 5
2
Iteration 2 Results 5
2 0
2 4
2 3 3 2
1 3 0 3
1 4 7
3 5 1 0
0 3 1 5
6 0
3 6
Example: Maximal Flow
Iteration 3
Step 1: Path 1-3-4-6-7 has flow capacity greater than
zero on all arcs.
Step 2: The minimum arc capacity on 1-3-4-6-7 is 1.
Step 3: Reduce the arc capacities on the path in the
direction of the flow by 1 and increase the arc
capacities in the reverse direction of the flow by 1:
(1-3) 3 - 1 = 2 (3-1) 0 + 1 = 1
(3-4) 3 - 1 = 2 (4-3) 5 + 1 = 6
(4-6) 1 - 1 = 0 (6-4) 1 + 1 = 2
(6-7) 5 - 1 = 4 (7-6) 0 + 1 = 1
Example: Maximal Flow
1 5
2 5
Iteration 3 Results 2 0
2 4
2 3 3 2
1 3 0 3
1 4 7
2 6 0 1
2 2 4
1
6 0
3 6
Example: Maximal Flow
Iteration 4
Step 1: Path 1-3-6-7 has flow capacity greater than
zero on all arcs.
Step 2: The minimum arc capacity on 1-3-6-7 is 2.
Step 3: Reduce all arc flow capacities on the path in
the direction of the flow by 2 and increase the arc flow
capacities in the reverse direction by 2:
(1-3) 2 - 2 = 0 (3-1) 1 + 2 = 3
(3-6) 6 - 2 = 4 (6-3) 0 + 2 = 2
(6-7) 4 - 2 = 2 (7-6) 1 + 2 = 3
Example: Maximal Flow
1 5
2
Iteration 4 Results 5
2 2 4 0
2 3 3 2
1 3 0 3
1 4 7
0 6 0 3
3 2 2 2
4 2
3 6
Example: Maximal Flow
Iteration 5
Step 1: Using the shortest route algorithm, the shortest route
from node 1 to node 7 is 1-2-4-3-6-7.
Step 2: The smallest arc capacity on 1-2-4-3-6-7 is 2.
Step 3: Reduce the arc flow capacities on the path in the
direction of the flow by 2 and increase these capacities in the
reverse direction of the flow by 2:
(1-2) 2 - 2 = 0 (2-1) 2 + 2 = 4
(2-4) 2 - 2 = 0 (4-2) 3 + 2 = 5
(4-3) 6 - 2 = 4 (3-4) 2 + 2 = 4
(3-6) 4 - 2 = 2 (6-3) 2 + 2 = 4
(6-7) 2 - 2 = 0 (7-6) 3 + 2 = 5
Example: Maximal Flow
Note:
Arc 3-4 is a case where in iteration 3
flow of 1 unit was directed from node 3 to node
4. In iteration 5 flow of 2 units was directed
from node 4 to node 3. By subtracting the
assigned flow from the capacity of the
"sending" end of the arc and adding it to the
"receiving" end of the arc, the net effect of the
oppositely directed flow assignments is readily
known.
Example: Maximal Flow
1 5
2
Iteration 5 Results 5
4 0 0
4
0 5 3 2
1 3 0 3
1 4 7
0 4 0
5
3 4 2
0
2 4
3 6
Example: Maximal Flow
Note
There are no arcs with positive flow into
the sink node 7. Thus, the maximal possible
flow from node 1 to node 7 has been found. To
identify the maximal flow amount and how it is
to be achieved (directed), compare the original
capacities with the adjusted capacities of each
arc in both directions. If the adjusted capacity
is less than the original capacity, the difference
represents the flow amount for that arc.
Example: Maximal Flow
2
2
Solution Summary 5
1 2
3
4 3
4 7
1
1 1
3 5
3 6
4
The End of Chapter 9