説明

最短経路探索プログラム、最短経路探索プログラムを記憶したコンピュータ読み取り可能な記録媒体、最短経路探索装置、最短経路探索方法

【課題】対象物が転回可能とする場合等も含めて、最短経路を検索することができない。
【解決手段】最短経路探索プログラムであって、複数のノードと、該複数のノード間を接続するとともに、通過する際のコストが関連付けられた複数のエッジとで形成された経路において、該複数のノードに含まれるスタートノードからゴールノードまでの最短経路を探索する最短経路探索プログラムであって、前記各ノードに接続された1または複数のエッジ間の進行の可否を示す進行可否識別情報が、前記各ノードを識別するノード識別情報と、前記各エッジを識別するエッジ識別情報と、に関連付けて記憶された進行可否情報を取得する進行可否情報取得手段、及び、前記進行可否情報及び前記各エッジに関連付けられたコストに基づいて、前記スタートノードから前記ゴールノードまでの最短経路を取得する最短経路取得手段、としてコンピュータを機能させる。

【発明の詳細な説明】
【技術分野】
【0001】
最短経路探索プログラム、最短経路探索プログラムを記憶したコンピュータ読み取り可能な記録媒体、最短経路探索装置、最短経路探索方法に関する。
【背景技術】
【0002】
いわゆる最短経路検索アルゴリズムとして、いわゆるA*アルゴリズムが知られている。A*アルゴリズムとは、複数のノードと、当該複数のノード間を接続するとともに、通過する際のコストが関連付けられた複数のエッジとで形成された経路において、スタートノードからゴールノードまでの最短経路を探索するためのアルゴリズムである。
【0003】
当該アルゴリズムの概要は、まず初期化処理で、スタートノードの値を0、他のノードの値を未定義または∞に設定する。その後、確定されていないノードのうち、最小の値を持つノードを見つけ確定ノードとし、当該確定ノードから延伸するエッジをそれぞれチェックし、確定ノードまでのコストと、エッジのコストの和を計算する。当該コストの和がそのノードの現在の値よりも小さければ更新する。上記のような初期化処理以降の処理を、確定ノードがピックアップされるまで繰り返すものである。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記のようなアルゴリズムにおいては、ノードの複数回の登録を認めると、同じ経路を無限に回り続けてしまう可能性があることから、一度確定されたノードを再度登録(確定)させることはできない。よって、あるノードに相当する場所において、対象物を転回(ターン)させる場合も含めて最短経路を求めることはできない。
【0005】
また、仮想空間において、ある程度の長さを有する対象物、例えば、電車や胴体の長い動物など、を上記経路に沿って移動させる場合であって、あるノードで接続される一方のエッジと他方のエッジの角度が所定の角度以下である場合には、通常では当該対象物が曲がらないような不自然な角度で対象物が曲がりつつ、当該一方のエッジと他方のエッジを通過してしまう場合もある。
【0006】
本発明は、上記に鑑みて、あるノードに相当する場所においては、対象物が転回可能とする場合も含めて、最短経路を検索することのできる最短経路探索装置、最短経路探索方法、最短経路探索プログラムを実現することを目的とする。
【0007】
また、本発明の他の目的は、所定のエッジのペアで構成される経路について通過可能か否かを設定し、当該設定に応じた最短経路を検索することのできる最短経路探索装置、最短経路探索方法、最短経路探索プログラムを実現することである。
【課題を解決するための手段】
【0008】
本発明の最短経路探索プログラムは、複数のノードと、該複数のノード間を接続するとともに、通過する際のコストが関連付けられた複数のエッジとで形成された経路において、該複数のノードに含まれるスタートノードからゴールノードまでの最短経路を探索する最短経路探索プログラムであって、前記各ノードに接続された1または複数のエッジ間の進行の可否を示す進行可否識別情報が、前記各ノードを識別するノード識別情報と、前記各エッジを識別するエッジ識別情報と、に関連付けて記憶された進行可否情報を取得する進行可否情報取得手段、及び、前記進行可否情報及び前記各エッジに関連付けられたコストに基づいて、前記スタートノードから前記ゴールノードまでの最短経路を取得する最短経路取得手段、としてコンピュータを機能させる。
【0009】
本発明の最短経路探索装置は、複数のノードと、該複数のノード間を接続するとともに、通過する際のコストが関連付けられた複数のエッジとで形成された経路において、該複数のノードに含まれるスタートノードからゴールノードまでの最短経路を探索する最短経路探索装置であって、前記各ノードに接続された1または複数のエッジ間の進行の可否を示す進行可否情報が、前記各ノードを識別するノード識別情報と、前記各エッジを識別するエッジ識別情報と、に関連付けて記憶された進行可否情報を取得する進行可否情報取得手段と、前記進行可否情報及び前記各エッジに関連付けられたコストに基づいて、前記スタートノードから前記ゴールノードまでの最短経路を取得する最短経路取得手段と、を有する。
【0010】
本発明の最短経路探索方法は、複数のノードと、該複数のノード間を接続するとともに、通過する際のコストが関連付けられた複数のエッジとで形成された経路において、該複数のノードに含まれるスタートノードからゴールノードまでの最短経路を探索する最短経路探索方法であって、前記各ノードに接続された1または複数のエッジ間の進行の可否を示す進行可否情報が、前記各ノードを識別するノード識別情報と、前記各エッジを識別するエッジ識別情報と、に関連付けて記憶された進行可否情報を取得し、前記進行可否情報及び前記各エッジに関連付けられたコストに基づいて、前記スタートノードから前記ゴールノードまでの最短経路を取得する。
【図面の簡単な説明】
【0011】
【図1】本発明の実施の形態における最短経路探索装置の構成の概要について説明するための図である。
【図2】本実施の形態における最短経路探索装置の機能的な構成について説明するための図である。
【図3】本実施の形態における経路の一例を示す図である。
【図4A】図3に示した経路が探索されていく様子を順次示す図である。
【図4B】図3に示した経路が探索されていく様子を順次示す図である。
【図4C】図3に示した経路が探索されていく様子を順次示す図である。
【図4D】図3に示した経路が探索されていく様子を順次示す図である。
【図4E】図3に示した経路が探索されていく様子を順次示す図である。
【図4F】図3に示した経路が探索されていく様子を順次示す図である。
【図4G】図3に示した経路が探索されていく様子を順次示す図である。
【図4H】図3に示した経路が探索されていく様子を順次示す図である。
【図4I】図3に示した経路が探索されていく様子を順次示す図である。
【図4J】図3に示した経路が探索されていく様子を順次示す図である。
【図4K】図3に示した経路が探索されていく様子を順次示す図である。
【図4L】図3に示した経路が探索されていく様子を順次示す図である。
【図4M】図3に示した経路が探索されていく様子を順次示す図である。
【図4N】図3に示した経路が探索されていく様子を順次示す図である。
【図4O】図3に示した経路が探索されていく様子を順次示す図である。
【図5】本実施の形態におけるパス情報記憶部に記憶される経路に関する情報の形式の一例を示す図である。
【図6】本実施の形態における進行可否情報記憶部に記憶される進行可否情報の形式の一例を示す図である。
【図7】本実施の形態におけるコスト情報記憶部に記憶されるコスト情報の形式の一例を示す図である。
【図8】図2に示した進行可能コース情報取得部の機能的な構成について説明するための図である。
【図9】図2に示した登録コース情報設定部の機能的な構成について説明するための図である。
【図10】本実施の形態における最短経路探索装置の処理のフローについて説明するための図である。
【図11】図10に示したS105のフローの詳細について説明するための図である。
【図12】本実施の形態において求められた最短経路の一例を示す図である。
【発明を実施するための形態】
【0012】
以下、本発明の実施形態について、図面を参照しつつ説明する。なお、図面については、同一又は同等の要素には同一の符号を付し、重複する説明は省略する。
【0013】
図1は、本発明の実施の形態における最短経路探索装置の構成の概要について説明するための図である。図1に示すように、最短経路探索装置100は、例えば、CPUやメモリ等で構成されるコンピュータで構成され、例えば、制御部101、記憶部102、通信部103、操作部104、表示部105を有する。なお、制御部101、記憶部102、通信部103、操作部104、表示部105は、内部バス106により互いに接続される。
【0014】
制御部101は、例えば、CPU、MPU等であって、記憶部102に格納されたプログラムに従って動作する。記憶部102は、例えば、ROMやRAM、ハードディスク等の情報記録媒体で構成され、制御部101によって実行されるプログラムを保持する情報記録媒体である。また、記憶部102は、制御部101のワークメモリとしても動作する。なお、当該プログラムは、例えば、ネットワーク(図示なし)を介して、ダウンロードされて提供されてもよいし、または、CD−ROMやDVD−ROM等のコンピュータで読み取り可能な各種の情報記録媒体によって提供されてもよい。
【0015】
通信部103は、当該最短経路探索装置100を、ネットワークを介して、他の情報処理装置(図示なし)やデータベース(図示なし)等と接続する。操作部104は、例えば、キーボード、マウス、または、コントローラ等で構成され、ユーザーの指示操作に応じて、当該指示操作の内容を制御部101に出力する。表示部105は、例えば、液晶ディスプレイ、有機ELディスプレイ等であって、制御部101からの指示に従い、情報を表示する。なお、上記最短経路探索装置100の構成は、一例であってこれに限定されるものではない。
【0016】
図2は、本実施の形態における最短経路探索装置の機能的な構成について説明するための図である。図2に示すように、最短経路探索装置100は、パス情報記憶部201、進行可否情報記憶部202、コスト情報記憶部203、初期コース情報設定部204、登録コース情報記憶部205、最小登録コース情報抽出部206、確定コース情報記憶部207、進行可能コース情報取得部208、登録コース情報設定部209を有する。
【0017】
なお、下記においては、説明の簡略化のため、主に、図3に示した経路において、最短経路が探索される場合を例として説明する。また、図4A乃至図4Oは、図3に示したコースにおいて、最短経路が決定されるまでのコース情報が順次、登録コース情報記憶部205及び確定コース情報記憶部207に記憶されていく様子を図3に示した経路とともに示す。また、図4A乃至図4Oにおいては、登録コース情報記憶部205及び確定コース情報記憶部207をそれぞれ、登録リスト及び確定リストとして示した。なお、コース情報、登録コース情報記憶部205及び確定コース情報記憶部207の詳細については後述する。
【0018】
また、図3において、ノードBについては、エッジE1またはE2からノードBを介してエッジE2またはE1に進行することはできず、また、ノードDについては、エッジE3またはE4からノードBを介してエッジE4またはE2に進行することはできないものとして設定される場合を想定する。更に、図3において、ノードEは、転回可能、つまり、エッジE5からノードEを介してエッジE5に進行してもよいし、E6からノードEを介してE6に進行してもよいものとして設定される場合を想定する。図4においては、ノードから進行できる方向を矢印(斜線、ドットはなし)で示し、登録済みのコース(登録コース情報記憶部205に記憶されたコース)を矢印(ドットを付加した矢印)、確定済みのコース(確定コース情報記憶部207に記憶されたコース)を矢印(ドットを付加した矢印)で示した。
【0019】
パス情報記憶部201は、ノードを示すノード識別情報(ノードID)と、ノードとノードを接続するエッジを示すエッジ識別情報(エッジ識別情報)とを関連付けて記憶する。具体的には、例えば、図5に示すように、ノードID毎に、各ノードに接続されるエッジを示すエッジIDを表の形式で記憶する。これにより、図3に示すようなノードとエッジで形成される経路(パス)が表される。
【0020】
例えば、図5において、ノードID、Sのノード(スタートノードに相当する)は、エッジID、E0のエッジと関連付けられて記憶されているので、スタートノードはエッジE0と接続されることを示す。ノードID、Aのノード(ノードA)は、エッジID、E0(エッジE0)のエッジと関連付けられて記憶されているので、ノードAは、エッジE0と接続されていることを示す。つまり、エッジE0は、スタートノードとノードAを接続することを示す。以下同様にして、図5に示すような経路が表される。
【0021】
進行可否情報記憶部202は、ノードID、エッジIDのペア、当該エッジのペアを当該ノードを介して移動可能か否かを示す移動可否識別情報(進行可否ID)を、関連付けて記憶する。具体的には、例えば、図6に示すように、ノードID毎に、エッジIDのペア、進行可否識別情報(進行可否ID)としての0または1の値を、表の形式で記憶する。なお、進行可否IDについては、例えば、0の値が移動不可を示し、1の値が進行可能を示す。
【0022】
また、例えば、図6においては、ノードID、BについてエッジID、E1とE1のペアが、進行可否ID、0(進行不可を示す)として記憶されているので、ノードBについて、E1から進入してE1に進出するような移動、つまり、転回ができないことを表す。また、ノードID、BについてエッジID、E1とE2のペアが、進行可否ID、0として記憶されているので、E1またはE2から進入して、ノードBを通過してE2またはE1に進出することはできないことを表す。一方、ノードID、BについてエッジID、E1とE3のペアが、進行可否ID、1(進行可能を示す)として記憶されているので、E1またはE3から進入して、ノードBを通過してE3またはE1に進出することはできないことを表す。
【0023】
コスト情報記憶部203は、エッジIDに関連付けて、各エッジを通過する際に要するコストを示すコスト情報を記憶する。ここで、コストとは、例えば、距離や時間等に相当する数値である。具体的には、図7に示すように、エッジID毎に、コスト情報としての数値を記憶する。例えば、図7においては、エッジID、E0(エッジE0)についてコスト情報、1が関連付けて記憶されているので、エッジE0を通過するには、コスト1(例えば、エッジE0の距離が1を示す)を要することを表す。
【0024】
初期コース情報設定部204は、スタート時におけるコース情報(初期コース情報)を設定し、後述する登録コース情報記憶部205に記憶する。ここで、コース情報とは、ノードを示すノードID、当該ノードからの進行方向のエッジを示すエッジID、当該ノードに到達するまでに要した累積コスト情報、進入元を示すエッジの進入元エッジIDを関連付けて構成される。
【0025】
具体的には、初期コース情報設定部204は、上記例の場合、パス情報記憶部201を参照し、ノードID、Sに関連付けて記憶されているエッジID、E0を取得する。なお、スタート時においては、累積コストは0であり、進入元のエッジは存在しないので、累積コスト情報として0、進入元エッジIDはなしとなる。よって、初期コース情報設定部204は、初期コース情報として、ノードID、S、エッジID、E0、累積コスト情報、0、進入元エッジID、なしとして、登録コース情報記憶部205に記憶する。この場合の様子を、図4Aに示した。
【0026】
なお、ここで、説明の簡略化のため、各コース情報を、上記説明の順に、S−E0、コスト:0、IN:−のようにして示すものとして説明する。また、各コース情報に含まれるノードを示すノードIDと当該ノードからの進行方向のエッジを示すエッジIDを用いて、各コース情報をノードID−エッジIDで称する。つまり、例えば、ノードを示すノードIDがA、当該ノードからの進行方向のエッジを示すエッジIDがE4のコース情報を、A−E4のコース情報と称する。
【0027】
最小登録コース情報抽出部206は、登録コース情報記憶部205に記憶されているコース情報のうち、最小のコスト情報を有するコース情報を取得する。また、取得した最小のコース情報を登録コース情報記憶部205から削除する。具体的には、例えば、図4Aに示した場合、登録コース情報記憶部205には、1のコース情報のみ記憶されているので、この場合は、当該1のコース情報を取得する。また、例えば、図4Cに示した場合、コスト情報が最小であるのは、A−E4のコース情報であることから、当該A−E4のコース情報を取得するとともに、当該A−E4のコース情報を登録コース情報記憶部205から削除する。なお、後述するように、当該A−E4のコース情報は、次に、図4Dに示すように、確定コース情報記憶部207に記憶される。
【0028】
確定コース情報記憶部207は、最小登録コース情報抽出部206により抽出されたコース情報を、順次追加して記憶する。例えば、図4Bにおいては、上述のように図4Aにおいて、S−E0のコース情報が抽出されるので、当該S−E0のコース情報が、確定コース情報記憶部207に記憶される。
【0029】
進行可能コース情報取得部208は、確定コース情報記憶部207に新たに記憶されたコース情報(確定コース情報)に基づいて、当該確定コース情報で示されるコース(確定コース)の次に進行可能なコースを示す進行可能コース情報を取得する。以下、図8を用いて具体的に説明する。
【0030】
図8は、進行可能コース情報取得部の機能的な構成を説明するための図である。図8に示すように、進行可能コース情報取得部208は、接続先情報取得部301、エッジ情報取得部302、コスト算出部303、進入元エッジ情報取得部304、ゴール判定部305、進行可能コース情報判定部306を有する。
【0031】
接続先情報取得部301は、確定コース情報に基づき、当該確定コースの接続先のノードIDを取得する。例えば、確定コース情報が、S−E0、コスト:0、IN:−の場合、図5を参照すると、ノードSの他にノードE0に関連付けてノードAが記憶されていることがわかることから、接続先情報としてノードID、Aを取得する。
【0032】
エッジ情報取得部302は、上記取得された接続先ノードのノードID、確定コース情報に含まれるエッジID、進行可否情報記憶部202に記憶された進行可否情報に基づいて、進行可能なエッジ情報(コース情報)を取得する。具体的には、例えば、上記例の場合、接続先ノードのノードIDとしてA、エッジIDとしてE0が取得される。そして、ノードID、A、エッジID、E0について、進行可否情報が1のエッジIDとして、E1及びE4が記憶されていることから、当該エッジID、E1及びE4を取得する。
【0033】
コスト算出部303は、確定コース情報に含まれる累積コストを取得するとともに、確定コース情報に含まれるエッジIDを取得する。そして、当該エッジIDに基づいて、コスト情報記憶部203を参照し、当該エッジIDに関連して記憶されているコスト情報を取得し、当該コスト情報と確定コース情報に含まれる累積コストの和を算出する。例えば、上記例の場合、確定コース情報が、S−E0、コスト:0、IN:−であることから、確定コース情報に含まれる累積コスト0を取得するとともに、エッジID、E0を取得する。そして、コスト情報記憶部203にはエッジID、E0についてコスト1が関連付けて記憶されていることから、累積コスト0とコスト1の和である1を算出する。
【0034】
進入元エッジ情報取得部304は、確定コース情報に含まれるエッジIDを進入元エッジ情報として取得する。上記例の場合、確定コース情報が、S−E0、コスト、0、IN:−であることから、エッジID、E0を進入元エッジIDとして取得する。
【0035】
ゴール判定部305は、接続先情報取得部301で取得される接続先のノードがゴールノードであるか否かを、パス情報記憶部201を参照して、判定する。ゴールノード(ノードID、G)であると判定した場合には、処理を終了する。一方、ゴールノードでないと判定した場合には、後述するように処理を継続する。
【0036】
進行可能コース情報判定部306は、取得された進行可能コース情報と同一のノードID、及び、エッジIDを含む確定コース情報が既に確定コース情報記憶部207に記憶されているか否かを判定する。記憶されていると判定した場合には、当該進行可能コース情報は、登録コース情報設定部209に送信しない。一方、記憶されていないと判定した場合には、当該進行可能コース情報を登録コース情報設定部209に送信する。なお、当該登録コース情報設定部209の機能的な構成については後述する。例えば、図4Nに示した場合、確定コース情報C−E6、コスト:11、IN:E2の接続先ノードEとノードEからのエッジE5、E6で示されるコース情報コースE−E5及びE−E6が得られるが、当該コース情報は、既に確定コース情報記憶部207に記憶されている(確定済みである)ことから、登録コース情報記憶部205に記憶されることはない。
【0037】
上記のようにして、進行可能コース情報取得部208は、接続先情報取得部301で取得されたノードID、エッジ情報取得部302で取得されたエッジID、コスト算出部303で算出された累積コスト、進入元エッジID、進入元エッジIDを、1または複数の進行可能コース情報として取得する。例えば、上記例の場合、進行可能コース情報として、A−E1、コスト、1、IN:E0、及び、A−E4、コスト、1、IN:E0を取得する。なお、当該進行可能コース情報の形式は、コース情報の形式と同様であるとはいうまでもない。
【0038】
登録コース情報設定部209は、上記進行可能コース情報及び登録コース情報記憶部205に記憶されている登録コース情報に基づいて、進行可能コース情報を登録コース情報記憶部205に記憶させる。以下、図9を用いて、具体的に説明する。図9は、登録コース情報設定部209の機能的構成について説明するための図である。図9に示すように、登録コース情報設定部209は、同一コース判定部401、累積コスト判定部402を有する。
【0039】
同一コース判定部401は、進行可能コース情報に含まれるノードID及びエッジIDに基づき、登録コース情報記憶部205を参照して、当該ノードID及びエッジIDと同一のノードID及びエッジIDを有するコース情報が登録コース情報記憶部205に記憶されているか否かを判定する。そして、記憶されていないと判定した場合には、当該進行可能コース情報を登録コース情報記憶部205に新たに追加して記憶する。
【0040】
例えば、上記例の場合、進行可能コース情報A−E1、コスト、1、IN:E0、及び、A−E4、コスト、1、IN:E0と同一のノードID及びエッジIDは、登録コース情報記憶部205に記憶されていないため、当該2の進行可能コース情報が登録コース情報記憶部205に記憶される。この場合の様子を、図4Bに示した。
【0041】
一方、記憶されていると判定した場合には、累積コスト判定部402は、当該進行可能コース情報に含まれる累積コスト情報が、同一のノードID及びエッジIDを有するコース情報の累積コスト情報より、小さいか否かを判定する。そして、小さいと判定した場合には、当該コース情報に代えて、当該進行可能コース情報を記憶する。なお、ここで、当該コース情報を当該進行可能コース情報に更新する構成としてもよいことはいうまでもない。
【0042】
一方、累積コスト判定部402は、当該進行可能コース情報に含まれる累積コスト情報が、同一のノードID及びエッジIDを有するコース情報の累積コスト情報以上であると判定した場合には、上記コース情報の更新等は行わない。つまり、登録コース情報記憶部205に記憶されている登録コース情報は、変更・更新されない。例えば、図4Eに示した場合、進行可能コース情報はD−E5、コスト:5、IN:E3が取得されるが、確定コース情報として、D−E5、コスト:5、IN:E4が記憶されていることから、当該確定コース情報の更新等は行われない。
【0043】
なお、上記で示した構成は一例であって、これに限定されるものではない。例えば、上記で示した構成と実質的に同一の構成、同一の作用効果を奏する構成又は同一の目的を達成することができる構成で置き換えることができる。
【0044】
次に、本実施の形態における最短経路探索装置100の処理のフローについて説明する。図10は、本実施の形態における最短経路探索装置の処理のフローについて説明するための図である。
【0045】
初期コース情報設定部204は、スタート時におけるコース情報(初期コース情報)を設定し(S101)、登録コース情報記憶部205に記憶する(S102)。
【0046】
登録コース情報記憶部205は、スタート時には、上記のように初期コース情報を登録コース情報として記憶する。また、後述するS106で進行可能コース情報と同一ノードID及びエッジIDを含む登録コース情報が登録コース情報記憶部205に含まれていないと判定された場合には、当該進行可能コース情報を記憶する。更に、後述するS107で進行可能コース情報に含まれる累積コストが、進行可能コース情報と同一のノードID及びエッジIDを含む登録コース情報の累積コストが小さいと判定された場合には、当該進行可能コース情報を当該進行可能コース情報に代えて記憶等する(S102)が、詳細には後述する。
【0047】
最小登録コース情報抽出部206は、登録コース情報記憶部205に含まれる1または複数のコース情報(登録コース情報)のうち、最小の累積コスト情報を含む登録コース情報を抽出する(S103)。なお、上述のように複数の登録コース情報に含まれている累積コスト情報が同一の場合には、当該複数の登録コース情報のうちいずれかの登録コース情報を任意に抽出する。また、抽出された登録コース情報が登録コース情報記憶部205から削除されることは前述のとおりである。
【0048】
確定コース情報記憶部207は、S103で抽出された登録コース情報を確定コース情報記憶部207に記憶する(S104)。進行可能コース情報記憶部は、S104で記憶された確定コース情報に基づいて、1または複数の進行可能コース情報を取得する(S105)。
【0049】
同一コース判定部401は、進行可能コース情報と同一のノードID及びエッジIDを含む登録コース情報が、登録コース情報記憶部205に含まれているか否かを判定する。含まれていると判定した場合には、S107に進む。一方、含まれていないと判定した場合には、当該進行可能コース情報を登録コース情報記憶部205に記憶させる(S106)。
【0050】
累積コスト判定部402は、当該進行可能コース情報に含まれる累積コスト情報が、同一のノードID及びエッジIDを有するコース情報の累積コスト情報より、小さいか否かを判定する。小さいと判定した場合には、当該進行可能コース情報を、当該同一のノードID及びエッジIDを有するコース情報に代えて、登録コース情報記憶部205に記憶させる。一方、小さくないと判定した場合には、S103に戻る(S107)。
【0051】
次に、上記S105について、図11を用いてより詳細に説明する。接続先情報取得部301は、確定コース情報に基づき、確定コースの接続先のノードIDを取得する(S201)。ゴール判定部が、S201で取得されたノードIDがゴールノードを示すID、Gである場合には、処理を終了する。一方、S201で取得されたノードIDがゴールノードを示すID、Gでない場合には、S203に進む(S202)。
【0052】
エッジ情報取得部302は、上記取得された接続先ノードのノードID、確定コース情報に含まれるエッジID、進行可否情報記憶部202に記憶された進行可否情報に基づいて、進行可能なエッジ情報を取得する(S203)。進行可能コース情報判定部306は、S201とS203で取得されたノードID及びエッジIDと、同一のノードID、及び、エッジIDを含む確定コース情報が既に確定コース情報記憶部207に記憶されているか否かを判定する(S204)。記憶されていると判定した場合には、S103に進む。一方、記憶されていないと判定した場合には、S205に進む。
【0053】
コスト算出部303は、確定コース情報に含まれる累積コスト情報を取得するとともに、確定コース情報に含まれるエッジIDを取得する。そして、当該エッジIDに基づいて、コスト情報記憶部203を参照し、当該エッジIDに関連して記憶されているコスト情報を取得し、当該コスト情報と上記確定コース情報に含まれている累積コストの和を算出する(S205)。進入元エッジ情報取得部304は、確定コース情報に含まれるエッジIDを進入元エッジ情報として取得する(S206)。
【0054】
上記のように、S105においては、進行可能コース情報取得部208は、S201で取得されたノードID、S203で取得されたエッジID、S204で算出された累積コスト、S205で取得された進入元エッジIDを、1または複数の進行可能コース情報として取得する。なお、上記図10及び図11に示したフローは、一例であって、上記フローと実質的に同一のフロー、同一の作用効果を奏するフロー又は同一の目的を達成することができるフローで置き換えることができる。
【0055】
次に、本実施の形態における最短経路探索装置100の処理のフローの具体例として、図4A乃至図4Oを用いて説明する。なお、この場合における経路は、図3に示したものであることは前述のとおりである。
【0056】
まず、スタート時においては、図4Aに示すように、初期コース情報設定部204は、スタート時におけるコース情報、S−E0、コスト:0、IN:−を設定し、登録コース情報記憶部205に記憶させる。
【0057】
次に、図4Bに示すように、最小登録コース情報抽出部206は、登録コース情報記憶部205に記憶されたコース情報、S−E0、コスト:0、IN:−を抽出し、確定コース情報記憶部207に記憶するとともに、登録コース情報記憶部205から削除する。なお、この場合、登録コース情報記憶部205には、上記1のコース情報のみしか記憶されていないことから、上記コース情報を抽出することはいうまでもない。
【0058】
また、進行可能コース情報取得部208は、コース情報、S−E0、コスト:0、IN:−に基づいて、当該確定コース情報で示されるコース(確定コース)の次に進行可能なコースを示す進行可能コース情報A−E1、コスト:1、IN:E0及びA−E4、コスト:1、IN:E0を取得する。なお、この場合、登録コース情報記憶部205には、コース情報が記憶されていないことから、当該2の進行可能コース情報が、登録コース情報として、登録コース情報記憶部205に記憶される。
【0059】
次に、最小登録コース情報抽出部206は、最小の累積コスト情報を含む登録コース情報を抽出する。なお、ここでは、登録可能コース情報A−E1、コスト:1、IN:E0、及び、A−E4、コスト:1、IN:E0は、いずれの累積コスト情報が同じ1であることから、最小登録コース情報抽出部206は、いずれの登録コース情報を抽出してもよい。よって、ここでは、最小登録コース情報抽出部206が、登録コース情報A−E1、コスト:1、IN:E0が抽出したものとして説明する。
【0060】
次に、図4Cに示すように、上記抽出された登録コース情報A−E1、コスト:1、IN:E0が、確定コース情報記憶部207に、確定コース情報として、確定コース情報、S−E0、コスト:0、IN:0に追加して、記憶されるとともに、登録コース情報記憶部205から削除される。また、進行可能コース情報取得部208は、確定コース情報A−E1、コスト:1、IN:E0に基づいて、進行可能コース情報B−E3、コスト:4、IN:E1を取得する。
【0061】
具体的には、確定コース情報に含まれるA−E1の接続先はノードBであり、進行可否情報によりエッジE1及びE2はノードBを介して進行不可であることから、進行可能コース情報のノードIDはBとなり、エッジ情報はE3となる。また、進行可能コース情報の累積コスト情報は、確定コース情報A−E1、コスト:1、IN:E0に含まれる累積コスト情報1に、エッジID、E1のコスト3を加算して、4となる。また、進入元エッジIDは、確定コース情報に含まれるエッジID、E1より、E1となる。また、登録コース情報記憶部205には、ノードID、BかつエッジID、E3を有する登録コース情報は含まれていないことから、当該進行可能コース情報B−E3、コスト:4、IN:E1を登録コース情報として、登録コース情報記憶部205に追加して記憶する。次に、最小登録コース情報抽出部206は、登録コース情報記憶部205に記憶されている登録コース情報のうち最小のコスト情報を有する登録コース情報、つまり、A−E4、コスト:1、IN:E0を抽出する。
【0062】
次に、図4Dに示すように、上記抽出された登録コース情報A−E4、コスト:1、IN:E0が、確定コース情報記憶部207に、確定コース情報として、追加して、記憶されるとともに、登録コース情報記憶部205から削除される。また、進行可能コース情報取得部208は、確定コース情報A−E4、コスト:1、IN:E0に基づいて、進行可能コース情報D−E5、コスト:5、IN:E4を取得する。
【0063】
具体的には、確定コース情報に含まれるA−E4の接続先はノードDであり、E3及びE4はノードDを介して進行不可であることから、進行可能コース情報のノードIDはDとなり、エッジ情報はE5となる。また、進行可能コース情報の累積コスト情報は、確定コース情報A−E4、コスト:1、IN:E0に含まれる累積コスト情報1に、エッジID、E4のコスト4を加算して、5となる。また、進入元エッジIDは、確定コース情報に含まれるエッジID、E4より、E4となる。また、登録コース情報記憶部205には、ノードID、DかつエッジID、E5を有する登録コース情報は含まれていないことから、当該進行可能コース情報D−E5、コスト:5、IN:E4を登録コース情報として、登録コース情報記憶部205に追加して記憶する。
【0064】
次に、最小登録コース情報抽出部206は、登録コース情報記憶部205に記憶されている登録コース情報のうち最小のコスト情報を有する登録コース情報、つまり、B−E3、コスト:4、IN:E1を抽出する。
【0065】
次に、図4Eに示すように、上記抽出された登録コース情報B−E3、コスト:4、IN:E1が、確定コース情報記憶部207に、確定コース情報として、追加して、記憶されるとともに、登録コース情報記憶部205から削除される。また、進行可能コース情報取得部208は、同様にして、確定コース情報B−E3、コスト:4、IN:E1に基づいて、進行可能コース情報D−E5、コスト:6、IN:E4を取得する。
【0066】
しかしながら、登録コース情報記憶部205には、ノードID、DかつエッジID、E5を有する登録コース情報D−E5、コスト:5、IN:E4(同一コース情報)が既に含まれている。したがって、上記進行可能コース情報の累積コスト情報が、当該同一コース情報の累積コスト情報より小さいか否かを判定する。この場合、進行可能コース情報の累積コスト情報が同一コース情報の累積コスト情報以上であるので、変更はされない。
【0067】
次に、最小登録コース情報抽出部206は、登録コース情報記憶部205に記憶されている登録コース情報のうち最小のコスト情報を有する登録コース情報、つまり、D−E5、コスト:5、IN:E4を抽出する。
【0068】
以下、同様に、図4Fに示すように、最小登録コース情報抽出部206により、抽出された登録コース情報D−E5、コスト:5、IN:E4が、確定コース情報記憶部207に、確定コース情報として、追加して、記憶されるとともに、登録コース情報記憶部205から削除される。また、登録コース情報記憶部205には、進行可能コース情報E−E5、コスト:6、IN:E5、及び、進行可能コース情報E−E6、コスト:6、IN:E5が、登録コース情報として、登録コース情報記憶部205に追加して記憶される。
【0069】
次に、図4Gに示すように、最小登録コース情報抽出部206により、抽出された登録コース情報E−E5、コスト:6、IN:E5が、確定コース情報記憶部207に、確定コース情報として、追加して、記憶されるとともに、登録コース情報記憶部205から削除される。また、登録コース情報記憶部205には、進行可能コース情報D−E3、コスト:7、IN:E5、及び、進行可能コース情報D−E4、コスト:7、IN:E5が、登録コース情報として、登録コース情報記憶部205に追加して記憶される。
【0070】
次に、図4Hに示すように、最小登録コース情報抽出部206により、抽出された登録コース情報E−E6、コスト:6、IN:E5が、確定コース情報記憶部207に、確定コース情報として、追加して、記憶されるとともに、登録コース情報記憶部205から削除される。また、登録コース情報記憶部205には、進行可能コース情報C−E2、コスト:16、IN:E6、及び、進行可能コース情報C−E7、コスト:16、IN:E6が、登録コース情報として、登録コース情報記憶部205に追加して記憶される。
【0071】
次に、図4Iに示すように、最小登録コース情報抽出部206により、抽出された登録コース情報D−E3、コスト:7、IN:E5が、確定コース情報記憶部207に、確定コース情報として、追加して、記憶されるとともに、登録コース情報記憶部205から削除される。また、登録コース情報記憶部205には、進行可能コース情報B−E1、コスト:9、IN:E3、及び、進行可能コース情報B−E2、コスト:9、IN:E3が、登録コース情報として、登録コース情報記憶部205に追加して記憶される。
【0072】
次に、図4Jに示すように、最小登録コース情報抽出部206により、抽出された登録コース情報D−E4、コスト:7、IN:E5が、確定コース情報記憶部207に、確定コース情報として、追加して、記憶されるとともに、登録コース情報記憶部205から削除される。また、登録コース情報記憶部205には、進行可能コース情報A−E0、コスト:11、IN:E4が、登録コース情報として、登録コース情報記憶部205に追加して記憶される。
【0073】
次に、図4Kに示すように、最小登録コース情報抽出部206により、抽出された登録コース情報B−E1、コスト:9、IN:E3が、確定コース情報記憶部207に、確定コース情報として、追加して、記憶されるとともに、登録コース情報記憶部205から削除される。なお、ここで、進行可能コース情報A−E0、コスト:12、IN:E1が取得されるが、登録コース情報A−E0、コスト:11、IN:E4が、登録コース情報記憶部205に記憶されていることから、当該登録コース情報は変更されない。
【0074】
次に、図4Lに示すように、最小登録コース情報抽出部206により、抽出された登録コース情報B−E2、コスト:9、IN:E3が、確定コース情報記憶部207に、確定コース情報として、追加して、記憶されるとともに、登録コース情報記憶部205から削除される。また、登録コース情報記憶部205には、進行可能コース情報C−E6、コスト:11、IN:E2が、登録コース情報として、登録コース情報記憶部205に追加して記憶されるとともに、登録コース情報C−E7、コスト:16、IN:E6が、取得された進行可能コース情報C−E7、コスト:11、IN:E2に変更される。
【0075】
次に、図4Mに示すように、最小登録コース情報抽出部206により、抽出された登録コース情報A−E0、コスト:11、IN:E4が、確定コース情報記憶部207に、確定コース情報として、追加して、記憶されるとともに、登録コース情報記憶部205から削除される。また、登録コース情報記憶部205の内容に変更はない。進行可否情報より、スタートノードではターンできないからである。
【0076】
次に、図4Nに示すように、最小登録コース情報抽出部206により、抽出された登録コース情報C−E6、コスト:11、IN:E2が、確定コース情報記憶部207に、確定コース情報として、追加して、記憶されるとともに、登録コース情報記憶部205から削除される。なお、このとき、確定コース情報C−E6、コスト:11、IN:E2の接続先ノードEとノードEからのエッジE5、E6で示されるコースE−E5及びE−E6は、既に確定コース情報記憶部207に記憶されていることから、E−E5やE−E6のコースについての進行可能コース情報が生成され、登録コース情報記憶部205に記憶されることはない。
【0077】
次に、図4Oに示すように、最小登録コース情報抽出部206により、抽出された登録コース情報C−E7、コスト:11、IN:E2が、確定コース情報記憶部207に、確定コース情報として、追加して、記憶されるとともに、登録コース情報記憶部205から削除される。なお、このとき、登録コース情報C−E7、コスト:11、IN:E2の接続先のノードはゴールノードであることから、処理が終了する。
【0078】
以上より、確定コース情報記憶部207に確定コース情報が記憶され、最短経路が求められる。具体的には、確定コース情報記憶部207に記憶された確定コース情報のエッジ情報と、進入元エッジ情報を新たに記憶された順(図4の下から上に向かう順序)に参照することにより、最短経路を求めることができる。例えば、図4Oの場合、最後に記憶された確定コース情報のエッジ情報E7で進入元エッジ情報はE2である。エッジ情報E2を有する確定コース情報はB−E2、コスト:9、IN:E3であり、進入元エッジ情報はE3である。したがって、ゴールノードかららE7、E2、E3の順に最短経路を決定することができる。以下同様にして、エッジID、G(ゴールノードに相当)から順に、E7、E2、E3、E5、E5、E4、E0、S(スタートノードに相当)の最短経路が求められる。なお、図12に、このようにして求められた最短経路を示す図である。
【0079】
上記のように構成することで、CG(Computer Graphics)やゲームプログラム等で実現される仮想空間内における経路において、あるノードに相当する場所では、対象物を転回(ターン)可能とするとともに、当該経路の最短経路を求めることができる。
【0080】
また、上記のような仮想空間において、ある程度の長さを有する対象物、例えば、電車や胴体の長い動物など、を上記経路に沿って移動させる場合であって、あるノードで接続される一方のエッジと他方のエッジの角度が所定の角度以下である場合には、通常では当該対象物が曲がらないような不自然な角度で対象物が曲がりつつ、当該一方のエッジと他方のエッジを通過してしまう場合もある。この場合、ノードに接続される一方のエッジと他方のエッジとの角度が所定の角度以下である場合には、当該ノードを当該一方のエッジと他方のエッジとの間を通過不可と設定することにより、最短経路を探索する際に当該ノードを当該一方のエッジと他方のエッジとの間の通過を避けた最短経路を求めることができる。これにより、上記のような対象物が、不自然な角度に折れ曲がりつつ進行するような経路の設定を避けることができ、結果として、上記のような対象物の不自然な移動の表示を避けることができる。また、当該経路に沿って、建物や壁が配置されること等により、当該一方のエッジと当該他方のエッジとの角度が所定の角度以下である場合には、狭い場所に配置された建物等にめり込んで進行するような経路の設定を避けることができる。
【0081】
なお、本発明は、上記実施の形態に限定されるものではなく、種々の変形が可能である。例えば、上記実施の形態で示した構成と実質的に同一の構成、同一の作用効果を奏する構成又は同一の目的を達成することができる構成で置き換えることができる。具体的には、例えば、上記最短経路探索装置100は、更に、仮想空間内に配置された経路に沿って対象物を移動させる対象物移動制御部や、当該対象物を仮想空間内に表示させる画像を生成する画像生成部等と組み合わせて、仮想空間において当該対象物を上記最短経路探索装置100によって求められた経路に沿って移動させる動画像を生成する動画像生成装置や、仮想空間において、上記経路に沿って、キャラクタ(上記対象物に相当する)を移動させるゲーム装置として用いてもよい。更に、当該動画像生成装置またはゲーム装置と、表示部105とを組み合わせて、当該表示部105に表示される仮想空間において、上記経路に沿って、キャラクタ(上記対象物に相当する)を移動させる動画像を表示させるように構成してもよい。
【符号の説明】
【0082】
100 最短経路探索装置、101 制御部、102 記憶部、103 通信部、104 操作部、105 表示部、106 内部バス、201 パス情報記憶部、202 進行可否情報記憶部、203 コスト情報記憶部、204 初期コース情報設定部、205 登録コース情報記憶部、206 最小登録コース情報抽出部、207 確定コース情報記憶部、208 進行可能コース情報取得部、209 登録コース情報設定部、301 接続先情報取得部、302 エッジ情報取得部、303 コスト算出部、304 進入元エッジ情報取得部、305 ゴール判定部、401 同一コース判定部、402 累積コスト判定部。

【特許請求の範囲】
【請求項1】
複数のノードと、該複数のノード間を接続するとともに、通過する際のコストが関連付けられた複数のエッジとで形成された経路において、該複数のノードに含まれるスタートノードからゴールノードまでの最短経路を探索する最短経路探索プログラムであって、
前記各ノードに接続された1または複数のエッジ間の進行の可否を示す進行可否識別情報が、前記各ノードを識別するノード識別情報と、前記各エッジを識別するエッジ識別情報と、に関連付けて記憶された進行可否情報を取得する進行可否情報取得手段、及び、
前記進行可否情報及び前記各エッジに関連付けられたコストに基づいて、前記スタートノードから前記ゴールノードまでの最短経路を取得する最短経路取得手段、
としてコンピュータを機能させるための最短経路探索プログラム。
【請求項2】
前記最短経路取得手段において、更に、
前記ノード識別情報、前記エッジ識別情報、該エッジ識別情報で識別されるエッジに到達するまでの累積コストを示す累積コスト情報、該エッジに進入してきた進入元のエッジを示す進入元エッジ情報を含む1または複数のコース情報を、登録コース情報として、記憶する登録コース情報記憶手段、
前記登録コース情報記憶手段に記憶された1または複数の登録コース情報のうち、最小の累積コスト情報を含む登録コース情報を抽出する最小登録コース情報抽出手段、
前記抽出された登録コース情報を、確定コース情報として、確定コース情報記憶手段に追加して記憶する確定コース情報記憶手段、
前記進行可否情報に基づいて、前記追加して記憶された確定コース情報により示されるコースの次に進行可能なコースを示すコース情報である1または複数の進行可能コース情報を取得する進行可能コース情報取得手段、及び、
前記登録コース情報記憶手段に記憶された登録コース情報及び前記取得された1または複数の進行可能コース情報に基づいて、前記進行可能コース情報を登録コース情報として、前記登録コース情報記憶手段に追加して記憶、または、前記登録コース情報を更新する登録コース情報設定手段、
としてコンピュータを機能させるための請求項1記載の最短経路探索プログラム。
【請求項3】
前記最短経路探索プログラムは、更に、
初期の前記コース情報を設定するとともに、該初期のコース情報を、登録コース情報として、前記登録コース情報記憶手段に記憶させる初期コース情報設定手段、としてコンピュータを機能させるための請求項2記載の最短経路探索プログラム。
【請求項4】
前記進行可能コース情報取得手段は、前記確定コース情報に基づいて、前記1または複数の進行可能コース情報に含まれる累積コスト情報を算出するコスト算出手段を含むことを特徴とする請求項2または3記載の最短経路探索プログラム。
【請求項5】
前記進行可能コース情報取得手段は、前記確定コース情報記憶手段に記憶された確定コース情報と同一のノード識別情報及びエッジ識別情報以外のノード識別情報とエッジ識別情報を含む1または複数の進行可能コース情報を取得することを特徴とする請求項2乃至4のいずれかに記載の最短経路探索プログラム。
【請求項6】
前記登録コース情報設定手段は、前記取得された1または複数の進行可能コース情報の累積コスト情報が、前記取得された1または複数の進行可能コース情報と同一のノード識別情報とエッジ識別情報を含む前記登録コース情報の累積コスト情報より小さい場合には、前記取得された1または複数の進行可能コース情報に基づいて、前記取得された進行可能コース情報と同一のノード識別情報とエッジ識別情報を含む前記登録コース情報を更新することを特徴とする請求項2乃至5のいずれかに記載の最短経路探索プログラム。
【請求項7】
請求項1乃至6のいずれかに記載の最短経路探索プログラムを記憶したコンピュータ読み取り可能な記録媒体。
【請求項8】
複数のノードと、該複数のノード間を接続するとともに、通過する際のコストが関連付けられた複数のエッジとで形成された経路において、該複数のノードに含まれるスタートノードからゴールノードまでの最短経路を探索する最短経路探索装置であって、
前記各ノードに接続された1または複数のエッジ間の進行の可否を示す進行可否識別情報が、前記各ノードを識別するノード識別情報と、前記各エッジを識別するエッジ識別情報と、に関連付けて記憶された進行可否情報を取得する進行可否情報取得手段と、
前記進行可否情報及び前記各エッジに関連付けられたコストに基づいて、前記スタートノードから前記ゴールノードまでの最短経路を取得する最短経路取得手段と、
を有する最短経路探索装置。
【請求項9】
複数のノードと、該複数のノード間を接続するとともに、通過する際のコストが関連付けられた複数のエッジとで形成された経路において、該複数のノードに含まれるスタートノードからゴールノードまでの最短経路を探索する最短経路探索方法であって、
前記各ノードに接続された1または複数のエッジ間の進行の可否を示す進行可否識別情報が、前記各ノードを識別するノード識別情報と、前記各エッジを識別するエッジ識別情報と、に関連付けて記憶された進行可否情報を取得し、
前記進行可否情報及び前記各エッジに関連付けられたコストに基づいて、前記スタートノードから前記ゴールノードまでの最短経路を取得する、
ことを特徴とする最短経路探索方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4A】
image rotate

【図4B】
image rotate

【図4C】
image rotate

【図4D】
image rotate

【図4E】
image rotate

【図4F】
image rotate

【図4G】
image rotate

【図4H】
image rotate

【図4I】
image rotate

【図4J】
image rotate

【図4K】
image rotate

【図4L】
image rotate

【図4M】
image rotate

【図4N】
image rotate

【図4O】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate