最短路問題のための
LMS(Levelwise Mesh Sparsification)
宇野 毅明(国立情報学研究所)
宮本 裕一郎(上智大学)
前提条件,背景など
• 組合せ最適化問題としての最短路問題が対象
– キーワード:離散アルゴリズム,グラフアルゴリズム,ネッ
トワーク理論
• (主に)始点と終点が与えられた場合が対象
• カーナビゲーションやWebでの最短路サービスへの
適用を主眼に置いている
– 特徴1:ネットワークのデータは所与(既知)
– 特徴2:始点と終点が指定されたら高速に最短路を答える
– 特徴3:近似解ではなく最適解を返す
前提条件を加味した考察
• 全点間最短路をあらかじめ計算し記憶しておけば,メモリに
アクセスする時間で最短路を返せる
• しかし,ネットワークが大きい場合,全点対を覚えることすら
不可能
– 例:U.S.A.の道路ネットワークの点数は約2000万→全点対数は
2000万×2000万=400×1012
• 全点間最短路そのものではなく,全点間最短路の中間デー
タのようなものを生成し,始点と終点の問い合わせが来たら
中間データから最短路を生成する
• 生データから最短路を計算するよりも高速に応答できる反面,
あらかじめ中間データを生成しておく必要がある
– 前処理にかける時間が必要
– 記憶領域も余分に必要(であることが多い)
始点と終点が指定された最短路問
に関する考察
• 遠いところ同士を結ぶ最短路は決まった道を
通ることが多い
• 最短路の計算には基本的にDijkstra法が使
われることが多く,Dijkstra法の計算時間は
ほぼ枝数に比例する
• よく使われる道(例えば高速道路のようなも
の)をあらかじめ抽出し,少ない枝数のネット
ワークで最短路を計算すればはやい
LMSの概要
• 組合せ最適化問題としての最短路問題に対応
• ネットワークデータが与えられた後,数時間かけて
中間データを生成,中間データの大きさは元のネッ
トワークデータの数倍程度
【中間データの持ち方が新しい,汎用性もあり】
• 中間データを記憶した状態で始点と終点が与えられ
たら,高速(市販のパソコンで数msec)に最短路を
返答
【既存の手法と同等以上のスピード】
• 市販のパソコンで計算できる手軽さ(メモリ使用量な
ど)
基本的な考え方1
オレンジ枠の外側に始点および終点がある最短路をすべて求める(黒線)
赤枠の内側で最短路に使われている道をすべて覚える(黒太線)
直感的解釈:覚えた道は赤枠から遠いところ同士を結ぶ最短路で使われる道
基本的な考え方1
オレンジ枠の外側に始点および終点がある最短路を再び求める場合には
赤枠の内側では覚えた線(黒太線)のみを使っても最短路が求まる
→最短路計算で使われるデータが少なくなる
基本的な考え方2
位置をずらした枠で同様に,遠いところ同士の最短路に使われる道を覚えておけば
最短路計算で使われるデータがさらに少なくなる
基本的な考え方2
たくさんの枠で同様に,遠いところ同士の最短路に使われる道を覚えておけば
最短路計算で使われるデータがさらに少なくなる
基本的な考え方3
枠の大きさは大きくても小さくてもよい
大きい枠→覚える道は少い,始点や終点の近くでは使えない
小さい枠→覚える道は多い,始点や終点の近くでも使える
基本的な考え方(まとめ)
いろいろな大きさの枠で,遠いところ同士の最短路で使われる道を覚え,
始点と終点が指定されたら,なるべく道数の少ないネットワークを構成し
(大きい枠を優先的に使う),最短路を計算する
West Virginiaへの適用例
300146ノード,657716アーク
Dijkstra法+binary heapで約1秒かかる
(Dijkstra法の計算時間はアーク数にほぼ比例する)
LMSで用意するネットワーク(の一部)
始点と終点が指定された場合(1)
ピンクの線が最短路
アークの数は約10000(元のグラフの約1/60)
計算時間は約15ミリ秒→約60倍の高速化
始点と終点が指定された場合(2)
指定される始点と終点が異なれば,計算に使われるネットワークも異なる
今後
• 以上は基本アイディアを説明しただけであり,
細かい工夫はさらにいくつか入っている,特
に前処理(中間データとしてのネットワークを
作る処理)に関しては説明を省いた
• 計算実験結果に関して,まだパラメータ
チューニングをしておらず,すでに考えてある
細かいアイディアも入れてないので,計算速
度はさらに数倍速くなる可能性がある
ダウンロード

最短路問題のための LMS(Levelwise Mesh Sparsification)法