近準完全有向グラフに対するパス幅の FPT アルゴリズム

近準完全有向グラフに対するパス幅の FPT アルゴリズム
橘内謙太
明治大学大学院
理工学研究科基礎理工学専攻情報科学系
計算理論研究室
2015 年 2 月 14 日
概要
有向グラフ G は,その各頂点 u が「辺 (u, v) も辺 (v, u) も存在しないような頂点 v ̸= u の個数
は高々 h である」という性質を満たすとき,h 準完全であるという.0 準完全な有向グラフは準完
全有向グラフとして知られ,トーナメントはその特別な場合である.準完全有向グラフに対して
は,Pilipczuk によって FPT アルゴリズムが考案されている.
本研究では n 頂点の h 準完全有向グラフ G と正整数 k が与えられたとき,G のパス幅が k 以下
であるかを判定する (h + 2k + 1)2k nO(1) 時間のアルゴリズムを考案した.この結果は,Pilipczuk
の準完全有向グラフに対する結果よりも k に対する依存度が小さく,かつより一般的である.この
結果を導くために,一般の有向グラフに対する玉木の XP アルゴリズムを変形し,「U を入次数が
k 以下であるような任意の頂点集合とするとき,U ∪ {v} の入次数が k 以下であるような頂点 v の
個数は高々 b である」という性質を満たす有向グラフに対してその実行時間が b2k nO(1) であるこ
とを示す.
準完全グラフに対しての Pilipczuk のアルゴリズムと我々のアルゴリズムの比較実験の結果,
Pilipczuk のアルゴリズムよりも,我々のアルゴリズムのほうがより高速に動作することが確認で
きた.
本稿では,Pilipczuk の準完全有向グラフに対する FPT アルゴリズムの概要の説明および実装
実験,我々が考案した h 準完全有向グラフに対する FPT アルゴリズムの詳細な説明および実装実
験,加えてこの二つのアルゴリズムに対する比較実験について記述する.
1
目次
第1章
はじめに
3
第2章
諸定義
5
第3章
準完全グラフのパス幅を求める FPT アルゴリズム
7
3.1
諸定義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.2
障害 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
3.3
補題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
3.4
アルゴリズム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
第4章
h 準完全グラフのパス幅を求める FPT アルゴリズム
12
4.1
諸定義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
4.2
補題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
4.3
アルゴリズム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
4.4
正しさの証明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
4.5
実行時間の解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
4.6
実装上の工夫 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
実装,実験
23
5.1
実験で使用するテストデータについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
5.2
[実験 1]3 章のアルゴリズムの実装実験 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
5.3
[実験 2]4 章のアルゴリズムの実装実験 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
5.4
[実験 3]3 章のアルゴリズムと 4 章のアルゴリズムの比較実験
48
第5章
第6章
. . . . . . . . . . . . . . . . .
むすびに
52
6.1
まとめ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
6.2
課題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
謝辞
53
参考文献
54
付録 A
実験データ (一部抜粋)
55
2
第1章
はじめに
無向グラフのパス幅(pathwidth)[2, 12] の概念は,Robertson と Seymour によるグラフマイナー理論 [12]
の中で,重要な役割を果たすだけでなく,グラフアルゴリズムの世界でも重要なグラフパラメータとして認識
されている.例えば,グラフのパス幅(さらに一般的には,グラフの木幅)が定数であるとき,多くの NP 困
難なグラフ上の問題は多項式時間で解くことができることが知られている [1, 2].しかしながら,パス幅を決
定する問題は NP 完全であることが知られている [7].
このような背景の中で,パラメータ化計算量理論の世界でもパス幅決定アルゴリズムの研究は行われてい
る.ある問題が固定パラメータ容易(fixed parameter tractable)であるとは,その問題のインスタンス I と
パラメータ k が与えられたとき,その問題を解く f (k)|I|O(1) 時間アルゴリズムが存在することである.ここ
で,f は計算可能関数であり,|I| はインスタンスのサイズであるとする.また,そのような実行時間のアル
ゴリズムを固定パラメータアルゴリズム(fixed parameter algorithm)と呼ぶ.グラフのパス幅がパラメータ
以下であることを判定する問題は,パス幅がマイナー操作に関して単調であるため,固定パラメータ容易であ
る [13, 14].Bodlaender と Kloks は,その問題に対してグラフのサイズに対して線形時間で動作する固定パ
ラメータアルゴリズムを与えた [2, 3].
その一方で,有向グラフのパス幅を求めるアルゴリズムの研究も行われている.有向グラフのパス幅の概
念は以下の理由により,無向グラフのパス幅の概念を一般化していると言える.無向グラフ G の各無向辺
{u, v} を,2つの有向辺 (u, v), (v, u) に置き換えて得られる有向グラフを G′ とするとき,G のパス幅と G′
のパス幅は一致する [9]*1 .これにより,有向グラフのパス幅を決定する問題も同様に NP 完全であることが
わかる.有向グラフのパス幅は,その無向基礎グラフ(辺の向きを無視し,多重辺を取り除いてできる無向グ
ラフ)のパス幅とは一般的には一致しないことに注意する.特に,有向無閉路グラフのパス幅は 0 であるのに
対し,その無向基礎グラフの(無向グラフの)パス幅は任意に大きくなる.
無向グラフのパス幅が,あるパラメータ以下であるかを判定する問題が固定パラメータ容易であるのに対
し,有向グラフでの同様の問題が固定パラメータ容易であるかは未解決問題である.その一方で,nO(k) 時間
アルゴリズムが知られている [15, 10].ここで,n は入力されるグラフの頂点数,k はパラメータとする.
無向グラフに対するグラフマイナー理論と類似の成功を得ることの可能な有向グラフのクラスの探求とい
う文脈のなかで,Formin,Kim,Pilipczuk,Seymour[8, 6] および Chudnovsky,Fradkin,Seymour[4, 5]
はトーナメントや準完全有向グラフ(semi-complete digraph)に対するパス幅やカット幅に対する固定パラ
メータアルゴリズムを与えた.準完全有向グラフとは,無向基礎グラフが完全グラフであるような有向グラフ
*1
ただし,無向グラフのパス幅の定義と有向グラフでの定義はわずかに異なる.
3
のことを言う.これらの幅パラメータは,グラフマイナー理論によって得られた結果を,それらのグラフクラ
スに適用するために重要な役割を果たしている.上述のアルゴリズムが構成的ではないのに対し,Pilipczuk
は構成的な固定パラメータアルゴリズムを与えた [11].Pilipczuk のアルゴリズムは,n 頂点の準完全有向グ
ラフと整数 k が与えられたとき,そのグラフのパス幅が k 以下であるかを O(2O(k log k) n2 ) 時間で判定する.
我々は,この結果を次のように一般化する.
非負整数 h に対して,有向グラフ G = (V, E) が h 準完全であるとは,その無向基礎グラフの最小次数が
|V | − h − 1 以上であることを言う.0 準完全性は準完全性と一致し,準完全有向グラフは任意の h ≥ 0 に対
して h 準完全である.
定理 1. h 準完全有向グラフ G と正整数 k が与えられたとき,G のパス幅が k 以下であるかを判定する
(h + 2k + 1)2k nO(1) 時間アルゴリズムが存在する.つまり,h + k をパラメータとしたとき,この問題は固定
パラメータ容易である.
この結果は,次に定義する (k, b) 有界な有向グラフに対するより一般的な結果の帰結である.有向グラフ G
と頂点集合 U ⊆ V (G) に対して,U の G における入次数 d− G (U )(出次数 d+ G (U ))を,v ∈ V (G) \ U で v
から U に入る(U から v に出る)辺が存在するようなものの個数とする.正整数 k, b に対して G が (k, b) 有
界であるとは,d− (U ) ≤ k を満たすような各 U ⊆ V に対して,d− (U ∪ {v}) ≤ k を満たすような v ∈ V \ U
が高々 b 個であり,かつ d+ (U ) ≤ k を満たすような各 U ⊆ V に対して,d+ (U ∪ {v}) ≤ k を満たすような
v ∈ V \ U が高々 b 個であることを言う.
定理 2. 正整数 k と (k, b) 有界な有向グラフ G が与えられたとき,G のパス幅が k 以下であるかを判定する
b2k nO(1) 時間アルゴリズムが存在する.
h 準完全有向グラフは (k, h + 2k + 1) 有界であるので(補題 1 参照),定理 1 は定理 2 の直接の帰結である.
我々のアルゴリズムは,Nagamochi [10] による劣モジュラシステムにおける線形配置問題に対するアルゴ
リズムに基づいている.彼は,n 頂点有向グラフのパス幅が k 以下であるかを判定する問題に対して彼のアル
ゴリズムを適用した場合の計算時間が,n2k+O(1) であることを示した.(k, b) 有界な有向グラフに彼のアル
ゴリズムを適用すると,(k, b) 有界性のうち入次数に関する条件のみを活用することができて,計算時間の上
界を bk nk+O(1) に改良することができる.我々は,彼のアルゴリズムをパス幅計算に特化し,(k, b) 有界性に
おける入次数と出次数の両方の条件を活用できるようなアルゴリズムを設計することにより,上述の結果を
導く.
我々のアルゴリズムは Pilipczuk [11] の導入した分離鎖(separation chain)の(一般化した)概念を利用
し,h 準完全グラフの (k, h + 2k + 1) 有界性の証明に彼の用いた議論を用いるが,アルゴリズム自体は彼のア
ルゴリズムとは全く異なる原理に基づいている.実際,彼のアルゴリズムが準完全グラフの多くの性質に依存
し,準完全グラフに対してのみ動作可能であるのに対して,我々のアルゴリズムは,一般の有向グラフに対し
て動作する:(k, b) 有界性は実行時間の解析でのみ使用される.
本稿の構成を以下に記す.2 章では本稿全体で使用する定義と基礎的な事実を与える.3 章では,Pilipczuk
の考案したアルゴリズム [11] の簡単な説明を与える.4 章では我々が考案したアルゴリズムで用いる定義と基
礎的な事実を与え,また主定理のためのアルゴリズム,その正しさ,およびその実行時間の解析について述べ
る.4 章の内容は,学習院大学の小林靖明氏との共同研究である.5 章では,3 章,4 章で説明したアルゴリズ
ムについての実装実験,およびその結果の考察を与える.
4
第2章
諸定義
G = (V, E) を頂点集合が V ,辺集合が E であるような有向グラフとし,n = |V | とする.本稿での有向グラ
フは単純,つまり自己ループを含まず,任意の相違なる 2 頂点 u, v ∈ V において,有向辺 (u, v) は高々 1 つし
か E に含まれないとする(ただし (u, v), (v, u) ∈ E であることは許す).U ⊆ V によって誘導される G の部
分グラフを G[U ] と表す.頂点 v ∈ V において,N − G (v) = {u ∈ V : (u, v) ∈ E} とし,d− G (v) = |N − G (v)|
とする.また,頂点集合 U ⊆ V において N − G (U ) =
∪
v∈U
N − G (v) \ U ,d− G (U ) = |N − G (U )| とする.さ
らに,U ∪ N − G (U ) を N − G [U ] で表す.辺の向きを逆に見ることにより,N + G および d+ G の記法を同様に
定義する.以降では,文脈から対象のグラフ G 明らかなときは,上の記法の添え字 G を省略する.
正整数 k, b において G が (k, b) 有界であるとは,d− (U ) ≤ k を満たす任意の U ⊆ V において,d− (U ∪
{v}) ≤ k を満たすような v ∈ V \ U が高々 b 個であり,かつ d+ (U ) ≤ k を満たす任意の U ⊆ V において,
d+ (U ∪ {v}) ≤ k を満たすような v ∈ V \ U が高々 b 個であることをいう.
Pilipczuk [11] は,準完全有向グラフにおいて入り次数が k 以下であるような頂点の個数が高々 2k + 1 で
あることを示した.次の補題はその観察を一般化している.
補題 1. 任意の h 準完全有向グラフ G = (V, E) は (k, h + 2k + 1) 有界である.
証明. b を G が (k, b) 有界となるような最小の整数とする.このとき,(k, b) 有界の定義より,
(1)d− (U ) ≤ k
を満たす U ⊆ V で,d− (U ∪ {v}) ≤ k を満たす v ∈ V \ U が b 個であるようなものが存在するか,または
(2)d+ (U ) ≤ k を満たす U ⊆ V で,d+ (U ∪ {v}) ≤ k を満たす v ∈ V \ U が b 個であるようなものが存在
する.
(1)の場合を考えるが,
(2)の場合も同様である.(1)を満たす U を固定し,d− (U ∪ {v}) ≤ k を
満たす v ∈ V \ U からなる集合を X とする.h 準完全の定義より,G[X] は少なくとも b(b − h − 1)/2 本の辺
を含むので,G[X] の平均入次数
∑
v∈X
d− (v)/b は (b − h − 1)/2 以上である.一方,どの v ∈ X に対しても
d− (U ∪ {v}) ≤ k であるから,この平均入次数は k 以下でなければならない.したがって,b − h − 1 ≤ 2k ,
すなわち b ≤ h + 2k + 1 を得る.
G = (V, E) を有向グラフとする.G のパス分解(path decomposition)とは,G の頂点集合の列 W =
(W1 , W2 , . . . , Wr ) で,
1.
∪
1≤i≤r
Wi = V ,
2. 各 (u, v) ∈ E において u ∈ Wi かつ v ∈ Wj を満たす i, j(1 ≤ i ≤ j ≤ r) が存在し,
3. 各 u ∈ V において,u ∈ Wi ∩ Wj ならば u ∈ Wk (i ≤ k ≤ j)
5
を満たすものである.パス分解 W の幅(width)とは,max1≤i≤r |Wi | − 1 のことであり,G のパス幅
(pathwidth)とは,G が幅 k のパス分解を持つような最小の k であると定義する.
パス分解 W = (W1 , W2 , . . . , Wr ) が好適である(nice)とは,W1 = Wp = ∅ であり,かつ任意の 1 ≤ i ≤ r−1
について
• Wi ⊂ Wi+1 かつ |Wi+1 | = |Wi | + 1
• Wi+1 ⊂ Wi かつ |Wi+1 | + 1 = |Wi |
のどちらかが成り立つことを言う.G のパス幅が w であれば,G は幅 w の好適なパス分解を持つことが良く
知られている.
6
第3章
準完全グラフのパス幅を求める FPT アルゴ
リズム
この章では Michal Pilipczuk の論文 [11] で提案されたアルゴリズムについて説明する.ここでは,アルゴ
リズムで利用するいくつかの定義と補題,アルゴリズムの流れのみ説明し,補題の証明などは割愛する.ま
た,彼の論文では,パス分解の定義の条件 2 が「各 (u, v) ∈ E において ,u ∈ Wi かつ v ∈ Wj を満たす
i, j(1 ≤ j ≤ i ≤ r) が存在」と我々の定義とは逆になっているが,本質的な違いがないことは以下の観察から
明らかである.
観察 1. 条件 2 が「各 (u, v) ∈ E において ,u ∈ Wi かつ v ∈ Wj を満たす i, j(1 ≤ j ≤ i ≤ r) が存在」であ
るような幅 k のパス分解を W = (W1 , W2 , . . . , Wr ) とすると,W ′ = (Wr , Wr−1 , . . . , W1 ) は条件 2 が「各
(u, v) ∈ E において ,u ∈ Wi かつ v ∈ Wj を満たす i, j(1 ≤ i ≤ j ≤ r) が存在」であるような幅 k のパス分
解である.
3.1 諸定義
ここでは,アルゴリズムで利用するいくつかの構造の定義を行う.G = (V, E) を有向グラフとする.
G = (V, E) の頂点集合の対 (A, B) が A ∪ B = V ,N − [A \ B] ⊆ A,かつ N + [B \ A] ⊆ B を満たすとき,
(A, B) を G の分離対(separation)と呼ぶ.分離対 (A, B) の位数を |A ∩ B| と定める.
分離対の列 ((A0 , B0 ), (A1 , B1 ), . . . , (Ar , Br )) が分離鎖 (Separation Chain) であるとは,(A0 , B0 ) = (∅, V )
かつ (Ar , Br ) = (V, ∅) かつ任意の i, j(i ≤ j) について Ai ⊆ Aj , Bj ⊆ Bi が成り立つことをいう.また,こ
のとき max0≤i≤r |Ai ∩ Bi | を分離鎖の 幅という.
[11] において,パス分解と分離鎖について次の補題が示されている.
補題 2 ([11]). パス分解と分離鎖について次のことが成り立つ.
• W = (W1 , W2 , . . . , Wr ) を幅が p であるパス分解であるとする.このとき任意の 0 ≤ i ≤ r について
∪
∪
(Ai , Bi ) = ( j≤i Wj , i<j Wj ) によって定義される ((A0 , B0 ), (A1 , B1 ), . . . , (Ar , Br )) は幅が p 以下
の分離鎖である.
• ((A0 , B0 ), (A1 , B1 ), . . . , (Ar , Br )) を幅が p である分離鎖であるとする.このとき,任意の 0 < i ≤ r
について Wi = Ai ∩ Bi−1 によって定義される W = (W1 , W2 , . . . , Wr ) は幅が max0≤i≤r |Ai ∩ Bi−1 |
7
のパス分解である.
G = (X, Y, E) を無向二部グラフ (X の任意の頂点間に辺がなく,Y の任意の頂点間に辺がないグラフ) と
する.また,頂点 v ∈ X ∪ Y に対して N (v) で v と隣接する頂点の集合を d(v) によって,|N (v)| を表すと
する.
G のバス選択子 Bl (G)(Blrev (G)) は v ∈ X(Y ) で,次のどちらかを満たすものすべての集合を表す.
• d(v) > l である.
• u ∈ N (v) で d(u) ≤ l であるものが少なくとも 1 つ存在する.
3.2 障害
ここでは,グラフのパス幅が k より大きくなることがわかる障害について述べる.次に示す構造がグラフに
存在した場合,その時点でアルゴリズムを停止し,パス幅が k より大きいことがいえる.
3.2.1 次数障害
T を準完全な有向グラフ,k ,l を整数とする.このとき,X ⊆ V (T ) が (k, l)-次数障害であるとは,|X| ≤ k
であり,かつ任意の v, w ∈ X について,|d+ (v) − d+ (w)| ≤ l が成り立つことをいう.
補題 3 ([11]). T を準完全な有向グラフとする.T が (5k + 2, k)-degree tangle であるような X を含むとき,
pw(T ) > k である.
3.2.2 マッチング障害
T を準完全な有向グラフ,k ,l を整数とする.このとき,X ∩ Y = ∅ であるような X, Y ⊆ V (T ) が (k, l)マッチング障害であるとは,|X| = |Y | = k であり,かつ X から Y へのマッチングが存在し,かつ任意の
v ∈ X, w ∈ Y に対して d+ (w) > d+ (v) + l が成り立つことをいう.
補題 4 ([11]). T を準完全な有向グラフとする.T が (k + 1, k)-matchin tangle であるような (X, Y ) を含む
とき,pw(T ) > k である.
3.3 補題
ここでは,アルゴリズムの説明に利用する補題について記述する.
T の 頂 点 v を d+ (v) に つ い て 昇 順 に 並 べ る .並 べ た 頂 点 の 順 列 を (v1 , v2 , . . . , vn ) と す る .
Hi = (Xi , Yi , Ei ) を Xi = {v1 , v2 , . . . , vi },Yi = {vi , vi+1 , . . . , vn },任 意 の x ∈ Xi , y ∈ Yi に 対
して,(x, y) ∈ E(T ) ならば,{x, y} ∈ E(Hi ) を満たすような無向二部グラフとする.
このとき,[11] において次の補題が示されている.
補題 5 ([11]). T を準完全な有向グラフ,m = 6k + 1 を整数とする.0 ≤ β ≤ n,α = max(0, β − (5k + 1))
rev
を満たすような任意の整数 (α, β) について,|Bm (Hα )| > m2 + m もしくは,|Bm
(Hβ )| > m2 + m を満た
8
すとき,pw(T ) > k である.
m = 6k + 1 とし,T の分離対 (A, B) について考える.α, β を 0 ≤ β ≤ n,α = max(0, β − (5k + 1)) を
満たすような整数とする.(A, B) が (α, β) に対して薄いとは,Yβ ⊆ B ⊆ Yα ∪ Bm (Hα ) かつ,Xα ⊆ A ⊆
rev
Xβ ∪ Bm
(Hβ ) を満たすことをいう.(A, B) が (α, β) に対して薄いような (α, β) が存在するとき,(A, B) を
単に薄いという.
分離鎖 C = ((A0 , B0 ), (A1 , B1 ), . . . , (Ar , Br )) について,(Ai , Bi )(0 ≤ i ≤ r) が全て薄いとき,分離鎖 C
は薄いという.
薄い分離鎖について,[11] の文脈より,以下の補題が得られる.
補題 6 ([11]). ((A0 , B0 ), (A1 , B1 ), . . . , (Ar , Br )) を幅が p である分離鎖とする.このとき,同じ幅で薄い分
離鎖が存在する.
この補題より,アルゴリズムでは薄い分離対のみを探索すればいいことがわかる.[11] の文脈より,位数が
k である薄い分離対を次のように特徴づけることができる.
補題 7 ([11]). 0 ≤ β ≤ n,α = max(0, β − (5k + 1)) を満たすような任意の整数 (α, β) について,
rev
|Bm (Hα )| > m2 + m もしくは,|Bm
(Hβ )| > m2 + m でないとき,薄い分離対 (A, B) は以下を満たす.
• v ∈ Xα \ Bm (Hα ) は A \ B に含まれる.
• v ∈ Xα ∪ Bm (Hα ) は A \ B ,A ∩ B のどれかに含まれる.
rev
• v ∈ Yβ \ Bm
(Hβ ) は B \ A に含まれる.
rev
• v ∈ Yβ ∩ Bm
(Hβ ) は B \ A,A ∩ B のどれかに含まれる.
• v ∈ Yα ∩ Xβ は A \ B ,B \ A,A ∩ B のどれかに含まれる.
このような薄い分離対は高々 2O(klogk) 個しか存在しない.
補題 7 によって,整数 β について特徴づけられる分離対の集合を Dβ とする.このとき,[11] の文脈より
以下の補題が得られる.
補題 8 ([11]). T を準完全な有向グラフ,(A, B),(A′ , B ′ ) を A ⊆ A′ かつ B ′ ⊆ B であるような T の分離対
とする.このとき,(A, B) ∈ Dβ であるならば,(A′ , B ′ ) ∈ Dβ+j (−(6k + 2) ≤ j ≤ (6k + 2)) である.
3.4 アルゴリズム
T を準完全な有向グラフとし,T に対するアルゴリズムの流れについて説明する.アルゴリズムでは,T の
全ての分離対を探索することで,分離鎖 ((A0 , B0 ), (A1 , B1 ), . . . , (Ar , Br )) で,max1≤i≤r |Ai ∩ Bi−1 | − 1 ≤ k
であるようなものが存在するかを調べる.また,その過程で (5k + 2, k)-degree tangle,(k + 1, k)-matching
tangle を見つけたら,その時点でアルゴリズムを停止している.
定理 3 ([11]). T を準完全な有向グラフ,k を整数とする.ことのき,O(2O(k log k) |V (T )|2 ) 時間で pw(T ) ≤ k
であるかを判定するアルゴリズムが存在する.
T の頂点 v を d+ (v) について昇順に並べる.並べた頂点の順列を (v1 , v2 , . . . , vn ) とする.このとき,
9
d+ (vi+5k+1 ) > d+ (vi ) + k であるような頂点 vi が存在するとき,X = {vi , vi+1 , . . . , vi+5k+1 } は (5k + 2, k)degree tangle であるので,pw(T ) > k であるのでアルゴリズムを停止し,解を出力する.
rev
そうでないとして続ける.m = 6k + 1 として,全ての β(0 ≤ β ≤ n) に対して,Bm (Hα ) と Bm
(Hβ ) を求
rev
める.|Bm (Hα )| > m2 + m もしくは,|Bm
(Hβ )| > m2 + m を満たすとき,補題 5 より pw(T ) > k とし,ア
ルゴリズムを停止する.そうでないならば,補題 7 によって Dβ を求める.D =
′
′
∪
0≤β≤n
Dβ であるような D
′
を頂点集合として,A ⊆ A かつ B ⊆ B であり,B ∩ A ≤ k であるような分離対 (A, B),(A′ , B ′ ) について,
(A, B) から (A′ , B ′ ) への辺をひいたグラフを考える.このグラフに (∅, V ) から (V, ∅) へのパスがあるかを調
べる.このグラフを構成する際には,補題 8 より,(A, B) ∈ Dβ ,(A′ , B ′ ) ∈ Dβ+j (−(6k + 2) ≤ j ≤ (6k + 2))
となるような任意の (A, B),(A′ , B ′ ) について,A ⊆ A′ かつ B ′ ⊆ B ,|A′ ∩ B| ≤ k + 1 であるならば辺を
引けばよい.もし (∅, V ) から (V, ∅) へのパスがあったなら,そのパスは分離鎖であり,幅が高々 k であるよ
うなパス分解に対応しているので,pw(T ) ≤ k となる.また pw(T ) ≤ k であるならばそのようなパスが必ず
存在するので,見つからなかったときは,pw(T ) > k となる.
以下にアルゴリズムの疑似コードをのせる.
10
Algorithm 1 準完全グラフ T について,pw(T ) ≤ k かどうかを判定する.
1: T の頂点 v ∈ V (T ) を d+ (v) について昇順に並べ,これを (v1 , v2 , . . . , vn ) とする.
2:
3:
for i := 1 to i = n − (5k + 1) do
if d+ (vi+5k+1 ) ≤ d+ (vi ) + k then
pw(T ) > k としてアルゴリズムを停止する.
4:
5:
end if
6:
end for
7:
m := 6k + 1
8:
for ( doβ := 0 to β := n)
9:
Hα ,Hβ をつくる.
10:
rev
Bm (Hi ),Bm
(Hβ ) を求める.
11:
rev
if |Bm (Hα )| > m2 + m または |Bm
(Hβ )| > m2 + m then
pw(T ) > k としてアルゴリズムを停止する.
12:
13:
end if
14:
Dβ を求める.
15:
end for
16:
for β := 0 to β := n do
17:
for ∀(A, B) ∈ Dβ do
for i := max(0, β − (6k + 2)) to i := min(n, β + (6k + 2)) do
18:
for ∀(A′ , B ′ ) ∈ Di do
19:
if A ⊆ A′ かつ B ′ ⊆ B かつ |A′ ∩ B| ≤ k + 1 then
20:
(A, B) から (A′ , B ′ ) への辺をひく.
21:
end if
22:
end for
23:
end for
24:
25:
end for
26:
end for
27:
if (∅, V ) から (V, ∅) へのパスが存在する. then
28:
pw(T ) ≤ k としてアルゴリズムを停止する.
29:
30:
31:
else
pw(T ) > k としてアルゴリズムを停止する.
end if
11
第4章
h 準完全グラフのパス幅を求める FPT アル
ゴリズム
この章では,h 準完全グラフに対する FPT アルゴリズムについて記述する.ここで,以降の定義は,同じ
表記でもでも 3 章における定義とは違っているものがある.
4.1 諸定義
ここでは,アルゴリズムで利用するいくつかの定義を与える.G = (V, E) の頂点集合の対 (A, B) が
A ∪ B = V ,N − [A \ B] ⊆ A,かつ N + [B \ A] ⊆ B を満たすとき,(A, B) を G の分離対(separation)と
呼ぶ.分離対 (A, B) の位数を |A ∩ B| と定める.S, T ⊆ V について,分離対 (A, B) が,S ⊆ A \ B かつ
T ⊆ B \ A を満たしているとき,(A, B) を S–T 分離対という.また,(A, B) の位数が全ての S–T 分離対の
中で最小であるとき,(A, B) を最小 S–T 分離対という.
S–T 分離対 (A, B) が S 自明であるとは,A \ B = S であることを,T 自明であるとは B \ A = T である
ことを言う.S 自明または T 自明な S–T 分離対は自明であるという.非自明な最小 S-T 分離対が存在する
とき,対 (S, T ) は可約であるといい,そうでないとき対 (S, T ) は既約であるという.
分離対の列 ((A0 , B0 ), (A1 , B1 ), . . . , (Ar , Br )) が A0 ⊆ A1 ⊆ . . . ⊆ Ar ⊆ V ,Br ⊆ Br−1 ⊆ . . . ⊆ B0 ⊆ V
を満たすとき,この列を 分離鎖と呼びそれに属する分離対の最大位数 max0≤i≤r |Ai ∩ Bi | をその幅という.
C = ((A0 , B0 ), (A1 , B2 ), . . . , (Ar , Br )) を分離鎖とする.C が密であるとは,任意の隣り合う分離対
(Ai , Bi ),(Ai+1 , Bi+1 ) について,|Ai+1 \ Ai | ≤ 1 と |Bi \ Bi+1 | ≤ 1 の少なくとも一方が成り立つことをい
う.この定義は同一の分離対の繰り返しを許すことに注意する.S, T ⊆ V に対して,C が S–T 分離鎖であ
るとは,B0 = V \ S かつ,Ar = V \ T を満たしていることをいう.S–T 分離鎖を構成する分離対は,すべ
て S–T 分離対であることに注意する.
分 離 鎖 C = ((A0 , B0 ), (A1 , B1 , ), . . . , (Ar , Br )) と Ar ⊆ A′0 か つ B0′ ⊆ Br を 満 た す 分 離 鎖 C ′ =
((A′0 , B0′ ), (A′1 , B1′ , ), . . . , (A′s , Bs′ )) において,(C, C ′ ) で C の後ろに C ′ をつなげた分離鎖,つまり,
(C, C ′ ) = ((A0 , B0 ), . . . , (Ar , Br ), (A′0 , B0′ ), . . . , (A′s , Bs′ ))
と表す.3 つ以上の分離鎖に関しても同様に表記する.
Pilipczuk の論文 [11] で示されている補題 2 よりパス分解と分離鎖について以下の観察が得られる.
観察 2 ([11]). 以下のことが成り立つ.
12
• W = (W1 , W2 , . . . , Wr ) を幅 k 以下のパス分解とする.このとき,(Ai , Bi ) = (
∪
j≤i
Xj ,
∪
i<j
Xj ) で
あるような ((A1 , B1 ), (A2 , B2 ), . . . , (Ar , Br )) は幅 k 以下の ∅–∅ 分離鎖である.
• ((A1 , B1 ), (A2 , B2 ), . . . , (Ar , Br )) を幅 k 以下の ∅–∅ 分離鎖とする.このとき,Wi = Ai ∩ Bi−1 であ
るような W = (W1 , W2 , . . . , Wr ) は幅 max0<i≤r |Ai ∩ Bi−1 | − 1 のパス分解である.
補題 9. G のパス幅が k 以下であることの必要十分条件は,幅が k 以下の密な ∅–∅ 分離鎖が存在することで
ある.
証明. G のパス幅が k 以下であるとき,幅が k 以下の好適なパス分解 (X1 , X2 , . . . , Xp ) が存在する.このとき,
観察 2 より,1 ≤ i ≤ p に対して,(Ai , Bi ) = (
∪
j≤i
Xj ,
∪
j>i
Xj ) とおくと,((A1 , B1 ), (A2 , B2 ), . . . , (Ap , Bp ))
は幅 k 以下の密な ∅–∅ 分離鎖である. 他方,幅 k の密な ∅–∅ 分離鎖 ((A0 , B0 ), (A1 , B1 ), . . . , (Ar , Br )) が
与えらえれたとき,観察 2 より,1 ≤ i ≤ r に対して,Xi = Ai ∩ Bi−1 とおくと (X1 , X2 , . . . , Xr ) は,幅
が max0<i≤r |Ai ∩ Bi−1 | − 1 のパス分解である.密であることより,任意の隣り合う分離対 (Ai−1 , Bi−1 ),
(Ai , Bi ) について,|Ai \Ai−1 | ≤ 1 または,|Bi−1 \Bi | ≤ 1 を満たしている.前者を満たすとき,|Ai ∩Bi−1 | ≤
|Ai−1 ∩ Bi−1 | + 1 = k + 1 であり,後者を満たすとき,|Ai ∩ Bi−1 | ≤ |Ai ∩ Bi | + 1 = k + 1 であるので,
max0<i≤r |Ai ∩ Bi−1 | − 1 ≤ k となる.
4.2 補題
この節では,アルゴリズムの設計と正しさの証明に有用な補題と観察をいくつか与える.すべての補題にお
いて,有向グラフ G = (V, E) が暗黙に仮定されている.
S–T 分離鎖 C = ((A0 , B0 ), (A1 , B1 ), . . . , (Ar , Br )) が好適であるとは任意の 0 ≤ i < r について,
|Ai+1 \ Ai | ≤ 1 かつ |Bi \ Bi+1 | ≤ 1 であることをいう.この定義は密な分離鎖と同様に,同じ S–T 分離対
の繰り返しを許している.また,好適な S–T 分離鎖は明らかに密な S–T 分離鎖であるといえる.S–T 分離
鎖 C がタイトであるとは,A0 = N − [S] かつ Br = N + [T ] であることをいう.
補題 10. 幅 k 以下の密な S–T 分離鎖 ((A0 , B0 ), (A1 , B1 ), . . . , (Ar , Br )) が存在するとき,幅 k 以下のタイ
トでありかつ好適な S–T 分離鎖が存在する.
証明. S–T 分離鎖 C = ((A0 , B0 ), (A1 , B1 ), . . . , (Ar , Br )) において,δ(C) を
δ(C) = |A0 \ N − [S]| + |B0 \ N + [T ]|
∑
+
(max{0, |Ai+1 \ Ai | − 1} + max{0, |Bi \ Bi+1 | − 1})
0≤i<r
と定義する.ここで,C を幅 k 以下の S–T 分離鎖の中で δ(C) が最小であるものとする.もし,δ(C) = 0
であれば C はタイトであり,かつ好適であるので,証明を終了する.以下では δ(C) > 0 を仮定して矛盾を導
く.まず,v ∈ A0 \ N − [S] がある場合について考える.このとき,(A0 \ {v}, B0 ) を C の先頭に追加したも
のを C ′ とすると,C ′ は密な S–T 分離鎖である.また,(A0 \ {v}, B0 ) の位数は (A0 , B0 ) の位数よりも小さ
いので C ′ の幅は k 以下である.明らかに δ(C ′ ) = δ(C) − 1 であるので,δ(C) が最小であることに矛盾する.
同様にして,v ∈ Br \ N + [T ] である場合についても矛盾が導かれる.
最後に 0 ≤ i < r について,|Ai+1 \ Ai | ≥ 2 である場合を考える.ここで,v ∈ Ai+1 \ Ai について,
(Ai ∪ {u}, Bi ) は S–T 分離対であり,密である条件から,|Bi \ Bi+1 | ≤ 1 であるため,(Ai ∪ {v}, Bi ) の位数
13
は (Ai+1 , Bi+1 ) の位数以下である.よって,C の (Ai , Bi ) と (Ai+1 , Bi+1 ) の間に (Ai ∪ {v}, Bi ) を追加した
ものを C ′ とすると,C ′ は幅 k 以下の密な S–T 分離鎖である.ここで
δ(C ′ ) = δ(C) − max{0, |Ai+1 \ Ai | − 1} − max{0, |Bi \ Bi+1 | − 1}
+ max{0, |{v}| − 1} + max{0, |Bi \ Bi | − 1}
+ max{0, |Ai+1 \ (Ai ∪ {v})| − 1} + max{0, |Bi \ Bi+1 | − 1}
≤ δ(C) − max{0, |Ai+1 \ Ai | − 1]} + max{0, |Ai+1 \ (Ai ∪ {v})| − 1}
であり,|Ai+1 \ Ai | > 1 であることから
δ(C ′ ) ≤ δ(C) − 1
となる.よって δ(C) が最小であることに矛盾する.同様にして |Bi \ Bi+1 | ≥ 2 である場合についても矛盾
が導かれる.
V の部分集合 S, T ⊆ V について,幅 k 以下の密な S–T 分離鎖が存在するとき,(S, T ) は k 分離可能であ
るという.また,N − [S] ∩ T = ∅ (したがって,S ∩ N + [T ] = ∅),d− (S) ≤ k ,かつ d+ (T ) ≤ k であると
き,(S, T ) は弱 k 分離可能であるという.次の観察は自明であろう.
観察 3. (S, T ) が弱 k 分離可能であることは,(S, T ) が k 分離可能であるための必要条件である.
補題 11. 弱 k 分離可能な対 (S, T ) が |V \ (S ∪ T )| ≤ k + 1 を満たすとき,(S, T ) は k 分離可能である.
証明. 証明は背理法による.補題が成り立たないと仮定し,弱 k 分離可能な対 (S, T ) で,|V \ (S ∪ T )| ≤ k + 1
であるにもかかわらず k 分離可能でないものを,|V \ (S ∪ T )| が最小になるように選ぶ.もし,V \ (S ∪ T ) =
N − (S) = N + (T ) であれば,(N − [S], N + [T ]) は,単独で幅 k 以下の密な S–T 分離鎖を構成するので,これ
はあり得ない.したがって,ある v ∈ V \ (S ∪ T ) で,(1)v ̸∈ N − (S) または(2)v ̸∈ N − (T ) であるもの
が存在する.(1)の場合,T ′ = T ∪ {v} とおくと,v ̸∈ N − (S) より,N + (T ′ ) ⊆ V \ (S ∪ T ∪ {v}) であ
るから,|N + (T ′ )| ≤ k が成り立つ.また,v ̸∈ N − (S) より N − [S] ∩ T ′ = ∅ も成り立つ.よって,(S, T ′ )
は弱 k 分離可能である.|V \ (S ∪ T ′ )| < |V \ (S ∪ T )| ≤ k + 1 であるので,(S, T ) の選び方から,(S, T ′ )
は k 分離可能であり,幅 k 以下の密な S–T ′ 分離鎖 C ′ が存在する.C ′ の最後の分離対を (A, B) とおくと,
A = (V \ T ′ ) ⊆ (V \ T ) であり B ⊇ N + [T ′ ] ⊇ N + [T ] なので,C ′ の直後に (V \ T, N + [T ]) を追加してでき
る列 C は S–T 分離鎖である.また,C ′ が密でありかつ (V \ T ) \ A = {v} であるので,C も密である.さ
らに,C ′ の幅が k 以下でありかつ (V \ T, N + [T ]) の位数が |N + (T )| ≤ k であるので,C の幅も k 以下であ
る.以上より,(S, T ) が k 分離可能であることが結論され,仮定に矛盾する.(2)の場合も,
(1)の場合と対
称な議論により,矛盾が導かれる.
上の証明は背理法の形をとっているが実質は帰納法であり,条件を満たす対 (S, T ) から幅 k 以下の密な
(S, T ) 分離鎖を構成する手続きを与えていることに注意する.
補題 12. 対 (S, T ) が k 分離可能であるとする.もし |V \ (S ∪ T )| ≥ k + 2 であるならば相異なる頂点
u ∈ V \ (S ∪ N + [T ]) と v ∈ V \ (T ∪ N − [S]) の対で,(S ∪ {u}, T ),(S, T ∪ {v}),および (S ∪ {u}, T ∪ {v})
のいずれも k 分離可能であるようなものが存在する.
証明. (S, T ) は k 分離可能であるので,補題 10 より,幅 k 以下のタイトかつ好適な S–T 分離鎖 C =
((A0 , B0 ), (A1 , B1 ), . . . , (Ar , Br )) が存在する.C はタイトであるので,Br = N + [T ] であり,また B0 = V \S
14
である.したがって,|B0 | ≥ |T | + k + 2 ≥ |Br | + 2 が成り立つ.0 < i ≤ r の範囲で |Bi−1 \ Bi | = 1 で
あるような最小の i を j で表す.Bj−1 \ Bj = {u},C ′ = ((Aj , Bj ), (Aj+1 , Bj+1 ), . . . , (Ar , Br )) とおくと,
Bj = V \ (S ∪ {u}) であり,Ar = V \ T であるので,C ′ は幅 k 以下の密な (S ∪ {u})–T 分離鎖である.こ
の u は,Br \ B0 = V \ (S ∪ N + [T ]) に属すので,補題の条件を満たしている.(S ∪ {u}, T ) が k 分離可能で
あるので,幅 k 以下のタイトかつ好適な (S ∪ {u})–T 分離鎖が存在する.|Ar | ≥ |A0 \ {u}| + 1 であること
に注意して上と対称な議論を用いることにより,頂点 v ∈ V \ (T ∪ N − [S]) で,(S ∪ {u}, T ∪ {v}) が k 分離
可能であるものの存在が示される.幅 k 以下の密な (S ∪ {u})–(T ∪ {v}) 分離鎖の前に (N − [S], V \ T ) を置
いてできる分離鎖の幅は k 以下であるので,(S, T ∪ {v}) もまた k 分離可能である.
最後に,可約な対 (S, T ) に対する問題の分割を可能にする補題を挙げる.
補題 13. (X, Y ) を最小 S–T 分離対であるとする.このとき,任意の S–T 分離対 (A, B) について,
|(A ∩ X) ∩ (B ∪ Y )| ≤ |A ∩ B|
|(A ∪ X) ∩ (B ∩ Y )| ≤ |A ∩ B|
が成り立つ.
証明. まず,|A ∩ B| + |X ∩ Y | = |(A ∩ X) ∩ (B ∪ Y )| + |(A ∪ X) ∩ (B ∩ Y )| である.これは任意の頂点 v
に対して左辺で v が数えれれる回数と右辺で v が数えられる回数が一致することからわかる.
(X, Y ) と (A, B) がともに S–T 分離対であるので,((A ∩ X), (B ∪ Y )) と ((A ∪ X), (B ∩ Y )) はともに
S–T 分離対である.(X, Y ) は S–T 分離対の中で位数が最小であるので,|X ∩ Y | ≤ |(A ∪ X) ∩ (B ∩ Y )| で
ある.よって,|(A ∩ X) ∩ (B ∪ Y )| ≤ |A ∩ B| がいえる.
また,|X ∩ Y | ≤ |(A ∩ X) ∩ (B ∪ Y )| でもあるので,|(A ∪ X) ∩ (B ∩ Y )| ≤ |A ∩ B| もいえる
補題 14. (X, Y ) を最小 S–T 分離対とする.このとき,(S, T ) が k 分離可能であるならば,(S, Y \ X) およ
び (X \ Y, T ) はどちらも k 分離可能である.
証明. (S, T ) は k 分離可能であるので,幅が k 以下の密な S–T 分離鎖が存在する.そのような分離鎖を
C = ((A0 , B0 ), (A1 , B1 ), . . . , (Ar , Br )) とする.このとき,B0 = V \ S ,Ar = V \ T である.C は S–T 分
離鎖であるので,C ′ = ((A0 ∩ X, B0 ∪ Y ), (A1 ∩ X, B1 ∪ Y ), . . . , (Ar ∩ X, Br ∪ Y )) も S–T 分離鎖である.
ここで,C は密な分離鎖であり,かつ N − [S] ⊆ X かつ N + [T ] ⊆ Y を満たしている.よって,B0 ∪ Y =
(V \ S) ∪ Y = (V \ S) であり,Ar ∩ X = (V \ T ) ∩ X = X = V \ (Y \ X) である.また,(X, Y ) は最小
S–T 分離対であるので,X ∩ Y = N − (X \ Y ) = N + (Y \ X) である.
よって,C ′ は,密な S–(Y \ X) 分離鎖である.補題 13 より,0 ≤ i ≤ r に対して |(Ai ∩ X) ∩ (Bi ∪ Y )| ≤
|Ai ∩ Bi | であるので,その幅は k 以下である.
((A0 ∪ X, B0 ∩ Y ), (A1 ∪ X, B1 ∩ Y ), . . . , (Ar ∪ X, Br ∩ Y )) についても同様の議論より,密な (X \ Y )–T
分離鎖であり,その幅は k 以下であることが示せる.
4.3 アルゴリズム
有向グラフ G = (V, E) と正整数 k を入力し,G のパス幅が k 以下であるかどうかを判定するアルゴリズム
を記述する.答えが肯定的であるとき,アルゴリズムは幅が k 以下の ∅–∅ 分離鎖を構築する.
15
以下のアルゴリズム記述では,入力のグラフ G と正整数 k を固定する.再帰関数 SC は,弱 k 分離可能な
対 (S, T ) に対して (S, T ) が k 分離可能であるかを判定し,もし可能であれば幅 k 以下の密な S–T 分離鎖を,
そうでなければ特別な値 FAILURE を返す.関数 SC のなかでは,対 (S, T ) が可約であるかを検査し,可約
な場合には非自明な最小分離対を求める必要がある.S も T も空でないときにはこれは,最大流アルゴリズ
ムによって実装することができる.S が空である場合には,(∅, V ) は位数 0 の自明な最小 S–T 分離対である.
この場合に,非自明な最小 S–T 分離対が存在するかどうかは,強連結成分分解アルゴリズムによって判定す
ることができる.T が空の場合も同様である.
Algorithm 2 SC(S, T )
1: if |V \ (S ∪ T )| ≤ k + 1 then
2:
return 補題 11 によって構築される幅 k 以下の S–T 分離鎖
3:
else if (S, T ) が可約である. then
4:
SC(S, T )-分割の処理を行う.
5:
6:
7:
8:
9:
10:
11:
else if d− (S) = d+ (T ) then
SC(S, T )-等しいの処理を行う.
else if d− (S) < d+ (T ) then
SC(S, T )-小さいの処理を行う.
else
SC(S, T )-大きいの処理を行う.
end if
Algorithm 3 SC(S, T )-分割
1: (X, Y ) を非自明な最小 S–T 分離対とする.
2:
SC(S, Y \ X) と SC(X \ Y, T ) を呼び出す.
3:
if どちらかの結果が FAILURE である then
4:
return FAILURE
5:
end if
6:
SC(S, Y \ X) の返した分離鎖を C ,SC(X \ Y, T ) の返した分離鎖を C ′ とする.
7:
return (C, (X, Y ), C ′ ).
対 (S, T ) が既約である場合には,補題 12 に基づいて,解の可能性を探索する.
16
Algorithm 4 SC(S, T )-等しい
1: for d− (S∪{u}) ≤ k である各 u ∈ V \(S∪N + [T ]) と d+ (T ∪{v}) ≤ k である各 v ∈ V \(N − [S∪{u}]∪T )
do
2:
SC(S ∪ {u}, T ∪ {v}) を呼び出す.
3:
if 結果が分離鎖 C である then
4:
5:
return ((N − [S], V \ S), C, (V \ T, N + [T ])).
end if
6:
end for
7:
return FAILURE
Algorithm 5 SC(S, T )-小さい
1: for d− (S ∪ {u}) ≤ k である各 u ∈ V \ (S ∪ N + [T ]) do
2:
SC(S ∪ {u}, T ) を呼び出す.
3:
if 結果が分離鎖 C である then
4:
5:
return ((N − [S], V \ S), C).
end if
6:
end for
7:
return FAILURE
Algorithm 6 SC(S, T )-大きい
1: for d+ (T ∪ {v}) ≤ k である各 v ∈ V \ (N − [S] ∪ T ) do
2:
SC(S, T ∪ {v}) を呼び出す.
3:
if 結果が分離鎖 C である then
4:
5:
return (C, (V \ T, N + [T ])).
end if
6:
end for
7:
return FAILURE
4.4 正しさの証明
補題 15. 弱 k 分離可能な対 (S, T ) に対する呼び出し SC(S, T ) は,(S, T ) が k 分離可能であるとき幅 k 以下
の密な S–T 分離鎖を,そうでないときは FAILURE を返す.
証明. |V \ (S ∪ T )| についての帰納法で証明する.基底は |V \ (S ∪ T )| ≤ k + 1 のときであり,補題 11 よ
り,SC(S, T ) は正しい値を返す.
次に,|V \ (S ∪ T )| ≥ k + 2 のときを考える.まず (S, T ) が可約であるとする.このとき,非自明な最小
S–T 分離対 (X, Y ) に対して,SC(S, Y \ X) と SC(X \ Y, T ) が呼ばれる.(X, Y ) が非自明な最小 S–T 分離
対であることから,Y \ X は S にも T にも属さない頂点を要素として持ち,X \ Y も同様である.したがっ
て |V \ (S ∪ (Y \ X))| < |V \ (S ∪ T )| かつ |V \ ((X \ Y ) ∪ T )| < |V \ (S ∪ T )| が成り立つ.もし,(S, T )
17
が k 分離可能であるならば,補題 14 により,(S, Y \ X) と (X \ Y, T ) はともに k 分離可能であり,したがっ
て弱 k 分離可能でもある.このとき,帰納法の仮定により,SC(S, Y \ X) と SC(X \ Y, T ) はそれぞれ幅 k
以下の密な S–(Y \ X) 分離鎖 C = ((A0 , B0 ), (A1 , B1 ), . . . , (Ap , Bp )) と幅 k 以下の密な (X \ Y )–T 分離鎖
C ′ = ((A′0 , B0′ ), . . . , (A′q , Bq′ )) を返す.このとき,Ap = V \ (Y \ X) = X かつ N + [Y \ X] ⊆ Bp であり
N − [X \ Y ] ⊆ A′0 かつ B0′ = V \ (X \ Y ) = Y であるので,SC(S, T ) の返す分離鎖 (C, (X, Y ), C ′ ) は幅 k 以
下の密な S–T 分離鎖である.一方,(S, T ) が k 分離可能でなければ,(S, Y \ X) と (X \ Y, T ) の少なくとも
一方は k 分離可能ではなく,したがって,SC(S, T ) は FAILURE を返す.
次に (S, T ) が既約であり,SC(S, T )-等しいの処理が行われる場合を考える.この処理においては,(S ∪
{u}, T ∪ {v}) が弱 k 分離可能であるような u ∈ V \ (S ∪ N + [T ]) と v ∈ V \ (N − [S] ∪ T ) の対のすべてに対
して,SC(S ∪ {u}, T ∪ {v}) が呼ばれる.もし (S, T ) が k 分離可能であれば,補題 14 により,そのような
u と v の対のなかで,(S ∪ {u}, T ∪ {v}) が k 分離可能であるようなものが存在する.帰納法の仮定より,そ
のような u と v の対に対して,SC(S ∪ {u}, T ∪ {v}) は幅 k 以下の密な (S ∪ {u})–(T ∪ {v}) 分離鎖を返す.
このとき,SC(S, T ) の返す分離鎖は,この分離鎖の先頭に (N − [S], V \ S) を追加し,後尾に (V \ T, N + [T ])
を追加したものであるので,幅 k 以下の密な S–T 分離鎖である.一方,(S, T ) が k 分離可能でないならば,
SC(S ∪ {u}, T ∪ {v}) の呼び出しのどれについても,(S ∪ {u}, T ∪ {v}) が k 分離可能ではないので,帰納法
の仮定により,FAILURE が返る.したがって,SC(S, T ) も正しい値 FAILURE を返す.
(S, T ) が既約であり,SC(S, T )-小さいまたは SC(S, T )-大きいの処理が行われる場合も同様である.
系 1. 呼び出し SC(∅, ∅) は,G のパス幅が k 以下のとき密な ∅–∅ 分離鎖を返し,そうでないとき FAILURE
を返す.
4.5 実行時間の解析
関数 SC の入力となる対 (S, T ) の「大きさ」を表現するために,ふたつの関数 γ(S, T ) および µ(S, T ) を定
義する.まず,γ(S, T ) は,最小 S–T 分離対の位数を表す.また, µ(S, T ) は
µ(S, T ) = 2|V \ (N − [S] ∪ N + [T ])| + |N − (S)∆N + (T )|
によって定義する.ここで,X∆Y は,X と Y の対称差 (X \ Y ) ∪ (Y \ X) を表す.
補題 16. (X, Y ) を最小 S–T 分離対とする.このとき,
µ(S, Y \ X) + µ(X \ Y, T ) = µ(S, T )
が成り立つ.
証明. (X, Y ) が最小 S–T 分離対であることから,N − (X \ Y ) = N + (Y \ X) = X ∩ Y であり,したがって
N − [X \ Y ] = X, N + [Y \ X] = Y である.互いに素な 3 つの集合 C0 , C1 , C2 を
C0 = X ∩ Y \ (N − (S) ∪ N + (T ))
C1 = X ∩ Y ∩ (N − (S) \ N + (T ))
C2 = X ∩ Y ∩ (N + (T ) \ N − (S))
18
によって定義する.このとき,(X ∩ Y ) \ N + (T ) = C0 ∪ C1 であることや N + (T ) ∩ (X \ Y ) = ∅ であるから
N + (T ) \ (X ∩ Y ) = N + (T ) \ X が成り立つことを用いて,
µ(X \ Y, T ) = 2|V \ (X ∪ N + [T ])| + |(X ∩ Y )∆N + (T )|
= 2|V \ (X ∪ N + [T ])| + |C0 | + |C1 | + |N + (T ) \ X|
を得る.同様にして,
µ(S, Y \ T ) = 2|V \ (N − [S] ∪ Y )| + |N − (S)∆(X ∩ Y )|
= 2|V \ (N − [S] ∪ Y )| + |C0 | + |C2 | + |N − (S) \ Y |
を得る.また
|V \ (N − [S] ∪ N + [T ])| = |V \ (Y ∪ N − [S])| + |V \ (X ∪ N + [T ])| + |C0 |
および
|N − (S)∆N + (T )| = |C1 | + |C2 | + |N − (S) \ Y | + |N + (T ) \ X|
が成り立つ.よって,
µ(S, T ) = 2|V \ (N − [S] ∪ N + [T ])| + |N − (S)∆N + (T )|
= 2|V \ (Y ∪ N − [S])| + 2|(V \ (X ∪ N + [T ])| + 2|C0 | + |C1 | + |C2 | + |N − (S) \ Y | + |N + (T ) \ X|
= µ(S, Y \ X) + µ(X \ Y, T )
であり,補題の等式を得る.
補題 17. (X, Y ) を非自明な S–T 分離対であるとき,µ(S, Y \ X) ≥ 1 かつ µ(X \ Y, T ) ≥ 1 が成り立つ.
証明. 対称性より,最初の不等式を証明すれば十分である.(X, Y ) は非自明な S–T 分離対であるから,
(X \Y )\S に属す頂点 v が存在する.分離対の定義より,N + [Y \X] ⊆ Y であるから,v ̸∈ N + [Y \X] が成り立
つ.v ∈ N − (S) であれば,v ∈ N − (S)∆N + (Y \X) であり,v ̸∈ N − (S) であれば,v ∈ V \(N − [S]∪N + [Y \X])
である. したがって,いずれの場合にも
µ(S, Y \ X) = 2|V \ (N − [S] ∪ N + [Y \ X])|
+|N − (S)∆N + (Y \ X)|
≥1
を得る.
以 下 の 解 析 で は ,R(S, T ) に よ っ て ,SC(S, T ) を 呼 び 出 す こ と で 引 き 起 こ さ れ る 呼 び 出 し
SC(S ′ , T ′ )(SC(S, T ) 自 身 を 含 む) の う ち ,|V \ (S ∪ T )| ≥ k + 2 で あ る よ う な も の の 個 数 を 表 す .
また,µ′ (S, T ) = max{0, 2µ(S, T ) − 1} によって µ′ を定義する.
補題 18. 入力グラフ G が (k, b) 有界であるとき,弱 k 分離可能な対 (S, T ) のそれぞれに対して,
R(S, T ) ≤ µ′ (S, T ) · b2(k−γ(S,T ))
が成り立つ.
19
(4.1)
証明. 証明は,再帰の構造に基づく帰納法による.
呼び出し SC(S, T ) が,|V \ (S ∪ T )| ≤ k + 1 であるためにそれ以上再帰をしないときには,R(S, T ) = 0
であるので,不等式(4.1)が成り立つ.µ(S, T ) = 0 のときは,V \ (S ∪ T ) = N − (S) = N + (T ) であるの
で,この場合が該当することに注意する.
次に呼び出し SC(S, T ) が「分割」の処理において,SC(S, T ′ ) と SC(S ′ , T ) を呼び出す場合を考える.こ
こで,(S, T ) の非自明な最小分離対 (X, Y ) に対して,S ′ = X \ Y であり,T ′ = Y \ X である.このと
き,補題 16 により,µ(S, T ) = µ(S, T ′ ) + µ(S ′ , T ) が成り立つ.さらに,補題 17 により µ(S, T ′ ) ≥ 1 かつ
µ(S ′ , T ) ≥ 1 であるので,
µ′ (S, T ) = 2µ(S, T ) − 1
= (2µ(S, T ′ ) − 1) + (2µ(S ′ , T ) − 1) + 1
= µ′ (S, T ′ ) + µ′ (S ′ , T ) + 1
を得る.また,S–T ′ 分離対のどれもが S–T 分離対であることから,γ(S, T ′ ) ≥ γ(S, T ) が成り立ち,同様に
γ(S ′ , T ) ≥ γ(S, T ) が成り立つ.帰納法の仮定を対 (S, T ′ ) と (S ′ , T ) に適用することにより,
R(S, T ) = 1 + R(S, T ′ ) + R(S ′ , T )
≤ 1 + (µ′ (S, T ′ ) + µ′ (S ′ , T )) · b2(k−γ(S,T ))
≤ 1 + (µ′ (S, T ) − 1) · b2(k−γ(S,T ))
≤ µ′ (S, T ) · b2(k−γ(S,T ))
すなわち,不等式(4.1)が成り立つ.
次に,(S, T ) が既約であり d− (S) = d+ (T ) である場合を考える.このとき,「等しい」の処理によって,
(S ∪ {u}, T ∪ {v}) が弱 k 分離可能であるような u ∈ V \ (S ∪ N + [T ]) と v ∈ V \ (N − [S] ∪ T ) の対のすべて
に対して,SC(S ∪ {u}, T ∪ {v}) が呼ばれる.グラフは (k, b) 有界であるので,そのような u と v の対の個数
は b2 以下である.帰納法の仮定により,u と v の各対に対して,
R(S ∪ {u}, T ∪ {v}) ≤ µ′ (S ∪ {u}, T ∪ {v}) · b2(k−γ(S∪{u},S∪{v}))
が成り立つ.(S, T ) が既約であるので,γ(S ∪{u}, T ∪{v}) > γ(S, T ) が成り立つ.また µ(S ∪{v}, T ∪{v}) <
µ(S, T ) および µ(S, T ) > 0 より,µ′ (S ∪ {v}, T ∪ {v}) < µ′ (S, T ) が成り立つ.したがって,
R(S, T ) ≤ 1 +
∑
R(S ∪ {u}, T ∪ {v})
u,v
≤ 1 + b2 · (µ′ (S, T ) − 1) · b2(k−γ(S,T )−1)
≤ µ′ (S, T ) · b2(k−γ(S,T ))
すなわち,不等式(4.1)が成り立つ.
(S, T ) が既約でありかつ d− (S) > d+ (T ) または d− (S) < d+ (T ) である場合の解析も同様である.
定理 2 の証明:与えられた有向グラフ G と正整数 k に対して,SC(∅, ∅) を実行することによって,G のパ
ス幅が k 以下であるかを判定することができる.この呼び出しによって発生する SC の呼び出しで基底を除い
20
たものの回数は R(∅, ∅) ≤ b2k n である.基底以外の SC のそれぞれの実行において,再帰呼び出しに費やさ
れる部分を除いた実行時間は nO(1) である.また,SC の呼び出しのうち,基底であるものの回数は,基底以
外の呼び出し一回あたりたかだか b である.故に,SC(∅, ∅) の実行に要する時間の合計は b2k nO(1) である.
4.6 実装上の工夫
ここでは,理論的な実行時間には影響はないが,実装上の実行時間をより高速化できる補題と,その補題を
用いたアルゴリズムについて説明する.この補題は Tamaki が提案した「コミットメント」[15] の特別な場合
である.
補題 19. 対 (S, T ) が k 分離可能であるとする.このとき,d− (S ∪ {u}) ≤ d− (S) を満たすような頂点
u ∈ V \ (S ∪ N + [T ]) について,対 (S ∪ {u}, T ) は k 分離可能である.同様に,d+ (T ∪ {v}) ≤ d+ (T ) を満
たすような頂点 v ∈ V \ (N − [S] ∪ T ) について,対 (S, T ∪ {v}) は k 分離可能である.
証明. C = ((A0 , B0 ), (A1 , B1 ), . . . , (Ar , Br )) を幅が k 以下である密な S − T 分離鎖とする.このとき,
B0 = V \ S ,Ar = V \ T である.
d− (S ∪ {u}) ≤ d− (S) であるような u ∈ V \ (S ∪ N + [T ]) について考える.
N − (u) ⊆ N − [S] であるとき,N − (S ∪ {u}) ⊆ N − (S) である.よって,任意の 0 ≤ i ≤ r について
(Ai ∪ {u}, Bi \ {u}) は S ∪ {u}–T 分離対である.また,その位数は明らかに (Ai , Bi ) 以下である.ここ
で,B0 \ {u} = (V \ S) \ {u} = V \ (S ∪ {u}) かつ,Ar ∪ {u} = (V \ T ) ∪ {u} = V \ T であるので,
C ′ = ((A0 ∪ {u}, B0 \ {u}), (A1 ∪ {u}, B1 \ {u}), . . . , (Ar ∪ {u}, Br \ {u})) は幅が k 以下の密な S ∪ {u}–T
分離鎖である.
次に N − (u) ⊆ N − [S] でないとき d− (S ∪ {u}) ≤ d− (S) であるので,u ∈ N − (S) であり,かつ |N − (u) \
N − (S)| = 1 である.よって,N − (u)\N − (S) = {w} とすると,任意の 0 ≤ i ≤ r について (Ai ∪{w}, Bi \{u})
は S ∪{u}–T 分離対である.B0 \{u} = (V \S)\{u} = V \(S ∪{u}) かつ,Ar ∪{w} = (V \T )∪{w} = V \T
であるので,C ′ = ((A0 ∪ {w}, B0 \ {u}), (A1 ∪ {w}, B1 \ {u}), . . . , (Ar ∪ {w}, Br \ {u})) は密な S ∪ {u}–T
分離鎖である.
ここで,u ∈ Bi であるとき,u ∈ N − (S) であることから,u ∈ Ai でもあるので,|(Ai ∪ {w}) ∩ (Bi \ {u})| ≤
|(Ai ∪ {w}) ∩ Bi | − 1 ≤ |Ai ∩ Bi | である
また,u ∈
/ Bi であるとき,(Ai , Bi ) が分離対であり,w ∈ N − (u) であることから,w ∈ Ai である.よっ
て,Ai ∪ {w} = Ai ,Bi \ {u} = Bi となる.
よって C ′ の幅は k 以下のとなる.
対称的な議論より,後者についても正しいことが示せる.
各再帰の初めに,この補題を用いて S と T をできる限り拡張する.以下に疑似コードを載せる.
21
Algorithm 7 SC(S, T )
1: if d− (S ∪ {u}) ≤ d− (S) であるような u ∈ V \ (S ∪ N + [T ]) が存在する then
2:
SC(S ∪ {u}, T ) を呼び出す.
3:
if 結果が分離鎖 C である. then
4:
return ((N − [S], V \ S), C).
5:
end if
6:
return F AILU RE
7:
else if d+ (T ∪ {v}) ≤ d+ (T ) であるような v ∈ V \ (N − [S] ∪ T ) が存在する then
8:
SC(S, T ∪ {v}) を呼び出す.
9:
if 結果が分離鎖 C である then
return (C, (V \ T, N + [T ])).
10:
11:
end if
12:
return F AILU RE
13:
14:
else if |V \ (S ∪ T )| ≤ k + 1 then
return 補題 11 によって構築される幅 k 以下の S–T 分離鎖
15:
else if (S, T ) が可約である. then
16:
SC(S, T )-分割の処理を行う.
17:
18:
19:
20:
21:
22:
23:
else if d− (S) = d+ (T ) then
SC(S, T )-等しいの処理を行う.
else if d− (S) < d+ (T ) then
SC(S, T )-小さいの処理を行う.
else
SC(S, T )-大きいの処理を行う.
end if
補題 19 より正しさについては自明であり,また,補題を満たすような u, v によって S ,T を拡張するのに
かかる時間は高々 O(n) であるので,定理 2 を満たすことがわかる.
22
第5章
実装,実験
この章では本稿で記述した二つのアルゴリズムについての実験を行う.実験で得たデータについては,付録
に一部抜粋して掲載する.
5.1 実験で使用するテストデータについて
この節では,実験で使用するテストデータの種類と,その生成法について記述する.
実験では以下のテストデータを利用する.
• (1) 辺密度を指定したランダムな準完全グラフ
• (2) 強連結なランダム h 準完全グラフ
• (3) 強連結なパス幅を指定したランダム h 準完全グラフ
• (4) 強連結な辺密度を指定したランダム有向グラフ
• (5) 強連結な辺密度とパス幅を指定したランダム有向グラフ
以降,それぞれの生成法について記述する.
5.1.1 辺密度を指定したランダムな準完全グラフ
d と n を指定して,次のようにして辺密度が d の n 頂点の準完全グラフを生成する.
任意の 2 頂点 u, v について,以下のうちのどれかをランダムに実行する.
• 辺 (u, v) のみが存在する.
• 辺 (v, u) のみが存在する.
• 辺 (u, v),(v, u) の両方が存在する.
準完全グラフは最低でも辺密度が 50% であるので,2(d − 50)% の確率で 3 つ目が実行されるようにすれば
よい.
5.1.2 強連結なランダム h 準完全グラフ
h と n を指定して,次のようにしてパス幅がランダムな n 頂点の h 準完全グラフを生成する.強連結性を
満たすように全頂点を含むサイクルを生成し,準完全性を満たすように辺を追加している.最後に h 準完全グ
23
ラフになるように辺を削除する.
1. 頂点をランダムに並び替えたものを {v0 , v1 , . . . , vn } とする.
2. 強連結性を満たすように任意の i について vi から vi+1 への辺 (vn からは v0 へ辺) を追加する.
3. 全ての頂点の組 (u, v) について,以下の 3 つのどれかをランダムに実行する.
• u から v への辺と v から u への辺を追加する.
• u から v への辺を追加する.
• v から u への辺を追加する.
4. 全ての頂点から強連結性を崩さないように h 準完全性を満たす範囲で辺をランダムに削除する.
5.1.3 強連結なパス幅を指定したランダム h 準完全グラフ
h と k と n を指定して,次のようにして n 頂点のパス幅が k 以下であるような h 準完全グラフを生成する.
強連結性を満たすように全頂点を含むサイクルを生成し,準完全性を満たすように辺を追加している.その
後,幅 k 以下のパス分解を持つように辺を追加していき, 最後に h 準完全グラフになるように辺を削除する.
1. 頂点をランダムに並び替えたものを {v0 , v1 , . . . , vn } とする.
2. 強連結性を満たすように全ての i について vi から vi+1 への辺 (vn からは v0 へ辺) を追加する.
3. 準完全性を満たすように i < j となるような全ての i,j について,vi から vj への辺を追加する.
4. 次を満たすような好適なパス分解 W = (W1 , W2 , . . . , Wr ) を持つように辺をランダムに追加する.
Wi−1 \ Wi = {vj } となるような vj について,i が小さい順に並べたものを {uj1 , uj2 , . . . , ujn } とする.
これが {v0 , v1 , . . . , vn } と等しい.
5. 全ての頂点から強連結性を崩さないように h 準完全性を満たす範囲で辺をランダムに削除する.
5.1.4 強連結な辺密度を指定したランダム有向グラフ
d と n を指定して,次のようにして辺密度が d であるパス幅がランダムな n 頂点の有向グラフを生成する.
強連結性を満たすように全頂点を含むサイクルを生成し,その後ランダムに辺を追加している.
1. 頂点をランダムに並び替えたものを {v0 , v1 , . . . , vn } とする.
2. 強連結性を満たすように全ての i について vi から vi+1 への辺 (vn からは v0 へ辺) を追加する.
3. d% の確率でランダムに辺を追加する.
5.1.5 強連結な辺密度とパス幅を指定したランダム有向グラフ
d と k と n を指定して,次のようにして辺密度が d で n 頂点のパス幅が k 以下の有向グラフを生成する.
強連結性を満たすように全頂点を含むサイクルを生成し,その後幅 k 以下のパス分解を持つように辺を追加し
ている.
1. 頂点をランダムに並び替えたものを {v0 , v1 , . . . , vn } とする.
2. 強連結性を満たすように全ての i について vi から vi+1 への辺 (vn からは v0 へ辺) を追加する.
24
3. 次を満たすような好適なパス分解 W = (W1 , W2 , . . . , Wr ) を持つように辺をランダムに追加する.
Wi−1 \ Wi = {vj } となるような vj について,i が小さい順に並べたものを {uj1 , uj2 , . . . , ujn } とする.
これが {v0 , v1 , . . . , vn } と等しい.
5.2 [実験 1]3 章のアルゴリズムの実装実験
この節では,3 章で説明した Pilipczuk のアルゴリズムの実装実験について記述する.
このアルゴリズムについて書かれた論文 [11] においては,計算時間は O(2O(klogk) n2 ) となっているが,今
回は実装のデータ構造を単純にしたため,実際の計算時間は O(2O(klogk) n3 ) となっている.
実験は
• k を固定した上で,n を動かす
• n を固定したうえで,k を動かす
という 2 種類の方法であ行った.以下,実験結果について記述する.
5.2.1 k を固定したうえで n を動かす (その1)
頂点数が 1 から 10 のグラフに対して,そのグラフのパス幅が 1 以下であるかを判定するための実行時間を
計測をした.テストケースは (1) 辺密度を指定したランダム準完全グラフを使用した.頂点数,辺密度に対し
て各 10 回の実行をし,その平均をとる.
表 5.1 に密度,解別にかかった実行時間 (ミリ秒) の平均を示す.ただし,この平均には,障害を見つけた
ことで NO という解を出したケースは含まない.空欄は,10 回の実行でそのようなものがなかったことを表
す.また,図 5.1 に,そのデータをグラフにしたものを載せる.
25
表 5.1
密度,解別の実行時間の平均
YES
NO
頂点数
密度 60
密度 70
密度 80
密度 90
密度 60
密度 70
密度 80
密度 90
1
0.30
0.20
0.20
0.20
-
-
-
-
2
0.50
0.30
0.10
0.20
-
-
-
-
3
0.71
0.75
0.50
1.00
0.67
0.50
0.50
0.50
4
3.00
-
-
-
1.89
1.90
1.80
1.70
5
-
-
-
-
9.20
8.70
8.60
8.40
6
-
-
-
-
43.10
42.40
42.10
40.60
7
-
-
-
-
180.00
178.71
171.80
173.00
8
-
-
-
-
701.00
706.43
677.00
683.00
9
-
-
-
-
2720.60
2879.33
2667.50
2707.00
10
-
-
-
-
11196.00
11223.33
10856.00
-
図 5.1 密度,解別の実行時間の平均のグラフ
密度別ではほとんど違いが出なかった.また,答えが YES と NO の場合もほとんど違いが出ていない.こ
れはアルゴリズムにおいて最も時間がかかる部分が,YES の場合も NO の場合も同様に実行されているから
と考えられる.最も時間がかかる部分は列挙した分離対同士に辺を引く部分だと予想できる.
続いて各 10 回の試行のうち,障害を発見した回数について考察する.アルゴリズムにおいて (k + 1, k)-
matchin tangle を見つけるのは,バス選択子の大きさが (6k + 1)2 + (6k + 1) ときである.つまり k = 1 の
とき,グラフの頂点数が少なくとも 56 以上である必要がある.そのため,今回の実験では matching tangle
が見つかることはありえない.頂点数別の degree tangle を発見した回数を表 5.2 載せる.また,それをグラ
フにしたものを図 5.2 に載せる.
26
表 5.2
頂点数別の degree tangle 発見数
頂点数
1
2
3
4
5
6
7
8
9
10
degree tangle 発見数
0
0
0
0
0
0
22
26
29
34
図 5.2
頂点数別の degree tangle 発見数のグラフ
k の値と頂点の違いが大きいほど tangle を見つけやすいことが読み取れる.degree tangle を見つけた場合
は実行時間が O(n log n) で答えを出せる.
表 5.3 に,アルゴリズムのうち,分離対間に包含関係によって辺を引くという部分での実行時間の割合 (%)
を載せる.また,それをグラフにしたものを図 5.3 に載せる.頂点数が増えるにつれて,その割合が大きく上
昇することがわかる,10 頂点のグラフに対しては,実行時間の 90% 以上を占めている.この部分をどうにか
することで,より高速化すると思われる.
27
表 5.3 アルゴリズムに対する辺を張る部分の割合
頂点数
1
2
3
4
5
6
7
8
9
10
辺張りの割合
22.22
18.18
54.17
62.16
76.22
84.72
90.01
93.97
96.21
97.73
図 5.3
アルゴリズムに対する辺を張る部分の割合のグラフ
5.2.2 k を固定したうえで n を動かす (その 2)
頂点数が 1 から 10 のグラフに対して,そのグラフのパス幅が 1 以下であるかを判定するための実行時間を
計測をした.前回の実験で,YES という解が出る場合と,tangle を見つけずに NO という解が出る場合でも
実行時間にはほぼ差が出なかったので,テストケースには (3) パス幅を 1 以下に指定したランダム 0 準完全グ
ラフを使用する.そのため,アルゴリズムの解は YES になる.頂点数ごとに 10 回の実行をする.
実行時間 (ミリ秒) を平均したデータを表 5.4 に,そのデータをグラフにしたものを図 5.4 に載せる.固定
パラメータアルゴリズムであるので,2n の変化と比べてかなり緩くなっていて,n3 の変化とほぼ同じである
ことがわかる.
表 5.4
頂点数別の実行時間
頂点数
1
2
3
4
5
6
7
8
9
10
実行時間
0.30
0.30
0.80
2.40
10.90
51.20
129.20
259.10
437.50
697.40
頂点数
11
12
13
14
15
16
17
18
19
20
実行時間
1032.70
1434.00
1979.70
2586.10
3264.60
3895.10
4685.70
5502.10
6192.40
7039.20
28
図 5.4
頂点数による実行時間のグラフ
5.2.3 n を固定したうえで k を動かす.
頂点数を固定したグラフに対して,そのグラフのパス幅が k 以下であるかを判定するための実行時間を計測
をした.ここで,k は 1 から n − 1 である.テストケースには (3) パス幅を 1 以下に指定したランダム 0 準完
全グラフを使用する.そのため,アルゴリズムの解は YES になる.k ごとに 10 回の実行をする.
頂点数別の実行時間 (ミリ秒) のデータを表 5.5 に,そのデータをグラフにしたものを図 5.5 に載せる.
表 5.5 頂点数,k 別の実行時間
k
頂点数
1
2
3
4
5
6
7
8
6
53.2
52.8
56.7
58.2
62.5
-
-
-
7
136.5
266
274.4
291.2
313.6
322.8
-
-
8
255.8
1220.9
1260.5
1303.8
1364
1420.1
1454.5
-
9
434.5
5849.7
5895.8
6081.2
6305.4
6908.7
7116.3
8092.8
29
図 5.5
頂点数別の k による実行時間のグラフ
図 5.5 を見てみると,k については指数時間変化をするはずなのに,k = 2 のあたりで計算時間が頭打ちに
なっているように見える.これは,このアルゴリズムの構造によるものだと考えられる.このアルゴリズムで
は,ある頂点集合に含まれる頂点を 3 種類に場合分けするという動作に対して,すべての場合を保存してお
り,この部分がネックになっている.このとき,振り分ける集合の大きさが高々 5k + 2 であるため,おおよ
そ 35k+2 に依存するような計算時間になる.しかし,頂点数 n が n < 5k + 2 である場合,振り分ける集合は
n で頭打ちになってしまう.k = 1 の場合,5k + 2 = 7 であり,k = 2 の場合,5k + 2 = 12 である.そのた
め,k = 2 になった時点で,計算時間が n によって頭打ちになっていると考えられる.さらに大きな n に対し
て実行を行った場合,この頭打ちがなくなるので,大きく計算時間が増えると予想できる.
30
5.3 [実験 2]4 章のアルゴリズムの実装実験
この節では,4 章で説明した h 準完全グラフのアルゴリズムについての実装実験について記述する.
5.3.1 実装方法ごとの比較実験
ここでは,複数の実装法に対する比較実験について記述する.
以下の 3 種類の方法で実装を行い,同じグラフについてそれぞれの実行時間を比較する.
• (A):4.3 節で記述したアルゴリズム
• (B):(A) に 4.6 節で記述した工夫を加えたアルゴリズム
• (C):(B) にメモ化再帰を加えたアルゴリズム
h と k を固定したうえで頂点数が 10 から 80(10 頂点刻み) の h 準完全グラフに対して,そのグラフのパス
幅が k 以下であるかを判定するための実行時間を計測をした.アルゴリズムの構造上,k がグラフのパス幅に
近く,かつ解が N O の場合が最も時間がかかることが予想されるので,テストケースには (3) パス幅を指定し
たランダム h 準完全グラフを使用する.ここでパス幅は c を整数として k + c に指定する.c の値は,h,k,n
に対して 10 回グラフの生成を行い,そのパス幅の平均が k + 1 を超えるような最小の値とする.また,頂点
数ごとに 20 回の実行をする.
(A),(B),(C) 別の実行時間 (ミリ秒) の順位を表 5.6 に載せる.
表 5.6
(A),(B),(C) 別の実行時間の順位
h=0,k=1
(A)
(B)
(C)
h=5,k=1
(A)
(B)
(C)
1位
133
145
150
1位
140
118
122
2位
8
10
4
2位
17
34
29
3位
19
5
6
3位
3
8
9
h=0,k=3
(A)
(B)
(C)
h=5,k=3
(A)
(B)
(C)
1位
80
81
147
1位
64
74
148
2位
20
59
11
2位
18
68
9
3位
60
20
2
3位
78
18
3
h=0,k=5
(A)
(B)
(C)
h=5,k=5
(A)
(B)
(C)
1位
28
31
158
1位
33
36
159
2位
16
114
2
2位
4
124
0
3位
116
15
0
3位
123
0
1
実行時間が同じ場合は,同じ順位となることに注意する.この表から,k が小さいうちは,順位に大きな違
いはないけれど,k が大きくなるにつれて (A) よりも (B) が,(B) よりも (C) が早なっていることが読み取
れる.
31
続いて,(A),(B),(C) について,実行時間,および,最大流の実行回数の比較を行う.(A),(B),(C) に
ついて,実行時間の平均と,最大流の実行回数の平均を表 5.7,表 5.8 に,そのグラフを図 5.6,図 5.7 に載
せる.
表 5.7 (A),(B),(C) 別の実行時間
h=0,k=5
h=5,k=5
頂点数
(A)
(B)
(C)
(A)
(B)
(C)
10
0
0
0
-
-
-
20
17.5
16.5
2.8
65.40
37.40
9.20
30
151.6
113.3
7.4
479.21
294.05
11.47
40
606.7
485.3
24.1
1333.60
677.95
24.25
50
1716.7
1325.2
54.7
3473.55
1933.55
62.40
60
4136.5
2906.5
146.7
2951.65
2195.75
140.40
70
9363.2
5303.3
227.0
14616.95
8367.90
282.40
80
14133.0
11302.3
490.7
17210.45
12256.10
514.05
図 5.6 (A),(B),(C) 別の実行時間のグラフ
32
表 5.8 (A),(B),(C) 別の最大流実行回数
h=0,k=5
h=5,k=5
頂点数
(A)
(B)
(C)
(A)
(B)
(C)
10
15.0
11.6
9.8
-
-
-
20
762.8
413.8
35.2
2516.0
1218.2
54.8
30
2500.1
1580.4
59.8
9895.2
5042.9
94.7
40
3130.6
2143.3
67.5
10962.8
4921.1
92.8
50
5608.9
3705.7
80.1
11384.0
5847.6
116.3
60
5391.3
3088.9
120.1
4686.5
3107.3
121.1
70
6094.1
3513.3
102.3
12458.4
7473.7
152.3
80
5239.0
3953.7
139.6
9494.3
6097.4
172.4
図 5.7 (A),(B),(C) 別の最大流実行回数のグラフ
h が同じ場合,(A) よりも (B) のほうが,また (B) よりも (C) のほうが実行時間が早くなっていることがわ
かる.特に (C) については,(A),(B) よりも大きく実行時間が下がっている.同様のことが最大流の実行回
数についてもいえる.このアルゴリズムにおいては,最大流を行う部分に最も時間がかかる.そのため,全体
の実行時間は,1 回の最大流をおこなうのにかかる時間,および最大流の実行回数に依存している.特に前者
は,頂点数に比例して長くなるため,最大流の実行回数が少なくとも,全体の実行時間が長くなることがあり
得る.
33
5.3.2 (C) に対する実験
最も実行時間が早い (C) に対しての実験を行う.4.6 節で記述した工夫とメモ化再帰を行ったものが理論的
な実行時間である b2k nO(1) に対して,どの程度早くなっているかを観察する.
実験は,
• h と k を固定して n を動かす.
• h と n を固定して k を動かす.
• k と n を固定して h を動かす.
の 3 通りについて行う.
h と k を固定して n を動かす.
n 頂点の h 準完全グラフに対して,パス幅が k であるかどうかを判定するためにかかる時間を計測する.
• h = 0,k = 1
• h = 0,k = 10
• h = 0,k = 20
• h = 5,k = 1
• h = 5,k = 10
• h = 5,k = 20
の 6 通りのケースについて n を 10 から 150 まで 10 刻みに動かして実行する.テストケースには (3) パス
幅を指定したランダム h 準完全グラフを使用する.ここでパス幅は c を整数として k + c に指定する.c の値
は,h,k,n に対して 10 回グラフの生成を行い,そのパス幅の平均が k + 1 を超えるような最小の値とする.ま
た,頂点数ごとに 10 回の実行をする.
4 章のアルゴリズムは,深さ優先であるため,解が YES であるときは,実行時間にばらつきがでると予想
できる.よって,今回の実験では,解が NO であるようなテストケースに着目する.
解が NO であるテストケースに対するアルゴリズムの実行時間 (ミリ秒) を表 5.9 に,そのグラフを図 5.8,
図 5.9 に載せる.
34
表 5.9
解が NO であるテストケースに対する実行時間 (n を変化)
h=0
h=5
頂点数
k=1
k=10
k=20
k=1
k=10
k=20
10
1.5
-
-
0.0
-
-
20
0.0
16.0
-
0.0
47
-
30
3.1
23.5
118.0
1.5
23
218.0
40
3.2
70.2
637.5
4.6
72.83333
1591.0
50
6.3
131.7
1025.9
14.0
220.125
3253.6
60
23.4
318.4
1016.0
0.0
329.2
2404.1
70
15.6
507.9
1988.3
37.4
663.1
3159.2
80
79.5
1001.6
2050.0
34.4
922.1
3625.5
90
114.0
1520.9
3811.2
61.0
1668
4784.5
100
245.0
2244.9
5282.3
154.4
2755
10709.4
110
262.2
2943.9
10341.2
100.0
3939.1
15913.6
120
418.2
5531.8
19340.9
310.5
6120
15283.4
130
722.3
6204.4
25120.7
234.1
6672.2
28503.1
140
709.9
8595.6
21769.9
1.5
9739.1
38724.4
150
1185.6
7742.2
50180.8
686.5
13539.7
46967.9
35
図 5.8
h = 0 かつ解が NO であるテストケースに対する実行時間 (n を変化) のグラフ
図 5.9
h = 0 かつ解が NO であるテストケースに対する実行時間 (n を変化) のグラフ
このアルゴリズムは,FPT アルゴリズムであるので,k を定数と考えると,n に対して多項式時間で動作す
る.図 5.8,図 5.9 より,ばらつきはあるが,多項式時間変化に近い形であることがわかる.また,同じ頂点
数であるならば k が大きいほど時間がかかっていることが読み取れる.
36
h と n を固定して k を動かす.
n 頂点の h 準完全グラフに対して,パス幅が k であるかどうかを判定するためにかかる時間を計測する.
• h = 0,n = 100
• h = 0,n = 150
• h = 10,n = 100
• h = 10,n = 150
の 4 通りのケースについて k を 1 から 30 まで 1 刻みに動かして実行する.テストケースには (3) パス幅を
指定したランダム h 準完全グラフを使用する.ここでパス幅は c を整数として k + c に指定する.c の値は,
h,k,n に対して 10 回グラフの生成を行い,そのパス幅の平均が k + 1 を超えるような最小の値とする.また,
各 k ごとに 10 回の実行をする.
解が NO であるテストケースに対するアルゴリズムの実行時間 (ミリ秒) の平均を表 5.10,表 5.11 に,そ
のグラフを図 5.10 に載せる.
表 5.10 解が NO であるテストケースに対する実行
表 5.11 解が NO であるテストケースに対する実行
時間 (k = 1 から k = 15)
時間 (k = 16 から k = 30)
h=0
h=10
h=0
h=10
k
n=100
n=150
n=100
n=150
k
n=100
n=150
n=100
n=150
1
115.4
783.1
64.0
287.0
16
5586.7
28778.9
7266.4
40330.9
2
14.2
14.2
148.2
1511.8
17
4846.9
22357.0
10434.6
37376.1
3
650.5
3087.3
646.0
1519.6
18
4943.6
27479.8
9195.4
38241.9
4
698.9
2652.1
571.1
2500.8
19
4676.8
43906.6
8545.7
78411.9
5
702.0
2614.6
733.3
2914.1
20
7098.2
51695.6
11147.2
73938.1
6
954.7
3176.6
1170.1
3688.0
21
7643.9
51669.5
15312.3
50859.3
7
847.8
4911.1
1683.3
8590.3
22
8598.7
39204.9
16347.4
94640.4
8
1837.6
6266.7
2000.0
8252.5
23
10668.8
59093.4
13331.8
89598.8
9
1691.3
5870.5
2976.6
9616.0
24
9783.3
51239.4
20699.6
77211.8
10
2700.5
9895.1
3440.0
10563.0
25
14636.0
65928.9
54302.0
73228.3
11
2943.6
14781.2
5091.8
27647.9
26
13806.1
61045.3
15657.6
127574.0
12
3107.7
13553.6
4748.8
14695.4
27
15217.0
77546.2
24835.0
104374.1
13
3803.0
23351.6
4809.7
24577.0
28
12363.1
90815.7
23913.5
173580.1
14
3488.3
20507.9
6658.1
29683.6
29
16857.8
86434.8
35989.4
149659.0
15
4636.5
29284.8
6578.2
25899.1
30
23469.7
110340.3
69992.4
134418.0
37
図 5.10
解が NO であるテストケースに対する実行時間 (k を変化) のグラフ
アルゴリズムの理論的な実行時間は b2k nO(1) であるので,k については指数時間変化するはずである.し
かし,図 5.10 を見てみると,2k の変化よりもかなり緩い変化となっている.k が近いもの同士では,実行時
間にばらつきがあるが,全体を俯瞰すると,k が大きくなるにつ入れて時間がかかるようになっていることが
読み取れる.
k と n を固定して h を動かす.
n 頂点の h 準完全グラフに対して,パス幅が k であるかどうかを判定するためにかかる時間を計測する.
• k = 10,n = 100
• k = 10,n = 150
• k = 20,n = 100
• k = 20,n = 150
の 4 通りのケースについて h を 1 から 30 まで 1 刻みに動かして実行する.テストケースには (3) パス幅を
指定したランダム h 準完全グラフを使用する.ここでパス幅は c を整数として k + c に指定する.c の値は,
h,k,n に対して 10 回グラフの生成を行い,そのパス幅の平均が k + 1 を超えるような最小の値とする.また,
各 h ごとに 10 回の実行をする.
解が NO であるテストケースに対するアルゴリズムの実行時間 (ミリ秒) の平均を表 5.12,表 5.13 に,そ
のグラフを図 5.11 に載せる.
38
表 5.12 解が NO であるテストケースに対する実行
表 5.13 解が NO であるテストケースに対する実行
時間 (h = 1 から h = 15)
時間 (h = 16 から h = 30)
k=10
k=20
k=10
k=20
h
n=100
n=150
n=100
n=150
h
n=100
n=150
n=100
n=150
1
2405.5
13128.9
9158.9
50821.9
16
4301.1
20569.0
20346.4
73127.8
2
3313.6
8386.6
6985.8
48708.2
17
4369.6
14874.9
16605.0
50616.1
3
3377.6
17275.7
7538.4
46079.6
18
4277.9
14569.0
17509.4
71623.3
4
2937.7
11140.1
11961.9
31014.6
19
4378.3
18867.6
21654.5
89094.9
5
2062.9
13684.2
11668.8
52280.5
20
4996.8
16226.1
32923.1
79889.8
6
3507.2
10847.0
10515.9
70875.8
21
4985.1
17976.0
31915.9
106460.6
7
2350.6
11452.4
15210.1
36685.0
22
3191.7
19578.1
32984.0
81519.1
8
3087.2
10425.5
9154.5
49006.9
23
4180.9
14908.9
36477.7
89916.6
9
3889.0
10151.1
12260.0
43500.8
24
4923.4
12378.5
31654.4
103537.4
10
3717.4
15432.2
11413.4
72100.1
25
5740.9
20756.1
60802.4
131701.8
11
4632.0
13402.1
12158.4
63042.9
26
5310.6
23328.2
31188.6
161242.1
12
3065.5
14530.0
15593.4
71316.6
27
6744.4
14589.1
42378.8
93745.4
13
4318.3
15017.9
15798.3
59241.2
28
5364.9
14436.3
45842.8
90152.7
14
3404.0
15599.9
20036.4
76903.6
29
6095.0
23665.2
45125.6
129898.4
15
3811.0
20547.2
18784.5
145090.9
30
4567.3
25666.8
68599.6
119614.8
39
図 5.11 解が NO であるテストケースに対する実行時間 (h を変化) のグラフ
アルゴリズムの理論的な実行時間は b2k nO(1) であり,今回テストケースに用いた h 準完全グラフは,補
題 1 より,(k, h + 2k + 1) 有界であるので,b = h + 2k + 1 である.よって h については,c を整数として,
(c + h)2k のように変化すると予想できる.しかし,実際は k = 10,k = 20 両方とも,h に近いもの同士でば
らつきが存在するが,全体を俯瞰すると h に対して,とても小さい傾きで変化していることが読み取れる.
5.3.3 (C) を用いて,グラフのパス幅を求める実験
(C) はグラフのパス幅が k 以下かどうかを判定するアルゴリズムである.この節では,これを用いてグラフ
の正確なパス幅を求めるのに,どの程度の時間がかかるかの実験を行う.
実装方法は,n 頂点グラフのパス幅が k 以下であるかという判定について,解が YES である間,k = n − 1
から 1 刻みで減少させる方法で行う.解が初めて NO になったときの k + 1 がグラフのパス幅になる.
実装上の工夫として,再帰にたいして F AILU RE の解を返すような (S, T ) のペアを覚えておく.ある k
について,(S, T ) が F AILU RE を返す,つまり,(S, T ) が k 分離可能でないとき,明らかに (S, T ) は k − 1
分解可能でないので,そのような (S, T ) を覚えておくことでより高速化することができる.
また,このアルゴリズムは,一般有向グラフに対しても (実行時間は保障されないが) 正しさが保障される
ため,実験は h 準完全グラフと一般有向グラフの両方について行う.
h 準完全グラフのパス幅を求める実験
n 頂点の h 準完全グラフのパス幅を求めるのにかかる実行時間を計測する.
• h = 0 準完全グラフ
• h = 10 準完全グラフ
• パス幅が k = 10 以下の h = 0 準完全グラフ
• パス幅が k = 20 以下の h = 0 準完全グラフ
• パス幅が k = 30 以下の h = 0 準完全グラフ
40
• パス幅が k = 10 以下の h = 10 準完全グラフ
• パス幅が k = 20 以下の h = 10 準完全グラフ
• パス幅が k = 30 以下の h = 10 準完全グラフ
の 8 通りのケースについて前者 2 つのケースは n を 10 から 60 まで 10 刻みに後者 6 つのケースは n を 10
から 150 まで 10 刻みに動かして実行する.テストケースは,(2) ランダム h 準完全グラフおよび,(3) パス
幅を指定したランダム h 準完全グラフを利用する.ここでパス幅は c を整数として k + c に指定する.c の値
は,h,k,n に対して 10 回グラフの生成を行い,そのパス幅の平均が k + 1 を超えるような最小の値とする.ま
た,頂点数ごとに 10 回の実行をする.
h 準完全グラフのパス幅を求めるのにかかった実行時間 (ミリ秒) を表 5.14 に,その中で,h が同じ者同士
を抜き出したグラフを図 5.12,図 5.13 に載せる.
表 5.14 h 準完全グラフのパス幅を求めるための時間
h=0
h=10
頂点数
ランダム
k=10
k=20
k=30
ランダム
k=10
k=20
k=30
10
1.6
1.5
0.0
0
0.0
0
0
0
20
12.5
3.2
9.5
7.8
103.0
4.7
56.2
46.9
30
192.0
7.8
40.6
162.4
1961.7
9.5
85.9
875.9
40
1509.8
107.7
62.4
357.5
25815.8
63.9
167.2
1813.6
50
8184.7
507.5
260.7
596
140167.3
220
366.6
1626.4
60
43027.8
766.1
588.2
1181.5
646170.2
587
813.3
2663.8
70
-
908.1
997.5
1333.2
-
766.4
1379.9
5058.4
80
-
2109.5
3921.2
1933.5
-
894.4
4186.3
7031.8
90
-
2423.0
2983.7
6265.7
-
5889.5
4773.1
6854
100
-
7554.2
4258.5
8274
-
7312.3
6623.2
11780.7
110
-
4981.9
8021.0
10939.7
-
10134.5
9039.5
26492.7
120
-
6643.3
8134.8
16769.4
-
3863.2
13796.4
22210.4
130
-
16499.6
17310.7
27444.6
-
10925.9
20188.9
29812.5
140
-
10134.7
26781.5
53619.7
-
43857.1
28466.4
30189
150
-
6954.1
26460.3
44163.2
-
6861.7
37450.3
74093.4
41
図 5.12 h = 0 準完全グラフのパス幅を求めるための時間
図 5.13
h = 10 準完全グラフのパス幅を求めるための時間
ばらつきはあるが,おおよそグラフのパス幅と頂点数に比例して実行時間が大きくなる傾向が読み取れる.
また,パス幅を指定しない (ランダムな) グラフに対しては,h に対する依存が大きくなっているように見え
る.ここで,図 5.14,図 5.15,図 5.16,図 5.17 に k が同じもの同士の実行時間のグラフを載せる.
42
図 5.14 パス幅を指定しないテストケースの実行時間の比較
図 5.15 k = 10 テストケースの実行時間の比較
43
図 5.16
k = 20 のテストケースの実行時間の比較
図 5.17
k = 30 のテストケースの実行時間の比較
パス幅を指定しないグラフについては,h に対する依存度が大きいことが読み取れる.逆にパス幅を指定し
たグラフについては,h に対する依存度はそこまで大きくない.
一般有向グラフのパス幅を求める実験
n 頂点の一般有向グラフのパス幅を求めるのにかかる実行時間を計測する.
• 辺密度 70% の一般有向グラフ
• 辺密度 80% の一般有向グラフ
• パス幅が k = 10 以下,辺密度 70% の一般有向グラフ
44
• パス幅が k = 20 以下,辺密度 70% の一般有向グラフ
• パス幅が k = 30 以下,辺密度 70% の一般有向グラフ
• パス幅が k = 10 以下,辺密度 80% の一般有向グラフ
• パス幅が k = 20 以下,辺密度 80% の一般有向グラフ
• パス幅が k = 30 以下,辺密度 80% の一般有向グラフ
の 8 通りのケースについて前者 2 つのケースは n を 10 から 60 まで 10 刻みに後者 6 つのケースは n を 10
から 150 まで 10 刻みに動かして実行する.テストケースは,(4) 辺密度を指定したランダム有向グラフおよ
び,(5) 辺密度とパス幅を指定したランダム有向グラフを利用する.ここでパス幅は c を整数として k + c に
指定する.c の値は,h,k,n に対して 10 回グラフの生成を行い,そのパス幅の平均が k + 1 を超えるような最
小の値とする.また,頂点数ごとに 10 回の実行をする.
一般有向グラフのパス幅を求めるのにかかった実行時間 (ミリ秒) を表 5.15 に,その中で,h が同じ者同士
を抜き出したグラフを図 5.18,図 5.19 に載せる.
表 5.15 一般有向グラフのパス幅を求めるための時間
dence=70
dence=80
頂点数
ランダム
k=10
k=20
k=30
ランダム
k=10
k=20
k=30
10
0
0.0
1.6
1.6
1.5
0.0
0
0
20
10.9
1.7
14.1
21.8
6.3
6.2
6.3
9.4
30
117
26.6
65.5
273.3
45.3
18.8
56.1
195
40
827.7
70.5
221.7
485.6
298.3
71.8
222.1
273.4
50
5141.1
213.7
730.7
1351.9
1061.4
196.7
513.5
1164.2
60
21345.3
338.8
1033.2
3925.8
3168.2
215.3
944.6
2941.6
70
-
638.7
1949.3
6493.7
-
441.6
2041.5
3383.1
80
-
967.6
3170.9
7281.3
-
864.8
3166.3
7420.4
90
-
2008.8
4284.9
10473.1
-
1578.0
4682.5
10122.3
100
-
3041.5
8403.1
17806.8
-
1670.0
5763.6
17212.5
110
-
5124.1
8343.9
27734.9
-
3707.7
8080.2
27815.7
120
-
6864.9
12078.7
32865.6
-
8582.6
15225.3
25249.8
130
-
8704.2
23345.0
52754.1
-
11468.6
13931
35033.7
140
-
15516.9
29040.5
88854.1
-
7283.0
24945.5
59224.9
150
-
20558.9
49272.0
85969.8
-
17006.5
35606.5
79527
45
図 5.18
辺密度 70% の一般有向グラフのパス幅を求めるための時間
図 5.19
辺密度 80% の一般有向グラフのパス幅を求めるための時間
h 準完全グラフと同様に,グラフのパス幅と頂点数に比例して実行時間が大きくなる傾向が読み取れる.し
かし,ばらつきは h 準完全グラフよりも小さい.ここで,図 5.20,図 5.21,図 5.22,図 5.23 に k が同じも
の同士の実行時間のグラフを載せる.
46
図 5.20 パス幅を指定しないテストケースの実行時間の比較
図 5.21
k = 10 のテストケースの実行時間の比較
47
図 5.22
k = 20 のテストケースの実行時間の比較
図 5.23
k = 30 のテストケースの実行時間の比較
h 準完全グラフにおける h と似た結果になることが読み取れる.パス幅を指定しないグラフに対しては,辺
密度に大きく依存している.逆にパス幅を指定したグラフに対しては,あまり辺密度に依存していない.
5.4 [実験 3]3 章のアルゴリズムと 4 章のアルゴリズムの比較実験
この節では,3 章のアルゴリズムと 4 章のアルゴリズムの比較実験を行う.
5.4.1 3 章の障害を含まないグラフでの実験
3 章の障害を含まないグラフに対してパス幅が k 以下かどうかを判定するのにかかる時間を計測する.
48
5.2 節の実験より,障害が存在しない時,3 章のアルゴリズムの実行時間はグラフの密度や解によって大き
く変化しない.また,4 章のアルゴリズムは,深さ優先であるため,解が YES であるほうが高速に動作する.
よってテストケースには,(3) パス幅を指定した h 準完全グラフを利用し,解が YES であるようにパス幅は
k 以下に指定する.なお,3 章のアルゴリズムは準完全グラフに対するアルゴリズムであるので,h = 0 と指
定する.
• k=1
• k=2
の 2 通りのテストケースに対して,グラフの頂点数が 5 から 12 までの 1 刻みに動かして実行する.
表 5.16 に,頂点数別の実行時間 (ミリ秒) の平均を載せる.
表 5.16 障害を含まないグラフに対しての実行時間の平均
k=1
k=2
頂点数
3章
4章
3章
4章
5
9.4
1.5
7.9
0
6
43.7
0.0
37.5
0
7
174.9
0.0
156.1
0
8
463.6
0.0
802.3
0
9
890.1
0.0
3964.9
0
10
1453.3
0.0
23841.1
0
11
2174.3
0.0
91506.1
0
12
3032.2
0.0
409713.9
0
障害が見つからない場合,3 章の理論的な計算時間は O(2O(k log k) |V (T )|2 ) である.対して 4 章のアルゴリ
ズムの理論的な計算時間は準完全グラフが (k, 2k + 1) 有界であることから,(2k + 1)2k nO(1) である.つま
り,n についての依存度は 4 章のアルゴリズムの方が大きいといえる.しかし,表 5.16 からは,明らかに 4
章のアルゴリズムの方が早いことが読み取れる.
3 章のアルゴリズムにおいては,分離対を全列挙し,それらの間に辺を引くという部分で多大な時間がか
かっている.理論的にはその個数は高々 2O(klogk) で抑えられるが,実際には,かなり大きな係数がかかって
いる.
以上のことから,4 章のアルゴリズムのほうがより実用的であると考えられる.ただし,degree tangle を
含むグラフに対しては,3 章のアルゴリズムの方が早く動作する (理論的には O(n log n)) と予想できるので,
続く節でそのようなグラフに対しての実験を行う.
5.4.2 3 章の degree tangle を含むグラフでの実験
3 章の degree tangle を含むグラフに対してパス幅が k 以下かどうかを判定するのにかかる時間を計測する.
degree tangle を含むグラフに対しては,3 章のアルゴリズムは O(n log n) で動作する.(5k + 2, k)-degree
tangle を含むグラフは以下のようにして生成する.
1. 頂点をランダムに並び替えたものを {v0 , v1 , . . . , vn } とする.
49
2. 強連結性を満たすように任意の i について vi から vi+1 への辺 (vn からは v0 へ辺) を追加する.
3. 準完全性を満たすように任意の i, j(i < j) について,vi から vj への辺を追加する.
4. 先頭の 5k + 2 個の頂点 vi (0 ≤ i ≤ 5k + 1) について,N + (vi ) ≥ n − k − 1 となるように辺を引く
このようにして生成したグラフでは,{v0 , v1 , . . . , v5k+1 } が (5k + 2, k)-degree tangle になっている.
• k=1
• k=5
• k = 10
• k = 15
の 4 通りのテストケースに対して,頂点数を 100 から 300 まで 10 刻みに動かして実行する.(5k + 2, k)-
degree tangle を含むことから,解は NO になる.
表 5.17 に,頂点別の実行時間 (ミリ秒) の平均を載せる.
表 5.17 (5k + 2, k)-degree tangle を含むグラフに対しての実行時間
k=1
k=5
k=10
k=15
頂点数
3章
4章
3章
4章
3章
4章
3章
4章
100
0
7.9
0
54.6
1.5
269.5
1.6
866.1
110
0
4.7
0
56.3
0
267.5
0
913.2
120
0
7.8
0
62.3
0
285.7
0
952.1
130
0
10.9
0
73.5
0
317
1.6
1041.2
140
0
10.9
0
76.4
0
343.9
0
1053.9
150
0
14
0
78.1
0
363.8
0
1120.9
160
1.6
12.5
0
98.4
1.6
402.7
0
1203.6
170
0
17.2
0
96.8
0
398.5
0
1320.7
180
0
20.3
0
99.8
0
416.8
0
1364.5
190
0
21.9
0
100.1
0
440.3
1.6
1362.7
200
0
28
0
113.8
0
468.5
1.6
1459.6
210
0
26.6
1.5
126.4
0
505.8
0
1501.8
220
0
29.6
0
135.7
0
526.1
0
1587.6
230
0
34.3
0
143.6
0
555.9
0
1640.5
240
0
34.3
0
179.5
1.5
574.7
0
1742.1
250
0
40.6
0
212.6
3.1
568.5
0
1742.1
260
0
45.3
1.5
203.4
1.5
615
0
1887.3
270
0
48.6
0
223.5
1.6
677.3
0
2108.7
280
0
54.7
0
236.1
0
691.4
3.1
1960.5
290
1.6
56.2
1.6
242
1.5
704
0
2024.4
300
0
62.5
1.6
256.2
0
719.4
0
2055.4
(5k + 2, k)-degree tangle を含むグラフについては,3 章のアルゴリズムの方が高速に動作することが読み
50
取れる.
しかし,もう一つの障害 (マッチング障害) は,バス選択子の大きさが (6k + 1)2 + (6k + 1) 以上の時に見つ
かるため,グラフの頂点数が最低でも 56 以上である必要がある.そのようなグラフに対して,3 章のアルゴ
リズムを適用したところ,障害を見つけるまでに最低でも 30 分以上かかる (実際には 30 分で実行を打ち切っ
た) ことが分かった.
51
第6章
むすびに
6.1 まとめ
本稿では,n 頂点の (k, b) 有界であるグラフ G と正整数 k が与えられたとき,G のパス幅が k 以下かどう
かを判定する b2k nO(1) 時間のアルゴリズムについて記述した.特に,h 準完全グラフは,(k, h + 2k + 1) 有
界であるので,このアルゴリズムは (h + 2k + 1)2k nO(1) 時間で動作する.h 準完全グラフは,準完全グラフ
をより一般化したもので,0 準完全性は準完全性と一致する.Pilipczuk[11] が n 頂点の準完全グラフのパス
幅が k 以下かどうかを判定する O(2O(klogk) n2 ) 時間アルゴリズムを考案しており,我々のアルゴリズムはこ
の結果に対して,k に対する依存度が小さく,より一般的である.また,実装実験においてもほとんどのテス
トケースに対して,我々のアルゴリズムのほうが高速に動作した.
6.2 課題
準完全グラフのうち,(5k + 2, k)-次数障害をもつようなものに対しては,Pilipczuk のアルゴリズムのほう
が高速に動作した.これは,(5k + 2, k)-次数障害が「パス幅が k より大きい証拠」であり,この障害を見つけ
ることのみについて考えると O(n log n) 時間で動作しているからである.しかし,この次数障害は準完全グ
ラフの構造に依存しており,h 準完全グラフにそのまま適用することはできない.h 準完全グラフや (k, b) 有
界なグラフにに適用できる障害を見つけることでよりアルゴリズムを高速化できると予想できる.
また,現在は h 準完全のみについて考えているが,(k, b) 有界である有用なグラフクラスが見つかれば,我々
のアルゴリズムを適用することができる.
52
謝辞
指導教員である玉木久夫教授には,研究の方向付けや詳しい議論,論文の書き方など様々な面でお世話にな
りました.心より感謝申し上げます.
また,共同研究において多くのアドバイスをいただいた学習院大学の小林靖明氏にも深く感謝いたします.
最後に,計算理論研究室で過ごした学生生活はとても充実したものでした.色々な面でお世話になった同研
究室の皆様にも深く感謝いたします.
53
参考文献
[1] H.L. Bodlaender: A Tourist Guide Through Treewidth. Acta Cybernetica 11, 1–23 (1993)
[2] H.L. Bodlaender: A linear-time algorithm for finding tree-decompositions of small treewidth. SIAM
Journal on Computing 25(6), 1305–1317 (1996)
[3] H.L. Bodlaender and T. Kloks: Efficient and constructive algorithms for the pathwidth and treewidth
of graphs. Journal of Algorithms 21(2), 358–402 (96)
[4] M. Chudnovsky, A. Fradkin, P.D. Seymour: Tournament immersion and cutwisth. Journal of Combinatorial Theory, Series B 102(1), 93–101 (2012)
[5] M. Chudnovsky, P.D. Seymour: A well-quasi-order for tournaments. Journal of Combinatorial Theory, Series B 101(1), 47–53 (2011)
[6] F.V. Fomin, M. Pilipczuk: Jungles, bundles, and fixed-parameter tractability. In: Proceedings of
24th Annual ACM-SIAM Symposium on Discrete Algorithms (SODA2013), pp. 396–413 (2013)
[7] T. Kashiwabara and T. Fujisawa: NP-completeness of the problem of finding a minimum-cliquenumber interval graph containing a given graph as a subgraph. In: Proceedings of International
Symposium on Circuits and Systems, pp. 657–660 (1979)
[8] I. Kim, P.D. Seymour: Tournament minors. CoRR. abs/1206.3135 (2012)
[9] K. Kitsunai, Y. Kobayashi, K. Komuro, H. Tamaki, T. Tano: Computing directed pathwidth in
O(1.89n ) time. In: Proceedings of the 7th International Symposium on Parameterized and Exact
Computation (IPEC2012), pp. 182–193 (2012)
[10] H. Nagamochi: Linear layouts in submodular systems. In: Proceedings of the 23rd Internal Symposium on Algorithms and Computation (ISAAC2012), pp. 475–484 (2012)
[11] M. Pilipczuk: Computing cutwidth and pathwidth of semi-complete digraphs via degree orderings.
In: Proceedings of the 30th International Symposium on Theoretical Aspects of Computer Science
(STACS 2013), pp. 197–208 (2013)
[12] N. Robertson, P.D. Seymour: Graph minors. I. Excluding a forest. Journal of Combinatorial Theory,
Series B 35(1), 39–61 (1983)
[13] N. Robertson, P.D. Seymour: Graph minors VIII. The disjoint paths problem. Journal of Combinatorial Theory, Series B 63(1), 65–110 (1995)
[14] N. Robertson, P.D. Seymour: Graph minors XX. Wagner’s conjecture. Journal of Combinatorial
Theory, Series B 92(2), 325–257 (2004)
[15] H. Tamaki: A polynomial time algorithm for bounded directed pathwidth. In: Proceedings of 37th
International Workshop on Graph-Theoretic Concepts in Computer Science (WG2011), pp. 331-342
(2011)
54
付録 A
実験データ (一部抜粋)
[実験 1]3 章のアルゴリズムの実装実験
k を固定したうえで n を動かす (その1)
表 A.1
辺密度 60% に対する実行 (一部抜粋)
実行時間 (内訳)
頂点数
辺密度
k
解
実行時間
次数障害
分離対列挙
辺張り
到達判定
1
60
1
1
2
0
1
0
0
1
60
1
1
1
0
1
0
0
2
60
1
1
1
0
1
0
0
2
60
1
1
1
0
0
1
0
3
60
1
1
1
0
1
0
0
3
60
1
1
1
0
0
1
0
4
60
1
1
3
0
1
2
0
4
60
1
1
2
0
1
1
0
5
60
1
0
11
0
2
9
0
5
60
1
0
11
0
2
9
0
6
60
1
0
67
0
7
59
1
6
60
1
0
55
0
7
48
0
7
60
1
0
227
0
17
209
1
7
60
1
0
242
0
19
223
0
8
60
1
0
883
0
40
843
0
8
60
1
0
1030
0
44
985
1
9
60
1
0
2844
0
94
2750
0
9
60
1
-1
0
0
0
0
0
10
60
1
0
9955
0
182
9773
0
10
60
1
0
14003
0
248
13755
0
55
表 A.2
辺密度 70% に対する実行 (一部抜粋)
実行時間 (内訳)
頂点数
辺密度
k
解
実行時間
次数障害
分離対列挙
辺張り
到達判定
1
70
1
1
0
0
0
0
0
1
70
1
1
0
0
0
0
0
1
70
1
1
0
0
0
0
0
2
70
1
1
0
0
0
0
0
2
70
1
1
0
0
0
0
0
2
70
1
1
0
0
0
0
0
3
70
1
1
0
0
0
0
0
3
70
1
1
1
0
1
0
0
3
70
1
1
1
0
0
1
0
4
70
1
1
2
0
0
2
0
4
70
1
1
3
0
0
2
0
4
70
1
1
2
0
1
1
0
5
70
1
1
10
0
2
8
0
5
70
1
0
11
0
2
9
0
5
70
1
1
18
0
2
15
1
6
70
1
0
61
0
7
54
0
6
70
1
0
71
0
8
63
0
6
70
1
0
48
0
7
41
0
7
70
1
0
229
0
16
212
0
7
70
1
0
205
0
17
188
0
7
70
1
0
217
0
17
200
0
8
70
1
0
889
0
40
849
0
8
70
1
0
697
0
30
667
0
8
70
1
0
749
0
40
708
0
9
70
1
0
3883
0
103
3780
0
9
70
1
0
3422
0
103
3318
1
9
70
1
0
3871
0
106
3765
0
10
70
1
0
13178
0
247
12931
0
10
70
1
0
14673
0
250
14422
1
10
70
1
-1
0
0
0
0
0
56
表 A.3
辺密度 80% に対する実行 (一部抜粋)
実行時間 (内訳)
頂点数
辺密度
k
解
実行時間
次数障害
分離対列挙
辺張り
到達判定
1
80
1
1
1
0
0
1
0
1
80
1
1
0
0
0
0
0
1
80
1
1
0
0
0
0
0
2
80
1
1
0
0
0
0
0
2
80
1
1
0
0
0
0
0
2
80
1
1
0
0
0
0
0
3
80
1
1
1
0
0
1
0
3
80
1
1
0
0
0
0
0
3
80
1
1
1
0
1
0
0
4
80
1
1
3
0
1
2
0
4
80
1
0
3
0
1
2
0
4
80
1
1
2
0
0
2
0
5
80
1
0
11
0
2
8
1
5
80
1
0
10
0
2
8
0
5
80
1
0
9
0
2
7
0
6
80
1
0
50
0
6
44
0
6
80
1
0
58
0
6
52
0
6
80
1
0
52
0
6
46
0
7
80
1
0
253
0
16
236
1
7
80
1
0
250
0
18
231
1
7
80
1
0
257
0
16
241
0
8
80
1
0
947
0
39
908
0
8
80
1
0
804
0
37
766
1
8
80
1
0
966
0
41
925
0
9
80
1
0
3765
0
104
3661
0
9
80
1
0
3965
0
100
3865
0
9
80
1
0
3906
0
99
3807
0
10
80
1
0
12314
0
248
12066
0
10
80
1
0
12565
0
249
12316
0
10
80
1
0
16630
0
267
16363
0
57
表 A.4
辺密度 90% に対する実行 (一部抜粋)
実行時間 (内訳)
頂点数
辺密度
k
解
実行時間
次数障害
分離対列挙
辺張り
到達判定
1
90
1
1
0
0
0
0
0
1
90
1
1
1
0
1
0
0
1
90
1
1
0
0
0
0
0
2
90
1
1
1
0
1
0
0
2
90
1
1
0
0
0
0
0
2
90
1
1
0
0
0
0
0
3
90
1
1
1
0
0
1
0
3
90
1
1
1
0
0
1
0
3
90
1
1
0
0
0
0
0
4
90
1
1
2
0
1
1
0
4
90
1
0
4
0
1
1
2
4
90
1
1
2
0
1
1
0
5
90
1
1
13
0
2
11
0
5
90
1
0
9
0
2
7
0
5
90
1
1
15
0
2
13
0
6
90
1
0
61
0
6
54
1
6
90
1
0
56
0
6
50
0
6
90
1
0
46
0
7
39
0
7
90
1
0
226
0
16
210
0
7
90
1
0
243
0
17
226
0
7
90
1
0
212
0
16
196
0
8
90
1
0
869
0
31
838
0
8
90
1
0
1090
0
42
1048
0
8
90
1
-1
0
0
0
0
0
9
90
1
0
3881
0
104
3777
0
9
90
1
0
3542
0
99
3442
1
9
90
1
0
4096
0
104
3992
0
10
90
1
-1
0
0
0
0
0
10
90
1
-1
0
0
0
0
0
10
90
1
0
11591
0
258
11333
0
58
k を固定したうえで n を動かす (その 2)
表 A.5 1 から 10 頂点に対する実行 (一部抜粋)
実行時間 (内訳)
頂点数
辺密度
k
解
実行時間
次数障害
分離対列挙
辺張り
到達判定
1
70
1
1
1
0
0
0
0
1
70
1
1
1
0
0
1
0
1
70
1
1
0
0
0
0
0
2
70
1
1
1
0
1
0
0
2
70
1
1
1
0
0
0
1
2
70
1
1
0
0
0
0
0
3
70
1
1
2
0
1
1
0
3
70
1
1
1
0
0
1
0
3
70
1
1
0
0
0
0
0
4
70
1
1
2
0
0
2
0
4
70
1
1
3
0
1
2
0
4
70
1
1
2
0
1
1
0
5
70
1
1
13
0
4
9
0
5
70
1
1
10
0
1
9
0
5
70
1
1
11
0
3
8
0
6
70
1
1
51
0
5
46
0
6
70
1
1
50
0
5
45
0
6
70
1
1
51
0
5
46
0
7
70
1
1
128
0
9
119
0
7
70
1
1
135
0
9
126
0
7
70
1
1
130
0
11
119
0
8
70
1
1
255
0
15
240
0
8
70
1
1
248
0
13
235
0
8
70
1
1
256
0
14
242
0
9
70
1
1
430
0
20
410
0
9
70
1
1
423
0
20
403
0
9
70
1
1
481
0
19
462
0
10
70
1
1
692
0
26
666
0
10
70
1
1
718
0
26
692
0
10
70
1
1
718
0
24
694
0
59
表 A.6 11 から 20 頂点に対する実行 (一部抜粋)
実行時間 (内訳)
頂点数
辺密度
k
解
実行時間
次数障害
分離対列挙
辺張り
到達判定
11
70
1
1
1029
0
33
996
0
11
70
1
1
1040
0
33
1007
0
11
70
1
1
992
0
32
960
0
12
70
1
1
1417
0
40
1377
0
12
70
1
1
1462
0
41
1421
0
12
70
1
1
1470
0
42
1428
0
13
70
1
1
1984
0
50
1934
0
13
70
1
1
1913
0
50
1863
0
13
70
1
1
1870
0
48
1822
0
14
70
1
1
2637
0
59
2578
0
14
70
1
1
2565
0
59
2506
0
14
70
1
1
2479
0
58
2421
0
15
70
1
1
3469
0
67
3401
1
15
70
1
1
3177
0
82
3095
0
15
70
1
1
3135
0
68
3067
0
16
70
1
1
3823
0
79
3743
1
16
70
1
1
3815
0
79
3736
0
16
70
1
1
3945
0
78
3867
0
17
70
1
1
4534
0
90
4444
0
17
70
1
1
4645
0
108
4537
0
17
70
1
1
4513
0
92
4421
0
18
70
1
1
5503
0
105
5398
0
18
70
1
1
5516
0
105
5411
0
18
70
1
1
5429
0
106
5323
0
19
70
1
1
6223
0
118
6105
0
19
70
1
1
6377
0
119
6258
0
19
70
1
1
6199
0
119
6080
0
20
70
1
1
6903
0
132
6770
1
20
70
1
1
6869
0
134
6735
0
20
70
1
1
6852
0
151
6701
0
60
n を固定したうえで k を動かす.
表 A.7
5 頂点に対する実行 (一部抜粋)
実行時間 (内訳)
頂点数
辺密度
k
解
実行時間
次数障害
分離対列挙
辺張り
到達判定
5
70
1
1
13
0
2
11
0
5
70
1
1
12
0
2
10
0
5
70
1
1
11
0
2
9
0
5
70
1
1
13
0
4
9
0
5
70
1
1
11
0
2
9
0
5
70
1
1
10
0
1
9
0
5
70
1
1
12
0
2
10
0
5
70
1
1
11
0
2
9
0
5
70
2
1
11
0
2
9
0
5
70
2
1
12
0
2
10
0
5
70
2
1
10
0
1
9
0
5
70
2
1
11
0
2
9
0
5
70
2
1
11
0
2
9
0
5
70
2
1
12
0
2
10
0
5
70
2
1
11
0
2
9
0
5
70
2
1
11
0
2
9
0
5
70
3
1
12
0
3
9
0
5
70
3
1
12
0
2
10
0
5
70
3
1
11
0
2
9
0
5
70
3
1
13
0
2
11
0
5
70
3
1
11
0
2
9
0
5
70
3
1
11
0
2
9
0
5
70
3
1
14
0
2
11
1
5
70
3
1
11
0
1
10
0
5
70
4
1
12
0
1
11
0
5
70
4
1
11
0
2
9
0
5
70
4
1
12
0
2
10
0
5
70
4
1
13
0
2
11
0
5
70
4
1
12
0
2
10
0
5
70
4
1
11
0
2
9
0
61
表 A.8
6 頂点に対する実行 (一部抜粋)
実行時間 (内訳)
頂点数
辺密度
k
解
実行時間
次数障害
分離対列挙
辺張り
到達判定
6
70
1
1
63
0
10
51
0
6
70
1
1
57
0
9
48
0
6
70
1
1
50
0
6
44
0
6
70
1
1
51
0
7
44
0
6
70
1
1
52
0
7
45
0
6
70
1
1
52
0
6
46
0
6
70
2
1
53
0
5
48
0
6
70
2
1
53
0
7
46
0
6
70
2
1
53
0
5
48
0
6
70
2
1
54
0
6
48
0
6
70
2
1
52
0
5
47
0
6
70
2
1
54
0
5
49
0
6
70
3
1
56
0
6
50
0
6
70
3
1
57
0
5
52
0
6
70
3
1
55
0
6
49
0
6
70
3
1
69
0
5
64
0
6
70
3
1
54
0
5
49
0
6
70
3
1
55
0
5
50
0
6
70
4
1
57
0
6
51
0
6
70
4
1
57
0
5
52
0
6
70
4
1
71
0
5
66
0
6
70
4
1
55
0
5
50
0
6
70
4
1
57
0
5
52
0
6
70
4
1
57
0
5
52
0
6
70
5
1
56
0
5
51
0
6
70
5
1
58
0
5
53
0
6
70
5
1
58
0
5
53
0
6
70
5
1
59
0
6
53
0
6
70
5
1
57
0
5
52
0
6
70
5
1
82
0
11
71
0
62
表 A.9
7 頂点に対する実行 (一部抜粋)
実行時間 (内訳)
頂点数
辺密度
k
解
実行時間
次数障害
分離対列挙
辺張り
到達判定
7
70
1
1
149
0
15
133
0
7
70
1
1
140
0
12
128
0
7
70
1
1
133
0
11
122
0
7
70
1
1
134
0
11
123
0
7
70
1
1
133
0
10
123
0
7
70
2
1
265
0
17
248
0
7
70
2
1
266
0
18
248
0
7
70
2
1
266
0
16
249
1
7
70
2
1
261
0
18
243
0
7
70
2
1
265
0
18
247
0
7
70
3
1
273
0
16
257
0
7
70
3
1
283
0
19
264
0
7
70
3
1
276
0
16
260
0
7
70
3
1
268
0
16
252
0
7
70
3
1
272
0
19
253
0
7
70
4
1
295
0
16
279
0
7
70
4
1
284
0
16
268
0
7
70
4
1
278
0
16
262
0
7
70
4
1
298
0
16
282
0
7
70
4
1
281
0
16
265
0
7
70
5
1
300
0
15
285
0
7
70
5
1
322
0
20
302
0
7
70
5
1
288
0
16
272
0
7
70
5
1
338
0
25
313
0
7
70
5
1
297
0
16
281
0
7
70
6
1
335
0
16
319
0
7
70
6
1
301
0
24
277
0
7
70
6
1
341
0
26
315
0
7
70
6
1
295
0
16
279
0
7
70
6
1
333
0
16
317
0
63
表 A.10 8 頂点に対する実行 (一部抜粋)
実行時間 (内訳)
頂点数
辺密度
k
解
実行時間
次数障害
分離対列挙
辺張り
到達判定
8
70
1
1
274
0
21
252
0
8
70
1
1
263
0
14
249
0
8
70
1
1
249
0
13
236
0
8
70
1
1
255
0
14
240
1
8
70
2
1
1228
0
51
1177
0
8
70
2
1
1189
0
51
1138
0
8
70
2
1
1242
0
51
1191
0
8
70
2
1
1233
0
51
1182
0
8
70
3
1
1254
0
51
1203
0
8
70
3
1
1248
0
51
1197
0
8
70
3
1
1254
0
53
1201
0
8
70
3
1
1312
0
50
1262
0
8
70
4
1
1328
0
50
1278
0
8
70
4
1
1317
0
52
1264
1
8
70
4
1
1272
0
47
1225
0
8
70
4
1
1291
0
55
1236
0
8
70
5
1
1370
0
55
1315
0
8
70
5
1
1429
0
62
1367
0
8
70
5
1
1348
0
48
1299
1
8
70
5
1
1406
0
47
1359
0
8
70
6
1
1490
0
47
1442
1
8
70
6
1
1361
0
69
1292
0
8
70
6
1
1354
0
46
1308
0
8
70
6
1
1410
0
47
1363
0
8
70
7
1
1459
0
192
1266
0
8
70
7
1
1382
0
86
1294
1
8
70
7
1
1480
0
195
1285
0
8
70
7
1
1636
0
89
1547
0
64
表 A.11 9 頂点に対する実行 (一部抜粋)
実行時間 (内訳)
頂点数
辺密度
k
解
実行時間
次数障害
分離対列挙
辺張り
到達判定
9
70
1
1
454
0
26
427
0
9
70
1
1
428
0
18
410
0
9
70
1
1
426
0
20
406
0
9
70
2
1
5830
0
157
5673
0
9
70
2
1
5830
0
156
5674
0
9
70
2
1
5817
0
178
5639
0
9
70
2
1
5955
0
158
5797
0
9
70
3
1
5868
0
157
5711
0
9
70
3
1
5802
0
212
5590
0
9
70
3
1
5977
0
213
5764
0
9
70
4
1
5910
0
161
5749
0
9
70
4
1
5977
0
162
5815
0
9
70
4
1
5962
0
162
5800
0
9
70
4
1
6083
0
161
5922
0
9
70
5
1
6316
0
162
6154
0
9
70
5
1
6264
0
189
6075
0
9
70
5
1
6229
0
190
6039
0
9
70
5
1
6479
0
188
6290
1
9
70
6
1
6768
0
188
6580
0
9
70
6
1
6702
0
150
6552
0
9
70
6
1
6770
0
149
6621
0
9
70
6
1
6897
0
150
6747
0
9
70
7
1
6909
0
149
6760
0
9
70
7
1
7055
0
149
6906
0
9
70
7
1
7034
0
592
6441
1
9
70
7
1
6992
0
573
6419
0
9
70
8
1
7635
0
150
7484
1
9
70
8
1
7860
0
163
7697
0
9
70
8
1
8357
0
715
7642
0
9
70
8
1
8318
0
149
8169
0
65
[実験 2]4 章のアルゴリズムの実装実験
実装方法ごとの比較実験
表 A.12 h = 0,k = 1 に対する実行 (一部抜粋)
解
実行時間
最大流実行回数
h
k
n
(A)
(B)
(C)
(A)
(B)
(C)
(A)
(B)
(C)
0
1
10
0
0
0
0
0
0
8
8
8
0
1
10
0
0
0
0
0
0
16
4
4
0
1
20
0
0
0
0
0
0
0
0
0
0
1
20
0
0
0
0
0
0
27
15
15
0
1
20
0
0
0
0
0
0
0
0
0
0
1
30
0
0
0
0
0
0
0
0
0
0
1
30
0
0
0
0
0
0
0
0
0
0
1
30
0
0
0
15
0
16
63
21
21
0
1
30
0
0
0
0
0
0
55
26
26
0
1
40
0
0
0
0
0
0
0
0
0
0
1
40
0
0
0
0
0
0
0
0
0
0
1
40
0
0
0
0
0
0
0
0
0
0
1
40
0
0
0
0
0
0
0
0
0
0
1
50
0
0
0
32
46
31
48
48
48
0
1
50
0
0
0
0
0
0
0
0
0
0
1
50
0
0
0
0
0
0
0
0
0
0
1
50
0
0
0
0
0
0
0
0
0
0
1
60
0
0
0
109
47
47
109
56
56
0
1
60
0
0
0
175
62
94
148
56
56
0
1
60
0
0
0
93
78
78
59
57
57
0
1
60
0
0
0
62
78
78
58
58
58
0
1
70
0
0
0
329
156
124
171
65
65
0
1
70
0
0
0
0
0
0
0
0
0
0
1
70
0
0
0
0
0
0
0
0
0
0
1
70
0
0
0
0
0
0
0
0
0
0
1
80
0
0
0
0
0
0
0
0
0
0
1
80
0
0
0
235
234
202
91
77
77
0
1
80
0
0
0
344
202
187
135
74
74
0
1
80
0
0
0
235
203
203
91
75
75
66
表 A.13 h = 0,k = 3 に対する実行 (一部抜粋)
解
実行時間
最大流実行回数
h
k
n
(A)
(B)
(C)
(A)
(B)
(C)
(A)
(B)
(C)
0
3
10
0
0
0
0
0
0
6
6
6
0
3
10
0
0
0
0
0
0
40
14
4
0
3
20
0
0
0
15
0
0
139
80
28
0
3
20
0
0
0
0
0
0
0
0
0
0
3
20
0
0
0
0
16
0
97
81
14
0
3
30
0
0
0
32
46
15
220
207
48
0
3
30
0
0
0
16
31
0
183
124
22
0
3
30
0
0
0
0
0
0
1
1
1
0
3
30
0
0
0
31
15
16
104
100
50
0
3
40
0
0
0
78
47
0
299
141
29
0
3
40
0
0
0
15
31
31
72
72
72
0
3
40
0
0
0
0
0
0
0
0
0
0
3
40
0
0
0
94
94
15
343
255
29
0
3
50
0
0
0
0
0
0
8
4
2
0
3
50
0
0
0
0
0
0
14
6
2
0
3
50
0
0
0
0
0
0
4
2
1
0
3
50
0
0
0
125
125
47
145
116
58
0
3
60
0
0
0
327
312
171
222
218
112
0
3
60
0
0
0
79
94
94
59
59
59
0
3
60
0
0
0
546
561
125
483
435
99
0
3
60
0
0
0
0
0
0
0
0
0
0
3
70
0
0
0
1030
1030
94
674
654
59
0
3
70
0
0
0
0
16
0
19
9
2
0
3
70
0
0
0
47
47
16
84
58
21
0
3
70
0
0
0
15
16
16
192
126
18
0
3
80
0
0
0
874
812
281
244
225
76
0
3
80
0
0
0
0
0
0
0
0
0
0
3
80
0
0
0
484
531
265
150
148
74
0
3
80
0
0
0
2357
1654
265
626
436
74
67
表 A.14 h = 0,k = 5 に対する実行 (一部抜粋)
解
実行時間
最大流実行回数
h
k
n
(A)
(B)
(C)
(A)
(B)
(C)
(A)
(B)
(C)
0
5
10
1
1
1
15
0
0
5
0
0
0
5
10
1
1
1
0
0
0
8
4
4
0
5
20
0
0
0
47
15
0
1276
640
50
0
5
20
0
0
0
0
0
0
67
64
18
0
5
20
0
0
0
16
15
16
603
321
35
0
5
30
0
0
0
32
31
0
890
504
23
0
5
30
0
0
0
125
78
15
3082
1293
50
0
5
30
0
0
0
95
47
0
538
270
25
0
5
30
0
0
0
63
47
0
720
459
24
0
5
40
0
0
0
454
390
31
1971
1382
99
0
5
40
0
0
0
719
655
31
3204
3029
78
0
5
40
0
0
0
298
312
0
908
707
30
0
5
40
0
0
0
109
94
16
491
333
69
0
5
50
0
0
0
1343
1388
141
1611
1569
175
0
5
50
0
0
0
3105
1778
110
5618
3802
168
0
5
50
0
0
0
250
187
46
313
251
53
0
5
50
0
0
0
2699
2184
141
5406
3598
148
0
5
60
0
0
0
7567
6614
328
6340
4949
239
0
5
60
0
0
0
19002
12246
328
34058
14852
258
0
5
60
0
0
0
1436
1420
265
1266
1216
142
0
5
60
0
0
0
1031
686
47
1244
910
48
0
5
70
0
0
0
4275
3073
374
2772
1671
164
0
5
70
0
0
0
3075
2776
577
2199
1599
174
0
5
70
0
0
0
1795
1685
31
3152
2838
61
0
5
70
0
0
0
438
281
16
1284
758
25
0
5
80
0
0
0
61371
50045
1451
21838
17105
390
0
5
80
0
0
0
3761
3744
593
1266
1188
174
0
5
80
0
0
0
27005
22963
593
8953
7454
169
0
5
80
0
0
0
10297
6833
234
4782
3183
103
68
表 A.15 h = 5,k = 1 に対する実行 (一部抜粋)
解
実行時間
最大流実行回数
h
k
n
(A)
(B)
(C)
(A)
(B)
(C)
(A)
(B)
(C)
5
1
10
1
1
1
0
0
0
14
9
9
5
1
10
1
1
1
0
0
0
7
0
0
5
1
20
0
0
0
0
0
0
0
0
0
5
1
20
1
1
1
0
15
0
38
0
0
5
1
20
0
0
0
0
0
0
0
0
0
5
1
30
0
0
0
0
0
0
0
0
0
5
1
30
0
0
0
15
0
0
69
51
17
5
1
30
0
0
0
0
0
0
0
0
0
5
1
30
0
0
0
0
16
0
88
38
19
5
1
40
0
0
0
0
0
0
34
34
21
5
1
40
0
0
0
0
0
0
0
0
0
5
1
40
0
0
0
15
16
15
84
30
30
5
1
40
1
1
1
0
0
0
88
6
6
5
1
50
0
0
0
16
0
0
59
34
17
5
1
50
0
0
0
0
0
0
0
0
0
5
1
50
1
1
1
15
0
16
130
43
43
5
1
50
0
0
0
0
0
0
0
0
0
5
1
60
0
0
0
0
15
0
17
17
17
5
1
60
0
0
0
16
0
0
27
27
27
5
1
60
1
1
1
16
0
0
174
28
28
5
1
60
1
1
1
16
0
0
164
0
0
5
1
70
0
0
0
0
0
0
21
18
18
5
1
70
0
0
0
0
0
0
0
0
0
5
1
70
0
0
0
0
0
0
17
17
17
5
1
70
0
0
0
0
0
0
0
0
0
5
1
80
0
0
0
0
0
0
0
0
0
5
1
80
0
0
0
0
0
15
11
11
11
5
1
80
0
0
0
0
0
0
0
0
0
5
1
80
0
0
0
0
0
0
0
0
0
69
表 A.16 h = 5,k = 3 に対する実行 (一部抜粋)
解
実行時間
最大流実行回数
h
k
n
(A)
(B)
(C)
(A)
(B)
(C)
(A)
(B)
(C)
5
3
10
1
1
1
0
0
0
8
4
4
5
3
10
0
0
0
15
0
0
78
52
29
5
3
20
0
0
0
16
0
0
188
83
17
5
3
20
0
0
0
16
0
15
263
126
36
5
3
20
0
0
0
0
0
0
220
94
25
5
3
30
0
0
0
32
15
0
446
242
40
5
3
30
0
0
0
78
31
0
864
321
47
5
3
30
0
0
0
0
0
0
0
0
0
5
3
30
0
0
0
16
0
0
132
76
12
5
3
40
0
0
0
31
31
0
106
93
31
5
3
40
0
0
0
15
16
0
77
57
15
5
3
40
0
0
0
15
0
0
79
43
15
5
3
40
0
0
0
78
63
0
204
201
35
5
3
50
0
0
0
156
156
47
241
231
74
5
3
50
0
0
0
0
0
0
0
0
0
5
3
50
0
0
0
109
78
63
134
118
88
5
3
50
0
0
0
79
62
46
90
89
46
5
3
60
0
0
0
157
125
62
128
102
51
5
3
60
0
0
0
811
749
171
533
489
110
5
3
60
0
0
0
16
17
15
32
30
17
5
3
60
0
0
0
94
93
93
57
57
57
5
3
70
0
0
0
31
47
32
22
20
20
5
3
70
0
0
0
0
0
0
0
0
0
5
3
70
0
0
0
5351
4758
421
2831
2467
200
5
3
70
0
0
0
204
202
203
69
69
69
5
3
80
0
0
0
31
32
15
62
61
31
5
3
80
0
0
0
890
858
297
234
226
76
5
3
80
0
0
0
0
0
0
12
6
2
5
3
80
0
0
0
47
32
0
64
53
27
70
表 A.17 h = 5,k = 5 に対する実行 (一部抜粋)
解
実行時間
最大流実行回数
h
k
n
(A)
(B)
(C)
(A)
(B)
(C)
(A)
(B)
(C)
5
5
10
1
1
1
0
0
0
1
0
0
5
5
10
1
1
1
0
0
0
2
1
1
5
5
20
1
1
1
0
0
0
26
10
10
5
5
20
1
1
1
0
0
15
38
12
12
5
5
20
1
1
1
0
0
0
27
5
5
5
5
30
0
0
0
234
219
0
2674
1905
63
5
5
30
0
0
0
79
47
0
1052
720
54
5
5
30
0
0
0
109
63
15
1887
1005
65
5
5
30
0
0
0
234
141
15
5296
3340
112
5
5
40
0
0
0
422
296
16
5880
3220
72
5
5
40
0
0
0
125
125
16
2770
2265
55
5
5
40
0
0
0
421
234
15
4432
1976
58
5
5
40
0
0
0
1171
531
16
14335
7913
94
5
5
50
0
0
0
9860
6303
110
31962
19084
206
5
5
50
0
0
0
687
374
63
3142
1624
92
5
5
50
0
0
0
12419
7144
140
45811
20583
221
5
5
50
0
0
0
4042
1123
31
23405
6366
77
5
5
60
0
0
0
812
780
219
1076
696
150
5
5
60
0
0
0
765
312
47
1370
696
87
5
5
60
0
0
0
16
16
0
108
102
12
5
5
60
0
0
0
920
468
0
1420
895
19
5
5
70
0
0
0
6820
3837
203
6874
5056
155
5
5
70
0
0
0
5601
4321
328
8706
6362
180
5
5
70
0
0
0
6413
6302
312
5749
5160
173
5
5
70
0
0
0
12388
7223
141
6752
3892
87
5
5
80
0
0
0
2606
2481
328
2691
2258
114
5
5
80
0
0
0
6413
6396
406
1776
1762
117
5
5
80
0
0
0
47799
36925
1404
21373
14155
395
5
5
80
0
0
0
50109
23229
562
19420
11068
193
71
(C) に対する実験
h と k を固定して n を動かす.
表 A.18
h = 0,k = 1 に対する実行 (一部抜粋)
表 A.19 h = 5,k = 1 に対する実行 (一部抜粋)
h
k
n
解
実行時間
最大流実行回数
h
k
n
解
実行時間
最大流実行回数
0
1
10
0
15
0
5
1
10
0
0
15
0
1
10
0
0
0
5
1
10
0
0
7
0
1
20
0
0
0
5
1
20
0
0
36
0
1
20
0
0
0
5
1
20
0
0
0
0
1
30
0
16
26
5
1
30
0
15
28
0
1
30
0
15
28
5
1
30
0
0
23
0
1
40
0
16
34
5
1
40
0
15
38
0
1
40
0
16
36
5
1
40
0
31
76
0
1
50
0
31
47
5
1
50
0
47
45
0
1
50
0
32
44
5
1
50
0
46
47
0
1
60
0
93
58
5
1
60
0
0
0
0
1
60
0
63
55
5
1
60
0
0
0
0
1
70
0
156
67
5
1
70
0
187
68
0
1
70
0
0
0
5
1
70
0
0
0
0
1
80
0
234
78
5
1
80
0
344
78
0
1
80
0
280
78
5
1
80
0
0
0
0
1
90
0
391
87
5
1
90
0
0
0
0
1
90
0
375
86
5
1
90
0
610
84
0
1
100
0
531
91
5
1
100
0
889
98
0
1
100
0
640
96
5
1
100
0
655
95
0
1
110
0
875
108
5
1
110
0
1000
106
0
1
110
0
905
108
5
1
110
0
0
0
0
1
120
0
1623
118
5
1
120
0
1607
116
0
1
120
0
1217
114
5
1
120
0
1498
118
0
1
130
0
1779
126
5
1
130
0
0
0
0
1
130
0
1841
127
5
1
130
0
2341
126
0
1
140
0
2497
138
5
1
140
0
15
0
0
1
140
0
2324
137
5
1
140
0
0
0
0
1
150
0
2855
144
5
1
150
0
15
0
0
1
150
0
2823
143
5
1
150
0
3495
147
72
表 A.20
h = 0,k = 10 に対する実行 (一部抜粋)
表 A.21
h = 5,k = 10 に対する実行 (一部抜粋)
h
k
n
解
実行時間
最大流実行回数
h
k
n
解
実行時間
最大流実行回数
0
10
10
1
0
0
5
10
10
1
0
0
0
10
10
1
0
0
5
10
10
1
16
0
0
10
20
1
0
37
5
10
20
0
47
482
0
10
20
0
16
133
5
10
20
1
0
158
0
10
30
1
16
24
5
10
30
0
15
267
0
10
30
1
0
21
5
10
30
1
16
43
0
10
40
0
31
201
5
10
40
0
78
344
0
10
40
0
109
389
5
10
40
0
46
269
0
10
50
0
140
395
5
10
50
0
296
406
0
10
50
0
46
193
5
10
50
0
359
611
0
10
60
0
157
183
5
10
60
0
313
579
0
10
60
0
250
298
5
10
60
0
436
384
0
10
70
0
468
270
5
10
70
0
1123
680
0
10
70
0
328
373
5
10
70
0
515
291
0
10
80
0
578
251
5
10
80
0
1638
610
0
10
80
0
297
364
5
10
80
0
1498
521
0
10
90
0
1296
409
5
10
90
0
2873
709
0
10
90
0
2746
680
5
10
90
0
1997
469
0
10
100
0
2622
435
5
10
100
0
2605
484
0
10
100
0
1856
346
5
10
100
0
3557
674
0
10
110
0
4260
711
5
10
110
0
2232
533
0
10
110
0
6443
833
5
10
110
0
4789
603
0
10
120
0
10327
1004
5
10
120
0
7722
775
0
10
120
0
3447
432
5
10
120
0
12714
1174
0
10
130
0
10312
750
5
10
130
0
22464
1317
0
10
130
0
5460
488
5
10
130
0
12043
881
0
10
140
0
13634
776
5
10
140
0
15070
1010
0
10
140
0
16333
944
5
10
140
0
21793
1200
0
10
150
0
23635
1179
5
10
150
0
28410
1234
0
10
150
0
12121
625
5
10
150
0
18596
828
73
表 A.22
h = 0,k = 20 に対する実行 (一部抜粋)
表 A.23
h = 5,k = 20 に対する実行 (一部抜粋)
h
k
n
解
実行時間
最大流実行回数
h
k
n
解
実行時間
最大流実行回数
0
20
10
1
0
0
5
20
10
1
0
0
0
20
10
1
0
0
5
20
10
1
0
0
0
20
20
1
0
0
5
20
20
1
0
0
0
20
20
1
0
0
5
20
20
1
0
0
0
20
30
0
140
788
5
20
30
0
218
1246
0
20
30
0
78
462
5
20
30
1
32
128
0
20
40
1
188
452
5
20
40
0
2480
4942
0
20
40
0
702
1512
5
20
40
0
3198
7520
0
20
50
0
1575
1903
5
20
50
0
4104
4011
0
20
50
0
1888
2355
5
20
50
0
4009
4773
0
20
60
0
1561
1503
5
20
60
0
2497
2382
0
20
60
0
1342
1581
5
20
60
0
2137
1693
0
20
70
0
2168
2123
5
20
70
0
4572
2919
0
20
70
0
4088
2175
5
20
70
0
6256
4620
0
20
80
0
1202
1084
5
20
80
0
5460
2233
0
20
80
0
5273
3053
5
20
80
0
2855
1845
0
20
90
0
3806
2014
5
20
90
0
6068
1964
0
20
90
0
5788
1899
5
20
90
0
7613
2757
0
20
100
0
3308
1220
5
20
100
0
11857
3284
0
20
100
0
4774
1577
5
20
100
0
24102
4367
0
20
110
0
14555
2522
5
20
110
0
25459
4486
0
20
110
0
13572
2628
5
20
110
0
29593
4880
0
20
120
0
27941
3739
5
20
120
0
42106
4584
0
20
120
0
31232
3370
5
20
120
0
22994
2815
0
20
130
0
34368
3109
5
20
130
0
37269
4352
0
20
130
0
27316
2913
5
20
130
0
42292
3899
0
20
140
0
23665
2163
5
20
140
0
26988
2833
0
20
140
0
11154
1251
5
20
140
0
107672
6421
0
20
150
0
115377
5235
5
20
150
0
91807
4822
0
20
150
0
57440
2858
5
20
150
0
59607
3659
74
h と n を固定して k を動かす.
表 A.24
h = 0,n = 100,k = 1 から k = 15 に対
表 A.25
する実行 (一部抜粋)
h = 0,n = 100,k = 16 から k = 30 に
対する実行 (一部抜粋)
h
k
n
解
実行時間
最大流実行回数
h
k
n
解
実行時間
最大流実行回数
0
1
100
0
624
98
0
16
100
0
7770
1864
0
1
100
0
530
95
0
16
100
0
9157
2030
0
2
100
0
16
24
0
17
100
0
8097
1955
0
2
100
0
0
2
0
17
100
0
8330
1943
0
3
100
0
1372
222
0
18
100
0
10187
2678
0
3
100
0
624
107
0
18
100
0
5944
1357
0
4
100
0
1747
248
0
19
100
0
5226
2262
0
4
100
0
1435
237
0
19
100
0
7426
1619
0
5
100
0
1560
291
0
20
100
0
9844
2254
0
5
100
0
1498
251
0
20
100
0
12371
3087
0
6
100
0
1124
232
0
21
100
0
9453
2876
0
6
100
0
1436
311
0
21
100
0
10327
3429
0
7
100
0
2262
483
0
22
100
0
10374
3569
0
7
100
0
1560
405
0
22
100
0
14914
4880
0
8
100
0
3837
728
0
23
100
0
13137
3413
0
8
100
0
1544
315
0
23
100
0
11700
3367
0
9
100
0
5054
725
0
24
100
0
18423
3865
0
9
100
0
1981
392
0
24
100
0
10062
5168
0
10
100
0
2964
511
0
25
100
0
17877
5366
0
10
100
0
8050
1443
0
25
100
0
21107
7446
0
11
100
0
5055
959
0
26
100
0
21419
7087
0
11
100
0
5585
1111
0
26
100
0
21886
8062
0
12
100
0
5805
1210
0
27
100
0
19531
5330
0
12
100
0
3042
835
0
27
100
0
33681
7253
0
13
100
0
8081
1394
0
28
100
0
21201
5587
0
13
100
0
9859
1771
0
28
100
0
17519
5219
0
14
100
0
6630
1050
0
29
100
0
21435
5882
0
14
100
0
5335
1102
0
29
100
0
25974
8628
0
15
100
0
10611
1978
0
30
100
0
11576
4830
0
15
100
0
7426
1531
0
30
100
0
111509
24973
75
表 A.26
h = 0,n = 150,k = 1 から k = 15 に対
表 A.27
する実行 (一部抜粋)
h = 0,n = 150,k = 16 から k = 30 に
対する実行 (一部抜粋)
h
k
n
解
実行時間
最大流実行回数
h
k
n
解
実行時間
最大流実行回数
0
1
150
0
2637
147
0
16
150
0
50731
2404
0
1
150
0
2683
147
0
16
150
0
46348
2737
0
2
150
0
0
1
0
17
150
0
42948
2483
0
2
150
0
15
8
0
17
150
0
32589
1863
0
3
150
0
2839
154
0
18
150
0
40155
2470
0
3
150
0
6443
322
0
18
150
0
41746
2771
0
4
150
0
3525
489
0
19
150
0
42480
2916
0
4
150
0
3837
198
0
19
150
0
127766
5433
0
5
150
0
3495
197
0
20
150
0
92930
5139
0
5
150
0
7160
330
0
20
150
0
141726
7473
0
6
150
0
6834
384
0
21
150
0
102462
5204
0
6
150
0
6084
464
0
21
150
0
92120
5131
0
7
150
0
7223
403
0
22
150
0
54196
3774
0
7
150
0
13229
611
0
22
150
0
49312
4647
0
8
150
0
11856
672
0
23
150
0
75192
6050
0
8
150
0
10187
581
0
23
150
0
103490
6777
0
9
150
0
10079
557
0
24
150
0
93756
6810
0
9
150
0
11248
622
0
24
150
0
86628
6302
0
10
150
0
10655
630
0
25
150
0
82664
8962
0
10
150
0
10951
647
0
25
150
0
123163
8352
0
11
150
0
16676
934
0
26
150
0
87190
7100
0
11
150
0
56768
2429
0
26
150
0
135127
8832
0
12
150
0
33899
1800
0
27
150
0
160368
9376
0
12
150
0
17191
963
0
27
150
0
100089
6771
0
13
150
0
23588
1336
0
28
150
0
119200
8382
0
13
150
0
21840
1441
0
28
150
0
123599
9813
0
14
150
0
30264
1634
0
29
150
0
145019
12224
0
14
150
0
32152
1607
0
29
150
0
102212
10710
0
15
150
0
72557
3744
0
30
150
0
165095
11801
0
15
150
0
41700
2434
0
30
150
0
219523
15791
76
表 A.28
h = 10,n = 100,k = 1 から k = 15 に
表 A.29 h = 10,n = 150,k = 16 から k = 30 に
対する実行 (一部抜粋)
対する実行 (一部抜粋)
h
k
n
解
実行時間
最大流実行回数
h
k
n
解
実行時間
最大流実行回数
10
1
100
0
624
98
10
16
100
0
14571
3178
10
1
100
0
16
12
10
16
100
0
11980
3203
10
2
100
0
749
98
10
17
100
0
21107
3968
10
2
100
0
593
97
10
17
100
0
21091
4132
10
3
100
0
1419
219
10
18
100
0
18080
3457
10
3
100
0
1264
201
10
18
100
0
21388
4181
10
4
100
0
1545
226
10
19
100
0
13104
4783
10
4
100
0
1888
290
10
19
100
0
22791
4596
10
5
100
0
1435
268
10
20
100
0
15257
3272
10
5
100
0
827
167
10
20
100
0
19921
6075
10
6
100
0
1592
320
10
21
100
0
25928
6658
10
6
100
0
2574
431
10
21
100
0
19017
4757
10
7
100
0
2029
361
10
22
100
0
25335
7314
10
7
100
0
2293
447
10
22
100
0
22620
5395
10
8
100
0
2887
525
10
23
100
0
17519
5277
10
8
100
0
3198
633
10
23
100
0
15070
6077
10
9
100
0
3120
789
10
24
100
0
36505
6335
10
9
100
0
6116
893
10
24
100
0
31216
10630
10
10
100
0
4899
814
10
25
100
0
37939
11043
10
10
100
0
4399
777
10
25
100
0
24742
7433
10
11
100
0
12776
2035
10
26
100
0
26256
11414
10
11
100
0
6583
1085
10
26
100
0
19016
5795
10
12
100
0
12106
2121
10
27
100
0
35505
6369
10
12
100
0
5429
1102
10
27
100
0
30747
7663
10
13
100
0
11076
2004
10
28
100
0
29890
7566
10
13
100
0
7208
1708
10
28
100
0
35303
9820
10
14
100
0
12917
2788
10
29
100
0
33229
9766
10
14
100
0
12261
2475
10
29
100
0
51293
12984
10
15
100
0
13073
3051
10
30
100
0
92711
15472
10
15
100
0
11810
2534
10
30
100
0
102508
11271
77
表 A.30
h = 10,n = 150,k = 1 から k = 15 に
表 A.31 h = 10,n = 150,k = 16 から k = 30 に
対する実行 (一部抜粋)
対する実行 (一部抜粋)
h
k
n
解
実行時間
最大流実行回数
h
k
n
解
実行時間
最大流実行回数
10
1
150
0
327
73
10
16
150
0
60232
4188
10
1
150
0
2418
138
10
16
150
0
60122
2955
10
2
150
0
3074
144
10
17
150
0
53415
2748
10
2
150
0
3291
173
10
17
150
0
73304
3520
10
3
150
0
3291
161
10
18
150
0
43539
2562
10
3
150
0
3307
159
10
18
150
0
97594
5830
10
4
150
0
7676
368
10
19
150
0
141554
7263
10
4
150
0
3651
164
10
19
150
0
76128
4247
10
5
150
0
7504
362
10
20
150
0
115317
6313
10
5
150
0
3869
228
10
20
150
0
131212
7067
10
6
150
0
6085
393
10
21
150
0
84302
5873
10
6
150
0
9937
450
10
21
150
0
75458
5812
10
7
150
0
12496
631
10
22
150
0
108889
6955
10
7
150
0
11606
497
10
22
150
0
140151
8080
10
8
150
0
10390
652
10
23
150
0
207917
11400
10
8
150
0
13307
679
10
23
150
0
150649
9319
10
9
150
0
23042
1074
10
24
150
0
158887
10155
10
9
150
0
19344
933
10
24
150
0
100089
7392
10
10
150
0
17239
872
10
25
150
0
83132
5552
10
10
150
0
18049
822
10
25
150
0
131492
8199
10
11
150
0
28892
1327
10
26
150
0
136189
12072
10
11
150
0
34585
1467
10
26
150
0
129028
8543
10
12
150
0
18548
1070
10
27
150
0
115253
8725
10
12
150
0
20405
1501
10
27
150
0
124473
9715
10
13
150
0
25615
1289
10
28
150
0
440545
24873
10
13
150
0
36628
1934
10
28
150
0
203986
15416
10
14
150
0
25554
1615
10
29
150
0
164908
12555
10
14
150
0
38813
2003
10
29
150
0
431887
19856
10
15
150
0
38892
2312
10
30
150
0
142866
13757
10
15
150
0
35474
2303
10
30
150
0
272298
13213
78
k と n を固定して h を動かす.
表 A.32 k = 10,n = 100,h = 1 から h = 15 に
表 A.33
対する実行 (一部抜粋)
対する実行 (一部抜粋)
k = 10,n = 100,h = 16 から h = 30 に
h
k
n
解
実行時間
最大流実行回数
h
k
n
解
実行時間
最大流実行回数
1
10
100
0
6567
887
16
10
100
0
5398
855
1
10
100
0
3525
700
16
10
100
0
4040
750
2
10
100
0
7614
996
17
10
100
0
5975
1037
2
10
100
0
4805
686
17
10
100
0
7863
1137
3
10
100
0
4744
820
18
10
100
0
9470
1665
3
10
100
0
8767
1172
18
10
100
0
6911
1279
4
10
100
0
6427
972
19
10
100
0
5413
1337
4
10
100
0
4586
698
19
10
100
0
7706
1624
5
10
100
0
3806
661
20
10
100
0
8705
1590
5
10
100
0
6459
969
20
10
100
0
11590
2189
6
10
100
0
4073
574
21
10
100
0
7661
1345
6
10
100
0
7941
1088
21
10
100
0
4555
1015
7
10
100
0
4071
615
22
10
100
0
6583
1445
7
10
100
0
2886
650
22
10
100
0
5600
1449
8
10
100
0
4789
844
23
10
100
0
6646
1399
8
10
100
0
4540
698
23
10
100
0
8408
1576
9
10
100
0
8830
1452
24
10
100
0
5898
1277
9
10
100
0
4867
832
24
10
100
0
6911
1836
10
10
100
0
4025
675
25
10
100
0
6208
1300
10
10
100
0
3728
550
25
10
100
0
10187
1856
11
10
100
0
7552
1253
26
10
100
0
9268
1999
11
10
100
0
4259
668
26
10
100
0
5882
1214
12
10
100
0
5164
790
27
10
100
0
9532
1758
12
10
100
0
4368
673
27
10
100
0
8580
1815
13
10
100
0
5741
937
28
10
100
0
13073
2498
13
10
100
0
9017
1280
28
10
100
0
9220
1964
14
10
100
0
5148
846
29
10
100
0
10406
1995
14
10
100
0
4040
752
29
10
100
0
9391
1863
15
10
100
0
6147
1124
30
10
100
0
7098
1604
15
10
100
0
4274
868
30
10
100
0
7332
1634
79
表 A.34 k = 10,n = 150,h = 1 から h = 15 に
表 A.35
対する実行 (一部抜粋)
対する実行 (一部抜粋)
k = 10,n = 150,h = 16 から h = 30 に
h
k
n
解
実行時間
最大流実行回数
h
k
n
解
実行時間
最大流実行回数
1
10
150
0
22401
1326
16
10
150
0
22214
1284
1
10
150
0
24851
1131
16
10
150
0
42838
1766
2
10
150
0
18939
782
17
10
150
0
23915
1333
2
10
150
0
16411
1013
17
10
150
0
17020
988
3
10
150
0
16380
829
18
10
150
0
38470
1782
3
10
150
0
21154
1165
18
10
150
0
23463
1223
4
10
150
0
11903
720
19
10
150
0
30749
1930
4
10
150
0
37394
1494
19
10
150
0
20872
1170
5
10
150
0
23370
1057
20
10
150
0
15039
892
5
10
150
0
18923
1117
20
10
150
0
29625
1564
6
10
150
0
10749
608
21
10
150
0
21170
1103
6
10
150
0
21075
903
21
10
150
0
15428
957
7
10
150
0
43994
1907
22
10
150
0
24181
1760
7
10
150
0
20499
1026
22
10
150
0
22792
1305
8
10
150
0
19531
1064
23
10
150
0
23509
1293
8
10
150
0
22948
1162
23
10
150
0
23229
1286
9
10
150
0
23666
1306
24
10
150
0
22058
1201
9
10
150
0
14492
1033
24
10
150
0
18985
1221
10
10
150
0
12964
859
25
10
150
0
30156
1425
10
10
150
0
26738
1322
25
10
150
0
32230
1510
11
10
150
0
21341
1017
26
10
150
0
25709
1217
11
10
150
0
22027
1106
26
10
150
0
36114
1936
12
10
150
0
22512
1204
27
10
150
0
21886
1186
12
10
150
0
26161
1404
27
10
150
0
25818
1366
13
10
150
0
39593
1644
28
10
150
0
23290
1182
13
10
150
0
15538
937
28
10
150
0
30326
1646
14
10
150
0
20248
1163
29
10
150
0
43477
1963
14
10
150
0
21653
1139
29
10
150
0
38174
1970
15
10
150
0
26974
1211
30
10
150
0
51279
2840
15
10
150
0
48079
2214
30
10
150
0
29250
1463
80
表 A.36 k = 20,n = 100,h = 1 から h = 15 に
表 A.37
対する実行 (一部抜粋)
対する実行 (一部抜粋)
k = 20,n = 100,h = 16 から h = 30 に
h
k
n
解
実行時間
最大流実行回数
h
k
n
解
実行時間
最大流実行回数
1
20
100
0
12948
2817
16
20
100
0
39733
9477
1
20
100
0
11809
3724
16
20
100
0
33228
7048
2
20
100
0
9501
2986
17
20
100
0
18939
5816
2
20
100
0
8408
2293
17
20
100
0
31761
8548
3
20
100
0
10983
3450
18
20
100
0
28501
5436
3
20
100
0
8736
1968
18
20
100
0
26754
6443
4
20
100
0
20451
4513
19
20
100
0
43603
9099
4
20
100
0
15553
4209
19
20
100
0
21996
6824
5
20
100
0
10343
2220
20
20
100
0
31310
8315
5
20
100
0
19890
4239
20
20
100
0
58515
11834
6
20
100
0
16396
4213
21
20
100
0
62401
9848
6
20
100
0
19562
4943
21
20
100
0
24273
6168
7
20
100
0
29532
6832
22
20
100
0
78844
12717
7
20
100
0
30716
6096
22
20
100
0
71776
14674
8
20
100
0
14180
3780
23
20
100
0
58547
11429
8
20
100
0
10608
2921
23
20
100
0
64693
16210
9
20
100
0
24275
4951
24
20
100
0
45833
10154
9
20
100
0
10405
4144
24
20
100
0
54413
13277
10
20
100
0
15132
4838
25
20
100
0
66535
16589
10
20
100
0
21434
5133
25
20
100
0
112258
35447
11
20
100
0
15023
4373
26
20
100
0
39828
13539
11
20
100
0
17300
4144
26
20
100
0
62026
13163
12
20
100
0
20997
4446
27
20
100
0
86659
16678
12
20
100
0
24071
4780
27
20
100
0
72166
13338
13
20
100
0
17052
4645
28
20
100
0
56925
11549
13
20
100
0
42073
8461
28
20
100
0
104957
18868
14
20
100
0
27925
9148
29
20
100
0
50826
13090
14
20
100
0
30763
6507
29
20
100
0
115159
32068
15
20
100
0
27035
5451
30
20
100
0
125284
33768
15
20
100
0
22152
5282
30
20
100
0
88124
21251
81
表 A.38 k = 20,n = 150,h = 1 から h = 15 に
表 A.39
対する実行 (一部抜粋)
対する実行 (一部抜粋)
k = 20,n = 150,h = 16 から h = 30 に
h
k
n
解
実行時間
最大流実行回数
h
k
n
解
実行時間
最大流実行回数
1
20
150
0
74771
4212
16
20
150
0
131118
8587
1
20
150
0
143271
7610
16
20
150
0
105206
6683
2
20
150
0
80231
4520
17
20
150
0
81029
4901
2
20
150
0
75582
4509
17
20
150
0
61121
5361
3
20
150
0
66752
3835
18
20
150
0
133427
9452
3
20
150
0
86237
4413
18
20
150
0
106267
6493
4
20
150
0
35927
2837
19
20
150
0
138887
9455
4
20
150
0
43275
3162
19
20
150
0
126813
8049
5
20
150
0
92852
5411
20
20
150
0
98967
7712
5
20
150
0
87875
4865
20
20
150
0
146921
10636
6
20
150
0
84536
4753
21
20
150
0
191989
11808
6
20
150
0
132506
6605
21
20
150
0
120978
6562
7
20
150
0
62885
3794
22
20
150
0
104537
6442
7
20
150
0
50997
3241
22
20
150
0
133209
7056
8
20
150
0
137639
7704
23
20
150
0
147685
9870
8
20
150
0
56472
4004
23
20
150
0
154846
10221
9
20
150
0
66128
4221
24
20
150
0
265903
15196
9
20
150
0
55614
3540
24
20
150
0
121119
7323
10
20
150
0
129418
7149
25
20
150
0
183347
11241
10
20
150
0
80964
4509
25
20
150
0
288772
15444
11
20
150
0
124223
7288
26
20
150
0
202317
13012
11
20
150
0
105643
6009
26
20
150
0
307196
15632
12
20
150
0
168137
8616
27
20
150
0
286869
18155
12
20
150
0
110620
8098
27
20
150
0
120510
8486
13
20
150
0
71167
4607
28
20
150
0
159167
12452
13
20
150
0
100667
6560
28
20
150
0
120292
8035
14
20
150
0
184815
10753
29
20
150
0
345323
18199
14
20
150
0
101962
6108
29
20
150
0
188495
10890
15
20
150
0
158451
10125
30
20
150
0
160307
8820
15
20
150
0
395772
20346
30
20
150
0
162583
10587
82
(C) を用いて,グラフのパス幅を求める実験
h 準完全グラフのパス幅を求める実験
表 A.40
パス幅ランダムな h = 0 準完全グラフのパ
表 A.41
パス幅ランダムな h = 10 準完全グラフの
パス幅を求める時間 (一部抜粋)
ス幅を求める時間 (一部抜粋)
h
k
n
パス幅
実行時間
h
k
n
パス幅
実行時間
0
10
10
5
16
10
10
10
3
0
0
10
10
6
0
10
10
10
3
0
0
10
10
6
0
10
10
10
1
0
0
10
10
5
0
10
10
10
3
0
0
10
10
6
0
10
10
10
3
0
0
20
20
14
16
10
20
20
10
94
0
20
20
14
0
10
20
20
10
93
0
20
20
14
15
10
20
20
9
79
0
20
20
14
16
10
20
20
10
78
0
20
20
13
15
10
20
20
9
78
0
30
30
23
218
10
30
30
20
2199
0
30
30
23
141
10
30
30
19
1436
0
30
30
23
218
10
30
30
19
1795
0
30
30
23
172
10
30
30
18
1171
0
30
30
21
140
10
30
30
18
2404
0
40
40
31
1530
10
40
40
28
8503
0
40
40
31
1218
10
40
40
29
34118
0
40
40
31
1483
10
40
40
28
13074
0
40
40
32
1889
10
40
40
29
54523
0
40
40
32
1779
10
40
40
28
22606
0
50
50
41
9158
10
50
50
39
133803
0
50
50
40
5976
10
50
50
39
200805
0
50
50
41
12044
10
50
50
38
58282
0
50
50
41
7864
10
50
50
38
91401
0
50
50
41
9455
10
50
50
38
146158
0
60
60
50
40624
10
60
60
48
788770
0
60
60
50
47784
10
60
60
48
436693
0
60
60
50
42434
10
60
60
47
598543
0
60
60
50
38783
10
60
60
48
587405
0
60
60
50
59905
10
60
60
48
601663
83
表 A.42
パス幅 10 以下,h = 0 準完全グラフのパ
表 A.43
ス幅を求める時間 (一部抜粋)
パス幅 10 以下,h = 10 準完全グラフのパ
ス幅を求める時間 (一部抜粋)
h
k
n
パス幅
実行時間
h
k
n
パス幅
実行時間
0
10
10
2
0
10
10
10
1
0
0
10
10
2
0
10
10
10
1
0
0
10
20
4
0
10
10
20
2
0
0
10
20
2
16
10
10
20
4
15
0
10
30
3
16
10
10
30
4
0
0
10
30
4
0
10
10
30
8
16
0
10
40
9
16
10
10
40
6
281
0
10
40
8
140
10
10
40
7
31
0
10
50
9
2013
10
10
50
8
94
0
10
50
7
1233
10
10
50
8
218
0
10
60
9
1279
10
10
60
5
63
0
10
60
9
47
10
10
60
9
47
0
10
70
7
156
10
10
70
9
4946
0
10
70
5
187
10
10
70
9
157
0
10
80
9
16504
10
10
80
9
484
0
10
80
6
156
10
10
80
8
3932
0
10
90
9
14119
10
10
90
8
5211
0
10
90
9
3199
10
10
90
7
10125
0
10
100
9
34134
10
10
100
9
20077
0
10
100
9
3230
10
10
100
8
6272
0
10
110
9
34881
10
10
110
9
48220
0
10
110
9
516
10
10
110
9
329
0
10
120
9
26334
10
10
120
9
11997
0
10
120
9
640
10
10
120
9
1764
0
10
130
9
123818
10
10
130
9
60264
0
10
130
8
2045
10
10
130
9
3402
0
10
140
9
4915
10
10
140
9
35491
0
10
140
9
26318
10
10
140
9
749
0
10
150
9
2232
10
10
150
9
17535
0
10
150
9
11374
10
10
150
8
9969
84
表 A.44
パス幅 20 以下,h = 0 準完全グラフのパ
表 A.45
ス幅を求める時間 (一部抜粋)
パス幅 20 以下,h = 10 準完全グラフのパ
ス幅を求める時間 (一部抜粋)
h
k
n
パス幅
実行時間
h
k
n
パス幅
実行時間
0
20
10
7
0
10
20
10
1
0
0
20
10
5
0
10
20
10
1
0
0
20
20
12
16
10
20
20
10
125
0
20
20
13
0
10
20
20
10
109
0
20
30
13
47
10
20
30
10
141
0
20
30
11
16
10
20
30
10
125
0
20
40
13
62
10
20
40
11
203
0
20
40
13
31
10
20
40
12
202
0
20
50
13
592
10
20
50
12
250
0
20
50
13
157
10
20
50
12
592
0
20
60
13
827
10
20
60
13
1653
0
20
60
14
1623
10
20
60
13
1544
0
20
70
14
1686
10
20
70
13
1388
0
20
70
14
1296
10
20
70
14
2591
0
20
80
14
4228
10
20
80
14
6116
0
20
80
14
4478
10
20
80
14
10078
0
20
90
14
5866
10
20
90
14
6943
0
20
90
13
1467
10
20
90
14
8519
0
20
100
14
5399
10
20
100
14
14743
0
20
100
14
5227
10
20
100
14
11654
0
20
110
15
7942
10
20
110
14
9658
0
20
110
15
10250
10
20
110
14
11170
0
20
120
14
12029
10
20
120
14
16725
0
20
120
14
14680
10
20
120
13
12107
0
20
130
14
27878
10
20
130
14
26115
0
20
130
15
22168
10
20
130
14
36864
0
20
140
15
30904
10
20
140
15
63774
0
20
140
15
47129
10
20
140
14
30499
0
20
150
14
66379
10
20
150
14
58750
0
20
150
14
28768
10
20
150
14
79436
85
表 A.46
パス幅 30 以下,h = 0 準完全グラフのパ
表 A.47
ス幅を求める時間 (一部抜粋)
パス幅 30 以下,h = 10 準完全グラフのパ
ス幅を求める時間 (一部抜粋)
h
k
n
パス幅
実行時間
h
k
n
パス幅
実行時間
0
30
10
6
0
10
30
10
2
0
0
30
10
6
0
10
30
10
2
0
0
30
20
12
0
10
30
20
9
31
0
30
20
14
0
10
30
20
9
31
0
30
30
19
109
10
30
30
17
1405
0
30
30
17
125
10
30
30
17
1717
0
30
40
20
266
10
30
40
16
2076
0
30
40
18
250
10
30
40
17
3994
0
30
50
17
436
10
30
50
18
2668
0
30
50
19
592
10
30
50
17
3496
0
30
60
19
781
10
30
60
20
5398
0
30
60
18
2996
10
30
60
18
3386
0
30
70
21
1249
10
30
70
19
8721
0
30
70
20
1156
10
30
70
19
9423
0
30
80
20
3261
10
30
80
19
11217
0
30
80
20
2621
10
30
80
20
9782
0
30
90
20
9485
10
30
90
19
12559
0
30
90
20
9315
10
30
90
20
7941
0
30
100
20
12762
10
30
100
20
12138
0
30
100
21
12278
10
30
100
19
20718
0
30
110
20
11732
10
30
110
20
23635
0
30
110
20
15508
10
30
110
21
54226
0
30
120
20
19828
10
30
120
20
10313
0
30
120
21
12309
10
30
120
21
57502
0
30
130
20
37706
10
30
130
20
41341
0
30
130
21
21607
10
30
130
20
40779
0
30
140
21
49078
10
30
140
21
75942
0
30
140
21
63711
10
30
140
21
15461
0
30
150
21
88750
10
30
150
21
113397
0
30
150
21
33869
10
30
150
21
100076
86
一般有向グラフのパス幅を求める実験
表 A.48
パス幅ランダム,辺密度 70% の一般有向
表 A.49 パス幅ランダム,辺密度 80% の一般有向
グラフのパス幅を求める時間 (一部抜粋)
グラフのパス幅を求める時間 (一部抜粋)
h
k
n
パス幅
実行時間
辺密度
k
n
パス幅
実行時間
70
10
10
6
0
80
10
10
7
0
70
10
10
6
0
80
10
10
6
0
70
10
10
6
0
80
10
10
6
0
70
10
10
7
0
80
10
10
6
0
70
10
10
6
0
80
10
10
7
0
70
20
20
13
0
80
20
20
15
16
70
20
20
14
16
80
20
20
15
0
70
20
20
15
0
80
20
20
15
16
70
20
20
14
15
80
20
20
15
0
70
20
20
15
16
80
20
20
16
16
70
30
30
23
93
80
30
30
24
47
70
30
30
23
156
80
30
30
24
47
70
30
30
22
157
80
30
30
25
62
70
30
30
24
94
80
30
30
25
31
70
30
30
22
124
80
30
30
24
63
70
40
40
32
1139
80
40
40
33
265
70
40
40
32
1067
80
40
40
34
329
70
40
40
31
718
80
40
40
33
297
70
40
40
32
874
80
40
40
34
312
70
40
40
32
780
80
40
40
34
312
70
50
50
42
3464
80
50
50
43
1062
70
50
50
41
4416
80
50
50
43
890
70
50
50
42
8128
80
50
50
43
952
70
50
50
41
3948
80
50
50
43
1077
70
50
50
41
6787
80
50
50
43
1156
70
60
60
51
24213
80
60
60
53
3904
70
60
60
51
26895
80
60
60
52
2621
70
60
60
51
22434
80
60
60
53
3683
70
60
60
51
21904
80
60
60
52
3183
70
60
60
51
23417
80
60
60
52
3277
87
表 A.50
パス幅 10 以下,辺密度 70% の一般有向グ
表 A.51
ラフのパス幅を求める時間 (一部抜粋)
パス幅 10 以下,辺密度 80% の一般有向グ
ラフのパス幅を求める時間 (一部抜粋)
辺密度
k
n
パス幅
実行時間
辺密度
k
n
パス幅
実行時間
70
10
10
5
0
80
10
10
5
0
70
10
10
5
0
80
10
10
6
0
70
10
20
6
16
80
10
20
7
0
70
10
20
6
0
80
10
20
7
0
70
10
30
8
31
80
10
30
8
16
70
10
30
7
32
80
10
30
8
16
70
10
40
8
109
80
10
40
8
47
70
10
40
8
109
80
10
40
7
62
70
10
50
7
421
80
10
50
8
329
70
10
50
7
375
80
10
50
8
327
70
10
60
7
578
80
10
60
7
328
70
10
60
7
453
80
10
60
8
297
70
10
70
8
812
80
10
70
8
655
70
10
70
7
1062
80
10
70
8
514
70
10
80
8
1263
80
10
80
8
1327
70
10
80
8
1139
80
10
80
8
1280
70
10
90
8
3090
80
10
90
8
1436
70
10
90
8
3729
80
10
90
8
2418
70
10
100
8
5524
80
10
100
8
2232
70
10
100
8
3464
80
10
100
8
3183
70
10
110
8
9471
80
10
110
8
4245
70
10
110
8
11779
80
10
110
8
4431
70
10
120
9
9814
80
10
120
8
12153
70
10
120
8
18565
80
10
120
8
7988
70
10
130
7
14010
80
10
130
8
26396
70
10
130
8
14415
80
10
130
8
12123
70
10
140
9
25367
80
10
140
8
17145
70
10
140
8
23213
80
10
140
9
11981
70
10
150
8
30608
80
10
150
8
15071
70
10
150
8
26365
80
10
150
8
41777
88
表 A.52
パス幅 20 以下,辺密度 70% の一般有向グ
表 A.53
ラフのパス幅を求める時間 (一部抜粋)
パス幅 20 以下,辺密度 80% の一般有向グ
ラフのパス幅を求める時間 (一部抜粋)
辺密度
k
n
パス幅
実行時間
辺密度
k
n
パス幅
実行時間
70
20
10
6
0
80
20
10
5
0
70
20
10
5
0
80
20
10
6
0
70
20
20
11
17
80
20
20
12
15
70
20
20
11
0
80
20
20
10
16
70
20
30
11
47
80
20
30
14
93
70
20
30
13
94
80
20
30
13
78
70
20
40
14
281
80
20
40
14
219
70
20
40
13
94
80
20
40
14
312
70
20
50
14
1467
80
20
50
13
281
70
20
50
14
594
80
20
50
15
438
70
20
60
15
1436
80
20
60
14
1201
70
20
60
14
1310
80
20
60
14
1143
70
20
70
14
1732
80
20
70
14
1670
70
20
70
14
3402
80
20
70
14
2419
70
20
80
14
3543
80
20
80
14
3885
70
20
80
14
6132
80
20
80
14
4182
70
20
90
14
6553
80
20
90
14
8737
70
20
90
14
6382
80
20
90
14
10094
70
20
100
13
8020
80
20
100
15
12668
70
20
100
14
11779
80
20
100
14
8410
70
20
110
14
19361
80
20
110
14
12980
70
20
110
14
9002
80
20
110
14
16584
70
20
120
14
14384
80
20
120
14
17223
70
20
120
14
18815
80
20
120
14
11218
70
20
130
15
32683
80
20
130
14
14743
70
20
130
14
40093
80
20
130
14
19205
70
20
140
15
45194
80
20
140
15
36381
70
20
140
15
33947
80
20
140
15
26225
70
20
150
15
84756
80
20
150
15
63259
70
20
150
15
108889
80
20
150
14
42261
89
表 A.54
パス幅 30 以下,辺密度 70% の一般有向グ
表 A.55
ラフのパス幅を求める時間 (一部抜粋)
パス幅 30 以下,辺密度 80% の一般有向グ
ラフのパス幅を求める時間 (一部抜粋)
辺密度
k
n
パス幅
実行時間
辺密度
k
n
パス幅
実行時間
70
30
10
5
0
80
30
10
5
0
70
30
10
5
0
80
30
10
5
0
70
30
20
13
31
80
30
20
12
15
70
30
20
12
31
80
30
20
14
16
70
30
30
18
281
80
30
30
18
312
70
30
30
17
390
80
30
30
17
234
70
30
40
19
1560
80
30
40
18
500
70
30
40
18
593
80
30
40
16
593
70
30
50
18
1592
80
30
50
19
1654
70
30
50
20
1171
80
30
50
20
1374
70
30
60
21
3292
80
30
60
20
3776
70
30
60
21
6631
80
30
60
20
3620
70
30
70
21
9829
80
30
70
20
4713
70
30
70
20
16958
80
30
70
20
4150
70
30
80
20
10000
80
30
80
21
8519
70
30
80
20
16318
80
30
80
22
11919
70
30
90
20
13791
80
30
90
20
11545
70
30
90
21
14774
80
30
90
20
19641
70
30
100
20
27004
80
30
100
20
18752
70
30
100
21
19438
80
30
100
21
30843
70
30
110
20
21327
80
30
110
20
38096
70
30
110
20
41295
80
30
110
21
54211
70
30
120
20
51247
80
30
120
20
22106
70
30
120
20
32574
80
30
120
20
30109
70
30
130
21
105270
80
30
130
21
64195
70
30
130
21
68610
80
30
130
21
33962
70
30
140
20
100870
80
30
140
20
79779
70
30
140
21
300613
80
30
140
21
95785
70
30
150
21
120682
80
30
150
21
86285
70
30
150
21
173006
80
30
150
20
159792
90
[実験 3]3 章のアルゴリズムと 4 章のアルゴリズムの比較実験
3 章の障害を含まないグラフでの実験
表 A.56
表 A.57 パス幅 2 以下,障害を含まない準完全グラ
パス幅 1 以下,障害を含まない準完全グラ
フの実行時間 (一部抜粋)
フの実行時間 (一部抜粋)
解
実行時間
解
実行時間
k
n
3章
4章
3章
4章
k
n
3章
4章
3章
4章
1
5
1
1
15
0
2
5
1
1
16
0
1
5
1
1
0
0
2
5
1
1
0
0
1
5
1
1
16
0
2
5
1
1
15
0
1
6
1
1
47
0
2
6
1
1
47
0
1
6
1
1
31
0
2
6
1
1
47
0
1
6
1
1
47
0
2
6
1
1
31
0
1
7
1
1
172
0
2
7
1
1
140
0
1
7
1
1
172
0
2
7
1
1
172
0
1
7
1
1
188
0
2
7
1
1
156
0
1
8
1
1
468
0
2
8
1
1
702
0
1
8
1
1
468
0
2
8
1
1
812
0
1
8
1
1
453
0
2
8
1
1
858
0
1
8
1
1
468
0
2
8
1
1
703
0
1
9
1
1
889
0
2
9
1
1
3230
0
1
9
1
1
875
0
2
9
1
1
4228
0
1
9
1
1
889
0
2
9
1
1
4073
0
1
9
1
1
890
0
2
9
1
1
3839
0
1
10
1
1
1467
0
2
10
1
1
21997
0
1
10
1
1
1467
0
2
10
1
1
26880
0
1
10
1
1
1436
0
2
10
1
1
19984
0
1
10
1
1
1468
0
2
10
1
1
21311
0
1
11
1
1
2169
0
2
11
1
1
83992
0
1
11
1
1
2201
0
2
11
1
1
77112
0
1
11
1
1
2154
0
2
11
1
1
115862
0
1
11
1
1
2185
0
2
11
1
1
79140
0
1
12
1
1
3027
0
2
12
1
1
386507
0
1
12
1
1
3028
0
2
12
1
1
319880
0
1
12
1
1
3012
0
2
12
1
1
315137
0
1
12
1
1
3043
0
2
12
1
1
409315
0
91
3 章の degree tangle を含むグラフでの実験
表 A.58 (7, 1)-degree tangle を含む準完全グラフ
の実行時間 (n = 100 から n = 200)(一部抜粋)
実行時間
表 A.59 (7, 1)-degree tangle を含む準完全グラフ
の実行時間 (n = 210 から n = 300)(一部抜粋)
コミット
k
n
3章
4章
あり なし
実行時間
1
100
32
0
91
2
k
n
3章
4章
あり なし
1
100
0
0
91
2
1
210
16
0
201
2
1
110
0
0
101
2
1
210
16
0
201
2
1
110
16
0
101
2
1
220
32
0
211
2
1
120
0
0
111
2
1
220
31
0
211
2
1
120
16
0
111
2
1
230
47
0
221
2
1
130
15
0
121
2
1
230
31
0
221
2
1
130
0
0
121
2
1
240
31
0
231
2
1
140
16
0
131
2
1
240
31
0
231
2
1
140
15
0
131
2
1
250
47
0
241
2
1
150
15
0
141
2
1
250
47
0
241
2
1
150
16
0
141
2
1
260
46
0
251
2
1
160
16
0
151
2
1
260
47
0
251
2
1
160
15
0
151
2
1
270
47
0
261
2
1
170
16
0
161
2
1
270
47
0
261
2
1
170
16
0
161
2
1
280
47
0
271
2
1
180
15
0
171
2
1
280
62
0
271
2
1
180
16
0
171
2
1
290
63
0
281
2
1
190
31
0
181
2
1
290
62
0
281
2
1
190
16
0
181
2
1
300
62
0
291
2
1
200
31
0
191
2
1
300
63
0
291
2
1
200
31
0
191
2
92
コミット
表 A.60
(27, 5)-degree tangle を含む準完全グラフ
の実行時間 (n = 100 から n = 200)(一部抜粋)
実行時間
表 A.61 (27, 5)-degree tangle を含む準完全グラフ
の実行時間 (n = 210 から n = 300)(一部抜粋)
コミット
k
n
3章
4章
あり なし
実行時間
5
100
62
0
291
3
k
n
3章
4章
あり なし
5
100
47
0
269
3
5
210
110
0
509
3
5
110
47
0
317
3
5
210
124
0
480
3
5
110
47
0
291
3
5
220
125
0
507
3
5
120
63
0
304
3
5
220
141
0
508
3
5
120
62
0
301
3
5
230
141
0
525
3
5
130
63
0
323
3
5
230
171
0
519
3
5
130
93
0
330
3
5
240
156
0
545
3
5
140
109
0
375
3
5
240
157
0
591
3
5
140
78
0
343
3
5
250
203
0
561
3
5
150
62
0
359
3
5
250
172
0
563
3
5
150
79
0
481
3
5
260
203
15
589
3
5
160
94
0
508
3
5
260
188
0
601
3
5
160
78
0
409
3
5
270
203
0
607
3
5
170
93
0
492
3
5
270
219
0
602
3
5
170
94
0
428
3
5
280
234
0
626
3
5
180
93
0
437
3
5
280
234
0
629
3
5
180
111
0
440
3
5
290
265
0
652
3
5
190
109
0
442
3
5
290
265
0
670
3
5
190
110
0
449
3
5
300
250
0
663
3
5
200
109
0
480
3
5
300
298
0
677
3
5
200
141
0
462
3
93
コミット
表 A.62 (52, 10)-degree tangle を含む準完全グラ
フの実行時間 (n = 100 から n = 200)(一部抜粋)
実行時間
表 A.63
(52, 10)-degree tangle を含む準完全グラ
フの実行時間 (n = 210 から n = 300)(一部抜粋)
コミット
k
n
3章
4章
あり なし
実行時間
10
100
281
15
871
3
k
n
3章
4章
あり なし
10
100
250
0
898
3
10
210
499
0
1019
3
10
110
250
0
821
3
10
210
469
0
1030
3
10
110
249
0
875
3
10
220
500
0
1061
3
10
120
313
0
892
3
10
220
499
0
1129
3
10
120
265
0
891
3
10
230
531
0
1151
3
10
130
297
0
997
3
10
230
500
0
1072
3
10
130
312
0
972
3
10
240
608
0
1313
3
10
140
377
0
929
3
10
240
641
0
1367
3
10
140
343
0
833
3
10
250
561
0
1331
3
10
150
407
0
977
3
10
250
641
0
1156
3
10
150
343
0
973
3
10
260
624
15
1154
3
10
160
437
0
982
3
10
260
578
0
1179
3
10
160
391
0
972
3
10
270
608
16
1266
3
10
170
421
0
995
3
10
270
671
0
1190
3
10
170
375
0
1008
3
10
280
687
0
1216
3
10
180
390
0
1016
3
10
280
672
0
1182
3
10
180
453
0
1024
3
10
290
780
0
1211
3
10
190
436
0
1037
3
10
290
781
0
1250
3
10
190
422
0
1071
3
10
300
811
0
1368
3
10
200
437
0
1015
3
10
300
718
0
1193
3
10
200
484
0
1027
3
94
コミット
表 A.64 (77, 15)-degree tangle を含む準完全グラ
フの実行時間 (n = 100 から n = 200)(一部抜粋)
実行時間
表 A.65
(77, 15)-degree tangle を含む準完全グラ
フの実行時間 (n = 210 から n = 300)(一部抜粋)
コミット
k
n
3章
4章
あり なし
実行時間
15
100
795
0
1974
3
k
n
3章
4章
あり なし
15
100
764
0
2223
3
15
210
1530
0
2453
3
15
110
999
0
2179
3
15
210
1514
0
2458
3
15
110
843
0
2221
3
15
220
1577
0
2622
3
15
120
967
0
2273
3
15
220
1686
0
2439
3
15
120
1030
0
2163
3
15
230
1592
0
2431
3
15
130
1015
0
2302
3
15
230
1576
0
2548
3
15
130
1015
0
2412
3
15
240
1795
0
2608
3
15
140
1140
0
2291
3
15
240
1748
0
2405
3
15
140
1030
0
2220
3
15
250
1967
0
2518
3
15
150
1108
0
2429
3
15
250
1779
0
2461
3
15
150
1093
0
2404
3
15
260
1779
0
2540
3
15
160
1140
0
2339
3
15
260
2029
0
2560
3
15
160
1124
0
2422
3
15
270
2092
0
2671
3
15
170
1389
0
2683
3
15
270
1873
0
2717
3
15
170
1280
0
2273
3
15
280
2185
0
2877
3
15
180
1203
0
2419
3
15
280
1888
0
2712
3
15
180
1468
0
2321
3
15
290
1889
0
2530
3
15
190
1467
0
2522
3
15
290
2216
0
2740
3
15
190
1436
16
2404
3
15
300
2232
0
2636
3
15
200
1437
0
2497
3
15
300
2169
0
2591
3
15
200
1499
0
2571
3
95
コミット