+ All Categories
Home > Documents > Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights...

Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights...

Date post: 26-Mar-2015
Category:
Upload: hailey-greer
View: 226 times
Download: 0 times
Share this document with a friend
Popular Tags:
29
1 Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pear son Education, Inc. All rights reserved. 0132130807 Chapter 28 Weighted Graphs and Applications
Transcript
Page 1: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

1Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

Chapter 28 Weighted Graphs and Applications

Page 2: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

2Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

Weighted Graph Animationwww.cs.armstrong.edu/liang/animation/ShortestPathAnimation.html

Page 3: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

3Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

Weighted Graph Animationwww.cs.armstrong.edu/liang/animation/WeightedGraphLearningTool.html

Page 4: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

4Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

ObjectivesTo represent weighted edges using adjacency matrices and

priority queues (§28.2).To model weighted graphs using the WeightedGraph class

that extends the AbstractGraph class (§28.3).To design and implement the algorithm for finding a

minimum spanning tree (§28.4).To define the MST class that extends the Tree class

(§28.4).To design and implement the algorithm for finding single-

source shortest paths (§28.5).To define the ShortestPathTree class that extends the Tree

class (§28.5).To solve the weighted nine tail problem using the shortest

path algorithm (§28.6).

Page 5: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

5Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

Representing Weighted Graphs Representing Weighted Edges: Edge Array

Weighted Adjacency Matrices

Priority Adjacency Lists

Page 6: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

6Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

Representing Weighted Edges: Edge Array

int[][] edges = {{0, 1, 2}, {0, 3, 8}, {1, 0, 2}, {1, 2, 7}, {1, 3, 3}, {2, 1, 7}, {2, 3, 4}, {2, 4, 5}, {3, 0, 8}, {3, 1, 3}, {3, 2, 4}, {3, 4, 6}, {4, 2, 5}, {4, 3, 6}};

4 2

7

8 3

6

5

0

1 2

3 4

Page 7: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

7Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

Representing Weighted Edges: Edge Array

4 2

7

8 3

6

5

0

1 2

3 4

0

1

2

3 4

0 1 2 3 4

2

3

4

null 2 null 8 null

2 null 7 3 null

null 7 null 4 5

8 3 4 null 6

null null 5 6 null

Integer[][] adjacencyMatrix = {

{null, 2, null, 8, null },

{2, null, 7, 3, null },

{null, 7, null, 4, 5},

{8, 3, 4, null, 6},

{null, null, 5, 6, null}

};

Page 8: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

8Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

Priority Adjacency Lists

4 2

7

8 3

6

5

0

1 2

3 4

queues[0]

queues[1]

queues[2]

queues[3]

queues[4]

WeightedEdge(0, 1, 2) WeightedEdge(0, 3, 8)

WeightedEdge(1, 0, 2) WeightedEdge(1, 3, 3) WeightedEdge(1, 2, 7)

WeightedEdge(2, 3, 4) WeightedEdge(2, 4, 5) WeightedEdge(2, 1, 7)

WeightedEdge(3, 1, 3) WeightedEdge(3, 2, 4) WeightedEdge(3, 0, 8) WeightedEdge(3, 4, 6)

WeightedEdge(4, 2, 5) WeightedEdge(4, 3, 6)

Page 9: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

9Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

GraphGraph

TestWeightedGraphTestWeightedGraph

AbstractGraphAbstractGraph WeightedGraphWeightedGraph

TestWeightedGraphTestWeightedGraph

«interface» Graph<V>

AbstractGraph<V>

WeightedGraph<V>

-queues: java.util.PriorityQueue<WeightedEdge>[]

+WeightedGraph(edges: int[][], vertices: V[])

+WeightedGraph(edges: List<WeightedEdge>,

vertices: List<V>)

+WeightedGraph(edges: int[][], numberOfVertices: int)

+WeightedGraph(edges: List<WeightedEdge>, numberOfVertices: int)

+printWeightedEdges(): void

+getMinimumSpanningTree(): MST

+getMinimumSpanningTree(index: int): MST

+getShortestPath(index: int): ShortestPathTree

+getWeightedEdges(): java.util.PriorityQueue<WeightedEdge>[]

queues[i] is a priority queue that contains all the edges adjacent to vertex i.

Constructs a weighted graph with the specified edges and the number of vertices in arrays.

Constructs a weighted graph with the specified edges and the number of vertices.

Constructs a weighted graph with the specified edges in an array and the number of vertices.

Constructs a weighted graph with the specified edges in a list and the number of vertices.

Displays all edges and weights.

Returns a minimum spanning tree starting from vertex 0.

Returns a minimum spanning tree starting from vertex v.

Returns all single-source shortest paths.

Returns all weighted edges for each vertex in a priority queue.

Page 10: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

10Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

Minimum Spanning Trees A graph may have many spanning trees. Suppose that the edges are weighted. A minimum spanning tree is a spanning tree with the minimum total weights. For example, the trees in Figures 28.3(b), 28.3(c), 28.3(d) are spanning trees for the graph in Figure 28.3(a). The trees in Figures 28.3(c) and 28.3(d) are minimum spanning trees.

5 6

10

5

8

7

7

12

7

10

8

8

5

5

10

7 7 8

5

5

6

7

7 8

5

5

6

7 7 8

Page 11: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

11Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

Minimum Spanning Tree Algorithm minimumSpanningTree() {

Let V denote the set of vertices in the graph;

Let T be a set for the vertices in the spanning tree;

Initially, add the starting vertex to T;

while (size of T < n) {

find u in T and v in V – T with the smallest weight

on the edge (u, v), as shown in Figure 28.4;

add v to T;

}

}

Page 12: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

12Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

Minimum Spanning Tree Algorithm

u

v

T

V - T Vertices already in the spanning tree

Vertices not currently in the spanning tree

Page 13: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

13Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

Minimum Spanning Tree Algorithm Example

6

5 4

3

2

0

5 6

10

5

8

7

7

12

7

10

8

8

1

6

5 4

3

2

0

5 6

10

5

8

7

7

12

7

10

8

8

1

6

5 4

3

2

0

5 6

10

5

8

7

7

12

7

10

8

8

1

6

5 4

3

2

0

5 6

10

5

8

7

7

12

7

10

8

8

1

6

5 4

3

2

0

5 6

10

5

8

7

7

12

7

10

8

8

1

6

5 4

3

2

0

5 6

10

5

8

7

7

12

7

10

8

8

1

Page 14: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

14Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

Implementing MST Algorithm

AbstractGraph.Tree

WeightedGraph.MST

-totalWeight: int

+MST(root: int, parent: int[], totalWeight: int)

+getTotalWeight(): int

Total weight of the tree.

Constructs a MST with the specified root, parent array, and total weight for the tree.

Returns the totalWeight of the tree.

Page 15: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

15Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

Time Complexity

For each vertex, the program constructs a priority queue for its adjacent edges. It takes O(log|V|) time to insert an edge to a priority queue and the same time to remove an edge from the priority queue. So the overall time complexity for the program is O(|E|log|V|) , where |E| denotes the number of edges and |V| denotes the number of vertices.

Page 16: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

16Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

Test MST

TestMinimumSpanningTreeTestMinimumSpanningTreeTestMinimumSpanningTreeTestMinimumSpanningTree

Seattle

San Francisco

Los Angeles

Denver

Chicago

Kansas City

Houston

Boston

New York

Atlanta

Miami

661

888

1187

810

Dallas

1331

2097

1003 807

381

1015

1267

1663

1435

239

496

781

864

1260

983

787

214

533

599

1

2

3 4

6

7

8

9

10

11

5

Page 17: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

17Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

Shortest Path §27.1 introduced the problem of finding the shortest distance between two cities for the graph in Figure 13.1. The answer to this problem is to find a shortest path between two vertices in the graph.

Page 18: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

18Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

Single Source Shortest Path Algorithm shortestPath(s) {

Let V denote the set of vertices in the graph;

Let T be a set that contains the vertices whose

path to s have been found;

Initially T contains source vertex s;

while (size of T < n) {

find v in V – T with the smallest costs[u] + w(u, v) value

among all u in T;

add v to T;

}

}

Page 19: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

19Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

Single Source Shortest Path Algorithm

u

v

T

V - T

s

T contains vertices whose shortest path to s have been found

V- T contains vertices whose shortest path to s have not been found

Page 20: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

20Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

SP Algorithm Example

5 5

10

1

8

9

2

4

7

8

8

5

1

2

3

4

5

6

0

0 1 2 3 4 5 6

costs 0

0 1 2 3 4 5 6

parent -1

Page 21: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

21Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

SP Algorithm Example

5 5

10

1

8

9

2

4

7

8

8

5

1

2

3

4

5

6

0

0 1 2 3 4 5 6

costs 0 5

0 1 2 3 4 5 6

parent -1 1

Page 22: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

22Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

SP Algorithm Example

5 5

10

1

8

9

2

4

7

8

8

5

1

2

3

4

5

6

0

0 1 2 3 4 5 6

costs 6 0 5

0 1 2 3 4 5 6

parent 2 -1 1

Page 23: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

23Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

SP Algorithm Example

5 5

10

1

8

9

2

4

7

8

8

5

1

2

3

4

5

6

0

0 1 2 3 4 5 6

costs 6 0 5 8

0 1 2 3 4 5 6

parent 2 -1 1 0

Page 24: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

24Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

SP Algorithm Example

5 5

10

1

8

9

2

4

7

8

8

5

1

2

3

4

5

6

0

0 1 2 3 4 5 6

costs 6 0 5 10 8

0 1 2 3 4 5 6

parent 2 -1 1 1 0

Page 25: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

25Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

SP Algorithm Example

5 5

10

1

8

9

2

4

7

8

8

5

1

2

3

4

5

6

0

0 1 2 3 4 5 6

costs 6 0 5 10 15 10 8

0 1 2 3 4 5 6

parent 2 -1 1 1 5 0 0

Page 26: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

26Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

SP Algorithm Implementation

TestShortestPathTestShortestPathTestShortestPathTestShortestPath

AbstractGraph.Tree

WeightedGraph.ShortestPathTree

-costs: int[]

+ShortestPathTree(source: int, parent: int[], searchOrder: List<Integer>, costs: int[])

+getCost(v: int): int

+printAllPaths(): void

costs[v] stores the cost for the path from the source to v.

Constructs a shortest path tree with the specified source, parent array, and costs array.

Returns the cost for the path from the source to vertex v.

Displays all paths from the soruce.

Page 27: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

27Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

SP Algorithm Example

Seattle

San Francisco

Los Angeles

Denver

Chicago

Kansas City

Houston

Boston

New York

Atlanta

Miami

661

888

1187

810

Dallas

1331

2097

1003 807

381

1015

1267

1663

1435

239

496

781

864

1260

983

787

214

533

599 1

2

3

4

5

6

7

8

9

10

11

Page 28: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

28Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

Shortest Path Animation

www.cs.armstrong.edu/liang/animation/ShortestPathAnimation.html

Page 29: Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 Chapter 28 Weighted Graphs.

29Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807

The Weighted Nine Tail Problem The nine tail problem is to find the minimum number of the moves that lead to all coins face down. Each move flips a head coin and its neighbors. The weighted nine tail problem assigns the number of the flips as a weight on each move. For example, you can move from the coins in Figure 28(a) to Figure 28(b) by flipping the three coins. So the weight for this move is 3.

H T

T

T

H

H

H

H

H

T H

T

T

T

H

H

H

H

WeightedNineTailModelWeightedNineTailModel


Recommended