最短路徑演算法 卓訓榮 2002/11/11 data base label setting algorithm label correcting...

24
最最最最最最最 最最最 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorith m 最最最最

Post on 20-Dec-2015

237 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 最短路徑演算法 卓訓榮 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorithm 運輸資訊

最短路徑演算法卓訓榮 2002/11/11

Data base

Label Setting Algorithm

Label Correcting Algorithm

運輸資訊

Page 2: 最短路徑演算法 卓訓榮 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorithm 運輸資訊

Data Base

Page 3: 最短路徑演算法 卓訓榮 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorithm 運輸資訊

1 2 3

4 5 6

6

23 3

1 5

2

2 1 3

From To Distance

1 2 6

1 4 3

1 5 2

2 3 2

2 5 2

2 6 1

3 6 3

4 5 1

5 2 3

5 6 5

需 30 儲存格

Page 4: 最短路徑演算法 卓訓榮 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorithm 運輸資訊

1 2 3

4 5 6

6

23 3

1 5

2

2 1 3

需 25 儲存格

To Distance

2 6

4 3

5 2

3 2

5 2

6 1

6 3

5 1

2 3

6 5

(1)Point 1

(2)Point 4

(3)Point 7

(4)Point 8

(5)Point 9

Forward star

Page 5: 最短路徑演算法 卓訓榮 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorithm 運輸資訊

Label Setting Algorithm

Page 6: 最短路徑演算法 卓訓榮 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorithm 運輸資訊

Dijkstra’s Shortest-Path Algorithm(Label Setting Algorithm )

• 已知路網中有 K 個點 , 假設其中兩點分別為 s & t, 欲求 s 到 t 的最短路徑

• Step1

設一變數 d(x) 代表 s 點到 x 點的距離 (x 代表路網中任一點 )

when

when

定義 y=s

)(xd sx 0)( xd sx

Page 7: 最短路徑演算法 卓訓榮 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorithm 運輸資訊

• Step2

設• a(y,x) 代表 y 到 x 點的距離 , 當 y 點沒有

節線到達 x 點時 , a(y,x)= 無限大Ex:

a(s,x)=a(x,t)=10 , a(s,t)=a(x,s)=a(t,x)= 無限大

– 取 d(x) 中最小的一個的 x ( 非 s 且不曾為 y)為 y

Ex:

d(s)=0 , d(a)=5 , d(b)=7 , d(c)=6 , y=a

)},()(),(min{)( xyaydxdxd

txs 10 10

Page 8: 最短路徑演算法 卓訓榮 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorithm 運輸資訊

• Step3

當 y=t 時 , 即找到 s 到 t 的最短路徑否則重新執行 Step2

Page 9: 最短路徑演算法 卓訓榮 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorithm 運輸資訊

紀錄路徑• 在撰寫程式時 , 為方便知道路徑經過哪些點 ,

建議設一變數 P(x) 代表通過 x 點是經過 P(x)點到達的

• Ex

P(a)=s , P(b)=a , P(t)=b

s

a

bt

Page 10: 最短路徑演算法 卓訓榮 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorithm 運輸資訊

例子• 已知一路網

s

1 2

3 4

t

4

3

3

7

3

2

2

2

Page 11: 最短路徑演算法 卓訓榮 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorithm 運輸資訊

s

1 2

3 4

t

d(s)=0

d(1)=∞

d(2)=∞

d(3)=∞

d(4)=∞

d(t)=∞

y=s

4

7

3

Page 12: 最短路徑演算法 卓訓榮 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorithm 運輸資訊

s

1 2

3 4

t

d(s)=0

d(1)=min{d(1) , d(s) + a(s,1)}=min{∞,0+4}=4

d(2)=min{d(2) , d(s) + a(s,2)}=min{∞,0+7}=7

d(3)=min{d(3) , d(s) + a(s,3)}=min{∞,0+3}=3

d(4)=∞

d(t)=∞

y=3

4

7

3 3S 到 3 最短距離為3

Page 13: 最短路徑演算法 卓訓榮 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorithm 運輸資訊

s

1 2

3 4

t

d(s)=0

d(1)=4

d(2)=7

d(3)=3( 已做過 y)

d(4)=min{d(4) , d(3) + a(3,4)}=min{∞,3+3}=6

d(t)=∞

y=1

4

7

3 3

3

S 到 1 最短距離為4

Page 14: 最短路徑演算法 卓訓榮 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorithm 運輸資訊

s

1 2

3 4

t

d(s)=0

d(1)=4( 已做過 y)

d(2)=min{d(2) , d(1) + a(1,2)}=min{7,4+3}=7

d(3)=3( 已做過 y)

d(4)=6

d(t)=∞

y=4

4

7

3 3

3

2S 到 4 最短距離為6

Page 15: 最短路徑演算法 卓訓榮 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorithm 運輸資訊

s

1 2

3 4

t

d(s)=0

d(1)=4( 已做過 y)

d(2)=7

d(3)=3( 已做過 y)

d(4)=6( 已做過 y)

d(t) =min{d(t) , d(4) + a(4,t)}=min{∞,6+2}=8

y=2

4

7

3 3

3

2

2

S 到 2 最短距離為7

Page 16: 最短路徑演算法 卓訓榮 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorithm 運輸資訊

s

1 2

3 4

t

d(s)=0

d(1)=4( 已做過 y)

d(2)=7( 已做過 y)

d(3)=3( 已做過 y)

d(4)=6( 已做過 y)

d(t) =min{d(t) , d(2) + a(2,t)}=min{8,7+2}=8

y=8

4

7

3 3

3

2

2

S 到 t 最短距離為8

Page 17: 最短路徑演算法 卓訓榮 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorithm 運輸資訊

Label Correcting Algorithm

Page 18: 最短路徑演算法 卓訓榮 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorithm 運輸資訊

Label Correcting AlgorithmFord(1946) , Moore(1957) , Bellman(1958)

• 已知一路網有 n 點 , 起點 s

: 從起點 s 經 k 階到達 x 的距離 : 在 k 階時 , 的集合 : 從起點開始 , 恰 k 階到達的點 ( 終點 )

集合 :k 階時 , 所有點的前置點集合 :S 集合內所有點的下游點的集合

)(xd k

)(xd kkLkSkP

何為“階” :

一階 二階 三階

)(S

Page 19: 最短路徑演算法 卓訓榮 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorithm 運輸資訊

K*

• 該點的 K* 表示在進行到某階時 , 起點到該點的最短路徑中 , 該點的上一點為何

• Ex

12

3

上圖為 node 1 到 node 3 的最短路徑 , 則 node 3 的 K* 為 2

Page 20: 最短路徑演算法 卓訓榮 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorithm 運輸資訊

Algorithm

• 起始條件k=0 , d(s)=0 , when

S={s} , k=k+1 , go to Step1

)(xd sx

Page 21: 最短路徑演算法 卓訓榮 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorithm 運輸資訊

• Step1

- 更新與 S 集合內所有點相鄰的點之 d(x)

-d(x)=min{d(x),d(s)+a(s,x)}

• Step2

-S={ j | d(j) 在 step1 更新過 }

-T(j)=S 集合內為 j 點的上游點• Step3

when k<=(n-1) & , k=k+1 , go to Step1

when k<=(n-1) & , Stop

when k=n & , Stop

SS

S

Page 22: 最短路徑演算法 卓訓榮 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorithm 運輸資訊

例題

1

2 3

4

1

1

1

4

Page 23: 最短路徑演算法 卓訓榮 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorithm 運輸資訊

k jT(j)

d(x) k* update Distanc Label S

0 d(1)=0L={0,∞, ∞, ∞}

{1}

1{2,4}

2{1}

d(2)=min{∞,0+1}=1 1 Y

4{1}

d(4)=min{∞,0+4}=4 1 Y L={0,1, ∞,4}

{2,4}

P={0,1,0,1}

2 {3} 3{2}

d(3)=min{∞,1+1}=2 2 Y L={0,1,2,4}

{3}

P={0,1,2,1}

3 {4} 4{3}

d(4)=min{4,2+1}=3 3 Y L={0,1,2,3}

{4}

P={0,1,2,3}

)(S

Page 24: 最短路徑演算法 卓訓榮 2002/11/11 Data base Label Setting Algorithm Label Correcting Algorithm 運輸資訊

習題1. 用 forward star 的形式建立此路網的 data base

2. 用 label setting 與 label correcting Algorithm

求解點 1 到各點的最短路徑

1 2

34

5

76

10

9

8

3

19

7

43

65

78

2 35

5

9 6

7

4