analysis of algorithms...contents (l14 – review shortest path algorithms) weighted graph shortest...

66
アルゴリズムの設計と解析 潤和、佐藤 温(TA2013.4

Upload: others

Post on 16-Oct-2020

17 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

アルゴリズムの設計と解析

黄 潤和、佐藤 温(TA) 2013.4~

Page 2: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm

All-pairs shortest paths algorithms Matrix-based algorithms

Matrix-multiplication algorithm Floyd-Warshall algorithm

Minimal spanning tree Prim’s algorithm Kruskal’s algorithm

Travel salesman problem

2

Page 3: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

3

Weighted Graph 重み付きグラフ

In a weighted graph, each edge has an associated numerical value, called the weight of the edge 重み付きグラフでは、各枝に重みと呼ばれる数値をもっている。 Edge weights may represent, distances, costs, etc. 枝の重みは距離やコストなどを表している。 Example: In a flight route graph, the weight of an edge represents the distance in

miles between the endpoint airports:各空港間の距離(マイル)

ORD PVD

MIA DFW

SFO

LAX

LGA

HNL

Page 4: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

4

Shortest Path Problem 最短経路問題

Given a weighted graph and two vertices u and v, we want to find a path of minimum total weight between u and v 二つの頂点uとvからの重みの合計が最小となる経路を考える Applications Flight reservations(飛行機予約) Driving directions(ナビ、道案内) Internet packet routing (インターネットパケットルーチン)

Example: Shortest path between Providence and Honolulu(プロビデンスーホノルル間)

ORD PVD

MIA DFW

SFO

LAX

LGA

HNL

Page 5: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

5

Shortest Path Properties 最短経路の特徴

Property 1: A subpath of a shortest path is itself a shortest path

最短経路の部分経路はそれ自体が最短経路である Property 2: There is a tree of shortest paths from a start vertex to all the other

vertices スタート地点から全ての点への最短経路の木 Example: Tree of shortest paths from Providence プロビデンスからの最短経路の木

ORD PVD

MIA DFW

SFO

LAX

LGA

HNL

Page 6: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

6

Problem: From a given source vertex s ∈ V, find the shortest-path weights δ(s, v) for all v ∈ V. If all edge weights w(u, v) are nonnegative, all shortest-path weights must exist. IDEA: Greedy. 1.Maintain a set S of vertices whose shortest-path

distances from s are known. 2.At each step add to S the vertex v ∈ V – S whose

distance estimate from s is minimal. 3.Update the distance estimates of vertices adjacent to v.

Single-source shortest paths Problem

Page 7: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

7

Regarding Dijkstra’s Algorithm (1) compute the distances of all the vertices from a given start vertex s ダイクストラのアルゴリズムは スタート地点sから全ての頂点へ の距離を計算する。 (2) grow a “cloud” of vertices, beginning with s and eventually covering all the vertices 頂点のクラウド(雲)をスタート地点から始め、徐々にすべての頂点へと広げていく。

(3) store each vertex v a label d(v) representing the distance of v from s in the subgraph consisting of the cloud and its adjacent vertices クラウド内のサブグラフとその隣接点はそれぞれスタート地点s からの距離を表すラベルd(v) を持っている。 (4) The distance of a vertex v from a vertex s is the length of a shortest path between s and v 頂点sからvへの最短経路の長さを距離とする

Work in class: Please your version of Dijkstra’s algorithm (擬似コード)

Page 8: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Dijkstra’s Algorithm (pseudo code)

8

Work in class: Please make comments to the algorithm

Page 9: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

9

Example

C B

A

E

D

F

0

4 2 8

∞ ∞

4 8

7 1

2 5

2

3 9

C B

A

E

D

F

0

3 2 8

5 11

4 8

7 1

2 5

2

3 9

C B

A

E

D

F

0

3 2 8

5 8

4 8

7 1

2 5

2

3 9

C B

A

E

D

F

0

3 2 7

5 8

4 8

7 1

2 5

2

3 9

Page 10: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

10

Example (cont.)

C B

A

E

D

F

0

3 2 7

5 8

4 8

7 1

2 5

2

3 9

C B

A

E

D

F

0

3 2 7

5 8

4 8

7 1

2 5

2

3 9

Page 11: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

11

Dijkstra’s algorithm in Java http://www.algolist.com/code/java/Dijkstra's_algorithm

poll() メソッドは、キューの先頭を削除および返します

Page 12: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Exercises 9-2

12

Exercises 9-1

Please add comments to the Dijkstra’s algorithm in Java. (source_code)

ダイクストラアルゴリズムを用いてグラフGのノードuを根とする最短経路木を見つけなさい。アルゴリズムの各段階において各頂点の重みと名前を記すこと。

プレゼンター
プレゼンテーションのノート
Page 13: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

13

• General (including negative weight) � Input: Digraph G = (V, E), where V = {1, 2, …, n}, with edge-weight function w : E → R. Output: n × n matrix of shortest-path lengths δ(i, j) for all i, j ∈ V. • Time Complexity?

• Single source shortest paths in general � Bellman-Ford: O(VE)

• all-pairs shortest paths? • IDEA: • Run Bellman-Ford once from each vertex. • Time = O(V2E).

All-pairs shortest paths using Bellman-Ford

Page 14: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

14

All-pairs shortest path problem description

Page 15: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

15

Proof of Claim

Notice that

Page 16: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

16

Compute matrix multiplication (1)

?

similar?

Page 17: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

17

Compute matrix multiplication (2)

Is it good?

n times of matrix multiplication, right?

?

Page 18: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

18

Review D&C algorithm for multiplication

Improved multiplication

Page 19: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

19

How to detect negative-weight cycle?

the diagonal: its value is 0, ? its is negative value, ?

negative-weight cycle

Page 20: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

20

dynamic programming is a method for solving complex problems by breaking them down into simpler sub-problems. It is applicable to problems exhibiting the properties of overlapping sub-problems which are only slightly smaller and optimal substructure (described below). When applicable, the method takes far less time than naive methods. e. g. Recursive algorithm Divide and conquer Dijkstra algorithm

Floyd-Warshall algorithm Also dynamic programming, but faster!

Page 21: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

21

Input representation: We assume that we have a weight matrix W= (wij) (i,j) in E wij= 0 if i=j wij= w(i,j) if i≠j and (i,j) in E (has edge from i to j)

wij= ∞ if i≠j and (i,j) not in E (no edge from i to j)

Input and output

By Andreas Klappenecker

Output representation: If the graph has n vertices, we return a distance matrix (dij), Where, dij the length of the path from i to j.

Page 22: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Intermediate Vertices Without loss of generality, we will assume that V={1,2,…,n}, i.e., that the vertices of the graph are numbered from 1 to n. Given a path p=(v1, v2,…, vm) in the graph, we will call the vertices vk with index k in {2,…,m-1} the intermediate vertices of p.

22

Page 23: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Key Definition The key to the Floyd-Warshall algorithm is the following definition: Let dij

(k) denote the length of the shortest path from i to j such that all intermediate vertices are contained in the set {1,…,k}. We have the following remark

23

dij(1) dij

(2) dij(k) dij

(…)

Thus, the shortest path δ(i, j) = dij

(n) Also, dij

(0) = aij .

Page 24: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

The Floyd-Warshall Algorithm Floyd-Warshall(W) n = # of rows of W; D(0) = W; for k = 1 to n do for i = 1 to n do for j = 1 to n do dij

(k) = min{dij(k-1) , dik

(k-1) + dkj(k-1)};

end-do; end-do; end-do; return D(n);

24

By Andreas Klappenecker

do if dij(k-1)>dik

(k-1)+djk(k-1)

then dij

(k-1)dij dik(k-1)+djk

(k-1)

relaxation

Page 25: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Time and Space Requirements • The running time is obviously O(n3). • However, in this version, the space

requirements are high. • One can reduce the space from O(n3) to

O(n2) by using a single array d.

25 By Andreas Klappenecker

Page 26: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

26

Page 27: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

27

Exercises 10

EX 10.2 Please add source code for printing out the resulting matrix (printDK(int k)) to the Floyd-Warshall Algorithm in Java (in my homepage). Ex10.3 Read the following text http://homepage3.nifty.com/asagaya_avenue/trial/discussion/nishikawa_net.pdf

EX 10.1 What does the matrix below used in the shortest-paths algorithms correspond to in regular matrix multiplication? What do the symbols, 0 and ∞, stand for?

Page 28: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

What are spanning trees?

28

Page 29: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Spanning trees from BFS and DFS

They are not same!

Page 30: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

From SSSP to MST

30

(From Dijkstra’s to Prim’s algorithms) Change Dijkstra’s algorithm’s (selecting a shortest path) minDistance(f) + length(f,n)

to keeps adding smallest edge to expand its path

目的:shortest path

目的:minimal edges

Q4. How about their results? Are their results same?

Page 31: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

31

An example

Page 32: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Prim’s algorithm

32

{ T = φ; U = { 1 }; while (U≠V) { let (u, v) be the lowest cost edge such that u∈U and v∈V - U; T = T ∪{(u, v)} U = U ∪{v} } }

Complexity = O(|E|log(|E|))

http://www.deqnotes.net/acmicpc/prim/ Reference in Japanese

Page 33: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

33

C B

A

E

D

F

0

4 2 8

∞ ∞

4 8

7 1

2 5

2

3 9

C B

A

E

D

F

0

3 2 7

5 8

4 8

7 1

2 5

2

3 9 by Dijkstra

C B

A

E

D

F

0

4 2 8

∞ ∞

4 8

7 1

2 5

2

3 9

by Prim’s

The results are the same.

Page 34: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Q4. Which is the minimal spanning tree? (what differences?)

34

Dijkstra Prim’s

Page 35: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

35

Work in class: draw the result of Prim’s algorithm

Page 36: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

36

Page 37: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

37

Kruskal's algorithm (basic part)

(Sort the edges in an increasing order) A:={} while E is not empty do { take an edge (u, v) that is shortest in E and delete it from E if u and v are in different components then add (u, v) to A }

Page 38: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Kruskal’s v. s. Prim’s algorithms

38

• In Kruskal's algorithm, – The set A is a forest. – The safe edge added to A is always a

least-weight edge in the graph that connects two distinct components.

• In Prim's algorithm, – The set A forms a single tree. – The safe edge added to A is always a

least-weight edge connecting the tree to a vertex not in the tree.

Page 39: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

39

Kruskal's algorithm (disjoint set) MST_KRUSKAL(G,w) 1 A:={} 2 for each vertex v in V[G] 3 do MAKE_SET(v) 4 sort the edges of E by non-decreasing weight w 5 for each edge (u,v) in E, in order by non-decreasing weight 6 do if FIND_SET(u) != FIND_SET(v) 7 then A:=A∪{(u,v)} 8 UNION(u,v) 9 return A

Animation of Kruskal’s algorithm http://f.hatena.ne.jp/mickey24/20090614234556

Page 40: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Walk-Through Consider an undirected, weight graph

5

1

A

H B

F

E

D

C

G 3

2

4

6

3 4

3

4 8

4

3

10

Page 41: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Sort the edges by increasing edge weight edge dv (D,E) 1

(D,G) 2

(E,G) 3

(C,D) 3

(G,H) 3

(C,F) 3

(B,C) 4

5

1

A

H B

F

E

D

C

G 3

2

4

6

3 4

3

4 8

4

3

10 edge dv (B,E) 4

(B,F) 4

(B,H) 4

(A,H) 5

(D,F) 6

(A,B) 8

(A,F) 10

Page 42: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Select first |V|–1 edges which do not generate a cycle

edge dv (D,E) 1 √

(D,G) 2

(E,G) 3

(C,D) 3

(G,H) 3

(C,F) 3

(B,C) 4

5

1

A

H B

F

E

D

C

G 3

2

4

6

3 4

3

4 8

4

3

10 edge dv (B,E) 4

(B,F) 4

(B,H) 4

(A,H) 5

(D,F) 6

(A,B) 8

(A,F) 10

Page 43: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Select first |V|–1 edges which do not generate a cycle

edge dv (D,E) 1 √

(D,G) 2 √

(E,G) 3

(C,D) 3

(G,H) 3

(C,F) 3

(B,C) 4

5

1

A

H B

F

E

D

C

G 3

2

4

6

3 4

3

4 8

4

3

10 edge dv (B,E) 4

(B,F) 4

(B,H) 4

(A,H) 5

(D,F) 6

(A,B) 8

(A,F) 10

Page 44: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Select first |V|–1 edges which do not generate a cycle

edge dv (D,E) 1 √

(D,G) 2 √

(E,G) 3 χ (C,D) 3

(G,H) 3

(C,F) 3

(B,C) 4

5

1

A

H B

F

E

D

C

G 3

2

4

6

3 4

3

4 8

4

3

10 edge dv (B,E) 4

(B,F) 4

(B,H) 4

(A,H) 5

(D,F) 6

(A,B) 8

(A,F) 10

Accepting edge (E,G) would create a cycle

Page 45: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Select first |V|–1 edges which do not generate a cycle

edge dv (D,E) 1 √

(D,G) 2 √

(E,G) 3 χ (C,D) 3 √

(G,H) 3

(C,F) 3

(B,C) 4

5

1

A

H B

F

E

D

C

G 3

2

4

6

3 4

3

4 8

4

3

10 edge dv (B,E) 4

(B,F) 4

(B,H) 4

(A,H) 5

(D,F) 6

(A,B) 8

(A,F) 10

Page 46: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Select first |V|–1 edges which do not generate a cycle

edge dv (D,E) 1 √

(D,G) 2 √

(E,G) 3 χ (C,D) 3 √

(G,H) 3 √

(C,F) 3

(B,C) 4

5

1

A

H B

F

E

D

C

G 3

2

4

6

3 4

3

4 8

4

3

10 edge dv (B,E) 4

(B,F) 4

(B,H) 4

(A,H) 5

(D,F) 6

(A,B) 8

(A,F) 10

Work in class: Please continue to finish this algorithm and draw the resulting tree.

Page 47: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Select first |V|–1 edges which do not generate a cycle

edge dv (D,E) 1 √

(D,G) 2 √

(E,G) 3 χ (C,D) 3 √

(G,H) 3 √

(C,F) 3 √

(B,C) 4

5

1

A

H B

F

E

D

C

G 3

2

4

6

3 4

3

4 8

4

3

10 edge dv (B,E) 4

(B,F) 4

(B,H) 4

(A,H) 5

(D,F) 6

(A,B) 8

(A,F) 10

Page 48: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Select first |V|–1 edges which do not generate a cycle

edge dv (D,E) 1 √

(D,G) 2 √

(E,G) 3 χ (C,D) 3 √

(G,H) 3 √

(C,F) 3 √

(B,C) 4 √

5

1

A

H B

F

E

D

C

G 3

2

4

6

3 4

3

4 8

4

3

10 edge dv (B,E) 4

(B,F) 4

(B,H) 4

(A,H) 5

(D,F) 6

(A,B) 8

(A,F) 10

Page 49: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Select first |V|–1 edges which do not generate a cycle

edge dv (D,E) 1 √

(D,G) 2 √

(E,G) 3 χ (C,D) 3 √

(G,H) 3 √

(C,F) 3 √

(B,C) 4 √

5

1

A

H B

F

E

D

C

G 3

2

4

6

3 4

3

4 8

4

3

10 edge dv (B,E) 4 χ (B,F) 4

(B,H) 4

(A,H) 5

(D,F) 6

(A,B) 8

(A,F) 10

Page 50: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Select first |V|–1 edges which do not generate a cycle

edge dv (D,E) 1 √

(D,G) 2 √

(E,G) 3 χ (C,D) 3 √

(G,H) 3 √

(C,F) 3 √

(B,C) 4 √

5

1

A

H B

F

E

D

C

G 3

2

4

6

3 4

3

4 8

4

3

10 edge dv (B,E) 4 χ (B,F) 4 χ (B,H) 4

(A,H) 5

(D,F) 6

(A,B) 8

(A,F) 10

Page 51: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Select first |V|–1 edges which do not generate a cycle

edge dv (D,E) 1 √

(D,G) 2 √

(E,G) 3 χ (C,D) 3 √

(G,H) 3 √

(C,F) 3 √

(B,C) 4 √

5

1

A

H B

F

E

D

C

G 3

2

4

6

3 4

3

4 8

4

3

10 edge dv (B,E) 4 χ (B,F) 4 χ (B,H) 4 χ

(A,H) 5

(D,F) 6

(A,B) 8

(A,F) 10

Page 52: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Select first |V|–1 edges which do not generate a cycle

edge dv (D,E) 1 √

(D,G) 2 √

(E,G) 3 χ (C,D) 3 √

(G,H) 3 √

(C,F) 3 √

(B,C) 4 √

5

1

A

H B

F

E

D

C

G 3

2

4

6

3 4

3

4 8

4

3

10 edge dv (B,E) 4 χ (B,F) 4 χ (B,H) 4 χ

(A,H) 5 √

(D,F) 6

(A,B) 8

(A,F) 10

Page 53: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Select first |V|–1 edges which do not generate a cycle

edge dv (D,E) 1 √

(D,G) 2 √

(E,G) 3 χ (C,D) 3 √

(G,H) 3 √

(C,F) 3 √

(B,C) 4 √

5

1

A

H B

F

E

D

C

G 2

3

3

3

edge dv (B,E) 4 χ (B,F) 4 χ (B,H) 4 χ

(A,H) 5 √

(D,F) 6

(A,B) 8

(A,F) 10

Done

Total Cost = Σ dv = 21

4

} not considered

Page 54: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

What is travel salesman problem?

54

TSP:

A Salesman wishes to travel around a given set of cities, and return to the beginning, covering the smallest total distance. Create a TSP Tour around all cities

(1) Return to the beginning

(2) No condition to return to the beginning.

It can still be regarded as a TSP by connecting the beginning city and the end city to a ‘dummy’ city at zero distance

A B

Page 55: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

Two classifications of TSP

55

A route returning to the beginning is known as a

Hamiltonian Circuit

A route not returning to the beginning is known as a

Hamiltonian Path

Page 56: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

The smallest total distance?

56

Sweden 24978 Cities 2004 Applegate, Bixby, Chvátal, Cook and Helsgaun

Solutions: (1) Try every possibility? (n-1)!, 24977 possibilities (2) Optimizing Methods take very long time (3) Heuristic Methods may not optimal

Page 57: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

The Nearest Neighbor Method (Heuristic) - A Greedy method

57

1. Start Anywhere

2. Go to Nearest Unvisited City

3. Continue until all Cities visited

4. Return to Beginning

Page 58: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

58

A 42-City Problem The Nearest Neighbour Method (Starting at City 1)

1

21

20

19

29

7

30 28

31 37

32 36

11

9

34

10

39

38

35

12

33

8

27 26

6 24

25

14

15 23

22

2 13

16

3 17 4

18

42

40

41

5

Page 59: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

59

The Nearest Neighbour Method (Starting at City 1)

1

21

20

19

29

7

30 28

31 37

32 36

11

9

34

10

39

38

35

12

33

8

27 26

6 24

25

14

15 23

22

2 13

16

3 17 4

18

42

40

41

5

Page 60: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

60

The Nearest Neighbour Method (Starting at City 1) Length 1498

1

21

20

19

29

7

30 28

31 37

32 36

11

9

34

10

39

38

35

12

33

8

27 26

6 24

25

14

15 23

22

2 13

16

3 17 4

18

42

40

41

5

Page 61: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

61

29

Remove Crossovers

1

21

20

19

7

30 28

31 37

32 36

11

9

34

10

39

38

35

12

33

8

27 26

6 24

25

14

15 23

22

2 13

16

3 17 4

18

42

40

41

5

Page 62: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

62

Remove Crossovers

1

21

20

19

29

7

30 28

31 37

32 36

11

9

34

10

39

38

35

12

33

8

27 26

6 24

25

14

15 23

22

2 13

16

3 17 4

18

42

40

41

5

Page 63: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

63

Remove Crossovers Length 1453

1

21

20

19

29

7

30 28

31 37

32 36

11

9

34

10

39

38

35

12

33

8

27 26

6 24

25

14

15 23

22

2 13

16

3 17 4

18

42

40

41

5

Page 64: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

64

(1) compute a MST (minimum spanning tree) whose weight is a lower bound on the length of an optimal TSP tour. (2) use MST to build a tour whose cost is no more than twice that of MST's weight as long as the cost function satisfies triangle inequality. http://www.personal.kent.edu/~rmuhamma/Algorithms/MyAlgorithms/AproxAlgor/TSP/tsp.htm

Outline of an APPROX-TSP-TOUR

R. B. Muhammad

Page 65: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

65

Operation of APPROX-TSP-TOUR

Let root r be a in following given set of points (graph)

MST-PRIM Preorder

List vertices visited in preorder walk. L = {a, b, c, h, d, e, f, g}

Hamiltonian cycle optimal TSP tour

R. B. Muhammad

Page 66: Analysis of Algorithms...Contents (L14 – Review shortest path algorithms) Weighted Graph Shortest path problem Single-source shortest path algorithm Dijkstra’s algorithm All-pairs

66

Exercises 13

EX 13.2 (1) What is a TSP problem? (2) Refer the city connection graph in Fig 1, start from the node A, - to draw a MST - to an optimal TSP tour

EX 13.1 Modify the Dijkstra’s algorithm to Prim’s algorithm.

Fig1. City connection graph