説明

外部メモリからのポイント−ポイントの最短パスの計算

【課題】地点の集合の中で最短パスを計算するための方法およびシステムを提供する。
【解決手段】2つの元のランドマークから開始し、ランドマーク選択を他のランドマークまでの距離に基づいて改善することによって、ランドマークの集合を動的に選択する。次いで、ランドマークをA*探索と共に使用して、ソースからディスティネーションまでの最短パスを見つける。必要な記憶容量を低減するために、追加の改良が提供される。ランドマークは、ツリーベースのヒューリスティックスや局所探索を用いるなど、1つまたは複数の選択ヒューリスティックスを使用して前処理中にランドマークのサブ集合から生成または選択することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に経路指定の分野に関し、より詳しくはコンピュータ化された地図上の2点間の最良経路を判定することに関する。
【背景技術】
【0002】
「道路地図」プログラムとして知られる既存のコンピュータプログラムは、デジタル地図を提供し、多くの場合、市街路レベルに至る詳細な道路網を完備している。通常、ユーザはある地点を入力することができ、道路地図プログラムが選択された地点のオンスクリーンの地図を表示する。幾つかの既存の道路地図プログラムは、典型的には2つの地点間の「最良経路」を計算する能力を含む。言い換えると、ユーザは2つの地点を入力することができ、道路地図プログラムがソース地点(source location)からディスティネーション地点(desitnation location)までの道案内を計算することになる。道案内は、典型的には距離、移動時間、およびユーザが好む運転速度や途中の景色の良さなどいくつかのユーザの好みに基づいている。地点間の最良経路の計算には、多くの計算時間と計算リソースが必要となり得る。
【0003】
既存の道路地図プログラムは、最短パスを計算するためにE.Dijkstraに帰属する方法の変形を用いている。Dijkstraの方法は、非特許文献1に記載されており、それが教示する全てについて、いかなる部分も除外することなくその全体が参照により本明細書に組み込まれる。この文献では、「最短」は「最小コスト」を意味することに留意されたい。というのは、各道路セグメントには、その道路セグメントの長さに必ずしも直接関係しないコストまたは重みが割り当てられているからである。各道路についてコストの計算方法を変えることにより、最速、最短または好みの経路について最短パスを生成することができる。
【0004】
【特許文献1】米国特許出願第10/925751号明細書
【非特許文献1】Cormen,Leiserson and Rivest,Introduction to Algorithms,MIT Press,1990,pp.514−531
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかし、Dijkstraの当初の方法は、スキャンされる地点および可能なパスの数が多いので、実際には常に効率的であるとは限らない。その代わりに、現代の多くの道路地図プログラムは、最短パス計算をほぼ正しい方向に「誘導」するためにA*探索(ヒューリスティックなまたは目標指向型探索(goal−oriented search)とも呼ばれる)を含むDijkstraの方法のヒューリスティックな変形を使用している。このようなヒューリスティックな変形は、典型的に中間地点とディスティネーション地点との間のパスの重みを推定することを伴う。良好な推定は、道路地図プログラムによって考慮されるべき地点および道路セグメントの数を低減し、その結果最短パスがより速く計算されるが、悪い推定だと逆効果となり、最短パスを計算するのに必要な全体の時間が増加することがある。推定がいくつかの特定のプロパティで距離の下限(lower−bound)である場合、A*探索は最適(最短)パスを計算する。これらの下限が実際のパスの重みに近いほど、推定およびアルゴリズムのパフォーマンスは良くなる。バウンドされている実際の値に非常に近い下限は、「良好」であると言われる。以前から知られているヒューリスティックな変形は、地点間のユークリッド距離(すなわち、「直線距離」)などの下限推定技法を使用するが、これらの技法はあまり良好なものではない。
【0006】
その全体が参照により本明細書に組み込まれる2004年8月25日出願の「Efficiently Finding Shortest Paths Using Landmarks For Computing Lower−Bound Distance Estimates」という名称の特許文献1には、三角不等式に基づく最短パスを決定するためのアルゴリズムが記載されている。アクティブなランドマークの動的な選択を提供し、パス計算技法やシステムなどでの使用についてメモリ効率を提供することが望ましいであろう。また、ツリーベースのビューリスティックスを使用し、ランドマークの生成において局所探索を使用することが望ましいであろう。
【課題を解決するための手段】
【0007】
以下の概要は、本発明の様々な態様の概略を提供する。本発明の全ての重要な態様についての包括的な説明を提供したり、本発明の範囲を画定したりするものではない。むしろ、この要約は、これに続く詳細な説明および図面の導入部として意図されている。
【0008】
本発明は、非負の孤長(nonnegative arc lenght)を有する有向グラフ(directed graphs)上のポイント−ポイントの最短パスの問題(P2P問題)を解くことを対象としている。正確な最短パスを見つけることが望ましい。問題を解くためにグラフのあらゆる頂点(vertex)を検討しなければならない単一ソースの場合と異なり、P2P問題は小さなサブグラフを検討しながら解くことができる。グラフの小さな部分を検討することにより、プロセスの実行時間が改善されるだけでなく、外部メモリの実装が可能になる。一例の実施形態では、グラフと前処理データを二次ストレージ(たとえば、ディスクまたはフラッシュメモリ)に保持し、グラフの検討した部分について使用したデータをメインメモリ(たとえば、RAM)に保持する。このアプローチが望ましいのは、いくつかのアプリケーションは大きなグラフ上で機能したり、小さなデバイス(たとえば、モバイルまたはハンドヘルドデバイス)上で稼働したり、あるいはその両方に該当したりするからである。
【0009】
本発明のいくつかの態様によれば、ランドマークは、ツリーベースのヒューリスティックスや局所探索(local search)を用いるなど、1つまたは複数の選択ヒューリスティックスを使用して前処理中に生成または選択することができる。
【0010】
本発明のさらなる特徴および利点は、添付の図面を参照しながら行われる例示的実施形態についての以下の詳細な説明から明らかになるであろう。
【発明を実施するための最良の形態】
【0011】
前述の要約ならびに好ましい実施形態についての以下の詳細な説明は、添付の図面を参照と共に読むとよりよく理解されよう。本発明を例示する目的で図面には本発明の例示的な構成が示されているが、本発明は開示された具体的な方法および手段に限定されるものではない。
【0012】
この内容は、法的要件を満たすために、詳細に説明されている。しかし、その説明自体は、本発明の範囲を限定するものではない。そうではなくて、本発明者らは、請求される内容が、本明細書に説明されたものと類似の異なるステップまたはステップの組合せを含むように、他の現在または将来の技術と共に、別のやり方で具体化できることを企図している。さらに、「ステップ」という言葉は、用いられる方法の様々な要素を意味するように本明細書では使用されることがあるが、この言葉は、個々のステップの順序が明示的に記載されていない限り、そしてその場合を除いて、本明細書で開示される様々なステップ中のまたはステップ間の特定の順序を示唆しているものと解釈されるべきではない。
【0013】
本発明は、添付の図面と併せて読まれるべき以下の詳細な説明を通じてより完全に理解されるであろう。この説明において、同様の番号は、本発明の様々な実施形態内の同様の要素を参照している。本発明は、適切なコンピューティング環境で実施されているものとして示される。必須ではないが、本発明はパーソナルコンピュータによって実行される手順などのコンピュータ実行可能命令という一般的なコンテキストで説明されるであろう。一般に、手順には、特定のタスクの実行または特定の抽象データ型の実施を行うプログラムモジュール、ルーチン、関数、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。さらに、本発明がハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサに基づくあるいはプログラム可能な民生用電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成と共に実施できることは、当業者には明らかであろう。本発明はまた、タスクが通信ネットワークでリンクされたリモート処理装置によって実行される分散コンピューティング環境で実施され得る。分散コンピューティングでは、プログラムモジュールを、ローカルおよびリモートの両方のメモリストレージデバイスにも置くことができる。コンピュータシステムという用語は、分散コンピューティング環境で見られ得るようなコンピュータのシステムを指すために使用することができる。
【0014】
図1は、本発明を実施することができる、適切なコンピューティングシステム環境100を示す。コンピューティングシステム環境100は、適切なコンピューティング環境の一例に過ぎず、本発明の使用の範囲または機能に関するいかなる限定も示唆するものではない。また、コンピューティングシステム環境100も、例示的動作環境100中で示されるコンポーネントの1つまたはそれらの組合せに関する依存性または要件を有するものと解釈されるべきではない。本発明の一実施形態は、例示的動作環境100に示される各コンポーネントを含むが、本発明のより典型的な別の実施形態は、たとえばネットワーク通信に必要なもの以外の入出力デバイスなど、本質的でないコンポーネントを含まない。
【0015】
図1を参照すると、本発明を実施するための例示的システムは、コンピュータ110の形態の汎用コンピューティングデバイスを含む。コンピュータ110のコンポーネントには、処理装置120、システムメモリ130、およびシステムメモリを含む様々なシステムコンポーネントを処理装置120に結合するシステムバス121が含まれ得るが、それだけには限定されない。システムバス121は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのいずれかを使用したローカルバスを含めて、いくつかのタイプのバス構造のずれでもよい。限定ではなく例として、このようなアーキテクチャとしては、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、およびメザニンバス(Mezzanine bus)とも呼ばれるPCI(Peripheral Component Interconnect)バスなどがある。さらに、コンピュータ110のコンポーネントには、メモリキャッシュ122も含まれ得る。処理装置120は、メモリキャッシュからのデータに、システムメモリ130からのデータよりも速くアクセスすることができる。メモリキャッシュ122は典型的に、システムメモリ130からの直前にアクセスされたデータまたは処理装置120によって最近処理されたデータを格納する。処理装置120は、システムメモリ130からデータを取り出すのに先立って、そのデータがメモリキャッシュ122に現在格納されているかどうかをチェックすることができる。そうである場合、「キャッシュヒット」が生じることになり、データは一般により遅いシステムメモリ130からではなく、メモリキャッシュ122から取り出される。
【0016】
コンピュータ110は、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110によってアクセスできる利用可能な任意の媒体でよく、揮発性および不揮発性の媒体、リムーバブルおよび非リムーバブルの媒体を含む。限定ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を備えることができる。コンピュータ記憶媒体には、コンピュータ可読命令、デーダ構造、プログラムモジュールまたは他のデータなど、情報の格納のための任意の方法または技術で実施される揮発性および不揮発性の媒体、リムーバブルおよび非リムーバブルの媒体が含まれる。コンピュータ記憶媒体としては、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD−ROM、DVDもしくは他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または所望の情報を格納するために使用し、コンピュータ110によってアクセスできる他の任意の媒体があるが、それだけには限定されない。通信媒体は、通常、コンピュータ可読命令、デーダ構造、プログラムモジュール、またはその他のデータを、搬送波や他のトランスポート機構などの変調データ信号に具現し、それには任意の情報送達媒体が含まれる。「変調データ信号」という用語は、信号に情報を符号化するようにその1つまたは複数の特徴を設定または変更した信号を意味する。限定ではなく例として、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、ならびに音響、RF、赤外線およびその他の無線媒体が含まれる。上記の任意の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
【0017】
システムメモリ130は、たとえばリードオンリーメモリ(ROM)131やランダムアクセスメモリ(RAM)132など、揮発性および/または不揮発性のメモリの形態のコンピュータ記憶媒体を含む。たとえば起動の際にコンピュータ110内の要素間での情報の転送を助ける基本ルーチンを含む基本入出力システム(BIOS)133は通常、ROM131に格納される。RAM132は、通常、処理装置120から直ぐにアクセス可能であり、そして/または処理装置120によって現在操作されているデータおよび/またはプログラムモジュールを含む。限定ではなく例として、図1はオペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137を示す。
【0018】
コンピュータ110は、他の揮発性および/または不揮発性の媒体、リムーバブルおよび/または非リムーバブルの媒体を含むことができる。あくまで一例として、図1は、非リムーバブルで不揮発性の磁気媒体を読み書きするハードディスクドライブ141、リムーバブルで不揮発性の磁気ディスク152を読み書きする磁気ディスクドライブ151、およびCD−ROMや他の光媒体などのリムーバブルで不揮発性の光ディスク156を読み書きする光ディスクドライブ155を示す。この例示的動作環境で使用できる他の揮発性および/または不揮発性の媒体、リムーバブルおよび/または非リムーバブルの媒体としては、磁気テープカセット、フラッシュメモリカード、DVD、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどがあるが、それだけには限定されない。ハードディスクドライブ141は、通常、インターフェース140などの非リムーバブルメモリインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は、通常インターフェース150など、リムーバブルメモリインターフェースを介してシステムバス121に接続される。
【0019】
上に説明し、図1に示したドライブおよびそれらに関連するコンピュータ記憶媒体は、コンピュータ110用のコンピュータ可読命令、デーダ構造、プログラムモジュールまたは他のデータのストレージを提供する。たとえば、図1では、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147を格納しているものとして示してある。これらのコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137と同じでもよく、異なっていてもよいことに留意されたい。ここでは、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147が少なくとも異なるコピーであることを示すために異なる参照番号が付されている。ユーザはタブレット、または電子式デジタイザ164、マイクロフォン163、キーボード162および一般にマウス、トラックボールまたはタッチパッドと呼ばれるポインティングデバイス161を介して、コンピュータ110にコマンドおよび情報を入力することができる。他の入力装置(図示せず)としては、ジョイスティック、ゲームパッド、衛星アンテナ、スキャナなどがある。これらおよび他の入力装置は、システムバスに結合されているユーザ入力インターフェース160を介して処理装置120に接続されることが多いが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス(USB)など他のインターフェースおよびバス構造によって接続することもできる。モニタ191または他のタイプの表示装置も、ビデオインターフェース190などのインターフェースを介してシステムバス121に接続されている。モニタ191は、タッチスクリーンパネルなどと統合することもできる。モニタおよび/またはタッチスクリーンパネルは、たとえばタブレットタイプのパーソナルコンピュータの場合など、コンピューティングデバイス110が組み込まれている筐体に物理的に結合することができることに留意されたい。加えて、コンピューティングデバイス110などのコンピュータは、出力周辺インターフェース195などを介して接続することができるスピーカ197やプリンタ196などの他の周辺出力装置を含んでもよい。
【0020】
コンピュータ110は、リモートコンピュータ180など1つまたは複数のリモートコンピュータへの論理接続を用いてネットワーク化された環境で動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイスまたは他の共通ネットワークノードとすることができ、図1ではメモリストレージデバイス181のみが図示されているが、通常、コンピュータ110に関連して上述した要素の多くまたは全てを含む。図1に示された論理接続は、ローカルエリアネットワーク(LAN)171およびワイドエリアネットワーク(WAN)173を含むが、他のネットワークを含むこともできる。このようなネットワーク環境は、オフィス、エンタープライズ規模のコンピュータネットワーク、イントラネットおよびインターネットにおいて一般的となっている。たとえば、本発明において、コンピュータ110はデータの移動元であるソースマシンを構成することができ、リモートコンピュータ180はディスティネーションマシンを構成することができる。しかし、ソースマシンおよびディスティネーションマシンはネットワークまたは他の手段によって接続されている必要はなく、代わりに、データはソースのプラットフォームによって書き込まれ、ディスティネーションの1つまたは複数のプラットフォームによって読み取ることができる任意の媒体を介して移動することができる。
【0021】
LANネットワーク環境で使用する場合、コンピュータ110はネットワークインターフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーク環境で使用する場合、コンピュータ110は、通常、インターネットなど、WAN173上での通信を確立するためのモデム172または他の手段を含む。モデム172は、内蔵でも外付けでもよく、ユーザ入力インターフェース160または他の適切な機構を介してシステムバス121に接続することができる。ネットワーク化された環境では、コンピュータ110に関連して図示されたプログラムモジュールあるいはその一部は、リモートメモリストレージデバイスに格納することができる。限定ではなく例として、図1はリモートアプリケーションプログラム185をメモリ装置181上にあるものとして示している。図示されたネットワーク接続は例示的であり、コンピュータ間の通信リンクを確立する他の手段を使用することもできることが理解できよう。
【0022】
図2を参照すると、本発明が潜在的に活用されるコンピューティング環境の簡単な例が示されている。この例示の環境において、コンピューティングデバイス200は、通信媒体を介した通信を容易にするネットワークインタフェースカード(具体的に図示せず)を含む。図2に示す特定の例では、コンピューティングデバイス200は物理接続を介してローカルエリアネットワーク202と通信を行う。あるいは、コンピューティングデバイス200はWWANもしくはWLAN媒体、または他の通信媒体を介してローカルエリアネットワーク202と通信を行ってもよい。サポートされるネットワーク媒体の結果として、コンピューティングデバイス200のユーザは、典型的にコンピューティングデバイス200上で実行されているブラウザアプリケーション204の使用を通じて、ネットワークリソースにアクセスすることができる。ブラウザアプリケーション204は、たとえばインターネット205を介したリモートネットワークとの通信を容易にする。1つの例示的なネットワークリソースが、地図経路サーバ208上で稼働する地図経路サービス206である。地図経路サーバ208は、物理的地点および所在地住所のデータベース210を、隣接物、距離、速度制限および格納された地点間のその他の関係などの経路情報と共にホストする。コンピューティングデバイス200のユーザは、通常、ブラウザアプリケーション204を通じて、要求として開始地点およびディスティネーション地点を入力する。地図経路サーバ208は、要求を受け取り、開始地点からディスティネーション地点に到達するためにデータベース210に格納された地点から最適経路を生成する。次いで、地図経路サーバ208は、その最適経路を、要求元のコンピューティングデバイス200に送り返す。あるいは、地図経路サーバ208は、コンピューティングデバイス200上でホストされ、コンピューティングデバイス200はローカルエリアネットワーク202と通信を行う必要はない。
【0023】
しかし、最適経路の計算は、些細なタスクではない。ルーティング方法を視覚化し、実施するには、地点および接続するセグメントを、頂点および有向エッジを有する抽象グラフとして表すことが有用である。頂点は地点に対応し、エッジは地点間の道路セグメントに対応する。エッジは、好ましくは移動距離、速度制限および/または対応する道路セグメントについての他の基準に従って重み付けされる。一般的な用語である「長さ」および「距離」は、本文においてはエッジの重みまたはコストが測定されるメトリックを包含するように使用される。パスの長さまたは距離は、パスに含まれるエッジの重みの合計である。たとえば、図3のグラフにおいて、頂点s304から頂点w306に至るエッジ(s,w)302は長さ5を有する。s304からu308へ、v310へ、t312へのパスの長さは10+1+4=15である。s302からt312へのより短いパスはw306経由であり、長さ7である。コンピューティングデバイスによる操作のために、グラフは、好ましくはレコードの集まりとしてコンピュータメモリの連続ブロックに格納することができ、各レコードは関連データと共に単一のグラフノードまたはエッジを表している。
【0024】
最適経路を計算する1つのアプローチは、Dijkstraの方法を使用することである。一般に、Dijkstraの方法は、各頂点毎に距離ラベルおよびその頂点が既にスキャンされているかどうかを示すフラグを維持することにより、ある単一の「ソース(source)」の頂点から他の全ての頂点までの最短パスを見つける。距離ラベルは最初に各頂点について無限大に設定され、既にスキャンされた頂点のみを使用してソースからその頂点までの最短パスの重みを表す。この方法では未スキャンの頂点を取り上げ、その頂点から出ている全ての(すなわち、隣接する頂点に至る)エッジが緩和される。Dijkstraの方法の直接的な実装では、スキャンの対象に最も低い距離ラベルを有する未スキャンの頂点が選ばれる。エッジ(v,w)を緩和するために、この方法はwのラベルされた距離が、vのラベルされた距離とエッジ(v,w)の実際の重みの合計よりも大きいかどうかをチェックする。そうである場合、この方法はその合計と等しくなるようにwの距離ラベルを更新する。ある頂点がスキャンされると、その距離ラベルがその後に変わらないことを数学的に示すことができる。幾つかの実装では、さらに各スキャン済み頂点w毎に親ラベルを維持し、それによって出エッジが最短パスでwに至る頂点vが示される。この方法で頂点がスキャンされるとき、その頂点について親ポインタによって規定されたパスが最短パスである。
【0025】
Dijkstraの方法は、あるソースから他の全ての頂点までの最短パスを計算するために使用することができるが、あるソースから単一のディスティネーションの頂点までの最短パスを見つけるために使用することもでき、この方法はそのディスティネーションの頂点がスキャンされようとするときに終了する。直感的に、Dijkstraの方法は、ソースの頂点を中心とする円内を探索し、頂点を選んでスキャンすることによりその円の半径を増大していく。特定のディスティネーションまでのパスが求められている場合、この方法は、円の境界上のディスティネーションと共に終了する。図4に示されるように、Dijkstraの方法を介して頂点s402から頂点t404までの最短パスを探索すると、s402からの距離の昇順において可能性のある頂点がスキャンされる結果になる。任意の頂点までの最短パスも、既にスキャンされた頂点を通過するだけである。頂点t404までの距離および最短パスが決定されるとこの方法は停止し、s402からの距離がt404よりも遠い頂点406が未スキャンのまま残される。この時点で、従来のDijkstraの方法では、s402からの距離がt404よりも小さい全ての頂点408がスキャンされている。
【0026】
先に述べたように、Dijkstraの当初の方法は、スキャンされる地点および可能なパスの数が多いので、ソースから特定のディスティネーションまでの最短パスを見つけるのに実際には常に効率的であるとは限らない。その代わりに、最短パス計算をほぼ正しい方向に誘導するために、A*探索を使用することができ、それによって途中でスキャンされる頂点の数を減らすことができる。A*探索は、上述したDijkstraの方法と同様に動作するが、各頂点の推定をさらに維持する。推定は通常、その頂点からディスティネーションまでのパスの実際の重みの下限である。スキャンについてラベルされた頂点を選ぶために、A*探索はラベルされた距離と推定との合計が最小である未スキャンの頂点を選ぶ。Dijkstraの方法の残りは同じままである。頂点にわたる推定の集合は、ディスティネーションに対する「ポテンシャル」関数を形成し、頂点のポテンシャルはその頂点からディスティネーションまでの最短パスの重みの推定である。
【0027】
正確な結果を数学的に保証するために、一般にヒューリスティックな変形は「実現可能な」推定を使用することがある(すなわち、vからwまでのエッジについて、vの推定引くwの推定はエッジの実際の重みを超えない)。これらの下限が実際のパスの重みに近いほど、推定が良くなる。一例を図5に示すが、ここでヒューリスティック探索をs502からt504に誘導するために推定が使われている。ヒューリスティック探索によってスキャンされる頂点の集合505は、t504までの推定距離足すs504からの実際の距離が最小となる頂点である。この例示的ヒューリスティック探索により、Dijkstraの方法の直接的な適用であればスキャンされていたであろう頂点v506およびw508のスキャンが節約された。
【0028】
以前の下限実装で用いられていた共通の技法は、ユークリッドグラフのユークリッド距離のように、その領域で含意された情報を使用して下限を計算している。本発明の実施形態は、その代わりに「ランドマーク」の小さな集合を選択し、全ての頂点について、あらゆるランドマークまでの、およびあらゆるランドマークからの距離を事前計算する。ここで、例示的な1つの技法を、図6を参照して説明する。前処理ステップ602において、集合中の各ランドマークまでの、および各ランドマークからの距離が、各地点(すなわち、対応するグラフ内の頂点)について計算される。ステップ604で、ユーザが開始地点およびディスティネーション地点を入力し、ステップ606で、そのクエリが地図サービスへ送られる。地図サービスはランドマークを使用して、ステップ610で、ソースからディスティネーションまでの最短パスを見つけるためにA*探索を行って、探索によって必要とされるときには下限を計算する。ステップ612で、地図サービスは最短パスをユーザに戻す。
【0029】
ランドマークまでの、およびランドマークからの距離は、ディスティネーションまでの距離について下限推定を計算するのに使用することができる。距離は「三角不等式」(すなわち、任意の頂点uから他の頂点wまでの距離は、uから任意の中間頂点vまでの距離と、vからwまでの距離との和を超えない)を満たし、次のようにランドマークと共に使用して良好な下限を生成することができる。ランドマークLを考える。すると、三角不等式により、uからLまでの距離引くvからLまでの距離は、uからvまでの距離を超えない。同様に、Lからの距離を用いて、Lからvまでの距離引くLからuまでの距離は、uからvまでの距離を超えない。
【0030】
図7を参照すると、本発明の実施形態に従って、ランドマークまでの、およびランドマークからの距離を用いて所定のディスティネーションtについての緊密な下限推定値を計算するための方法が説明されている。この方法では、ステップ702で最初0に設定される最大値を維持することによってある所与の頂点uからtまでの距離に関する緊密な下限が計算される。ステップ704で、ランドマークの集合からあるランドマークが選択される。ステップ706で、uからLまでの距離とtからLまでの距離との差が計算され、ステップ708でこの差が最大値と比較される。最大値よりも大きい場合、ステップ710で最大値がこの値によって更新される。方法は、次いで、ステップ712でLからtまでの距離とLからuまでの距離との差が計算され、ステップ714でこの差が最大値と比較される。最大値よりも大きい場合、ステップ716で最大値がこの値によって更新される。方法は、ステップ718で、さらに考慮すべきランドマークがないかチェックされる。ある場合、ステップ704に戻ることで別のランドマークが選択される。それ以外の場合、方法は終了し、uからtまでの推定距離として最大値が使用される。方法は、グラフ中の各頂点について繰り返し行うことができる。
【0031】
Lまでの、およびLからの距離が事前計算されるので、各差は一定時間に計算され(すなわち、入力のサイズに関わらず、一定量の計算)、一定の数のランドマークが使用される場合、各頂点uの最大差も一定時間内に見つけることもできる。
【0032】
本発明の実施形態は、全てのランドマークを使用しないこともある。これは、必要な計算回数が少なくなるので、より効率的であることがある。ある所与のソースおよびディスティネーションについて、本発明の実施形態は、ソースからディスティネーションまでの距離に関して最も高い下限を与えるランドマークのサブ集合を選択する。最短パスの計算は、下限を計算するときにこのサブ集合に限定される。サブ集合は静的でも動的でもよく、すなわち計算中に更新されてもよい。
【0033】
図8に注目すると、本発明の複数の実施形態によって実行されるA*探索と共にランドマークを使用することの有効性を示すために、頂点およびエッジの集合が図示されている。この例において、ソースs802およびディスティネーションt804は地図上で互いに離れており、ランドマークL806はsから、tとおよそ同じ方向にある。s802からL806までの最短経路は、s802から高速道路までのセグメント808、高速道路のみを使用するセグメント812、および高速道路からLまでのセグメント814から構成されていそうである。さらに、t804までの最短経路は高速道路までの同じセグメント808を辿り、しばらく同じ高速道路のパス812を進むが、早く出て地方道路818を通ってt804に至る。言い換えると、L806の良好な選択では、s802からL806およびt804までの最短パスは最初のセグメント820を共有する。このセグメント上の頂点v824から頂点w826までのエッジ822を考慮されたい。L806までの距離および三角不等式で与えられる下限関数は、v824からL806までの距離の下限が、w826からL806までの距離の下限とv824からw826までのエッジ822の実際の重みとの和に等しいという性質を有することが容易に分かる。s802からt804までの最短パスの共有パスセグメント上の任意の2つの頂点についても同じことが言える。これにより、これらのエッジがスキャンされる最初のものとなるであろう。言い換えると、v824からw826までのエッジの「低減されたコスト」が、そのエッジの実際の重みにv824でのポテンシャルを加え、w826でのポテンシャルを減じたものであると定義され、実際の重みは低減されたコストによって置き換えられるならば、この問題は、推定が実現可能な場合、新しいグラフに関するDijkstraのアルゴリズムに数学的に等価となる。
【0034】
ALT(A*探索、ランドマークおよび三角不等式)アルゴリズムは、ランドマークおよび三角不等式を使用して実現可能な下限を計算する。頂点の小さなサブ集合がランドマークとして選択され、グラフ中の各頂点について、あらゆるランドマークまでの、またはあらゆるランドマークからの距離が事前計算される。ランドマークLを検討する。d(x,y)がxからyまでの距離を表すとすると、三角不等式によりd(v,L)−d(w,L)≦d(v,w)であり、同様に、d(L,w)−d(L,v)≦d(v,w)である。最も緊密な下限を得るには、これらのうち最大のバウンドを、全てのランドマークに対して取ることができる。d(v,w)に関する最良の下限は、vの「前」またはwの「後」に現れるランドマークによって与えられる。
【0035】
s〜tの最短パスの計算の中に、利用可能なランドマークのサブ集合だけを使用するよう推奨される。すなわち、s〜t距離に関して最も高い下限を与えるサブ集合である。これによってパフォーマンスが改善される傾向がある。というのは残りのほとんどのランドマークはこの計算に役立ちそうにないためである。さらなる改良が本明細書に記載されている。
【0036】
ALT技法は、主要段階および前処理段階を備えることができる。主要段階はアクティブなランドマークの動的選択を使用することによって改善することができ、前処理段階は様々なランドマーク選択技法を使用することによって改善することができる。ここにさらに説明したように、前処理中、ALTアルゴリズムはランドマークの集合を選択し、各ランドマークと全ての頂点との間の距離を事前計算する。次いで、これらの距離を使用して、A*探索に基づく最短パスアルゴリズムのために下限を計算する。
【0037】
本発明に従って、アクティブなランドマーク(現在の計算に実際に使用されているもの)を動的に選択することができる。例示的な1つの技法は、元の2つのランドマークで開始し、新しいランドマークが現在アクティブなランドマークに比べ、探索の境界について大幅により良い下限を与えるときにそのランドマークを選択することによって改善する。
【0038】
ALTの一実装は、各最短パス計算について、s〜t距離に関する最良の下限を与えるh個のアクティブなランドマークのサブ集合のみを使用する。このアプローチでは、ランドマークの総数は、利用可能な二次ストレージデバイスの容量によって主に制限される。hの選択は、探索効率と、下限を計算するために検討しなければならないランドマークの数との間のトレードオフに依存する。
【0039】
これは、アクティブなランドマークの集合を動的に更新することによって改善することができる。アクティブなランドマークを動的に選択する例示的な方法のフローチャートを図9に示す。例示的方法は、ステップ900で2つのアクティブなランドマークのみで開始する。1つはランドマークまでの距離を用いて最良のバウンドを与え、もう1つはランドマークからの距離を用いて最良のバウンドを与える。次いで、規則的なあるいは不規則な間隔で定期的に、アルゴリズムを終了するか、あるいはアクティブなランドマークの総数が上限に達するまで新しいランドマークを追加することにより、アクティブな集合の更新が試行される。
【0040】
更新の試行は、ステップ910で、探索(順方向または逆方向)が、現在の下限関数によって決められたディスティネーションまでの距離推定がある一定の値(チェックポイント)よりも小さい頂点vをスキャンするとき常に起こる。この時点で、アルゴリズムはステップ920で、(全てのランドマークを用いて)vからディスティネーション地までの距離の最良の下限が、(アクティブなランドマークのみを用いて)現在の下限より少なくともあるファクタ1+∈(たとえば、∈=0.01)だけ良いかどうかを検証する。そうである場合、ステップ930で、改善されたバウンドをもたらすランドマークがアクティブ化される。そうでない場合、ステップ940で、そのランドマークは使用されない。
【0041】
この計算は、ランドマークからの距離およびランドマークまでの距離をそれぞれ使用してs〜t距離について最良のバウンドを与える、最初の最良のランドマークを用いて開始する。計算が進み、下限を必要とする頂点の地点が変化するに従って、他のランドマークがより良いバウンドを与えることがあり、これらはアクティブ集合にもたらされるべきである。あらゆるランドマークの更新の後、ステップ950で、ポテンシャル関数が変わり、優先キューが更新される。
【0042】
チェックポイントは、計算が始まる前に計算されるsとtの間の距離についての元の下限bによって判定される。たとえば、各探索においてi番目のチェックポイントは値b(10−i)/10を有することができ、推定された下限が元の値の90%に達するときにランドマークを更新することをまず試み、次に80%に達するときに試みられ、以下同様である。この規則はsとtが十分離れている場合にうまく機能する。接近している場合、更新の試行が頻繁に起こり過ぎ、アルゴリズムの実行時間を独占してしまう。そのため、同じ方向の2つの連続した更新の試行の間に、アルゴリズムが少なくとも100個の頂点をスキャンすることが望まれるであろう。
【0043】
アクティブなランドマークの動的選択は効率を高め、アクティブなランドマークの最終的な数が普通、非常に小さい(たとえば、3に近い)ので、実行時間を短縮する。
【0044】
前処理中、ランドマークの集合が選択され、各ランドマークと全ての頂点との間の距離が事前計算される。これらの距離は、A*探索に基づく最短パスアルゴリズムについて下限を計算するために使用される。
【0045】
下限方法の全体的なパフォーマンスを向上する良好なランドマークを見つける幾つかの技法がある。ランドマークを選択する簡単な方法は、ランダムに一定数のランドマーク頂点を選択することである。この「ランダム法」はそれなりにうまく機能する。別のアプローチは、最遠ランドマーク選択アルゴリズムがあるが、これは貪欲に機能する。開始の頂点が選ばれ、それから最も遠い頂点v1が見つけられる。頂点v1がランドマークの集合に加えられる。現在のランドマークの集合から最も遠い頂点(すなわち、集合中の最も近い頂点との距離が最大である頂点)として頂点viが見つけられる。次いで、頂点viがランドマークの集合に加えられる。このプロセスは、一定数のランドマークが見つけられるまで繰り返される。この方法は、「最遠ランドマーク選択方法」と呼ばれる。
【0046】
良好なランドマークを見つけるための別の方法として、「平面ランドマーク選択方法」がある。平面ランドマーク選択方法は一般に、幾何的にディスティネーションの後に位置するランドマークを作り出し、これはグラフと幾何的距離が強く相関される道路グラフや他の幾何的グラフ(非平面グラフを含む)について、通常、良好なバウンドを与える。簡単な平面ランドマーク選択方法は、次のように機能する。まず、平面(または準平面)の埋め込みの中心に最も近い頂点cが見つけられる。埋め込みは、cを中心とする一定の数のパイ形状のセクタに分割され、それぞれがほぼ同数の頂点を含む。各セクタ毎に、中心から最も遠い頂点が選択される。2つのランドマークが互いに接近し過ぎるのを避けるために、セクタAが既に処理され、AのランドマークがAおよびBの境界に近いようにセクタBが処理されている場合、境界に近いBの頂点が省かれる。
【0047】
上記の選択規則は比較的速い。本発明の複数の実施形態によるさらなるランドマーク選択規則には、「回避」および「最大カバー」が含まれる。これらの選択技法はグラフレイアウト情報を使用しないが、従来の選択技法よりもうまく機能する。ランドマークの品質がどのように測定されるかにより、「最適」のランドマーク選択を何通りにも定義できることに留意されたい。たとえば、nがグラフ中の頂点の数とすると、全ての可能なO(n2)個の最短パス計算について検討する頂点の総数を最小化することを目指すことができる。あるいは、検討した頂点の最大数を最小化することができる。
【0048】
本発明による、例示的な1つのランドマーク選択方法は「回避」と呼ばれる。この技法は、既存のランドマークを回避することで「うまくカバーされていない」グラフの領域を特定するよう試みる。「回避」は、ランドマーク品質測定を使用して、別個に、あるいは「局所探索」のコンテキストで使用することができる候補の集合を生成する。「回避」では、頂点の重みw(v)は、特定の頂点までの実際の最短パスと下限との差として決定される。次いで、頂点のサイズs(v)が決定される。これは、「局所探索」により最適化することができる。
【0049】
図10は、本発明による例示的なランドマーク選択方法のフローチャートである。たとえば、ステップ1000で、既に選択されたランドマークの集合Sがあり、追加のランドマークが望まれているものと仮定する。ステップ1005で、ある頂点rをルートにもつ最短パスツリーTrを計算する。次に、ステップ1010で、あらゆる頂点vについて、dist(r,v)とSによって与えられるdist(r,v)の下限との差として定義される重みを計算する。これは、現在の距離推定がどれほど悪いかについての尺度となる。
【0050】
ステップ1015で、あらゆる頂点vについて、vをルートにもつTrのサブツリーであるTvに依存するサイズs(v)を計算する。ステップ1020で、Tvがランドマークを含む場合、ステップ1025でs(v)=0に設定する。そうでない場合、ステップ1030で、s(v)はTv中の全ての頂点の重みの和となる。wを最大サイズの頂点とする。ステップ1040で、wから開始し、葉に到達するまで常に最大サイズをもつ子を辿るようにTwをトラバースする。ステップ1045で、この葉を新しいランドマークとする。
【0051】
このように、wから、そのサブツリー中のある頂点までのパスで、その「背後」ランドマークをもつパスはない。ランドマークの集合にこのサブツリーの葉を追加することにより、「回避」はカバレージを改善しようとする。
【0052】
上で説明したもののように構成的ヒューリスティックスの弱点は、先に選択されたランドマークは、他のランドマークが選択されると、有用性が制限されることがあるということにある。それらをより良いもので置き換えようとすることが望まれる。「局所探索」は、この目的のために使用することができる。探索を実施するには、ある解(すなわち、ランドマークの集合)がどれほど良いかを測定することが望ましい。究極的には、全てのポイント−ポイント間探索の効率をより良くする解を見つけることが目標であるが、これはひどく高価なものである。実際的には、ランドマークの与えられた集合の品質が推定される。
【0053】
推定には、低減されたコストを使用してもよい。このコンテキストにおいて、ランドマークLに対する孤の低減されたコストをl(v,w)−d(L,w)+d(L,v)と定義し、ここで、l(v,w)は孤(v,w)の長さを表す。低減されたコストがゼロである場合、ランドマークは孤をカバーする。ポイント−ポイント間の最短パスアルゴリズムの最良のケースは、ランドマークがパス上のあらゆる孤をカバーするときに起きる。これを念頭に置いて、ある所与の解のコストを、少なくとも1つのランドマークに対してゼロの低減されたコストを有する孤の個数として定義する。よりコストがかからない解の方が良く、ある一定のkについて、可能な限り多くの孤をカバーするk個のランドマークの集合を見つけることが望ましい。
【0054】
所与の頂点がどの孤をカバーするかを判断するには、単一ソースの最短パス計算を実行する必要がある。大きいグラフの場合、これを全ての頂点について行うことは現実的ではない。それゆえ、「回避」を用いて選択された候補ランドマークの小さな集合を使用する。
【0055】
より正確には、図11に関して、ステップ1100で、Cを最初は空である候補の集合とする。ステップ1110で、k個のランドマークを有する解を見つけるために「回避」を実行して開始し、ステップ1120でランドマークの全てがCに追加される。次いで、ステップ1130で、現在の解から確率1/2で各ランドマークを取り除く。取り除かれると、ステップ1140で、解が再びサイズkとなるまで、さらにランドマークを(再び「回避」を用いて)生成する。ステップ1150で、Cにまだない新しい各ランドマークが追加される。ステップ1160で、たとえばCがサイズ4kとなるか、あるいは「回避」が5k回実行される(これらのいずれか先に発生するにしても)までこのプロセスを繰り返す。回避のあらゆる実行が必ずしも新しいランドマークを生成するとは限らないので、アルゴリズムの実行時間を制限することが望ましい。
【0056】
最終的に、k〜4k個の候補ランドマークを有する集合Cがヒューリスティック的に得られることになる。各ランドマークをそれがカバーする孤の集合として解釈して、最大カバー問題の事例を解くことが望ましい。マルチスタートヒューリスティックを使用して近似解を見つけることができる。この問題はNPハードなので、厳密解を求めることは難しい。各繰り返しは、k個のランドマークを有するCのランダムなサブ集合Sで開始し、それに局所探索手順を適用する。集合の品質が決定される。最後に、全ての繰り返しを通じて得られた最良の解を選ぶ。たとえば、繰り返しの回数をlog2k+1に設定する。
【0057】
局所探索は、現在の解に属する1つのランドマークを、現在の解には属さないが候補の集合に属する別のもので置き換えようとする。これは、O(k2)個の可能なスワップのそれぞれに関連付けられるプロフィットを計算することによって働く。プロフィットが負またはゼロのものは破棄される。残っているものの中で、利益に比例した確率でランダムにスワップを選ぶ。次いで、同じ手順が新しい解に適用される。局所探索は、局所的最適点に達するとき、すなわち改善をもたらすようなスワップがなされなくなるときに中止する。局所探索の各繰り返しは0(km)時をとる。ランドマーク生成のこの方法は「最大カバー」と呼ばれる。この最適化フェーズはかなり速い。実行時間は、候補ランドマークの集合を生成するのに使用される「回避」の呼出しによって独占される。
【0058】
ALTアルゴリズムのメモリ効率の良い実装を説明する。スペース効率の良いデータ構造がキャッシング、データ圧縮およびハッシングと組み合わせて使用される。このような技法は、フラッシュメモリにグラフおよびランドマークデータが格納されたポケットPCに使用することができ、約3000万個の頂点を有する北米の道路ネットワークを含め、幾つかの道路ネットワークで使用されてきた。
【0059】
例示的な一実装では、グラフおよびランドマークデータをフラッシュメモリカードに格納する。カードから読み出すことができる最低量(たとえば、512バイトセクタ)は、システム上の制約によって決まる。データはページ単位で読み出され、1つのページは1つまたは複数のセクタを収容する。
【0060】
グラフは、次のフォーマットでフラッシュカードに格納することができる。弧は、弧のテールでソートされたレコードのアレイとして表される。各レコードは、16ビットの弧長(たとえば、秒での移動時間)およびヘッド頂点の32ビットIDを有する。別のアレイは、それぞれが最初の出弧を表すレコードの32ビットインデックスを備える頂点レコードを表す。逆グラフも(同じフォーマットで)格納される。
【0061】
探索によって検討された各頂点に必要な追加情報は、メインメモリ中にミュート可能ノード(mutable node)と呼ばれるレコードに保持される。各頂点は2つのミュート可能ノードを必要とすることができる。1つは順方向探索のためのものであり、もう1つは逆方向探索のためのものである。ミュート可能ノードは4つの32ビットフィールドを有する。すなわちID、距離ラベル、親ポインタおよびヒープ位置である。幾つかのフィールドは、道路ネットワークアプリケーションにおいて生じそうな最大グラフのためにさえ必要以上に大きいが、実装をクリーンかつ柔軟に保つためにレコードをワード整合することが望ましいことがある。ユーザは、ミュート可能ノードの許容される最大数Mを指定する。使用されるRAMの総量はMに比例する。
【0062】
頂点IDを対応するミュート可能ノードにマップするために、少なくとも1.5Mのサイズのテーブルを用いてダブルハッシングを使用する。各探索に1つずつ、2つの優先キューを維持する。最短パスアルゴリズムの場合、マルチレベルのバケット実装が一番速い傾向にある。P2P計算の場合、4ヒープが望ましいことがある。マルチレベルバケットよりは遅いものの、4ヒープはスペースのオーバーヘッドがより少ない(1頂点あたり1ヒープインデックス)。加えて、優先キューは一般に、アプリケーション内でそれほど多くの要素を含まないので、ヒープ操作に関連付けられるオーバーヘッドは、データアクセスに関するものに比して控えめである。プロトタイプ実装では、各ヒープの最大サイズがM/8+100要素に設定された。
【0063】
データは強い局所性を持つことがある。この理由と、データがブロックで読み取られるという理由とにより、アルゴリズムは明示的なキャッシング機構を実施する。ページアロケーションテーブルが物理ページアドレスを(RAMの)バーチャルページアドレスにマップし、その置換戦略はLRUである。すなわち、使用頻度が最も低いページが望まれるならばいつでも追い出される。グラフおよびランドマークに別個のキャッシュが使用される。6個のランドマークキャッシュ(各アクティブなランドマークに1つ)のそれぞれは1MBあり、2個のグラフキャッシュのそれぞれは2MBある。
【0064】
データは、各ランドマーク毎に別個のファイルに格納される。各距離は、32ビットの整数で表される。同じ頂点についての行きと帰りの距離は隣接している。グラフは完全には対称ではないが、2つの距離は普通近い。さらに、似通ったIDを有する頂点は互いに近くにある傾向があるので、それらのランドマークまでの(または、ランドマークからの)距離もまた似通っている。この類似性は圧縮に望ましく、これによってフラッシュカードにより多くのデータが入るようになり、データ読み出し操作が速くなる。
【0065】
隣接するワード(距離)の2つの最上位バイトが同じである傾向にあるので、ほぼ50%の圧縮率が達成できる。ファイルへのランダムアクセスを可能にするために、各ページは別個に圧縮される。圧縮率が変わるので、ファイルはページオフセット付きのディレクトリを有する。
【0066】
このように、本発明の技法は従来技術の技法よりも(より効率が高いので)少ない数の頂点を検討するだけでなく、(動的選択によりアクティブなランドマークの数が低減されるので)各頂点をより素早く処理することもできる。
【0067】
本明細書に記載した様々なシステム、方法および技法は、ハードウェアまたはソフトウェアで、あるいは適切な場合には、両者の組合せで実施することができる。このように、本発明の方法および装置、またはその幾つかの態様または部分は、フロッピー(登録商標)ディスク、CD−ROM、ハードドライブ、または他の任意の機械可読記録媒体などの有形媒体中に具現されたプログラムコード(すなわち、命令)の形態をとることができ、そのプログラムコードがコンピュータなどのマシンにロードされて実行されるときそのマシンが本発明を実施するための装置となる。プログラム可能なコンピュータ上でのプログラムコードの実行の場合、コンピュータは、一般にプロセッサ、プロセッサによって可読の記録媒体(揮発性および不揮発性のメモリおよび/または記憶要素を含む)、少なくとも1つの入力装置、および少なくとも1つの出力装置を含むであろう。1つまたは複数のプログラムが、好ましくはコンピュータシステムと通信可能となるように、ハイレベルの手続き型プログラミング言語またはオブジェクト指向プログラミング言語で実装される。しかし、望むなら、この(1つまたは複数の)プログラムは、アセンブリ言語またはマシン語で実装することもできる。いずれの場合も、言語はコンパイルされるか、インタープリットされた言語とすることができ、ハードウェア実装と組み合わせることができる。
【0068】
本発明の方法および装置はまた、電気配線またはケーブル、光ファイバあるいは他の任意の形態の伝送など、なんらかの伝送媒体を介して伝送されるプログラムコードの形態をとることができ、このプログラムコードは、EPROM、ゲートアレイ、プログラム可能論理回路(PLD)、クライアントコンピュータ、ビデオレコーダなどのマシンによって受け取られ、ロードされて実行されるとき、そのマシンが本発明を実施するための装置となる。汎用プロセッサ上で実装されると、プログラムコードはプロセッサと組み合わせて、本発明の機能を実行するように動作する独自の装置を提供する。
【0069】
本発明について様々な図に示した好ましい実施形態に関連して説明したが、本発明から逸脱することなく、本発明の同様の機能を実行するために他の類似の実施形態を使用してよく、あるいは説明した実施形態に修正または追加を行ってもよいことが理解さるべきである。それゆえ、本発明はどの単一の実施形態にも限定されるべきではなく、添付の特許請求の範囲による広がりおよび範囲で解釈されるべきである。
【図面の簡単な説明】
【0070】
【図1】本発明の一実施形態による、最短パスを計算することができるコンピューティング環境の例示的アーキテクチャを示す簡略化された概略図である。
【図2】本発明の一実施形態による、コンピューティングネットワーク上のコンピューティングデバイスの構成を示す図である。
【図3】本発明の一実施形態による、相互接続された地点のグラフ表現を示す図である。
【図4】最短パス検索方法でスキャンされた地点を示す図である。
【図5】本発明の一実施形態による、ヒューリスティックな最短パス検索方法でスキャンされた地点を示す図である。
【図6】本発明の一実施形態による、2つの地点の間の最短パスを見つける方法を示すフロー図である。
【図7】本発明の一実施形態による、ランドマークを使用してディスティネーション地までの距離を推定する方法を示すフロー図である。
【図8】地点およびあるランドマークの例示的な集合を示す図である。
【図9】本発明による、アクティブなランドマークを動的に選択する例示的な方法のフロー図である。
【図10】本発明による、例示的なランドマーク選択方法のフロー図である。
【図11】本発明による、別の例示的なランドマーク選択方法のフロー図である。
【符号の説明】
【0071】
100 コンピューティングシステム環境
110 コンピュータ
120 処理装置
121 システムバス
122 メモリキャッシュ
130 システムメモリ
131 ROM
132 RAM
133 BIOS
134 オペレーティングシステム
135 アプリケーションプログラム
136 その他のプログラムモジュール
137 プログラムデータ
140 非リムーバブル不揮発性メモリインターフェース
141 ハードディスクドライブ
144 オペレーティングシステム
145 アプリケーションプログラム
146 その他のプログラムモジュール
147 プログラムデータ
150 リムーバブル不揮発性メモリインターフェース
151 磁気ディスクドライブ
152 磁気ディスク
155 光ディスクドライブ
156 光ディスク
160 ユーザ入力インターフェース
161 マウス
162 キーボード
170 ネットワークインターフェース
171 ローカルエリアネットワーク
172 モデム
173 ワイドエリアネットワーク
180 リモートコンピュータ
181 メモリストレージデバイス
185 リモートアプリケーションプログラム
190 ビデオインターフェース
191 モニタ
195 出力周辺インターフェース
196 プリンタ
197 スピーカ
200 コンピューティングデバイス
202 ローカルエリアネットワーク
204 ウェブブラウザ
205 インターネット
206 地図経路サービス
208 地図経路サーバ
210 データベース
302 エッジ
304,306,308,310,312 頂点
402,404,406 頂点
502,504,506,508 頂点
505 集合
802 ソース
804 ディスティネーション
806 ランドマーク
808,812,814,820 セグメント
822 エッジ

【特許請求の範囲】
【請求項1】
地点の集合の中で開始地点からディスティネーション地点までの最短パスを見つける方法であって、
ランドマークの集合を選択することと、
各ランドマークと、前記地点の集合内の地点との間の距離を計算することと、
前記距離に基づいて下限を計算することと、
前記下限に基づいてA*プロセスを実行して最短パスを決定することと
を備えることを特徴とする方法。
【請求項2】
前記ランドマークの集合を選択することは、回避ランドマーク選択方法を用いて前記ランドマークの集合を選択することを備えることを特徴とする請求項1に記載の方法。
【請求項3】
局所探索法を用いて前記回避ランドマーク選択方法を最適化することをさらに備えることを特徴とする請求項2に記載の方法。
【請求項4】
前記ランドマークの集合を選択することは、最大カバー選択方法を用いて前記ランドマークの集合を選択することを備えることを特徴とする請求項1に記載の方法。
【請求項5】
前記A*プロセスは、アクティブなランドマークを使用することを特徴とする請求項1に記載の方法。
【請求項6】
前記アクティブなランドマークを動的に選択することをさらに備えることを特徴とする請求項5に記載の方法。
【請求項7】
前記アクティブなランドマークを動的に選択することは
ランドマークからディスティネーション地点までの距離に関する最良の下限が現在の下限よりも少なくともある所定のファクタだけ優れているかどうかを判定することであって、そうである場合、前記ランドマークをアクティブ化することと
を備えることを特徴とする請求項6に記載の方法。
【請求項8】
ランドマーク選択方法であって、
複数の地点に対応する複数の頂点のサイズを判定することと、
第1のツリーグラフを最大のサイズを有する頂点から開始し、最大のサイズを有する子を辿って葉に到達するまでトラバースすることと、
前記葉をランドマークとしてアクティブ化することと
を備えることを特徴とする方法。
【請求項9】
ある頂点をルートにもつ第2のツリーグラフを判定することと、複数の頂点のサイズを判定するのに先立って、前記第2のツリーグラフ中のあらゆる頂点の重みを判定することとをさらに備えることを特徴とする請求項8に記載の方法。
【請求項10】
各頂点の重みを判定することは、実際の最短パスと、前記第2のツリーグラフ上の下限との間の差を判定することを備えることを特徴とする請求項9に記載の方法。
【請求項11】
前記複数の頂点のサイズは、サイズが判定されている頂点をルートとする前記第2のツリーグラフのサブツリーに基づくことを特徴とする請求項9に記載の方法。
【請求項12】
前記ランドマークに関する局所探索を行うことをさらに備えることを特徴とする請求項8に記載の方法。
【請求項13】
ランドマーク選択方法であって、
(a)複数のランドマークを判定することと、
(b)前記ランドマークを候補の集合に追加することと、
(c)所定の確率でランドマークを廃棄することと、
(d)追加のランドマークを生成することと、
(e)まだ前記集合にない追加のランドマークを前記候補の集合に追加することと、
(f)所定の条件が満たされるまでステップ(c)〜(e)を繰り返すことと
を備えることを特徴とする方法。
【請求項14】
ステップ(a)および(d)は、回避ランドマーク選択プロセスを用いることを備えることを特徴とする請求項13に記載の方法。
【請求項15】
前記所定の確率は、1/2であることを特徴とする請求項13に記載の方法。
【請求項16】
前記所定の条件は、前記候補の集合の1つが所定のサイズに達し、ステップ(d)が所定の回数実行されることであることを特徴とする請求項13に記載の方法。
【請求項17】
(g)前記候補ランドマークの集合を使用して最大カバー選択プロセスを実行することをさらに備えることを特徴とする請求項13に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2006−201174(P2006−201174A)
【公開日】平成18年8月3日(2006.8.3)
【国際特許分類】
【出願番号】特願2006−10438(P2006−10438)
【出願日】平成18年1月18日(2006.1.18)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】