以「旅行推銷員問題」為例,淺談 如何利用計算機解題
DESCRIPTION
以「旅行推銷員問題」為例,淺談 如何利用計算機解題. 唐傳義 教授 [email protected] 國立清華大學資訊工程系. 12. 1. 2. 1. 3. 8. 2. 10. 3. 4. 給定 4 個城市的相互距離. 12. 1. 2. 1. 3. 8. 2. 10. 3. 4. 最小展開樹問題 尋找一個將四個城市最經濟的聯結. 旅行推銷員問題 Traveling Salesman Problem (TSP) 尋找一個從 (1) 出發,回到 (1) 的最短走法. 12. 1. 2. 1. 3. 8. 2. - PowerPoint PPT PresentationTRANSCRIPT
以「旅行推銷員問題」為例,淺談如何利用計算機解題
唐傳義 教授[email protected]國立清華大學資訊工程系
2
給定 4 個城市的相互距離
1 2
3 4
12
1 8
10
3
2
3
最小展開樹問題尋找一個將四個城市最經濟的聯結
1 2
3 4
12
1 8
10
3
2
4
旅行推銷員問題Traveling Salesman Problem (TSP)尋找一個從 (1) 出發,回到 (1) 的最短走法
1 2
3 4
12
1 8
10
3
2
5
TSP 是一個公認的難題NP-Complete 意義:我們現在無法對所有輸入找到一
個有效率的解法
避免浪費時間尋求更佳的解法 Ref: Horowitz & Sahni,
Fundamentals of Computer Algorithms, P528.
6
2n 相當可怕
10 30 50
N 0.00001 s
0.00003 s 0.00005 s
N2 0.0001 s 0.0009 s 0.0025 s
2n 0.001 s 17.9 min 35.7 year 像 satisfiabilibility problem 目前只有 exponential algorithm ,還沒有人找到 polynomial algorithm ( 你也不
妨放棄! )這一類問題是 NP-Complete Problem
Garey & Johnson “Computers & Intractability”
7
生物應用的計算需求
數學問題
工具程式
Computational Biology
Database Added Value Database
抽象化
算法設計
8
例 Physical Mapping of DNA
P1 P2 P1 P2 C2 [1 1] C1 [1 0] C1 [1 0] C2 [1 1] C3 [0 1] C3 [0 1]
consecutive 1 propety False negative False positive
C1
C2
C3
P1 P2
9
A clones x probes matrix with added column p6*.
P1 P2 P3 P4 P5 P6
C1 1 1 1 0 0 0
C2 0 1 1 1 0 0
C2 1 0 0 1 1 0
C4 1 1 1 1 0 0
P1
P6
P2
P5
P3
P4
2
2
03
1
2
2
2
2 2
4 4
3
4
3
TSP graph for matrix of
Table
10
旅行推銷員問題是許多排程應用的核心問題 (航運排程)
有許多變型 平面 TSP
幾何 TSP (滿足三角不等式)
不對稱 TSP
* *** *
* *2
3 4
(1)
(3)
(2)
(1) (2)2
4
11
窮舉法( Enumerating )( 想想看什麼問題不能窮舉解? ) -加分題 ! 旅行推銷員問題:
3! 走法 (n-1)! 最小展開樹問題:
16 種樹 n(n-2) Cayley’s Thm.
Ref: Even, Graph Algorithms, PP26~28
12
4
1143
2
12
Labeled tree Number sequenceOne-to-One Mapping
N 個 nodes 的 labeled tree 可以用一個長度 N-2 的 number sequence 來表達。
Encoding: Data Compression.
13
Labeled treeNumber sequence 在每一個 iteration 裡,切除目前所有 leaves 中
編號最小的 node 及其 edges ,記錄切點,切到只剩一條 edge 為止。
例 .
Prune-sequence:7,4,4,7,5( 切點 )
Label 最大者必在最後的 edge. 每個 node 原先的 degree 數 = 此 node 在
Prune-sqeuence 中出現的次數 +1.
2
3
4 7
1
5 6
14
Number sequenceLabeled tree
Prune-sequence: 7,4,4,7,5k 1 2 3 4 5 6 7
deg(k) 1 1 1 3 2 1 3
Iteration 1 0 1 1 3 2 1 2
Iteration 2 0 0 1 2 2 1 2
Iteration 3 0 0 0 1 2 1 2
Iteration 4 0 0 0 0 2 1 1
Iteration 5 0 0 0 0 1 0 1
Iteration 6 0 0 0 0 0 0 0
每一個 iteration 裡,選擇 degree 為 1且編號最小的 node ,連接 prune-sequence 中相對的 node ,之後兩個 nodes 的 degree均減 1.
Iteration 1 Iteration 2Iteration 3Iteration 4 Iteration 6
Iteration 5
1 7
1 7 2 41 7 2 4 3
1 7 41 7 4
3
2
1 7 43
26 5
3
25
6
15
貪心法( Greedy ) 旅行推銷員問題 x 最小展開樹問題 o
兩種貪心都成功:1. 將邊由小到大加入,有迴圈即丟掉2. 將樹從一點開始,最經濟向外擴展
16
Minimal spanning treeKruskal’a Algorithm
A B
D
C
E
70
65
300
90
50
80 75200
Begin T <- null While T contains less than n-1 edges, the smallest weight, choose an edge (v, w) form E of smallest weight 【 Using priority queue, heap O (log n) 】 , delete (v, w) form E. If the adding of (v, w) to T does not create a cycle in T, 【 Using union, find O (log m) 】 then add (v, w) to T; else discard (v, w). Repeat.End.
O (m log m) m = # of edge
17
做 priority queue 可以用heap operation
O(log n)Initial O(n) Tarjan: Union & Find 可以 almost linear (Amortiz
ed) Correctness
如果不選最小 edge做 tree而得到 minimal 加入最小 edge會有 cycle Delete cycle 中最大的 edge會得到更小 cost之 tree
(矛盾! )
1
2 4
3 7 5 6
18
建 spanning tree 可以看做spanning forest 加 link1. 加 edge(2,3) 不合法2. 加 edge(1,4) 合法 另一種看法:S1={1,2,3}S2={4,5}Edge 的端點要在不同 set
Set 的 Find, UnionO(log n)
1
32
4
5
19
Prim’s AlgorithmA B
D
C
E
70
65
300
90
50
80 75200
Step 1: Let x be any vertex in V. Let A = {x} and B = V - {}.Step 2: Select an edge (u, v) form E such that u in A, v in B and (u, v) has the
smallest weight among edges between A and B.Step 3: Connect v to u in A. Let A = A + {v} and B = B – {v}.Step 4: If B is empty, terminate and the resulting tree is a minimal spanning tree.
Otherwise, go to Step 2.
O(n2)
20
考慮以下的城市做旅行推銷員問題
從 (1) 開始貪心不成功!
1 4
2 3
100
1 15
2
3
8
1 2 3 4
1 2 3
100
21
一些常用的方法 貪 心 法( The Greedy Method ) 各個擊破法( Divide-&-Conquer ) 窮 舉 法( Enumerating ) 樹狀搜尋法( Tree Searching Strategies )
( Branch & Bound ) 動態規畫法( Dynamic Programming ) 近 似 法( Approximation )
22
動態規畫法( Dynamic Programming )原則: 滿足遞迴關係技巧: 利用空間換取時間最簡單的例子: 算 Fibonacci Number
F (i) = F (i - 1) + F (i - 2)F (0) = F (1) = 1
23
樹狀搜尋法( Tree Searching Strategies ) ( Branch & Bound )
預估B, C, D 以下的解,如果 D 的最樂觀可能解,都比B以下的某解還差,則 D 以下可以不搜尋深藍!
A
B C D
24
近似解法( Approximation ) 不期望最佳解 用效率高的方法去求合理解 該合理解與最佳解有可預期的倍數關係 可以做如模擬退火法的其它解法的初始解 or參考值 理論分類
NPO complete MAX SNP hard PTAS
http://web.informatik.uni~bonn.de/IV/Mitarbeiter/rick/WS9687/approxvortr/approxvortr.html
25
以幾何 TSP 為例先做最小展開樹
26
挑出所有奇數 degree 的點X X
X
X
X
X
X
27
對他們做matching (Euler Graph)
X X
X
X
X
X
X
28
一筆畫
Minimal spanning tree < TSPMinimal matching < 1/2 TSP=> < 3/2 TSP
時間 n2.5
X X
X
X
X
X
X
29
模擬自然界一些其它的隨機方法 模擬退火 神經計算 基因演算
30
模擬退火 回火 策略Simulated-Annealing
Local maximal global maximal
Local maximal 不是 global maximal
難題!
31
模擬退火法 (Simulated Annealing)procedure SIMULATED-ANNEALINGbegin
INITIALIZE ( i start, c0, L0);k := 0;i := i start;repeat
for l := 1 to Lk dobegin
GENERATE (j form Si); Greedyif f (j) <= f (i) then I := jelse if exp { [f (i) – f (j)] / ck} > random [0, 1) then I := j
end; f (i) – f (j)比 ck愈小愈有機會反 Greedy但不要太離譜!
k := k +1;CALCULATE_ LENGTH (Lk);CALCULATE_ CONTROL (Lk);
until stop criterionend;
32
TSP 如何做?從一個 tour 裡任取兩個 edge
決定到底要不要用
取代
原則:通常還是貪心,偶而讓它反其道一下
33
模擬退火是一種隨機方法,只能預設一個停止時間,看天吃飯。
模擬退火中有許多參數,要靠經驗或實驗。
34
Introduction Genetic Algorithms (基因計算)
Genetic Algorithms Artificial mechanisms of natural
evolution. A robust search procedures and
solving complex search problems. Disadvantage
Low efficient if large problem space.
Population homogeneous.End
Begin
Encoding
Initialize population
Reproduction & Selection
Crossover
Mutation
Evaluate population
Termination criterion
Evaluate population
No
Yes
35
The Eugenic Genetic Algorithm for TSPCrossover Phase
Sequence preserving crossover (SPX) Schemata is preserved
as more as possible.
A=123||5748||69B=934||5678||21
A’=234||5678||91B’=936||5748||21
1
2 9
3 8
4 7
5 6
1
2 9
3 8
4 7
5 6
1
2 9
3 8
4 7
5 6
1
2 9
3 8
4 7
5 6
(a) A
(a) A’
(a) B
(a) B’
Cro
ssover
36
Point mutation Inversion mutation Shift mutation
The Eugenic Genetic Algorithm for TSPMutation Phase
(a) Point mutation
(b) Inversion mutation
(c) Shift mutation (right shift)
37
分子計算( Molecular Computation ) Use (DNA) molecules to represent the data in
stances. Put the molecules into a tube, control the environments.
The molecules will bind with each other. The most tightly binging is the minimum cost solution.
Massive parallelism since the large number of molecules.
一莫耳 = 6.02 * 1023
Ref. Adleman, Molecular Computation of Solutions to Combinatorial Problems, Science, Vol. 266, 11, 1994, PP1021-1024.
38
以 TSP 的特例 Hamiltonian Path 為例(也是難題)
問題:有無從 0 6 ,長度為 6 ,各 vertex恰走一遍的 path? O2 TATCGGATCGGTATATCCGA
O3 GCTATTCGAGCTTAAAGCTA
O4 GGCTAGGTACCAGCATGCTT
O23 GTATATCCGAGCTATTCGAG
O34 CTTAAAGCTAGGCTAGGTAC
O3 (bar) CGATAAGCTCGAATTTCGAT
O23 O34
↓
GTATATCCGAGCTATTCGAGCTTAAAGCTAGGCTACGA
TAAGCTCGAATTTCGAT↓
O3 (bar)
Fig.1. Directed graph. When Vin = 0 and Vout = 6, unique Hamiltonian path exists: 0 1, 1 2, 2 3, 3 4, 4 5, 5 6.
1
6
5
4
3
0
2
39
計算做法1.產生一 path
2.檢查首尾3.檢查長度4.檢查每個
vertex都有YesNo
分子做法1-1 任意選 vertex 編碼1-2 產生 instance 編碼1-3 截取 DNA1-4 放入試管2.分子過濾3.分子過濾4.分子過濾
還有 path存在
40
未來的計算機 生物計算機 量子計算機