(57)【特許請求の範囲】
【請求項１】
サーバとユーザ端末とがネットワークを介して接続され、ノードとリンクから成る経路探索用道路ネットワークにおいて、始点ノードから、複数の目的地ノー
ドおよび交点ノードを経由し、前記目的地ノードでは、前記目的地ノードごとに予め定めた負荷を、前記負荷の合計が予め定めた制限負荷を超えないように積載
して、前記始点ノードに戻る最適ルートを求めるルート算出システムであって、
前記サーバは、
前記始点ノードと、前記複数の目的地ノードと、前記交点ノードと、前記目的地ノードの前記負荷と、前記制限負荷を含み、距離を重みとしたリンクで接続された重み付きグラフについて、前記始点ノードから前記複数の目的地ノードまでの最短経路を求める最短経路算出手段と、
前記最短経路に同じ経路を含む前記目的地ノードのグループを作成するグループ形成手段と、
前記グループ形成手段により作成された前記グループに含まれる前記目的地ノードの前記負荷の合計が前記制限負荷を超えない場合に、前記始点ノードから、
前記グループに含まれる前記目的地ノードのなかで前記最短経路が最長の前記目的地ノードに行き、前記最短経路の長い順に、前記負荷の合計が前記制限負荷を
超えない範囲で前記目的地ノードを経由し、前記始点ノードに戻るルートを抽出する第１のルート抽出手段と、
前記グループに含まれる前記目的地ノードの前記負荷の合計が前記制限負荷を超える場合に、前記始点ノードから、前記最短経路が最も長い前記グループに含まれる前記目的地ノードに行き、前記最短経路の長い順に、前記負荷の合計が前記制限負荷を超えない範囲で前記目的地ノードを経由し、前記始点ノードに戻る
ルートを抽出し、前記グループ内の全ての前記目的地ノードを経由するまで、前記始点ノードから、未経由の前記目的地ノードのうち前記最短経路が最も長い順
に、前記負荷の合計が前記制限負荷を超えない範囲で未経由の前記目的地ノードを経由し、前記始点ノードに戻るルートの抽出を繰り返す第２のルート抽出手段
と、
を具備することを特徴とするルート算出システム。
【請求項２】
前記サーバは、
前記ユーザ端末に、前記始点ノードと、前記複数の目的地ノードと、前記交点ノードと、前記目的地ノードの前記負荷と、前記制限負荷を入力させることによって、前記重み付きグラフを形成するグラフ形成手段、
を更に具備することを特徴とする請求項１に記載のルート算出システム。
【請求項３】
ユーザ端末とネットワークを介して接続され、ノードとリンクから成る経路探索用道路ネットワークにおいて、始点ノードから、複数の目的地ノードおよび交
点ノードを経由し、前記目的地ノードでは、前記目的地ノードごとに予め定めた負荷を、前記負荷の合計が予め定めた制限負荷を超えないように積載して、前記
始点ノードに戻る最適ルートを求めるサーバであって、
前記始点ノードと、前記複数の目的地ノードと、前記交点ノードと、前記目的地ノードの前記負荷と、前記制限負荷を含み、距離を重みとしたリンクで接続された重み付きグラフについて、前記始点ノードから前記複数の目的地ノードまでの最短経路を求める最短経路算出手段と、
前記最短経路に同じ経路を含む前記目的地ノードのグループを作成するグループ形成手段と、
前記グループ形成手段により作成された前記グループに含まれる前記目的地ノードの前記負荷の合計が前記制限負荷を超えない場合に、前記始点ノードから、
前記グループに含まれる前記目的地ノードのなかで前記最短経路が最長の前記目的地ノードに行き、前記最短経路の長い順に、前記負荷の合計が前記制限負荷を
超えない範囲で前記目的地ノードを経由し、前記始点ノードに戻るルートを抽出する第１のルート抽出手段と、
前記グループに含まれる前記目的地ノードの前記負荷の合計が前記制限負荷を超える場合に、前記始点ノードから、前記最短経路が最も長い前記グループに含まれる前記目的地ノードに行き、前記最短経路の長い順に、前記負荷の合計が前記制限負荷を超えない範囲で前記目的地ノードを経由し、前記始点ノードに戻る
ルートを抽出し、前記グループ内の全ての前記目的地ノードを経由するまで、前記始点ノードから、未経由の前記目的地ノードのうち前記最短経路が最も長い順
に、前記負荷の合計が前記制限負荷を超えない範囲で未経由の前記目的地ノードを経由し、前記始点ノードに戻るルートの抽出を繰り返す第２のルート抽出手段
と、
を具備することを特徴とするサーバ。
【請求項４】
ユーザ端末とネットワークを介して接続され、ノードとリンクから成る経路探索用道路ネットワークにおいて、始点ノードから、複数の目的地ノードおよび交点ノードを経由し、前記目的地ノードでは、前記目的地ノードごとに予め定めた負荷を、前記負荷の合計が予め定めた制限負荷を超えないように積載して、前記始点ノードに戻る最適ルートを求めるサーバによるルート算出方法であって、
前記サーバの制御部が、前記始点ノードと、前記複数の目的地ノードと、前記交点ノードと、前記目的地ノードの前記負荷と、前記制限負荷を含み、距離を重みとしたリンクで接続された重み付きグラフについて、前記始点ノードから前記複数の目的地ノードまでの最短経路を求める最短経路算出工程と、
前記制御部が、前記最短経路に同じ経路を含む前記目的地ノードのグループを作成するグループ形成工程と、
前記制御部が、前記グループ形成工程により作成された前記グループに含まれる前記目的地ノードの前記負荷の合計が前記制限負荷を超えない場合に、前記始点ノードから、
前記グループに含まれる前記目的地ノードのなかで前記最短経路が最長の前記目的地ノードに行き、前記最短経路の長い順に、前記負荷の合計が前記制限負荷を超えない範囲で前記目的地ノードを経由し、前記始点ノードに戻るルートを抽出する第１のルート抽出工程と、
前記制御部が、前記グループに含まれる前記目的地ノードの前記負荷の合計が前記制限負荷を超える場合に、前記始点ノードから、前記最短経路が最も長い前記グループに含まれる前記目的地ノードに行き、前記最短経路の長い順に、前記負荷の合計が前記制限負荷を超えない範囲で前記目的地ノードを経由し、前記始点ノードに戻るルートを抽出し、前記グループ内の全ての前記目的地ノードを経由するまで、前記始点ノードから、未経由の前記目的地ノードのうち前記最短経路が最も長い順に、前記負荷の合計が前記制限負荷を超えない範囲で未経由の前記目的地ノードを経由し、前記始点ノードに戻るルートの抽出を繰り返す第２のルート抽出工程と、
を含むことを特徴とするルート算出方法。
【請求項５】
コンピュータを、請求項３に記載のサーバとして機能させるためのプログラム。
【請求項６】
コンピュータを、請求項３に記載のサーバとして機能させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の目的地を経由するルートを算出するルート算出システム等に関する。
【背景技術】
【０００２】
近年、自動車などの移動体の道案内を行うナビゲーション技術が提案され、予め、ＣＤ−ＲＯＭなどに記録された道路情報に基づき、目的地までの最適なルートを探索し、地図上に表示するナビゲーション・システムが普及している（例えば、特許文献１）。
【０００３】
特許文献１は、ユーザに所望の複数の地点を選択させ、その複数の地点に行く最適なコースを自動的に計算し、地図上などに画面表示する装置を提案している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−８３７５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１において提案されている装置は、複数の目的地を距離的に最短になるように回るルートを算出するものであり、目的地での買い物等による荷物の積載については考慮していない。
すなわち、自転車、自動車、徒歩等で複数の目的地に行き、買い物をするような状況を考慮していない。このような状況においては、荷物が載りきらない、または持ちきれないという場合があり、特許文献１の装置では、最適なルートを算出することができない。ユーザは、自らが荷物の積載を考慮してルート検索を繰り返し、分担する人数や、自宅へ戻る回数を導き出す必要があった。
【０００６】
本発明は、上記の問題を鑑みてなされたものであり、その目的は、複数の目的地ごとに積載する負荷を考慮し、最適なルートを算出するルート算出システム等を提供することである。
【課題を解決するための手段】
【０００７】
前述した目的を達するために第１の発明は、サーバとユーザ端末とがネットワークを介して接続され、ノードとリンクから成る経路探索用道路ネットワークにおいて、始点ノードから、複数の目的地ノードおよび交点ノードを経由し、前記目的地ノードでは、前記目的地ノードごとに予め定めた負荷を、前記負荷の合計が予め定めた制限負荷を超えないように積載して、前記始点ノードに戻る最適ルートを求めるルート算出システムであって、前記サーバは、前記始点ノードと、前記複数の目的地ノードと、前記交点ノードと、前記目的地ノードの前記負荷と、前記制限負荷を含み、距離を重みとしたリンクで接続された重み付きグラフについて、前記始点ノードから前記複数の目的地ノードまでの最短経路を求める最短経路算出手段と、前記最短経路に同じ経路を含む前記目的地ノードのグループを作成するグループ形成手段と、前記グループ形成手段により作成された前記グループに含まれる前記目的地ノードの前記負荷の合計が前記制限負荷を超えない場合に、前記始点ノードから、前記グループに含まれる前記目的地ノードのなかで前記最短経路が最長の前記目的地ノードに行き、前記最短経路の長い順に、前記負荷の合計が前記制限負荷を超えない範囲で前記目的地ノードを経由し、前記始点ノードに戻るルートを抽出する第１のルート抽出手段と、前記グループに含まれる前記目的地ノードの前記負荷の合計が前記制限負荷を超える場合に、前記始点ノードから、前記最短経路が最も長い前記グループに含まれる前記目的地ノードに行き、前記最短経路の長い順に、前記負荷の合計が前記制限負荷を超えない範囲で前記目的地ノードを経由し、前記始点ノードに戻るルートを抽出し、前記グループ内の全ての前記目的地ノードを経由するまで、前記始点ノードから、未経由の前記目的地ノードのうち前記最短経路が最も長い順に、前記負荷の合計が前記制限負荷を超えない範囲で未経由の前記目的地ノードを経由し、前記始点ノードに戻るルートの抽出を繰り返す第２のルート抽出手段と、を具備することを特徴とするルート算出システムである。
【０００８】
第１の発明により、複数の目的地ごとに積載する負荷を考慮し、最適なルートを算出することが可能になる。
【０００９】
また、第１の発明における前記サーバは、前記ユーザ端末に、前記始点ノードと、前記複数の目的地ノードと、前記交点ノードと、前記目的地ノードの前記負荷と、前記制限負荷を入力させることによって、前記重み付きグラフを形成するグラフ形成手段、を更に具備することが望ましい。
これによって、ユーザは、所望の重み付きグラフを形成させ、最適なルートを算出させることができる。
【００１０】
第２の発明は、ユーザ端末とネットワークを介して接続され、ノードとリンクから成る経路探索用道路ネットワークにおいて、始点ノードから、複数の目的地ノードおよび交点ノードを経由し、前記目的地ノードでは、前記目的地ノードごとに予め定めた負荷を、前記負荷の合計が予め定めた制限負荷を超えないように積載して、前記始点ノードに戻る最適ルートを求めるサーバであって、前記始点ノードと、前記複数の目的地ノードと、前記交点ノードと、前記目的地ノードの前記負荷と、前記制限負荷を含み、距離を重みとしたリンクで接続された重み付きグラフについて、前記始点ノードから前記複数の目的地ノードまでの最短経路を求める最短経路算出手段と、前記最短経路に同じ経路を含む前記目的地ノードのグループを作成するグループ形成手段と、前記グループ形成手段により作成された前記グループに含まれる前記目的地ノードの前記負荷の合計が前記制限負荷を超えない場合に、前記始点ノードから、前記グループに含まれる前記目的地ノードのなかで前記最短経路が最長の前記目的地ノードに行き、前記最短経路の長い順に、前記負荷の合計が前記制限負荷を超えない範囲で前記目的地ノードを経由し、前記始点ノードに戻るルートを抽出する第１のルート抽出手段と、前記グループに含まれる前記目的地ノードの前記負荷の合計が前記制限負荷を超える場合に、前記始点ノードから、前記最短経路が最も長い前記グループに含まれる前記目的地ノードに行き、前記最短経路の長い順に、前記負荷の合計が前記制限負荷を超えない範囲で前記目的地ノードを経由し、前記始点ノードに戻るルートを抽出し、前記グループ内の全ての前記目的地ノードを経由するまで、前記始点ノードから、未経由の前記目的地ノードのうち前記最短経路が最も長い順に、前記負荷の合計が前記制限負荷を超えない範囲で未経由の前記目的地ノードを経由し、前記始点ノードに戻るルートの抽出を繰り返す第２のルート抽出手段と、を具備することを特徴とするサーバである。
【００１１】
第３の発明は、ユーザ端末とネットワークを介して接続され、ノードとリンクから成る経路探索用道路ネットワークにおいて、始点ノードから、複数の目的地ノードおよび交点ノードを経由し、前記目的地ノードでは、前記目的地ノードごとに予め定めた負荷を、前記負荷の合計が予め定めた制限負荷を超えないように積載して、前記始点ノードに戻る最適ルートを求めるサーバによるルート算出方法であって、前記サーバの制御部が、前記始点ノードと、前記複数の目的地ノードと、前記交点ノードと、前記目的地ノードの前記負荷と、前記制限負荷を含み、距離を重みとしたリンクで接続された重み付きグラフについて、前記始点ノードから前記複数の目的地ノードまでの最短経路を求める最短経路算出工程と、前記制御部が、前記最短経路に同じ経路を含む前記目的地ノードのグループを作成するグループ形成工程と、前記制御部が、前記グループ形成工程により作成された前記グループに含まれる前記目的地ノードの前記負荷の合計が前記制限負荷を超えない場合に、前記始点ノードから、
前記グループに含まれる前記目的地ノードのなかで前記最短経路が最長の前記目的地ノードに行き、前記最短経路の長い順に、前記負荷の合計が前記制限負荷を超えない範囲で前記目的地ノードを経由し、前記始点ノードに戻るルートを抽出する第１のルート抽出工程と、前記制御部が、前記グループに含まれる前記目的地ノードの前記負荷の合計が前記制限負荷を超える場合に、前記始点ノードから、前記最短経路が最も長い前記グループに含まれる前記目的地ノードに行き、前記最短経路の長い順に、前記負荷の合計が前記制限負荷を超えない範囲で前記目的地ノードを経由し、前記始点ノードに戻るルートを抽出し、前記グループ内の全ての前記目的地ノードを経由するまで、前記始点ノードから、未経由の前記目的地ノードのうち前記最短経路が最も長い順に、前記負荷の合計が前記制限負荷を超えない範囲で未経由の前記目的地ノードを経由し、前記始点ノードに戻るルートの抽出を繰り返す第２のルート抽出工程と、を含むことを特徴とするルート算出方法である。
【００１２】
第４の発明は、コンピュータを、第２の発明のサーバとして機能させるためのプログラムである。
【００１３】
第５の発明は、コンピュータを、第２の発明のサーバとして機能させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体である。
【発明の効果】
【００１４】
本発明により、複数の目的地ごとに積載する負荷を考慮し、最適なルートを算出するルート算出システム等を提供することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態に係る重み付きグラフ例１１の説明図
【図２】本発明の実施形態に係るルート算出システム１の構成例
【図３】サーバ１０および端末（２１、２３）のハードウエア構成図
【図４】ルート算出システム１の処理の流れを示すフローチャート
【図５】各目的地の最短経路データの説明図
【図６】各目的地の最短経路のグループ化の説明図
【図７】積載可能な場合のプログラムの処理（Ｓ２０７）の流れを示すフローチャート
【図８】積載可能な場合のプログラムの処理（Ｓ２０７）を説明する図
【図９】積載不可能な場合のプログラムの処理（Ｓ２０８）の流れを示すフローチャート
【図１０】積載不可能な場合のプログラムの処理（Ｓ２０８）を説明する図
【発明を実施するための形態】
【００１６】
以下、図面に基づいて本発明の好適な実施形態について説明する。
図１は、本発明の実施形態における重み付きグラフ１１の例の説明図である。
【００１７】
図１に示すように、重み付きグラフ１１は、ノードと、距離を重みとするリンクから成るルート探索用のグラフである。
図１に示される重み付きグラフ１１は、一例であり、始点ノードとなる自宅ノードと、複数の目的地ノードである店１〜店８のノードと、自宅ノードと目的地ノード間で通過する交差点ノード（交差点１〜交差点３）から成る。各ノードを接続するリンクに付された数字は、重みである距離の値であり、例えば、自宅ノードと店１ノード間のリンクの重み（距離）は「５」、店１ノードと店２ノード間のリンクの重み（距離）は「１０」である。重みは、距離に限ることはなく、例えば、所要時間であってもよい。
【００１８】
また、図１に示すように、各店（店１〜店８）には、店で購入する購入物の負荷（重さや大きさ）が予め定義されており、例えば、Ｗ、２Ｗ、３Ｗの目安量で表わす。負荷は、実際の容量や重さのデータであってもよい。
【００１９】
本実施形態のルート探索問題は、自宅ノードから、すべての目的地ノードで買い物をして、自宅ノードへ戻るルートを探索することである。ここで、条件として、負荷の合計が予め定めた制限負荷（例えば、４Ｗ）を超えないようにルートを探索する。
例えば、自転車で買い物に行く場合を想定すると、ある一定以上の荷物は載せられないので、その最大の積載量（例えば、４Ｗ）を制限負荷とする。この制限負荷の値はユーザが設定するようにすればよい。
【００２０】
図１に示すようなルート探索用の重み付きグラフ１１は、自宅から店への買い物ルート用に限ることはなく、種々の用途のルート探索用に使用することが可能である。例えば、粗大ごみ収集を例とすると、ゴミ収集センターを自宅ノードとし、特定の日に粗大ごみ収集を申し込んだ人の家を店ノードとし、各家が出す粗大ごみの大きさをノードの負荷とすればよい。
その他、宅配便の集配経路のルート探索用にも使用することが可能である。
【００２１】
重み付きグラフ１１は、例えば、パーソナルコンピュータ等のディスプレイに表示された地図上でユーザが自宅や店等の位置を指示することによりノードを決定し、各ノード間にある道をリンクとし、その道のりを重みとすることにより作成することができる。また、交差点ノードは、ユーザが自宅や店のノードと同様に指定してもよいし、店ノードおよび自宅ノードを結ぶ道のりの間にある交差点を交差点ノードとしてもよい。
【００２２】
次に、本発明の実施形態に係るルート算出システム１の構成を説明する。
図２は、ルート算出システム１の構成を示すブロック図である。
【００２３】
図２に示すように、本実施形態に係るルート算出システム１は、ユーザの端末（２１、２３）とサーバ１０がネットワーク３０を介して接続された構成である。
サーバ１０は、本実施形態に係る後述するルート算出プログラムを記憶する。サーバ１０は、ルート算出プログラムを実行することによって、ルート算出処理を行う。端末（２１、２３）は、例えば、パーソナルコンピュータ等であり、インターネット等のネットワーク３０を介してサーバ１０にアクセスする。
【００２４】
尚、端末（２１、２３）にルート算出プログラムを記憶させて、端末（２１、２３）がルート算出プログラムを実行することによって、ルート算出処理を行うことも可能である。この場合、サーバ１０は不要である。
【００２５】
図３は、サーバ１０のハードウエア構成例を示す図である。
図３に示すように、サーバ１０は、例えば、ＣＰＵ１０１、メモリ１０２、記憶部１０３、表示部１０４、入力部１０５、出力部１０６、通信部１０７がシステムバス１０８を介して接続されて構成される。
【００２６】
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１は、演算装置（四則演算や比較演算等）や、ハードウエアやソフトウエアの動作制御を行う。
【００２７】
メモリ１０２は、ＲＡＭ及びＲＯＭ等のメモリである。ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）や記憶部１０３から読み出されたＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）やアプリケーションプログラム等を記憶し、ＣＰＵ１０１の主メモリやワークエリアとして機能する。
【００２８】
記憶部１０３は、各種データを記憶する装置であり、例えば、ハードディスク装置である。記憶部１０３には、ＣＰＵ１０１が実行するプログラム、プログラム実行に必要なデータ、ＯＳ等が格納される。
後述するルート算出システム１のプログラムは記憶部１０３に格納され、メモリ１０２のＲＡＭ（主メモリ）にロードされ、ＣＰＵ１０１により実行される。
【００２９】
表示部１０４は、表示装置であり、例えば、ＣＲＴモニタ、液晶パネル等のディスプレイ装置である。表示部１０４は、コンピュータのビデオ機能を実現するたまえの論理回路（ビデオアダプタ等）を有する。
【００３０】
入力部１０５は、各種データの入力装置であり、例えば、キーボードや、マウス等のポインティングデバイス等である。出力部１０６は、各種データの出力装置であり、例えば、プリンタである。各種メディアとのデータ入出力を行うドライブ装置を入力部１０５及び出録部１０６として用いることもできる。
【００３１】
通信部１０７は、ネットワーク３０を介して端末（２１、２３）等の外部装置と接続・通信する通信制御装置である。例えば、ＴＣＰ／ＩＰを用いたインターネット通信が可能である。サーバ１０は、この通信部１０７により、ネットワーク３０を介して端末（２１、２３）と通信可能に接続される。
システムバス１０８は、各装置間の制御信号、データ信号等の授受を媒介する経路である。
【００３２】
端末（２１、２３）のハードウエア構成も、サーバ１０のハードウエア構成と同様である。
【００３３】
次に、ルート算出システム１の処理について説明する。以下では、サーバ１０がルート算出プログラムを実行するものとする。
図４は、ルート算出システム１の処理の流れを示すフローチャートである。
【００３４】
ユーザが端末（２１、２３）からネットワーク３０を介してサーバ１０にアクセスすると、サーバ１０は、ルート算出プログラムを起動し、まず、端末（２１、２３）に、始点（自宅）、複数の目的地（店）、通過点（交差点）の各ノードと、各目的地（店）での負荷（荷物）を入力させ、図１に示したような重み付きグラフ１１を作成する（ステップＳ２０１）。また、サーバ１０は、端末（２１、２３）に、積載できる最大積載量を制限負荷として入力させる。
【００３５】
例えば、端末（２１、２３）のディスプレイ画面に地図を表示させ、各ノードの位置を端末（２１、２３）のマウス等のポインティングデバイスで指示させることにより各ノードを入力させる。
この各ノードの位置入力を受けて、サーバ１０は、各ノードを結ぶ地図上の道をリンクとし、その道の道のり（または所要時間）をリンクの重みとする重み付きグラフ１１を生成する。
【００３６】
作成した重み付きグラフ１１は、例えば、各ノードのノード名と、各ノードの各リンクのリンク先のノード名と、各リンクの重み（道のりまたは所要時間）と、各ノードの負荷より成り、作成された重み付きグラフ１１のデータとしてサーバ１０の記憶部１０３に格納される。
【００３７】
次に、サーバ１０は、記憶部１０３に格納された重み付きグラフ１１のデータを元に、経路探索アルゴリズムにより、自宅ノードから各目的地ノードへの探索経路を求め、記憶部１０３に格納する（ステップＳ２０２）。
経路探索アルゴリズムとしては、例えば、ダイクストラ法等の周知のアルゴリズムを使用することができるので、ここでは詳述しない。
【００３８】
図５は、経路探索アルゴリズムによって求められ、記憶部１０３に格納された各目的地（ノード）への最短経路データ３００の例である。図１の重み付きグラフ１１についての各目的地最短経路データである。
各目的地の最短経路データ３００は、目的地３０１、負荷３０３、最短経路３０５等から成る。
図５に示すように、図１に示した重み付きグラフ１１の目的地３０１は、店１〜店８であり、負荷３０３は、各目的地（店）での買い物量（Ｗ、２Ｗ、３Ｗ）である。図５では、負荷３０３はＷ〜３Ｗの目安量で示しているが、実際の容量や重さのデータであってもよい。
【００３９】
最短経路３０５は、自宅ノードから、各目的地ノードである各店までの最短経路であり、Ｓ２０２の経路探索アルゴリズムによって求められたものである。
例えば、店１の最短経路は、「自宅」−「店１」であり、店７の最短経路は、「自宅」−「店２」−「交差点１」−「交差点２」−「店７」である。
【００４０】
次に、サーバ１０は、各目的地ノードのうち、同じ経路を含む目的地ノードをグループ化する（Ｓ２０３）。
図６（ａ）は、各目的地の最短経路のグループ化の説明図である。
グループ化の手順の手順は次の通りである。
【００４１】
まず、各目的地への最短経路において、同じ経路のノードに印を付ける。
すなわち、目的地３０１が「店２」〜「店８」の最短経路３０５は、すべて「店２」を通過点とするので、最短経路３０５の「店２」に「１」という印を付ける。
印「１」を付けたノードの次のリンク先を探索すると、目的地３０１の「店３」、「店７」、「店８」は、更に、「交差点１」を通過点とするので、最短経路３０５の「交差点１」に「２」という印を付ける。同様に、目的地３０１の「店４」〜「店６」は、「店２」の後に「店４」を通過点とするので、最短経路３０５の「店４」に「３」という印を付ける。
【００４２】
印「２」を付けた目的地３０１が「店３」、「店７」、「店８」の各ノードは、次のノードが、それぞれ、「店３」、「交差点２」、「店８」と異なるので、それ以上、印は付かない。
また、印「３」をつけた目的地３０１が「店４」〜「店６」の各ノードも、次のノードが、それぞれ、「無し」、「交差点３」、「店６」と異なるので、それ以上、印は付かない。
【００４３】
印が付かなくなるまで、以上の作業を繰り返し、同じ印が付いた目的地３０１を同一グループとする。
すなわち、目的地ノードが「店３」、「店７」、「店８」の最短経路は、「自宅」−「店２」−「交差点１」という同じ経路を通過するので、グループ化し、例えば、「グループ１」とする。
また、目的地ノードが「店４」、「店５」、「店６」の最短経路は、「自宅」−「店２」−「店４」という同じ経路を通過するので、グループ化し、例えば、「グループ２」とする。
【００４４】
図６（ａ）において、グループ番号ｇ３１１は、グループの番号を示し、各目的地３０１のグループ番号ｇ３１１が記憶部１０３に格納される。また、これ以降の処理で使用するために、グループ内の順序（グループ内順ｒ）３１３を付して、これも記憶部１０３に格納する。
すなわち、目的地「店３」はｇ＝１、ｒ＝１、目的地「店７」はｇ＝１、ｒ＝２、目的地「店８」はｇ＝１、ｒ＝３、目的地「店４」はｇ＝２、ｒ＝１、目的地「店５」はｇ＝２、ｒ＝２、目的地「店６」はｇ＝２、ｒ＝３というようにデータが格納される。
【００４５】
また、図６（ｂ）に示すように、グループ化の処理で抽出されたグループのグループ数Ｇ（図１の重み付きグラフ１１の場合Ｇ＝２）を記憶部１０３に格納しておく。
また、図６（ｃ）に示すように、各グループ番号ｇにグループ化された目的地ノードの数（ルート数Ｒｇ）も、これ以降の処理のために記憶部１０３に格納しておく。すなわち、上記の例の場合、グループ１のルート数Ｒ１、グループ２のルート数Ｒ２ともに「３」が格納される。
【００４６】
また、図６（ｄ）に示すように、Ｓ２０１で端末（２１、２３）から入力された制限負荷（最大積載量）Ｂｍａｘの値も記憶部１０３に格納される。上記の例では、Ｂｍａｘ＝４Ｗとする。
【００４７】
以上の処理（ステップＳ２０３）により、目的地ノードのグループが決定され、以降の処理により、各グループについて最適なルートが算出される。
サーバ１０は、まず、ｇ←１として、グループ１の処理を始める（ステップＳ２０４）。
【００４８】
サーバ１０は、グループｇ内の目的地（店）と通過する目的地（店）の負荷を合計し合計負荷Ｂを求める（ステップＳ２０５）。
上記の例では、グループ１（ｇ＝１）の目的地「店３」、「店７」、「店８」と通過する目的地「店２」の負荷３０３の合計負荷Ｂは「４Ｗ」である。
【００４９】
次に、サーバ１０は、合計負荷Ｂと最大積載量（制限負荷）Ｂｍａｘの値を比較する（ステップＳ２０６）。
そして、合計負荷Ｂが最大積載量Ｂｍａｘ以下である場合（ステップＳ２０６のＹｅｓ）には、積載可能な場合のプログラム（ステップＳ２０７）によりルート算出を行い、合計負荷Ｂが最大積載量Ｂｍａｘを超える場合（ステップＳ２０６のＮｏ）には、積載不可能な場合のプログラム（ステップＳ２０８）によりルート算出を行う。
積載可能な場合のプログラム（ステップＳ２０７）および積載不可能な場合のプログラム（ステップＳ２０８）については後述する。
【００５０】
ステップＳ２０７およびステップＳ２０８の処理後、次のグループについてのルート算出を行うためにｇの値を１インクリメントし（ステップＳ２０９）、ｇの値がグループ数Ｇ以下の場合にはステップＳ２０５〜ステップＳ２１０の処理を繰り返す。
【００５１】
例えば、グループ２（ｇ＝２）の場合は、ステップＳ２０５において合計負荷Ｂを算出すると「６Ｗ」となり、ステップＳ２０６において、合計負荷Ｂが最大積載量（制限負荷）Ｂｍａｘの値を上回るため、ステップＳ２０６のＮｏとなり、積載不可能な場合のプログラム（ステップＳ２０８）が実行される。
【００５２】
以下、積載可能な場合のプログラム（ステップＳ２０７）および積載不可能な場合のプログラム（ステップＳ２０８）について説明する。
図７は、積載可能な場合のプログラムの処理の流れを示すフローチャート、図８は、積載可能な場合の処理の説明図である。
【００５３】
まず、積載可能な場合のプログラムの処理（ステップＳ２０７）について、上記の重み付きグラフ１１のグループ１（ｇ＝１）を例に説明する。
【００５４】
サーバ１０は、まず、グループｇ（ｇ＝１）内の重なっている部分を取り出しＳｇとして格納する（ステップＳ４０１）。
すなわち、図８（ａ）に示すように、上記のグループ１の場合、「自宅」−「店２」−「交差点１」がグループ１内の同一の経路であり、この経路をグループ１の重なる部分Ｓ１（３２０）として記憶部１０３に格納する。
【００５５】
次に、サーバ１０は、グループｇ内の各ルートｒについて処理するために、ｒ←１とする（ステップＳ４０２）。すなわち、グループｇ内の１番目のルート（ｒ＝１）を取りだす。
上記の例では、グループ１（ｇ＝１）の目的地ノード「店３」（ｒ＝１）のルートを取りだす。
【００５６】
次に、サーバ１０は、取りだした１番目のルートにおいて、目的地ノードから自宅までのルートで通過する目的地（店）で買い物をするものとして、店の状態表３４０を購入済みを示す「済」とする（ステップＳ４０３）。
図８（ｂ）は、店の状態表３４０を示す図であり、記憶部１０３にデータとして格納される。
上記のグループ１の目的地ノード「店３」のルート１では、「店３」および「店２」を通過するので、店の状態表３４０の「店２」および「店３」を「済」にする。
【００５７】
次に、サーバ１０は、ルート１の最終目的地からグループｇの重なっている経路部分Ｓｇまでの距離Ｄｒを算出し、重なっている経路部分Ｓｇまでの途中経路ＴＲｒとともに記憶部１０３の途中距離・経路３５０に格納する（ステップＳ４０４）。
【００５８】
図８（ｃ）は、途中距離・経路３５０の説明図である。
途中距離・経路３５０は、ルート番号ｒ３５１、重なっている経路部分Ｓｇまでの距離Ｄｒ３５３、重なっている経路部分Ｓｇまでの途中経路ＴＲｒ３５５から成る。
上記の例の場合、ルート１（ｒ＝１）の重なっている経路部分Ｓｇまでの経路ＴＲ１は「店３」−「交差点１」であり、その距離Ｄ１＝１とともに途中距離・経路３５０として記憶部１０３に格納される。
【００５９】
次に、サーバ１０は、グループｇ内の他のルートについて処理するためにｒを１インクリメントする（ステップＳ４０５）。
そして、グループｇ内のルートｒの最終目的地から、重なっている経路部分Ｓｇまでの距離Ｄｒ３５３と、その途中経路ＴＲｒ３５５を記憶部１０３の途中距離・経路３５０に格納する（ステップＳ４０６）。
図８（ｃ）に示すように、グループ１のルート２（ｒ＝２）の重なっている経路部分Ｓｇまでの経路ＴＲ２は「店７」−「交差点２」−「交差点１」であり、その距離Ｄ２＝２＋５＝７とともに途中距離・経路３５０として記憶部１０３に格納される。
【００６０】
次に、サーバ１０は、途中経路ＴＲｒに含まれる目的地（店）について、店の状態表３４０を、購入済みを示す「済」にする（ステップＳ４０７）。
すなわち、図８（ｂ）の店の状態表３４０に示すように、グループ１のルート２（ｒ＝２）の途中経路ＴＲ２に含まれる「店７」について、店の状態表３４０を「済」にする。
【００６１】
サーバ１０は、ｒの値がグループ内のルート数Ｒｇよりも小さい場合には（ステップＳ４０８のＹｅｓ）、グループ内のすべてのルートｒについてステップＳ４０５〜ステップＳ４０７の処理を繰り返す。
すなわち、図８（ｃ）に示すように、グループ１のルート３（ｒ＝３）についても、重なっている部分Ｓｇまでの経路ＴＲ３（「店８」−「交差点１」）と、その距離Ｄ３＝８が求められ、途中距離・経路３５０として記憶部１０３に格納し（ステップＳ４０６）、途中経路ＴＲ３に含まれる「店８」について、店の状態表３４０を「済」にする。
【００６２】
サーバ１０は、ステップＳ４０８においてｒの値がルート数Ｒｇ以上になった場合、すなわち、グループｇ内のすべてのルートｒについての途中距離・経路３５０の値の格納が完了したら（ステップＳ４０８のＮｏ）、途中距離・経路３５０を参照し、距離Ｄｒ３５３が大きい順にＴＲｒ３５５を取りだして並べ、最後に重なっている経路部分Ｓｇと結合して、グループｇのルート候補ＢＲｇ３３０として格納して、処理を終了する（ステップ４０９）。
【００６３】
図８（ｃ）の途中距離・経路３５０を参照すると、距離Ｄｒ３５３が大きい順は、ルート３、ルート２、ルート１の順であり、その順に途中経路を並べる。すなわち、ＴＲ３−ＴＲ２−ＴＲ１である。これと、重なっている経路部分Ｓ１を結合して、図８（ｄ）に示す経路をグループ１のルート候補ＢＲ１３３０として記憶部１０３に格納する。
グループ１のルート候補ＢＲ１は、「店８」−「交差点１」−「店７」−「交差点２」−「交差点１」−「店３」−「交差点１」−「店２」−「自宅」となる。
【００６４】
次に、積載不可能な場合のプログラム（ステップＳ２０８）について、上記の重み付きグラフ１１のグループ２（ｇ＝２）を例に説明する。
図９は、積載不可能な場合のプログラムの処理の流れを示すフローチャート、図１０は、積載不可能な場合の処理の説明図である。
【００６５】
サーバ１０は、グループｇ内の各ルートｒについて処理するために、ｒ←１とする（ステップＳ５０１）。ｒの値は、１〜グループｇ内のルート数であるＲｇまでインクリメントされ、順次、ルート算出処理が実行される。
【００６６】
次に、サーバ１０は、グループｇのなかでｒ番目に遠い目的地（店）のルートを抽出し、第ｒのルート候補ＢＲｇｒとして記憶部１０３に格納する（ステップＳ５０２）。また、第ｒのルート候補ＢＲｇｒの目的地ノードの数をＪとする。
【００６７】
すなわち、図６（ａ）の各目的地の最短経路をグループ化したデータ３１０から、グループ２（ｇ＝２）に含まれる目的地３０１「店４」、「店５」、「店６」のなかで、始点ノード「自宅」から最も遠い目的地３０１を求める。
始点ノード「自宅」からの距離は、「店４」が１２、「店５」が２１、「店６」が１８なので、「店５」が最も遠い目的地であり、第１のルート候補ＢＲ２１（６００）として、図１０（ａ）に示すように、「店５」から「自宅」へのルートである「店５」−「交差点３」−「店４」−「店２」−「自宅」が格納される。
また、このルートの目的地（店）は「店５」と「店４」と「店２」であり、目的地ノードの数であるＪを３とする。
【００６８】
次に、サーバ１０は、店の状態表３４０について、ルート候補ＢＲｇｒのなかの最も遠い目的地（店）を「済」にする（ステップＳ５０３）。
すなわち、第１のルート候補ＢＲ２１の最も遠い目的地（店）である「店５」の買い物をするものとして、図１０（ｂ）に示すように、店の状態表３４０の「店５」を「済」にする。
【００６９】
そして、サーバ１０は、当該最も遠い目的地（店）の負荷を合計負荷Ｂとする（ステップＳ５０４）。
すなわち、合計負荷Ｂに「店５」の負荷「３Ｗ」を入れる。
【００７０】
次に、サーバ１０は、ルート候補ＢＲｇｒの経路にあるＪ個の目的地（店）で荷物（負荷）が積載できるかを判断するため、変数ｊに１を入れる（ステップＳ５０５）。
そして、ルート候補ＢＲｇｒにおいて始点ノード（自宅）からｊ番目の目的地（店）を探索する（ステップ５０６）。
ここでは、ｊ＝１なので、始点ノードから１番目の目的地（店）である「店２」が抽出される。
【００７１】
次に、サーバ１０は、抽出されたｊ番目の目的地（店）について店の状態表３４０が「済」か否かを判断する（ステップＳ５０７）。
「済」ならば（ステップＳ５０７のＹｅｓ）、既にｊ番目の目的地（店）を経由して荷物（負荷）を積載するルートが算出されていることになり、ステップＳ５１１に進む。
上記の例では、始点ノードから１番目の目的地（店）である「店２」の状態表３４０は「済」であり、ステップＳ５１１に進む。
【００７２】
一方、店の状態表３４０において、ｊ番目の目的地（店）が「済」でないならば（ステップＳ５０７のＮｏ）、サーバ１０は、抽出されたｊ番目の目的地（店）の負荷を合計負荷Ｂに加え、合計負荷Ｂとする（ステップＳ５０８）。
【００７３】
次に、サーバ１０は合計負荷Ｂが最大積載量Ｂｍａｘ以下か否かを判断する（ステップＳ５０９）。
合計負荷Ｂが最大積載量Ｂｍａｘ以下の場合（ステップＳ５０９のＹｅｓ）、サーバ１０は、ｊ番目の目的地（店）での荷物（負荷）を積載可能であると判断し、店の状態表３４０でｊ番目の目的地（店）の状態を「済」にする（ステップＳ５１０）。
【００７４】
次に、サーバ１０は、変数ｊを１インクリメントし（ステップＳ５１１）、ｊがＪ−１以下ならば（ステップＳ５１２のＹｅｓ）、ステップＳ５０６に戻る。すなわち、ルート候補ＢＲｇｒ内の次の目的地（店）での荷物が積載可能か判断する処理を行う。
上記の例では、ｊ＝２となり、ステップＳ５０９において、始点ノード（自宅）から２番目の目的地である「店４」が抽出され、ステップＳ５０７において、店の状態表３４０において、「店４」が「済」でないと判断される（ステップ５０７のＮｏ）。そして、ステップＳ５０８において、合計負荷Ｂに「店４」の負荷（２Ｗ）が付加され、合計負荷Ｂは５Ｗとなり、ステップＳ５０９において、合計負荷Ｂが最大積載量Ｂｍａｘ（４Ｗ）を超えていると判断される（ステップＳ５０９のＮｏ）。
【００７５】
ステップＳ５０９において、合計負荷Ｂが最大積載量Ｂｍａｘを超える場合（ステップＳ５０９のＮｏ）、このルートＢＲｇｒではもう荷物（負荷）を積載できないと判断し、ステップＳ５１３に進む。
サーバ１０は、店の状態表３４０において、グループｇの全ての目的地（店）の状態が「済」になっているか否かを判断する（ステップＳ５１３）。
グループｇの全ての目的地（店）の状態が「済」（ステップＳ５１３のＹｅｓ）ならば処理を終了する。
【００７６】
グループｇの全ての目的地（店）の状態が「済」でない場合（ステップＳ５１３のＮｏ）、サーバ１０は、グループｇについて他のルートの算出処理を行うため、変数ｒの値を１インクリメントし（ステップＳ５１４）、変数ｒがグループｊのルート数Ｒｇ以下ならば（ステップＳ５１５のＹｅｓ）、ステップＳ５０２に戻り、処理を繰り返す。
変数Ｒがグループｇのルート数Ｒｇを超えた場合（ステップＳ５１５のＮｏ）には、処理を終了する。
【００７７】
上記の例では、ステップＳ５１３において、グループ２（ｇ＝２）の目的地である「店４」と「店６」の店の状態が「済」ではないので（ステップＳ５１３のＮｏ）、サーバ１０は、ｒを１インクリメントしてｒ＝２とし（ステップＳ５１４）、ｒの値がグループ２のルート数Ｒ２の３以下なので、ステップＳ５０２に戻る。
【００７８】
ステップＳ５０２では、グループ２内で２番目に遠い目的地である「店６」を抽出し、そのルート（「店６」−「店４」−「店２」−「自宅」）を図１０（ｃ）に示すように、第２のルートＢＲ２２（６１０）として記憶部１０３に格納する。このルートＢＲ２２（６１０）に含まれる目的地（店）の数Ｊは３である。
次に、ステップＳ５０３において、ルートＢＲ２２（６１０）で最も遠い目的地である「店６」について、店の状態表３４０を「済」にし、ステップＳ５０４において、合計負荷Ｂを「店６」の負荷「Ｗ」とする。
【００７９】
次に、ｊ＝１とし（ステップＳ５０５）とし、ステップＳ５０６において、始点ノード（自宅）から１番目の目的地「店２」を抽出し、ステップＳ５０７において、「店２」の状態が「済」であると判断する（ステップＳ５０７のＹｅｓ）。
ステップＳ５１１に進み、変数ｊの値を１インクリメントしｊ＝２とし、ステップＳ５０６に戻る。
【００８０】
ステップＳ５０６において、始点ノード（自宅）から２番目の目的地「店４」を抽出し、ステップＳ５０７において、「店４」の状態が「済」でないと判断（ステップＳ５０７のＮｏ）し、ステップＳ５０８において、合計負荷Ｂに２番目の目的地である「店４」の負荷「２Ｗ」を付加する。これによって、合計負荷Ｂは「３Ｗ」となる。
ステップＳ５０９において、合計負荷Ｂが最大積載量Ｂｍａｘ（「４Ｗ」）以下と判定し（ステップＳ５０９のＹｅｓ）、ステップＳ５１０によって、図１０（ｄ）に示すように、「店４」の状態を「済」とする。
【００８１】
ステップＳ５１１において、変数ｊの値がインクリメントされ「３」になるが、ステップＳ５１２において、ｊの値がＪ−１(＝２)より大きくなり（ステップＳ５１２のＮｏ）、ステップＳ５１３において、店の状態表３４０の、グループ２の全ての目的地（店）である「店４」、「店５」、「店６」が全て「済」であり（ステップＳ５１３のＹｅｓ）、処理を終了する。
【００８２】
以上の処理により、上記の例のグループ１のように、グループ内の全ての目的地ノードの負荷（荷物）を積載可能な場合のルート算出処理（図４のステップＳ２０７）、および、上記の例のグループ２のように、グループ内の全ての目的地ノードの負荷（荷物）が最大積載量を超える場合のルート算出処理（図４のステップＳ２０８）が完了する。
【００８３】
図４のステップＳ２０９に戻り、サーバ１０は、すべてのグループｇについて処理を行うために、変数ｇの値を１インクリメントし、ｇの値がグループ数Ｇ以下である場合には（ステップＳ２１０のＹｅｓ）、ステップＳ２０５に戻り、ステップＳ２０５〜Ｓ２１０の処理を繰り返す。
【００８４】
変数ｇの値がグループ数Ｇを超えた場合には（ステップＳ２１０のＮｏ）、サーバ１０は、店の状態表３４０を検索し、「済」でない目的地（Ｍｉ；ｉ＝１、・・・Ｉ）を検出する（ステップＳ２１１）。以下の処理では、グループに含まれない目的地（店）のルート抽出を行う。
上記の例では、図１０（ｄ）に示すように、「店１」が「済」ではないので、「店１」がＭ１となり、Ｉ＝１である。
【００８５】
サーバ１０は、Ｍｉが含まれるルートをＢＲＧ＋ｉとして、記憶部１０３に格納する。
上記の例では、「店１」が含まれるルートである「店１」−「自宅」がＢＲ３（７００）（Ｇ＝２、ｉ＝１）として、図１０（ｅ）に示すように格納される。
【００８６】
次に、サーバ１０は、ステップＳ２１１で検出された「済」でないすべての目的地（店）のルートを抽出するため、変数ｉを１インクリメントし、ｉの値がＩ以下ならばステップＳ２１３〜Ｓ２１５の処理を繰り返す。
【００８７】
全ての目的地（店）についてのルートを抽出したら（ステップＳ２１５のＮｏ）、記憶部１０３に格納されているすべての候補ルートＢＲを出力し（ステップＳ２１６）、処理を終了する。
【００８８】
図１０（ｆ）に示すように、以上の処理で算出されたルート候補ＢＲ１、ＢＲ２１、ＢＲ２２、ＢＲ３が荷物の積載を考慮して抽出されたルートとなる。
この場合、始点ノードである自宅から最短経路で最初の目的地ノード（店）へ行き、複数の目的地ノード（店）で負荷（荷物）を積載しながら始点ノード（自宅）へ戻るものとする。
【００８９】
以上の処理により、複数の目的地において、積載する負荷（荷物）を考慮しながら始点ノードに戻るルートを算出することが可能になる。
【００９０】
以上、添付図面を参照しながら本発明にかかるルート算出システム等の好適な実施形態について説明したが、本発明はかかる例に限定されない。当業者であれば、特許請求の範囲に記載された技術的思想の範疇内において各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【符号の説明】
【００９１】
１………ルート算出システム
１０………サーバ
１１………重み付きグラフ
２１、２３………端末
３０………ネットワーク
【図１】
0005636985.tif 000002
【図２】
0005636985.tif 000003
【図３】
0005636985.tif 000004
【図４】
0005636985.tif 000005
【図５】
0005636985.tif 000006
【図６】
0005636985.tif 000007
【図７】
0005636985.tif 000008
【図８】
0005636985.tif 000009
【図９】
0005636985.tif 000010
【図１０】
0005636985.tif 000011