最短路問題のための 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秒かかる
LMSで用意するネットワーク(の一部)
始点と終点が指定された場合(1) ピンクの線が最短路 アークの数は約10000(元のグラフの約1/60) 計算時間は約15ミリ秒→約60倍の高速化
始点と終点が指定された場合(2) 指定される始点と終点が異なれば,計算に使われるネットワークも異なる
今後 以上は基本アイディアを説明しただけであり,細かい工夫はさらにいくつか入っている,特に前処理(中間データとしてのネットワークを作る処理)に関しては説明を省いた 計算実験結果に関して,まだパラメータチューニングをしておらず,すでに考えてある細かいアイディアも入れてないので,計算速度はさらに数倍速くなる可能性がある