SlideShare a Scribd company logo
1 of 78
Download to read offline
k-センター
情報オリンピック夏季セミナー2019
筑波大学附属駒場高校2年 米山瑛士
目次
3・・・近似アルゴリズムとは
6・・・k-センター問題とは
14・・・厳密アルゴリズム
23・・・2近似アルゴリズム
60・・・実装と利用
76・・・まとめ
近似アルゴリズムとは
近似アルゴリズムとは
Nつの数字A[1],A[2],..,A[N]があります。
「A[i]+A[j]+gcd(A[i],A[j]) を最小化する」問題があります。
このとき、計算結果が最適解の1.5倍以下になる具体的な(i,j)の組を計
算量O(N)で示してください。
近似アルゴリズムとは
Nつの数字A[1],A[2],..,A[N]があります。
「A[i]+A[j]+gcd(A[i],A[j]) を最小化する」問題があります。
このとき、計算結果が最適解の1.5倍以下になる具体的な(i,j)の組を計
算量O(N)で示してください。
=1.5近似アルゴリズムを設計してください。
k-センター問題とは
k-センター問題とは
重み付き完全無向グラフと正整数kが与えられる。
kつの頂点を選んで"センター"とする。
それぞれの頂点についてセンターである頂点との間を結ぶ辺の重みの
最小値を求め、その最大値を最小化する。
k-センター問題とは
3
4 5
2
6
7
K=2
k-センター問題とは
3
4 5
2
6
7
K=2
k-センター問題とは
3
4 5
2
6
7
K=2
k-センター問題とは
3
4 5
2
6
7
K=2
k-センター問題とは
3
4 5
2
6
7
K=2
max(2,3)=3
k-センター問題とは
NP-困難
多項式時間で解けない。さらにその中でも難しい。
厳密アルゴリズム
厳密アルゴリズム
①答えを二分探索で決め打つ。
→重みが答え以下の辺だけを残したグラフで、最小支配集合(※)のサ
イズがk以下であるか判定できれば良い。
厳密アルゴリズム
最小支配集合とは?
いくつかのスターグラフでグラフ全体を被覆するとき、その個数が最小と
なるようなもの。
厳密アルゴリズム
最小個数のス
ターグラフで被
覆
厳密アルゴリズム
最小支配集合
のサイズは3
厳密アルゴリズム
3
4 5
2
6
7
K=2 答えは3以下か?
厳密アルゴリズム
3
4 5
2
6
7
K=2 最小支配集合の
サイズは2
厳密アルゴリズム
3
4 5
2
6
7
K=2 答えは3以下
厳密アルゴリズム
②スターグラフの組み合わせを全列挙し、最小支配集合を解く。
→スターグラフはNつあるので、組み合わせは2^N通り。
 工夫してdfsすると計算量はO(2^N*N*logε)。
最小支配集合問題もNP-困難
2近似アルゴリズム
2近似アルゴリズム
メトリックなk-センター問題は2近似アルゴリズムを持つ。
一般のk-センター問題はP≠NPの仮定のもとでは近似アルゴリズムが存
在しない。
2近似アルゴリズム
メトリックとは?
グラフの辺の重みが三角不等式を満たすこと。
任意の頂点a,b,cに対して、cost(a,b)+cost(b,c)>=cost(a,c)になる。
2近似アルゴリズム
3
4 5
2
6
8
←notメトリッ ク
2近似アルゴリズム
3
4 5
2
6
7
←メトリック
2近似アルゴリズム
2近似アルゴリズム
①重みがp以下の辺だけを使ったグラフで、その平方グラフの極大独立
集合のサイズがk以下となる最小のpを二分探索で求める。
②そのようなpでの極大独立集合をk-センターとし、コストを計算して出
力する。
正解<=このアルゴリズムの答え<=正解*2となる。
2近似アルゴリズム
極大独立集合を考えることで下界
を与え、その下界から実際にk-セ
ンターを構成し、そのk-センターの
コストが下界の二倍を超えないこ
とを利用して近似率2を実現して
いる。
このような近似手法を「パラメトリッ
ク刈り取り」と呼ぶ。
2近似アルゴリズム
まず、最適解<=出力が明らか。
最適解より最適な解は存在しないた
め。
≦
2近似アルゴリズム
次に、下界<=最適解を示す。
≦
2近似アルゴリズム
重みがp以下の辺だけを使ったグ
ラフで、最小支配集合のサイズが
k以下であるような最小のpが答
え。
(厳密アルゴリズムでの説明を参
照)
2近似アルゴリズム
重みがp以下の辺だけを使ったグ
ラフに対して、平方グラフの極大独
立集合のサイズがk以下になるよ
うな最小のpを下界としている。
2近似アルゴリズム
平方グラフとは?
距離が2の頂点どうしに新しく辺を張ったグラフのこと。
(グラフを行列として捉えて、二乗したと考えてもよい)
2近似アルゴリズム
元のグラフ
2近似アルゴリズム
平方グラフ
対角線上にも隠れた辺がある
としてください。
2近似アルゴリズム
平方グラフ
性質:
スターグラフは平方グラフに
するとクリークになる。
2近似アルゴリズム
実は、平方グラフでの独立集合のサイズは元のグラフの最小支配集合
のサイズ以下になる。
2近似アルゴリズム
最小支配集合がある。
2近似アルゴリズム
スターグラフの部分を平
方グラフにする。
他の部分はあまり関係な
いので今は無視。
2近似アルゴリズム
独立集合を作ってみる。
2近似アルゴリズム
独立集合を作ってみる。
2近似アルゴリズム
←同じクリークには二つ以上
の独立集合の要素は含まれ
ない。
2近似アルゴリズム
よって、独立集合のサイズ
はクリーク(=元のグラフで
はスター)の個数以下にな
る。
2近似アルゴリズム
次に、出力<=下界の二倍を示す。
≦
2近似アルゴリズム
下界は求まったので、上界を求める。
実は、平方グラフの極大独立集合は平方グラフの支配集合になる。
2近似アルゴリズム
平方グラフの極大独立集
合を取った。
2近似アルゴリズム
これはこの平方グラフに対し
て支配集合をなす。
2近似アルゴリズム
これはこの平方グラフに対
して支配集合をなす。
↑いつもそうなるか?
2近似アルゴリズム
←支配集合をなさない。
2近似アルゴリズム
支配集合をなさないなら、ま
だ支配されてない適当な頂
点を独立集合に含めること
ができる。
これは極大性と矛盾するの
で、極大独立集合ならいつも
支配集合をなす。
2近似アルゴリズム
極大独立集合が平方グラフの支配集合になることがわかった。
よって、平方グラフの辺の長さの最大値以下のコストを出力している。
メトリックであるという性質により、平方グラフの辺の長さの最大値は元のグラ
フの二倍以下になるため、不等式を示せる。
2近似アルゴリズム
3
4 5
2
6
7
←メトリック
2近似アルゴリズム
3
4 5
2
6
7
←元のグラフ
 最大値=4
2近似アルゴリズム
3
4 5
2
6
7
←平方グラフ
 最大値=7
2近似アルゴリズム
3
4 5
2
6
7
二倍以下
2近似アルゴリズム
出力<=下界の二倍が示された。
≦
2近似アルゴリズム
この大小関係がすべて示された。
≦≦≦
2近似アルゴリズム
これら3つの大小関係から
出力<=最適解の二倍
が示せるので、
最適解<=出力<=最適解の
二倍
が成立し、2近似アルゴリズムと
なる。
実装と利用
実装と利用
実装は軽い。
二分探索したのち、平方グラフを構成して貪欲
法で極大マッチングを得れば良い。
計算量はO(N^3logε)
実装と利用
二次元空間のランダムな点Nつをユークリッ
ド距離で結んだ完全グラフで計算。
(以降、このように生成したグラフでk-セン
ターを考える。)
近似解は極大マッチングの探し方を変えて
10回計算。
誤差は1.00倍から1.99倍まで見られる。
実装と利用
できるだけ最適な解を求めたい。
解法1:近似アルゴリズム
   - 何回か実行して最小値を取ったら近くなる?
解法2:焼きなまし
   - 常套テクニック
実装と利用
近似アルゴリズムを複数回実行すると、誤差に幅があった。
誤差の最小値、最大値はだいたいどれくらいになるだろうか。
N=20のグラフに対して近似アルゴリズムを100回実行し、誤差の最小
値と最大値がどのようになるか実験した。
実装と利用
最大値は値に幅があるのに対し、最小値は比較的1.00に近い。
誤差が2に近くなるケースが多くないことから容易に想像できる。
実装と利用
Nを大きくし、N=50にしてみる。
厳密解が求まらないので、誤差の最
小値と最大値の比を見ることにする。
概ね1.4~1.7程度になっており、
N=20のケースと同様、最小値が
1~1.2、最大値が1.4~1.9程度である
と推測できる。
最小値を取ることで、1.2倍程度の誤
差に収まることが期待できる。
実装と利用
実験結果
N,Kの組それぞれに対して近似、焼き
なましを10回ずつ行った。
実行時間が同程度になるように調整し
た。
実装と利用
実験結果
N,Kの組それぞれに対して近似、焼き
なましを10回ずつ行った。
実行時間が同程度になるように調整し
た。
左の値が最小値、右の値が平均値。
実装と利用
実験結果
N,Kの組それぞれに対して近似、焼き
なましを10回ずつ行った。
実行時間が同程度になるように調整し
た。
左の値が最小値、右の値が平均値。
焼きなましが優位
近似アルゴリズムは役に立たない?
実装と利用
近似アルゴリズムを利用した焼きなまし
近似アルゴリズムで2近似の解を求め、そのときのk-センターを初期解
として焼きなまし法を行う。
実装と利用
実験結果
実装と利用
実験結果
近似アルゴリズムを利用した焼きな
まし法は、近似・焼きなまし単独と比
較して、すべてのファクターで最適な
結果を出した。
特に平均値が大きく改善し、2/3倍に
なった箇所もあった。
実装と利用
実験結果
近似アルゴリズムを利用した焼きな
まし法は、近似・焼きなまし単独と比
較して、すべてのファクターで最適な
結果を出した。
特に平均値が大きく改善し、2/3倍に
なった箇所もあった。
→近似アルゴリズム 
が役に立った!
実装と利用
近似アルゴリズムを利用した焼きなまし法の精度はどれくらいか?
N=20のとき、誤差は1.00倍(=すべて厳密解)になった。
N=50のとき、厳密解が分からないので正確なことは言えないが、近似単
体の誤差が1.2倍だと仮定すると1.04倍程度だと見積れる。
また、この実験のデータの9割以上に対して誤差が1.5倍以下であるとが
確実に言える。
まとめ
まとめ
k-センターはNP困難であり、厳密解は多項式時間で得られない。
メトリックk-センターには、NP困難である最小支配集合とPである極大独
立集合の類似性を利用した「パラメトリック刈り取り」による2近似アルゴ
リズムが存在する。
2近似アルゴリズムと焼きなまし法を組み合わせることで、誤差数パー
セントの解を得ることができる。
まとめ
ご静聴ありがとうございました

More Related Content

What's hot

AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説AtCoder Inc.
 
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第12回 複素関数論(1) 複素関数・正則関数 (2018. 12. 11)
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第12回 複素関数論(1) 複素関数・正則関数 (2018. 12. 11)2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第12回 複素関数論(1) 複素関数・正則関数 (2018. 12. 11)
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第12回 複素関数論(1) 複素関数・正則関数 (2018. 12. 11)Akira Asano
 
AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説AtCoder Inc.
 
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder Inc.
 
AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説AtCoder Inc.
 
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説AtCoder Inc.
 
2018年度秋学期 応用数学(解析) 第2部・基本的な微分方程式 第8回 2階線形微分方程式(2) (2018. 11. 13)
2018年度秋学期 応用数学(解析) 第2部・基本的な微分方程式 第8回 2階線形微分方程式(2) (2018. 11. 13)2018年度秋学期 応用数学(解析) 第2部・基本的な微分方程式 第8回 2階線形微分方程式(2) (2018. 11. 13)
2018年度秋学期 応用数学(解析) 第2部・基本的な微分方程式 第8回 2階線形微分方程式(2) (2018. 11. 13)Akira Asano
 
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第13回 複素関数論(2) 孤立特異点と留数 (2018. 12. 18)
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第13回 複素関数論(2) 孤立特異点と留数 (2018. 12. 18)2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第13回 複素関数論(2) 孤立特異点と留数 (2018. 12. 18)
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第13回 複素関数論(2) 孤立特異点と留数 (2018. 12. 18)Akira Asano
 
AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説AtCoder Inc.
 
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第15回 測度論(2) ルベーグ積分 (2019. 1. 15)
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第15回 測度論(2) ルベーグ積分 (2019. 1. 15)2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第15回 測度論(2) ルベーグ積分 (2019. 1. 15)
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第15回 測度論(2) ルベーグ積分 (2019. 1. 15)Akira Asano
 
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説AtCoder Inc.
 
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第14回 測度論(1) ルベーグ測度と完全加法性 (2019. 1. 8)
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第14回 測度論(1) ルベーグ測度と完全加法性 (2019. 1. 8)2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第14回 測度論(1) ルベーグ測度と完全加法性 (2019. 1. 8)
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第14回 測度論(1) ルベーグ測度と完全加法性 (2019. 1. 8)Akira Asano
 
AtCoder Regular Contest 018 解説
AtCoder Regular Contest 018 解説AtCoder Regular Contest 018 解説
AtCoder Regular Contest 018 解説AtCoder Inc.
 

What's hot (15)

AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説
 
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第12回 複素関数論(1) 複素関数・正則関数 (2018. 12. 11)
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第12回 複素関数論(1) 複素関数・正則関数 (2018. 12. 11)2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第12回 複素関数論(1) 複素関数・正則関数 (2018. 12. 11)
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第12回 複素関数論(1) 複素関数・正則関数 (2018. 12. 11)
 
AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説
 
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説
 
AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説
 
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
 
2018年度秋学期 応用数学(解析) 第2部・基本的な微分方程式 第8回 2階線形微分方程式(2) (2018. 11. 13)
2018年度秋学期 応用数学(解析) 第2部・基本的な微分方程式 第8回 2階線形微分方程式(2) (2018. 11. 13)2018年度秋学期 応用数学(解析) 第2部・基本的な微分方程式 第8回 2階線形微分方程式(2) (2018. 11. 13)
2018年度秋学期 応用数学(解析) 第2部・基本的な微分方程式 第8回 2階線形微分方程式(2) (2018. 11. 13)
 
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第13回 複素関数論(2) 孤立特異点と留数 (2018. 12. 18)
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第13回 複素関数論(2) 孤立特異点と留数 (2018. 12. 18)2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第13回 複素関数論(2) 孤立特異点と留数 (2018. 12. 18)
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第13回 複素関数論(2) 孤立特異点と留数 (2018. 12. 18)
 
AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説
 
abc031
abc031abc031
abc031
 
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第15回 測度論(2) ルベーグ積分 (2019. 1. 15)
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第15回 測度論(2) ルベーグ積分 (2019. 1. 15)2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第15回 測度論(2) ルベーグ積分 (2019. 1. 15)
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第15回 測度論(2) ルベーグ積分 (2019. 1. 15)
 
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説
 
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第14回 測度論(1) ルベーグ測度と完全加法性 (2019. 1. 8)
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第14回 測度論(1) ルベーグ測度と完全加法性 (2019. 1. 8)2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第14回 測度論(1) ルベーグ測度と完全加法性 (2019. 1. 8)
2018年度秋学期 応用数学(解析) 第4部・「その先の解析学」への導入 第14回 測度論(1) ルベーグ測度と完全加法性 (2019. 1. 8)
 
AtCoder Regular Contest 018 解説
AtCoder Regular Contest 018 解説AtCoder Regular Contest 018 解説
AtCoder Regular Contest 018 解説
 
Abc009
Abc009Abc009
Abc009
 

k-センター