平面グラフと交通ネットワークのアルゴリズム

54
平面グラフ 交通ネットワーク アルゴリズム 東京大学情報理工学系研究科 秋葉 拓哉 | @ iwiwi 2013/09/12 PFI セミナー

Upload: takuya-akiba

Post on 19-Dec-2014

8.609 views

Category:

Technology


3 download

DESCRIPTION

2013/09/12 PFI セミナー「平面グラフと交通ネットワークのアルゴリズム」

TRANSCRIPT

Page 1: 平面グラフと交通ネットワークのアルゴリズム

平面グラフと交通ネットワークの

アルゴリズム

東京大学情報理工学系研究科

秋葉 拓哉 | @iwiwi

2013/09/12 PFI セミナー

Page 2: 平面グラフと交通ネットワークのアルゴリズム

自己紹介

秋葉 拓哉 / @iwiwi

• 所属:東大 CS D1 (今井研), DC1

• PFI:インターン (2009) → バイト

• 趣味:プログラミングコンテスト

– TopCoder レーティング:3306 (日本トップ)

• 研究:大規模グラフのアルゴリズム

– 最短経路クエリ,コミュニティ検出,……

1

Page 3: 平面グラフと交通ネットワークのアルゴリズム

今日のセミナーの位置づけ

1 2012/01/12:全体的な紹介

2012/12/06:複雑ネットワーク2

本日:平面グラフ・道路ネットワーク3

こういうグラフ(今日は忘れる) 今日はこっち

Page 4: 平面グラフと交通ネットワークのアルゴリズム

今日の話

1. 平面グラフのアルゴリズム

– 平面グラフ専用のグラフアルゴリズム

– 平面性をアルゴリズムでどのように活用?

– 基礎的なアプローチを紹介(STOC, FOCS のような理論コミュニティの話題)

2. 交通ネットワークのアルゴリズム

– 現実世界の交通ネットワークにおける課題

– 最近の研究を紹介(DB系, GIS系, 実験系アルゴリズムのような応用コミュニティの話題)

3

理論

応用

Page 5: 平面グラフと交通ネットワークのアルゴリズム

1. 平面グラフのアルゴリズム理論的なアルゴリズムの話

4

Page 6: 平面グラフと交通ネットワークのアルゴリズム

平面グラフとは

平面グラフ

=辺を交差させず絵に描けるグラフのこと

平面グラフだ これも平面グラフ これは違う!(どう頑張っても交わっちゃう)

Page 7: 平面グラフと交通ネットワークのアルゴリズム

平面グラフがどれほど特別なのか

理論コミュニティで重要視されるクラスの1つ

よく研究されている.何故?

1. 実際の交通ネットワークのモデル

– 道路網は平面グラフに近いように思える

2. 驚くほど性能が違うアルゴリズム

– 一部の NP-Hard 問題が多項式時間で解ける (!?)

– 一部の近似困難問題が近似できる

– 多くの問題が 𝑂 𝑛 時間で解ける

3. グラフマイナー理論 (触れたかったけど略)

6

Page 8: 平面グラフと交通ネットワークのアルゴリズム

平面グラフにおけるアルゴリズム

2. 驚くほど性能が違うアルゴリズム– 一部の NP-Hard 問題が多項式時間で解ける (!?)

– 一部の近似困難問題が近似できる

– 多くの問題が 𝑂 𝑛 時間で解ける

事実として聞いたことある人は多い?

しかし,なんでそんなことになるのか?

平面性はどのようにアルゴリズムで活用されるか

主要なアイディアを紹介!

7

Page 9: 平面グラフと交通ネットワークのアルゴリズム

テクニック1:双対グラフの存在

平面グラフ 𝐺 の双対グラフ 𝑮∗

=𝐺 の面を頂点としたグラフ

8

平面グラフ 𝐺 やったか!?→惜しいけど間違い

正しい双対グラフ 𝐺∗

(一番外側も実は「面」)

Page 10: 平面グラフと交通ネットワークのアルゴリズム

双対グラフの性質

𝐺 と 𝐺∗ の間には,色々な面白い性質がある

最も基礎的な性質

1. 𝐺 のサイクル = 𝐺∗ のカット

2. 𝐺 の全域木 𝑇 = 𝐺∗ のある全域木 𝑇∗ の残り

3. 𝐺 で辺削除 = 𝐺∗ で辺縮約

9

Page 11: 平面グラフと交通ネットワークのアルゴリズム

双対グラフの性質

最も基礎的な性質

1. 𝐺 のサイクル = 𝐺∗ のカット

10

サイクル サイクルの場所に対応する辺(点線)を削除するとグラフが分断(緑と紫)

つまりカットになってる

※本当は,シンプルなサイクルとシンプルなカット

Page 12: 平面グラフと交通ネットワークのアルゴリズム

双対グラフの性質

最も基礎的な性質

2. 𝐺 の全域木 𝑇 = 𝐺∗ のある全域木 𝑇∗ の残り

11

全域木 全域木で使ったところだけ辺を削除→ 残りが全域木になってる

Page 13: 平面グラフと交通ネットワークのアルゴリズム

双対グラフの性質

最も基礎的な性質

1. 𝐺 のサイクル = 𝐺∗ のカット

2. 𝐺 の全域木 𝑇 = 𝐺∗ のある全域木 𝑇∗ の残り

例:Fundamental Cycle Separator (概要)

半径の小さい全域木を持つグラフなら

線形時間でいいバランスでグラフを2つに分割できる

• 面に重みをつけて,面たちを分割することにする

• 双対の全域木で,いい感じに分割できる辺を 1 本選ぶ

• その辺+元の全域木を使ったサイクル,でカットを作る

12

Page 14: 平面グラフと交通ネットワークのアルゴリズム

双対グラフの応用,他の例

MSSP (多始点最短路木)

• ある面の全頂点から,グラフ全体の全頂点への最短距離

• 始点がどんなに多くても 𝑂 𝑛 log 𝑛 時間(!?)

トリック• 隣の頂点に移るとき,最短路木は余り変化しない

• 永続データ構造で最短路木を表現,いじりながらグルっと一周

• 最短路木に入ってない辺も,双対で木を成すので効率的に管理(!)

13

[http://courses.csail.mit.edu/6.889/fall11/lectures/L11.pdf]

Page 15: 平面グラフと交通ネットワークのアルゴリズム

双対グラフの応用,他の例

最大流 (無向の場合)

1. 始点・終点が同じ面にある場合

• 実はすごい簡単

• 最大流・最小カット定理より最小カット知りたい

• カット = 双対のサイクル

• 片方をぐるっと囲むサイクル = ぶった切って最短路

計算量:𝑂(𝑛) 時間 (※平面グラフでは最短路は RAM モデルじゃなくても 𝑂(𝑛) 時間)

2. そうとは限らない場合

• 似たような感じで,切り開いて最短路 (MSSP)

計算量:𝑂 𝑛 log log 𝑛

14

𝑠 𝑡

𝑠′

𝑡′

Page 16: 平面グラフと交通ネットワークのアルゴリズム

テクニック2:小さいセパレータの存在

平面グラフには場所の局所性があるので,

簡単に分断できることが知られている

15

スパッと切れ味良さそう辺がまたがってるのはその周りだけ

平面っぽいネットワーク ランダムなネットワーク

固そう頂点を半分ずつにすると辺も半分も切ることに!

Page 17: 平面グラフと交通ネットワークのアルゴリズム

Recursive Separation (𝑟-division)

定理:任意の 𝑛 頂点の平面グラフ,任意の 𝑟 に対し

• 𝑂(𝑛/𝑟) 個の部分になって

• 各部分は 𝑟 頂点以下で

• 各部分,境界(外に辺が出てる頂点)は 𝑂 𝑟 個

となるような分割が 𝑂 𝑛 log 𝑛 時間で得られる

BFS して真ん中の層あたりだけ取り出して(そうすると半径小さい全域木があるので)

さっきの Fundamental Cycle Separator する,というのを再帰的にやるとできます

16

ざっくり言うと

小さいサイズのピースにいい感じに分割できる

[Fre87, p. 1006, Fig. 1]

Page 18: 平面グラフと交通ネットワークのアルゴリズム

𝒓-division の応用

最大独立集合問題 (NP-Hard)

• できるだけ多く頂点を選びたい

• ただし選んだ頂点間に辺があってはいけない

𝒓-division による近似アルゴリズム• 𝑟 = log log 𝑛 にして分割

• 各部分で最適解を求めてくっつける,境界は無視

これだけで 𝑂(1/ log log 𝑛) 近似のアルゴリズムになる※最大独立集合問題は MaxSNP-Complete で,一般のグラフでは近似困難!

17

Page 19: 平面グラフと交通ネットワークのアルゴリズム

テクニック3:Graph Decomposition

各種 Graph Decomposition の活用

• Tree Decomposition

• Branch Decomposition

小さいセパレータが存在すること(テクニック2)は,

Graph Decomposition との相性の良さを示唆

使われ方の例

• Treewidth 𝑂 𝑛

• Baker’s Framework, Klein’s Framework

• Deletion&Contraction Decomposition

• Bidimensionality

18

8/15 PFI セミナー(岩田)

Page 20: 平面グラフと交通ネットワークのアルゴリズム

Deletion Decomposition 雰囲気

• あとは各部分を DP で解く.Treewidth が小さいので,各層にどんなに頂点があっても高速に解ける.

• あとは解をくっつける → 近似アルゴリズムになっている.

19

𝐿1 𝐿2 𝐿3 𝐿4 𝐿5 𝐿6 𝐿7 ⋯

1

𝐿1 𝐿2 𝐿3 𝐿4 𝐿5 𝐿6 𝐿7 ⋯

23 で割った余りが

0 の層を削除

適当な頂点 𝑣からBFS

層に別れる

3

残った各部分のTreewidth 小さい

※𝑘-outerplanar なので 𝑂(𝑘)

※本当は割る数 𝑘 や削除する層はもっとちゃんと決める

Page 21: 平面グラフと交通ネットワークのアルゴリズム

Deletion Decomposition 雰囲気

類似のテクニック

• Contraction Decomposition

• Baker’s Framework

何ができるか

• 様々な問題に対して近似アルゴリズムが作れる

• しかも,好きな近似精度を設定可– 𝑘 (何個ずつにするか)を調整する

– 実現したい近似精度 휀 を定数だと思えば,𝑘 も定数なので,どんな精度にしようと思っても多項式時間

• こういう近似アルゴリズムは PTAS と呼ばれ,すごい– 一般のグラフでは PTAS が無い問題に,PTAS が大量にある

20

Page 22: 平面グラフと交通ネットワークのアルゴリズム

2. 交通ネットワークのアルゴリズム応用コミュニティの話

21

Page 23: 平面グラフと交通ネットワークのアルゴリズム

交通ネットワークとは

道路ネットワーク

• 頂点が交差点,辺が道路

交通ネットワーク

• 道路ネットワークの別名 or

• その他に電車とか飛行機とか足したもの(?)

Page 24: 平面グラフと交通ネットワークのアルゴリズム

ポピュラーに取り組まれている問題

1. 経路計画・検索:最短経路クエリ+α

• 二点間の最短距離・最短経路を瞬時に答える

• 地図サービス (Google Maps) やカーナビ

• 経路検索の目的だけでなく,施設の検索の補助なども

2. GPS 軌道情報:Map Matching

• GPS からの点列から,道路上の経路を復元

• GPS のノイズ,自然な運転になること等を考慮

3. その他:(𝑘-)Nearest Neighbor+α, …

23

Page 25: 平面グラフと交通ネットワークのアルゴリズム

話は戻って

• 平面グラフは道路のモデルでもある

• 重要なグラフクラスで問題を解くのが重要……

……ん?本当に道路は平面グラフなのか?

24

Erik Demaine• 20 歳で MIT 教授になった天才• MIT で平面グラフの授業

Page 26: 平面グラフと交通ネットワークのアルゴリズム

道路は平面グラフ?

25

NO結構,立体交差がある→

[http://www.flickr.com/photos/31246066@N04/8177689699 (CC-BY)]

立体交差は結構困る

• 双対グラフが取れなくなる

• 双対グラフを使うアルゴリズムが動かない(かなり大部分のアルゴリズムや定理が双対グラフに依存)

Page 27: 平面グラフと交通ネットワークのアルゴリズム

道路は平面グラフ?

MIT の人たちの論文

平面グラフのアルゴリズムを実装して実験する際,

道路ネットワークから交差を除いて実験……!

(アカン)

26

[Fox-Epstein+, ALENEX’13]

Page 28: 平面グラフと交通ネットワークのアルゴリズム

個人的には

平面グラフのアルゴリズム研究の意義

性質やアプローチは活用可

• 例えば,小さいセパレータは多分ある

ただし,アルゴリズム自体は使えない

• そもそも,ちょっぴり計算量を落とす系は大抵は定数倍のせいで実際には低速

• 理論的興味ということ

よって現実向けのアルゴリズムが必要27

Page 29: 平面グラフと交通ネットワークのアルゴリズム

経路計画 (Route Planning)

色んなタイプの研究がある

とにかく爆速で最短距離を求めたい!

• 検索システムのバックエンド

• 性能競争

現実的な経路を目指す

• 左折・右折にペナルティ,などのコスト関数

• 車から降りて電車に乗って車に乗ったりしない

• SQL にぶち込めるようにする

もっと変なやつ (ほぼそのままサービス?)

28

Page 30: 平面グラフと交通ネットワークのアルゴリズム

今日触れる手法

Contraction Hierarchy• シンプルでプラクティカル,拡張性

• OSRM のバックエンド

Customizable Route Planning• 拡張性=命で作られた

• Bing Map のバックエンド

Hub-Labeling• MSR が超やりこんでる爆速系

Pruned Highway Labeling• !?!?

29

Page 31: 平面グラフと交通ネットワークのアルゴリズム

Contraction Hierarchy

最短路クエリ手法,最も有名なものの 1 つ

純粋なクエリからの拡張まで対応できる

特徴:性能重視というより実用的• 手法がシンプル

• 前処理データが小さい

• クエリはそこそこ (数 ms)

OSRM のアルゴリズムとして採用オープンソースの地図サービスhttp://project-osrm.org/

30

Page 32: 平面グラフと交通ネットワークのアルゴリズム

Contraction Hierarchy:前処理

6 1 4 3 5222 22 13

Page 33: 平面グラフと交通ネットワークのアルゴリズム

Contraction Hierarchy:前処理

4 3 522 2

適当な順番で頂点がContract される

※実際には順番かなり重要

Page 34: 平面グラフと交通ネットワークのアルゴリズム

Contraction Hierarchy:前処理

4 3 522 2

その頂点が無くても距離が変わらないように

辺が追加される

Page 35: 平面グラフと交通ネットワークのアルゴリズム

Contraction Hierarchy:前処理

4 3 5

どんどん Contract!

Page 36: 平面グラフと交通ネットワークのアルゴリズム

Contraction Hierarchy:前処理

35

Page 37: 平面グラフと交通ネットワークのアルゴリズム

Contraction Hierarchy:前処理

35

Page 38: 平面グラフと交通ネットワークのアルゴリズム

Contraction Hierarchy:前処理

22

Page 39: 平面グラフと交通ネットワークのアルゴリズム

Contraction Hierarchy:前処理

22

全頂点 Contract おわり.頂点は Contract 順に高さをつけておく.

Page 40: 平面グラフと交通ネットワークのアルゴリズム

Contraction Hierarchy:クエリ

22

頂点 2 から頂点 3 への最短路を求めたいとする

Page 41: 平面グラフと交通ネットワークのアルゴリズム

Contraction Hierarchy:クエリ

22

2 からは登ることしかしない(上向きの辺のみを使う)

Page 42: 平面グラフと交通ネットワークのアルゴリズム

Contraction Hierarchy:クエリ

22

3 までは降りることしかしない(下向きの辺のみを使う)

Page 43: 平面グラフと交通ネットワークのアルゴリズム

Contraction Hierarchy:クエリ

22

Page 44: 平面グラフと交通ネットワークのアルゴリズム

Contraction Hierarchy

Contraction Hierarchy は何故上手くいく?

• ポピュラーな頂点が上の方に来るようにする

– 高速道路の周りとか

– 地域の出口とか

• そうすると,追加される辺の数が少ない

– どうせポピュラーな頂点を通過するから

43

Page 45: 平面グラフと交通ネットワークのアルゴリズム

Customizable Route Planning (CRP)

特徴:性能そこそこ,拡張性が全て

• 手法やはりシンプル

• クエリそこまでは速くない

• 指標が簡単に入れ替えられる

– 時間,距離,右折左折,……

Bing Map のアルゴリズムとして採用

MSR チームとの連携素晴らしいhttp://www.bing.com/blogs/site_blogs/b/maps/archive/2012/01/05/bing-maps-new-routing-engine.aspx

44

[Delling+, SEA’11]

Page 46: 平面グラフと交通ネットワークのアルゴリズム

Customizable Route Planning (CRP)

アプローチ

• いにしえのグラフ分割系

• 性能競争の中で一旦廃れていた

アルゴリズム概要

• 前処理

1. グラフを分割

2. 境界頂点同士のみからなるグラフ構築(Overlay Graph)

• クエリ

– 始点・終点のある部分 + Overlay Graph

– その上で Dijkstra のアルゴリズム

45

[Fre87, p. 1006, Fig. 1]

Page 47: 平面グラフと交通ネットワークのアルゴリズム

Customizable Route Planning (CRP)

何故 Contraction Hierarchy ではダメ?

Contraction Hierarchy が上手く動く

=良い感じの Hierarchy が存在

• 普通の移動時間の指標なら,良い Hierarchy 存在

• しかし,違う指標を入れると,結構すぐダメになる

– 例えば,純粋な距離にするだけで,10 倍低性能

– 高速道路とかがポピュラーでなくなるから

46

Page 48: 平面グラフと交通ネットワークのアルゴリズム

Hub-Labeling

• 有名人 Andrew Goldberg 率いるチーム

• やりこみっぷり:既に関連する論文が 5 本出版

特徴

• とにかくクエリが速い:数百 ns

• インデックスは大きめ,前処理も遅め

アプローチ

• こうすればクエリは爆速になりそうだ

• けどそんな前計算できる?データ大きくなりすぎない?

• → できそうな気がしてやってみたら上手く行った(「できそう」の裏付けは Highway Dimension という彼らの新しい理論 [SODA’10])

47

[Delling+, SEA’11]

Page 49: 平面グラフと交通ネットワークのアルゴリズム

2-Hop Labeling: 前計算データ

• データ形式とクエリ処理アルゴリズムのフレームワーク

• 前計算データ: label 𝐿 𝑣 = 𝑙1, 𝛿1 , 𝑙2, 𝛿2 , …

– 𝑙𝑖 ∈ 𝑉, 𝛿𝑖 = 𝑑𝐺 𝑣, 𝑙𝑖

48

𝑙1

𝑙2

𝑙3

𝒗

𝛿1

𝛿2

𝛿3

𝐿(1):Vertex 1 4 5 7 10

Distance 0 3 2 4 5

𝐿(2):

𝐿 3 :

Vertex 2 4 6 12

Distance 0 1 5 3

Vertex 2 3 4 6 7

Distance 5 0 4 7 2

𝑑𝐺 1,10 = 5

Page 50: 平面グラフと交通ネットワークのアルゴリズム

2-Hop Labeling: クエリ処理アルゴリズム

• クエリ: 𝑑𝐺(𝑠, 𝑡) = min𝑙∈𝐿 𝑠 ∩𝐿(𝑡)

𝑑𝐺 𝑠, 𝑙 + 𝑑𝐺 𝑙, 𝑡

– 共通する頂点を通るパス

49

𝑡𝑠

𝐿(1):Vertex 1 4 5 7 10

Distance 0 3 2 4 5

𝐿 3 :Vertex 2 3 4 6 7

Distance 5 0 4 7 2

1 と 3 の距離:

• 1 –…– 4 –…– 3 : 3 + 4 = 7

• 1 –…– 7 –…– 3 : 4 + 2 = 6

答えはmin{6, 7} = 6

Page 51: 平面グラフと交通ネットワークのアルゴリズム

2-Hop Labeling: ラベル計算

課題: どのようにラベルを計算するか

• 正しく (Exactness)

• 小さいラベルを (Index Size & Query Time)

• 効率的に計算したい (Scalability)

彼らのアプローチ

1. Contraction Hierarchy (最初に紹介したやつ) を作る

2. 自分より上流になったヤツへの距離を全部保存!

3. ……するとやばいので要らないのを判定して消す

50

ちなみに

Pruned Landmark Labeling [Akiba-Iwata-Yoshida,SIGMOD’13]

も 2-Hop Labeling の手法(複雑ネットワーク向け)

Page 52: 平面グラフと交通ネットワークのアルゴリズム

Hub-Labeling のラベルサイズ

驚くほど小さい• 西ヨーロッパの道路ネットワーク,2 × 108 頂点

• 各頂点は,平均たった 69 頂点への距離さえ覚えていれば良い!

51

←これはアメリカだけど

Page 53: 平面グラフと交通ネットワークのアルゴリズム

Pruned Highway Labeling (PHL)

特徴

• Hub Labeling (HL) に迫るクエリ速度!

• 前処理は HL より圧倒的に速い!

• インデックスは HL より小さいか同程度

アプローチ

• Pruned Landmark Labeling (PLL) をベース

• 一般化:頂点への距離でなくパスへの距離を保存

• 高速なパス(=高速道路)の存在を活用!

52

[河田-秋葉-岩田, コンプ研’13]

Page 54: 平面グラフと交通ネットワークのアルゴリズム

話したこと

1. 平面グラフのアルゴリズム

– 双対グラフ,セパレータ,分解

2. 交通ネットワークのアルゴリズム

– 経路計画:拡張性系と爆速系

ありがとうございました

53

理論

応用

@oxy さん @kawatea03謝辞: