Document

26章
全点対間最短路(後半)
B4 田中翔
26.3 疎グラフに対するJohnsonの
アルゴリズム
• Johnsonのアルゴリズムは全点対間の最短路をO(𝑉 2 lg 𝑉 +
𝑉𝐸)時間で求める。したがって、疎なグラフに対しては、行列
の反復自乗やFloyd-Warshallのアルゴリズムよりも漸近的に
よい。
• アルゴリズムは、全点対に対する最短路重みの行列を返す
か、入力のグラフが負の重みを含むことを知らせる。Johnson
のアルゴリズムは、DijkstraのアルゴリズムとBellman-Fordの
アルゴリズムをサブルーチンとして用いる。
26.3 疎グラフに対するJohnsonの
アルゴリズム
• Johnsonのアルゴリズムは再重みづけの技法を用いる。
– グラフG=(V,E)の辺の重みwがすべて非負ならば、各頂点を始点として一
度ずつDijkstraのアルゴリズムを実行することによってすべての頂点間の
最短路を求めることができる。
• フィボナッチヒープのプライオリティキューを用いると、この全点対
アルゴリズムの実行時間はO(𝑉 2 lg 𝑉 + 𝑉𝐸)となる。
• Gが負の重みの辺をもつ場合には、単に同じ方法が使えるように
する非負の辺重みの新しい集合を求めればよい。
• 新たな辺重みの集合𝑤は次の2つの性質を満たす。
1.すべての頂点対u,v∈ 𝑉に対して、重み関数wを用いた場合のuから
vへの最短路は、重み関数𝑤を用いた場合の最短路でもある。
2.すべての辺(u,v)に対して、新たな重み𝑤は非負である。
• 𝑤を定めるための前処理はO(VE)時間でできる。
26.3 疎グラフに対するJohnsonの
アルゴリズム
補題26.1(再重みづけは最短路を変えない)
重み関数w:E→Rをもつ重みつき有向グラフG=(V,E)が与えられ
たとき、h:V→Rを頂点に実数を割り当てる任意の関数とする。
各辺(u,v)∈ 𝐸に対して、
𝑤 𝑢, 𝑣 = 𝑤 𝑢, 𝑣 + ℎ 𝑢 − ℎ 𝑣
と定義する。p= 𝑣0 , 𝑣1 , … , 𝑣𝑘 を頂点𝑣0 から𝑣𝑘 への経路としたと
き、w(p)=𝛿(𝑣0 , 𝑣𝑘 )であるための必要十分条件は、𝑤 𝑝 =
𝛿(𝑣0 , 𝑣𝑘 )が成り立つことである。
また、重み関数wを用いたとき、Gが負の重みの閉路を含むた
めの必要十分条件は、重み関数𝑤を用いたときにGが負の重み
の閉路を含むことである。
26.3 疎グラフに対するJohnsonの
アルゴリズム
(証明)
定義より、
𝑘
𝑤 𝑝 =
𝑤 𝑣𝑖−1 , 𝑣𝑖
𝑖=1
𝑘
=
(𝑤 𝑣𝑖−1 , 𝑣𝑖 + ℎ 𝑣𝑖−1 − ℎ 𝑣𝑖 )
𝑖−1
𝑘
=
(𝑤 𝑣𝑖−1 , 𝑣𝑖 + ℎ 𝑣0 − ℎ 𝑣𝑘 )
𝑖−1
= 𝑤 𝑝 + ℎ 𝑣0 − ℎ 𝑣𝑘
26.3 疎グラフに対するJohnsonの
アルゴリズム
(証明続き)
w(p)=𝛿(𝑣0 , 𝑣𝑘 )ならば𝑤 𝑝 = 𝛿 𝑣0 , 𝑣𝑘 を背理法により示す。
𝑤を用いると𝑣0 から𝑣𝑘 に、より短い経路p’が存在するとする。
このとき、 𝑤 p′ < 𝑤(p)なので
𝑤 𝑝′ + ℎ 𝑣0 − ℎ 𝑣𝑘 = 𝑤 p′
< 𝑤 p′
= 𝑤 𝑝 + ℎ 𝑣0 − ℎ 𝑣𝑘
よって、w(p’)<w(p)が成り立つが、これはpがwを用いたときのuからv
への最短路であるという仮定に矛盾。逆の証明も同様。
任意閉路c= 𝑣0 , 𝑣1 , … , 𝑣𝑘 (ただし、𝑣0 = 𝑣𝑘 )を考えると、
𝑤 𝑐 = 𝑤 𝑐 + ℎ 𝑣0 + ℎ 𝑣𝑘
=𝑤 𝑐
したがって、cがwを用いたとき負の重みをもつための必要十分条件
は、𝑤を用いたときcが負の重みをもつことである。
26.3 疎グラフに対するJohnsonの
アルゴリズム
• 再重みづけによる非負の重みの生成
重み関数w:E→Rをもつ重みつき有向グラフG=(V,E)が与えられ
たとき、新たなグラフG’=(V’,E’)を作る。ただし、ある新たな頂点
𝑠 ∉ 𝑉に対してV’=V∪{s}およびE’=E∪{(s,v):v∈V}である。この重み
関数wを拡張して、すべてのv∈Vに対してw(s,v)=0が成り立つよ
うにする。
GとG’は負の重みの閉路をもたないとする。すべての辺v∈ 𝑉に
対して、h(v)=𝛿(𝑠, 𝑣)を定義する。補題25.3より、すべての辺
(u,v)∈ 𝐸に対してh(v)≤h(u)+w(u,v)。したがって、 𝑤 𝑢, 𝑣 =
𝑤 𝑢, 𝑣 + ℎ 𝑢 − ℎ(𝑣) ≥ 0が成り立ち、2番目の性質が成り立
つ。
26.3 疎グラフに対するJohnsonの
アルゴリズム
JOHNSON(G)
1 V[G’]=V[G]∪ {s}および
E[G’]=E[G]∪ { 𝑠, 𝑣 : 𝑣 ∈ 𝑉 𝐺 }であるG’を求める
2 if BELLMAN-FORD(G’,w,s) = FALSE
3
then print “入力のグラフは負の重みの閉路をもつ”
4
else for 各頂点 v∈ 𝑉[𝐺 ′ ]
5
do h(v)をBellman-Fordのアルゴリズムで計算される
𝛿(𝑠, 𝑣)の値に設定
6
for 各辺 (u,v)∈ 𝐸[𝐺 ′ ]
7
do 𝑤 𝑢, 𝑣 ← 𝑤 𝑢, 𝑣 + ℎ 𝑢 − ℎ(𝑣)
8
for 各頂点 u∈ 𝑉[𝐺]
9
do すべてのv∈ 𝑉 𝐺 に対して𝛿 𝑢, 𝑣 を求める
ためにDIJKSTRA(G,𝑤, 𝑢)を実行
10
for 各頂点 v∈ 𝑉[𝐺]
11
do 𝑑𝑢𝑣 ← 𝛿 𝑢, 𝑣 + ℎ 𝑣 − ℎ(𝑢)
12 return D
26.3 疎グラフに対するJohnsonの
アルゴリズム
0
-1
0
0
4
3
8
0
0
2
7
-4
-5
1
0
-4
0
6
0
-5
26.3 疎グラフに対するJohnsonの
アルゴリズム
5
-1
1
0
0
4
13
0
0
2
10
0
0
4
-4
0
2
0
-5
0
26.3 疎グラフに対するJohnsonの
アルゴリズム
2/1
0
4
13
0/0
2
10
0
2/-3
0
0
0/-4
2
2/2
26.3 疎グラフに対するJohnsonの
アルゴリズム
0/0
0
4
13
2/3
2
10
0
0/-4
0
0
2/-1
2
0/1
26.3 疎グラフに対するJohnsonの
アルゴリズム
0/4
0
4
13
2/7
2
10
0
0/0
0
0
2/-3
2
0/5
26.3 疎グラフに対するJohnsonの
アルゴリズム
0/-1
0
4
13
2/2
2
10
0
0/-5
0
0
2/-2
2
0/0
26.3 疎グラフに対するJohnsonの
アルゴリズム
2/5
0
4
13
4/8
2
10
0
2/1
0
0
0/0
2
2/6
Johnsonのアルゴリズムの実行時間は、Dijkstraのアルゴリズムに
おけるプライオリティキューをフィボナッチヒープで実現したとき、
O(𝑉 2 lg𝑉+𝑉𝐸)であり、もっと簡単な二分木ヒープによって実現する
と、O(VElgV)となるが、グラフが疎ならば、これでもまだFloydWarshallのアルゴリズムよりも速い。
26.4 有向グラフにおいて経路問題を
解くための一般的な枠組み
• 閉じた半環の定義
・
閉じた半環とは、システム(S, ⊕,○,
0,1)である。ただし、Sは要素の集合、
・
⊕(総和演算)と○(拡大演算)はS上の二項演算である。また
0と1はSの要素
で、次の8つの性質を満たす。
1.(S, ⊕,0)はモノイドである。
• Sは⊕の下で閉じている:すなわち、すべてのa,b∈ 𝑆に対してa ⊕b∈ 𝑆
• ⊕は結合的である:すなわち、すべてのa,b,c∈ 𝑆に対して
a ⊕(b ⊕c)=(a ⊕b) ⊕c
• 0は⊕に対する恒等元である:すなわち、すべてのa∈ 𝑆に対して
a ⊕ 0= 0 ⊕a=a
・ 1)はモノイドである。
同様に、(S,○,
・ 0 = 0○a=
・
2. 0は零化群である:すなわち、すべてのa∈ 𝑆に対してa○
0
3. ⊕は交換的である。すなわち、すべてのa,b∈ 𝑆に対してa⊕b=b⊕a
26.4 有向グラフにおいて経路問題を
解くための一般的な枠組み
• 閉じた半環の定義
4.⊕はべき等的である:すなわち、すべてのa∈ 𝑆に対してa
⊕a=a
・
・
・
・
・
・
・
5.○は⊕に対して分配的である:すなわち、すべてのa,b,c∈
𝑆に
対してa○(b⊕c)=(a○b)⊕(a○c),(b⊕c)○a=(b○a)⊕(c○a)
6.𝑎1 , 𝑎2 , 𝑎3 …がSの可算系列のとき、𝑎1 ⊕𝑎2 ⊕𝑎3 ⊕…は明確に
定義されており、かつ、Sに含まれる。
7.結合性、可換性およびべき等性は無限の和にも当てはまる
・
8.○は無限和に関して分配的である。:すなわち、
・
・
・
・
a○(𝑏1 ⊕𝑏2 ⊕𝑏・3 ⊕…)=(a○𝑏
・
・
・
1 )⊕(a○𝑏
2 )⊕(a○𝑏
3 )⊕…,
(𝑎1 ⊕𝑎2 ⊕𝑎3 ⊕…)○b=(𝑎1 ○b)⊕ (𝑎2 ○b)⊕ (𝑎3 ○b)⊕…
26.4 有向グラフにおいて経路問題を
解くための一般的な枠組み
• 有向グラフにおける経路の計算
閉じた半環の性質は有向グラフにおける経路の計算と関連付
けることができる。
辺(u,v)のラベルをλ(u,v)で表すとすると、λ(u,v)は(u,v)がグラフG
の辺でないときはふつう0となる。
経路p=〈𝑣1 , 𝑣2 , … 𝑣𝑘 〉のラベルは
・
・
・
λ(p)=λ(𝑣1 , 𝑣2 )○λ(𝑣
2 , 𝑣3 )○…○λ(𝑣
𝑘−1 , 𝑣𝑘 )
・
○における恒等元
1は空の経路の役割を果たす。
26.4 有向グラフにおいて経路問題を
解くための一般的な枠組み
閉じた半環の応用例として辺の重みが負でない最短路を考え
る。λ(i,j)=𝑤𝑖,𝑗 とすると、p=〈𝑣1 , 𝑣2 , … 𝑣𝑘 〉のラベルは
・
・
・
λ(p)=λ(𝑣1 , 𝑣2 )○λ(𝑣
2 , 𝑣3 )○…○λ(𝑣
𝑘−1 , 𝑣𝑘 )
=𝑤𝑣1 ,𝑣2 +𝑤𝑣2 ,𝑣3 +…+𝑤𝑣𝑘−1,𝑣𝑘
=w(p)
経路𝑝1 =〈𝑣1 , 𝑣2 , … 𝑣𝑘 〉と𝑝2 =〈𝑣𝑘 , 𝑣𝑘+1 , … 𝑣𝑙 〉が与えられたとき、
それらの連接は𝑝1 ○ 𝑝2 =〈𝑣1 , 𝑣2 , … 𝑣𝑘 〉であり、そのラベルは
・
λ(𝑝1 ○ 𝑝2 )=λ(𝑝1 )○λ(𝑝
2)
可換でかつ結合的である和の演算子⊕を用いて経路のラベル
の和をとる。すなわち、λ(𝑝1 ) ⊕ λ(𝑝2 )の値は𝑝1 と𝑝2 のラベルの
和を与える。
26.4 有向グラフにおいて経路問題を
解くための一般的な枠組み
• ここでの目標はすべての点対i,j∈ 𝑉に対しiからjまでのすべ
ての経路のラベルの和𝑙𝑖,𝑗 =⊕𝑖→𝑗 λ(p)を求めることである。
• 最短路に対しては和の演算子⊕としてminを用いる。minに
対する恒等元は∞である。
• λ(c)=aの閉路があるとすると、閉路cを無限回たどったときの
和をとったラベルa*に対して次式が成り立つ。
𝑎∗ = min {𝑘𝑎}
0≤𝑘<∞
=0
• 𝑆1 = (𝑅≥0 ∪ ∞ , 𝑚𝑖𝑛, +, ∞, 0)は閉じた半環の一つの例であ
る。
26.4 有向グラフにおいて経路問題を
解くための一般的な枠組み
• 負の重みをもつ辺を許すFloyd-Warshallのアルゴリズムに対
して用いる閉じた半環は𝑆2 = (R ∪
−∞, +∞ , 𝑚𝑖𝑛, +, +∞, 0)である。
• 推移的閉包に対しては、 𝑆3 = ( 0,1 ,∨,∧, 0,1) である。ただし、
(i,j)∈ 𝐸のときはλ(i,j)=1,そうでないときはλ(i,j)=0
26.4 有向グラフにおいて経路問題を
解くための一般的な枠組み
• 有向経路のラベルを求める動的計画法アルゴリズム
𝑙𝑖,𝑗 =⊕𝑖→𝑗 λ(p)を計算したい。
(𝑘)
𝑙𝑖𝑗 =⊕𝑝∈𝑄(𝑘) λ(p)と定義する。
𝑖𝑗
再帰的に、
(𝑘)
𝑘−1
𝑙𝑖𝑗 = 𝑙𝑖𝑗
(𝑘−1)・
(𝑘−1) ∗・
(𝑘−1)
) ○𝑙𝑘𝑗 )
○(𝑙𝑘𝑘
⊕(𝑙𝑖𝑘
と定義する。
この定義の基本は
(0)
𝑙𝑖𝑗 =
である。
𝜆 𝑖, 𝑗
1⊕𝜆 𝑖, 𝑗
𝑖 ≠ 𝑗のとき
𝑖 = 𝑗のとき
26.4 有向グラフにおいて経路問題を
解くための一般的な枠組み
COMPUTE-SUMMARIES(λ,V)
1 n← 𝑉
2 for i ← 1 to n
3
do for j ← 1 to n
4
do if i = j
5
(𝑜)
then 𝑙𝑖𝑗 ← 1⊕λ(i,j)
(𝑜)
6
else 𝑙𝑖𝑗 ← 𝜆(𝑖, 𝑗)
7 for k ← 1 to n
8
do for i ← 1 to n
9
do for j ← 1 to n
10
11 return 𝐿(𝑛)
(𝑘)
𝑘−1
do 𝑙𝑖𝑗 ← 𝑙𝑖𝑗
(𝑘−1)・
⊕(𝑙𝑖𝑘
(𝑘−1) ∗・
(𝑘−1)
) ○ 𝑙𝑘𝑗 )
○(𝑙𝑘𝑘
26.4 有向グラフにおいて経路問題を
解くための一般的な枠組み
・
• このアルゴリズムの実行時間は○、
⊕、および*を計算する
時間に依存する。𝑇○・,𝑇⊕ ,𝑇∗ でこれらの時間を表すことにする
と、COMPUTE-SUMMARIESの実行時間はΘ(𝑛3 (𝑇○・+𝑇⊕ +𝑇∗ ))であ
る。よって、これら3つの操作がO(1)でできるなら、Θ(𝑛3 )であ
る。