(57)【特許請求の範囲】
【請求項１】
列車ダイヤのダイヤデータを保有するダイヤデータテーブル、リンクで結ばれる始点ノードと終点ノードの関係、前記リンクの表す運行条件を定義したデータを格納するリンク定義テーブル、駅の着発時刻をノードとし前記運行条件をリンクとしたグラフを格納したグラフデータテーブル、前記グラフにおけるリンクの始点ノード、終点ノード、および前記ノードから流出するリンクの数を示す出次数、及び前記ノードへ流入するリンクの数を示す入次数を格納した双方向隣接リストテーブル、前記グラフ内の進路競合の原因となる運行条件である閉路を記憶する閉路抽出結果テーブル、および、前記閉路を構成しないノードの登録および削除が実施される除去ノードバッファを有するデータベースと、
前記ダイヤデータから各駅の着発時刻を得てノードとし、前記リンク定義テーブルから前記ノード間の運行条件を得て前記ノード間のリンクとしたグラフを生成して前記グラフを前記グラフデータテーブルに格納するグラフ生成部と、
前記グラフデータテーブルよりグラフデータを取得して、各ノードにおける、前記各ノードを終点とするリンクの前記始点ノードと、前記各ノードを始点とするリンクの前記終点ノードと、前記出次数と、前記入次数とからなる双方向隣接リストを作成して前記双方向隣接リストテーブルに格納する双方向隣接リスト生成部と、
前記双方向隣接リストテーブルから双方向隣接リストを取得し、前記リストにおける閉路の有無を判定し、閉路が存在する場合は前記閉路を前記閉路検出結果テーブルに格納する閉路検出演算実行部と、
前記閉路を、進路競合が発生しているものとして駅名、列車番号、運行条件とともに表示する表示部と、
を備える、進路競合検出装置。
【請求項２】
前記閉路検出演算実行部は、前記グラフデータ生成部で生成したノードのうち、前記ノードに流入するリンクまたは前記ノードから流出するリンクが存在しないノードを前記除去ノードバッファに登録し、前記登録したノードに隣接するノードの出次数又は入次数を前記双方向隣接リストテーブルにおいて減らすことにより、前記登録したノードと前記登録したノードを端点とするリンクを削除した新しいグラフを生成して進路競合を検出することを特徴とする、
請求項１に記載の進路競合検出装置。
【請求項３】
前記閉路検出演算実行部は、前記除去ノードバッファに登録したノードと隣接するリンクを削除して生成した前記新しいグラフに対し、有向な経路が存在する部分グラフに分解することで、進路競合が複数存在する場合に、進路競合を示すグラフの複数の閉路を別々に抽出し、進路競合の原因となる運行条件、列車、駅を各々出力することを特徴とする、請求項２に記載の進路競合検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、列車ダイヤ上の進路競合を検出する装置に関する。
【背景技術】
【０００２】
鉄道運行においては、列車ダイヤ上に番線競合や出発順序矛盾といった進路競合が存在すると列車走行が不可能となるため、列車ダイヤ作成の際は進路競合の存在しないダイヤを作成しなければならない。また、天候不良や車両故障などにより列車運行に乱れが生じたときに運行計画の復旧を行う運転整理業務においても、進路競合の存在しないダイヤ復旧案を作成しなければならず、計画ダイヤに変更を施した際に進路競合が生じた場合は進路競合箇所を検出し、進路競合を解消するダイヤ変更を実施しなければならない。そこで、特許文献１、特許文献２のような、列車ダイヤ上の進路競合を検出する技術が開発されてきた。特許文献１は、列車ダイヤと運行条件から、運行条件と矛盾する列車ダイヤ時刻を検出する方法である。特許文献２は、列車ダイヤに不合理が発生する場合にその不合理の内容と原因を特定することができる、列車ダイヤの合理性判定方法である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開昭61-235264号公報
【特許文献２】特開平8-253153号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、この特許文献1に記載した技術では、矛盾を起こしている原因となる運行条件を抽出することができない。特許文献2に記載した技術においては、不合理の内容と原因を特定できるのは、その原因が列車番号と運行日付の間の不合理、到着時刻と出発時刻の逆転、番線競合によるものの場合のみである。
【０００５】
上記を考慮し、本発明においては、到着時刻と出発時刻の逆転や番線競合以外にも、列車の着発時刻間の順序として決定される全ての運行条件矛盾と任意の運行条件の組合せによる矛盾とを原因とする進路競合に関して競合判定を実施し、進路競合の原因となる条件を特定できる、進路競合検出装置を実現することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、本発明の進路競合検出装置は、列車ダイヤのダイヤデータを保有するダイヤデータテーブル、駅間の複数の運行条件を定義するリンク定義テーブル、駅の着発時刻をノードとし前記運行条件をリンクとしたグラフを格納したグラフデータテーブル、前記グラフにおけるリンクの始点ノード、終点ノード、および次数を格納した双方向隣接リストテーブル、前記グラフ内の閉路を記憶する閉路抽出結果テーブル、および、前記閉路を構成しないノードの登録および削除が実施される除去ノードバッファを有するデータベースと、前記ダイヤデータから各駅の着発時刻を得てノードとし、前記リンク定義テーブルから前記ノード間の運行条件を得て前記ノード間のリンクとしたグラフを生成して前記グラフを前記グラフデータテーブルに格納するグラフ生成部と、前記グラフデータテーブルよりグラフデータを取得して、各ノードにおける、前記各ノードを終点とするリンクの始点ノードと、前記各ノードを始点とするリンクの終点ノードと、次数とからなる双方向隣接リストを作成して前記双方向隣接リストテーブルに格納する双方向隣接リスト生成部と、前記双方向隣接リストテーブルから双方向隣接リストを取得し、前記リストにおける閉路の有無を判定し、閉路が存在する場合は前記閉路を前記閉路検出結果テーブルに格納する閉路検出演算実行部と、前記閉路を、進路競合が発生しているものとして駅名、列車番号、運行条件とともに表示する表示部と、を備える。
【発明の効果】
【０００７】
上記のように構成された本発明の装置によれば、除去ノードバッファに登録したノードを削除しつつグラフの閉路検出を実行することで列車ダイヤの進路競合判定を行うので、列車の着発時刻間の順序として決定される全ての運行条件矛盾と運行条件の組合せによる矛盾とを原因とする進路競合に関して競合判定を実施し、進路競合の原因となる条件を特定することができる。
【図面の簡単な説明】
【０００８】
【図１】進路競合検出装置を実現するシステム構成図である。
【図２】進路競合の一例、及び進路競合例に対するグラフを示す図である。
【図３】進路競合検出装置の処理フローを示す図である。
【図４】ダイヤデータテーブル1210のテーブル構成を示す図である。
【図５】グラフデータの一例を示す図である。
【図６】グラフデータにて示すノードのデータ構成を示す図である。
【図７】着発時刻を示すノード間の時隔差を示すリンクのデータ構成を示す図である。
【図８】リンク定義テーブル1220のテーブル構成を示す図である。
【図９】双方向隣接リストテーブル1240のテーブル構成を示す図である。
【図１０】閉路検出演算実行部1130の処理フローを示す図である。
【図１１】図9を用いて閉路検出演算実行部1130の処理を実施した際に図10の処理10400を1回実行した結果の双方向隣接リストを示す図である。
【図１２】図9を用いて閉路検出演算実行部1130の処理を終了した結果の双方向隣接リストを示す図である。
【図１３】図10におけるステップ10800の処理フローを示す図である。
【図１４】図9を用いて閉路検出演算実行部1130の処理を終了した結果のグラフである。
【図１５】図13におけるステップ13300の処理を適用する場合のグラフデータの一例を示す図である。
【図１６】閉路検出結果テーブル1260のテーブル構成を示す図である。
【図１７】発生した進路競合を表示装置1400の出力画面に出力した例を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明に係る一実施形態を、図1から図17を用いて説明する。なお、本実施形態では、鉄道運行システムにおける進路競合の検出を本発明の適用対象として説明する。
【００１０】
まず、図1を用いて本発明の一実施形態に係る進路競合検出装置のシステム構成について説明する。図1は本発明の一実施形態に係る進路競合検出装置のシステム構成図である。
【００１１】
まず、本例において進路競合検出を実現するシステムは、計算機システムとして構成され、プログラムを実行する中央処理装置1100、データを蓄積するデータベース1200、ユーザーからの入力を受け付ける入力装置1300、各種GUIを表示する表示装置1400からなる。
【００１２】
中央装置1100では、列車ダイヤの着発時刻をノード、2つの着発時刻間の時隔差をリンクとしたグラフデータを生成するグラフデータ生成部1110、当該各ノードを終点とするリンクの始点ノード（以下、「流入リンク元ノード」、という）、当該各ノードを始点とするリンクの終点ノード（以下、「流出リンク先ノード」という）、入次数、出次数から成る双方向隣接リストを生成する双方向隣接リスト生成部1120、生成したグラフ、双方向隣接リストから進路競合を表すグラフの閉路の有無を判定し、存在する場合には閉路を抽出する閉路検出演算実行部1130をプログラムとして実行する。
【００１３】
データベース1200は、運行計画のダイヤデータを格納するダイヤデータテーブル1210と、列車運行に関する制約条件として考慮すべき2つの着発時刻間の時隔差を定義するリンク定義テーブル1220と、グラフデータ生成部1110にて生成されるグラフデータを格納するグラフデータテーブル1230と、双方向隣接リスト生成部1120にて生成され、閉路検出演算実行部1130において随時変更されるデータを格納する双方向隣接リストテーブル1240と、閉路検出演算実行部1130の実行過程においてデータの削除を行う対象ノードを格納する除去ノードバッファ1250と、閉路検出演算実行部1130により検出された閉路のデータを格納する閉路抽出結果テーブル1260とを保有する。
【００１４】
入力装置1300はマウスやキーボードなど汎用的な計算機への入力デバイスである。
【００１５】
表示装置1400はディスプレイなどの計算機で用いられる出力デバイスである。
【００１６】
図2は進路競合例及び、及び進路競合例に対するグラフを示す図である。本例を用いて本発明の進路競合検出の前提となる考え方を説明する。ダイヤ図2100は、進路競合となる例を示している。列車bレの運行を表す線分2101は、bレがA駅の2番線に到着し、A駅にしばらく停車後出発することを表している。列車aレの運行を表す線分2102は、aレがbレよりも早くA駅の2番線に到着し、しばらく停車後、bレよりも遅くA駅を出発することを表している。本例は、番線競合を表している。本発明の進路競合検出では、このような進路競合を、列車ダイヤの着発時刻をノードとし、2つの着発時刻間の順序として設定される運行条件を時刻が前のノードから時刻が後のノードへのリンクにて表すグラフを用いて検出する。運行条件には、番線使用順序、出発順序、到着順序、停車条件などがあり、1つのリンクが1つの条件を表す。ダイヤ図2100の運行状況をグラフとして表したものを2200に示す。ノードは、aレの到着を示すノード2201、aレの出発を示すノード2202、bレの到着を示すノード2203、bレの出発を示すノード2204が存在し、ノード間のリンクとして、aレの停車を表すリンク2301、bレの停車を表すリンク2302、A駅にaレの後bレが到着するという到着順序を表すリンク2303、A駅をbレの後aレが出発するという出発順序を表すリンク2304、2番線をaレが使用後bレが使用する、すなわち、2番線をaレが出発した後bレが進入してくるという番線使用順序を表すリンク2305が存在する。本例では、グラフ中にてノード2202、2203、2204とリンク2305、2302、2304が閉路を構成している。これは、aレとbレの番線使用順序、bレの停車条件、bレとaレの出発順序の組合せに矛盾があるため、番線競合という進路競合が発生していることを表している。このように、列車ダイヤの運行条件矛盾による進路競合はグラフの閉路で表すことができる。本発明の進路競合検出では、この考え方に基づき、判定を行う。
【００１７】
図3は本発明の進路競合検出における処理の流れを示す図である。ステップ3100では、図1のグラフデータ生成部1110を用いて、ダイヤデータテーブル1210に格納された列車ダイヤより、列車ダイヤの着発時刻をノードとし、2つの着発時刻間の時隔差をリンクとするグラフデータを生成し、ノード情報を格納したテーブルとリンク情報を格納したテーブルをグラフデータテーブル1230へと格納する。
【００１８】
図4は図1のダイヤデータテーブル1210のテーブル構成を示す図である。ダイヤデータテーブル1210は1本の列車を1レコードとして管理しており、レコード内の項目は列車の固有IDを示す列車番号4100、列車が走行する駅の名称や着発時刻に関する項目を持つ駅情報部を保有する。駅情報部は1駅分の情報(以下駅情報)を1つのブロックとして管理し、駅情報を走行順に並べて保有している。従って、レコードの最初のブロックが始発駅に関する駅情報を示し、レコードの最後のブロックが終着駅に関する駅情報を示しており、始発から終着に至るまでの全ての駅の駅情報が１つのレコードに記憶されている。駅情報には、駅の名前を示す駅名4210、計画時における到着時刻、出発時刻、使用番線を示す計画到着時刻4220、計画出発時刻4230、計画使用番線4240、走行実績における到着時刻、出発時刻、使用番線を示す実績到着時刻4250、実績出発時刻4260、実績使用番線4270の項目が含まれる。なお、列車が駅を通過する場合は、計画到着時刻4220、実績到着時刻4250には無効値がを格納される。レコード4201はaレのK駅走行時の走行情報を示し、計画到着時刻4220が6:48、計画出発時刻4230が6:54であるが、実績到着時刻は2分遅延し、実績到着時刻4250が6:50であることを示している。実績出発時刻4260の値は設定されていないが、これは実績がまだ決定していない、すなわちaレはK駅到着後出発していないことを示している。
【００１９】
図5はグラフデータを示す図である。楕円が列車ダイヤの着発時刻を示すノード、矢印がノード間の時隔差を示すリンクを示している。
【００２０】
図6はグラフデータテーブル1230にて示すノード情報のデータ構成を示す図である。1つのノードを1レコードとして管理するテーブルであり、レコード内の項目はノード固有のIDを示すID6110、列車番号6120、駅名6130、ノードの着発区別を示す着発6140、ノードを始点とするリンクのリストである流出リンクリスト6150、ノードを終点とするリンクのリストである流入リンクリスト6160である。
【００２１】
レコード6210は図5中のノード5101のデータを示しており、ID6110が1、列車番号6120がaレ、駅名6130がK駅、着発6140が着、流出リンク6150は図5中のIDがAのリンク5201、流入リンク6160はなしであることを示している。また、レコード6220は図5中のノード5102のデータを示しており、ID6110が2、列車番号6120がaレ、駅名6130がK駅、着発6140が発、流出リンク6150は図5中のIDがBのリンク5202と、IDがEのリンク5205、流入リンク6160は図5中のIDがAのリンク5201と、IDがCのリンク5203であることを示している。レコード6230は図5中のノード5103のデータを示しており、ID6110が3、列車番号6120がbレ、駅名6130がK駅、着発6140が着、流出リンク6150は図5中のIDがDのリンク5204、流入リンク6160は図5中のIDがFのリンク5206であることを示している。
【００２２】
図7はグラフデータテーブル1230にて示すリンク情報のデータ構成を示す図である。1つのリンクを1レコードとして管理するテーブルであり、レコード内の項目はリンク固有のIDを示すID7110、リンクの始点となるノードのIDを示す元ノードID7120、終点となるノードのIDを示す先ノードID7130、始点、終点のノードにおける時隔の発生種別を示す運行条件7140である。
【００２３】
図8は図1に示すリンク定義テーブル1220のテーブル構成を示す図である。リンク定義テーブル1220は、リンクで結ばれる始点と終点のノードの関係、リンクの表す運行条件を定義したデータを格納する。運行条件8110はリンクの表す運行条件、始点ノード8120はリンクの始点にあたるノードの定義となる着発時刻、終点ノード8130はリンクの終点にあたるノードの定義となる着発時刻を示す。本例では3つの運行条件を記述しているが、2つのノード間の条件を定義する運行条件であれば、適宜その運行条件を追加することで、本テーブルによって定義することができる。
【００２４】
図7に戻り、グラフデータテーブル1230にて示すリンク情報のデータ構成の説明を続ける。レコード7210は図5中のリンク5201のデータを示し、ID7110がA、元ノードID7120がaレのK駅到着時刻を示すID1のノード5101、先ノードID7130がaレのK駅出発時刻を示すID2のノード5102、運行条件7140は図8のレコード8220で示す停車条件であることを示す。レコード7220は図5中のリンク5202のデータを示し、ID7110がB、元ノードID7120がaレのK駅出発時刻を示すID2のノード5102、先ノードID7130がcレのK駅到着時刻を示すID5のノード5105、運行条件7140は図8のレコード8230で示す番線使用順序であることを示す。
【００２５】
図3に戻り、本発明の進路競合検出における処理の流れの説明を続ける。ステップ3100にてグラフデータを生成したのち、ステップ3200にて図1の双方向隣接リスト生成部1120が、グラフデータテーブル1230に格納されたグラフデータを基に本発明の進路競合検出を実現するために必要な双方向隣接リストデータを生成し、双方向隣接リストテーブル1240へと格納する。
【００２６】
図9は双方向隣接リストテーブル1240のテーブル構成を示す図である。1つのノードをレコードとして管理するテーブルであり、レコード内の項目はノード固有のIDを示すID9110、ノードから流出するリンクの終点となるノードのリストである流出リンク先ノードリスト9120、ノードから流出するリンクの数を示す出次数9130、ノードへ流入するリンクの始点となるノードのリストである流入リンク元ノードリスト9140、ノードへ流入するリンクの数を示す入次数9150である。レコード9210は図5中のノード5101に関する隣接データを示しており、ID9110が1、流出リンク先ノード9120は図5中のIDが2のノード5102、出次数9130が1、流入リンク元ノード9140はなし、入次数9150は0であることを示している。
【００２７】
図3に戻り、本発明の進路競合検出における処理の流れの説明を続ける。ステップ3200にて双方向隣接リストを生成したのち、ステップ3300では図1の閉路検出演算実行部1130により進路競合の有無を判定し、進路競合が存在する場合は進路競合箇所を抽出する。
【００２８】
図10は閉路検出演算実行部1130の処理の流れを示す図である。ステップ10100では双方向隣接リストにおいて出次数9130または入次数9150の値が0であるノードを除去ノードバッファ1250へ登録する。除去ノードバッファ1250は、双方向隣接リストにおいて出次数9130または入次数9150の値が0であるノード、すなわちグラフ上閉路を構成する可能性のないノードを登録するバッファであり、複数のノードIDを登録、削除可能であれば構造は問わない。例えば、キューやスタックと呼ばれるリストによって実現可能である。本説明においては、図9の双方向隣接リストによると、ノードID9110が1である図5のノード5101とノードID9110が6である図5のノード5106が除去ノードバッファ1250への登録対象となる。ステップ10200では、除去ノードバッファ1250にノードが登録されているかを判定し、登録されている場合にはステップ10300へと進み、登録がない場合にはステップ10500へと進む。本説明においては、図5の5101、5106の2つのノードが登録されているのでステップ10300へと処理を進める。ステップ10300では、除去ノードバッファ1250に登録されているノードを1つ取得し、取得したノードを除去ノードバッファ1250より削除する。本説明においては図5のIDが1であるノード5101を取得し、除去ノードバッファ1250より削除したこととする。ステップ10400では除去ノードバッファ1250より取得したノード5101の入次数（入次数0により除去ノードバッファに登録された場合は出次数）を0とし、流入リンク元ノード（入次数0により除去ノードバッファに登録された場合は流出リンク先ノード）に格納されているノードの出次数（入次数0により除去ノードバッファに登録された場合は入次数）の値を１減らす。本説明においては、図9の双方向隣接リストにおいてノードIDが1であるノードの入次数の値は0であるので、出次数の値を0とし、流出リンク先ノード9120に格納されているIDが2であるノードの入次数9150の値を2から1とする。ステップ10400の処理を終了すると、ステップ10100へ戻る。ステップ10400の処理結果、双方向隣接リストにおいて出次数9130または入次数9150の値が0であるノードが新たに増えたならば除去ノードバッファ1250へ登録し、除去ノードバッファ1250に登録されているノードがない状態となるまでステップ10100から10400の処理を繰返す。なお、出次数または入次数の値を1減らす際、値が0以下となる場合は0のままとする。
【００２９】
図11は、本説明において図5のIDが1となるノード5101を取得し、除去ノードバッファ1250より削除し、ステップ10400の処理を終了した結果を示す双方向隣接リストである。図9の双方向隣接リストと比較すると、レコード11210の出次数11130、レコード11220の入次数11150の値が更新されている。
【００３０】
図12は、本説明において図5のIDが6であるノード5106を取得し、除去ノードバッファ1250より削除し、ステップ10400の処理を終了した結果を示す双方向隣接リストであり、ステップ10100からステップ10400を繰り返し、除去ノードバッファ1250の登録されているノードが存在しない状態となった結果を示す図である。図11の双方向隣接リストと比較すると、レコード12220の出次数12130、レコード12250の出次数12130、レコード12260の入次数12150の値が更新されている。
【００３１】
図10に戻り、閉路検出演算実行部1130の処理の流れの説明を続ける。ステップ10200 において除去ノードバッファ1250に登録されているノードが存在しないならば、ステップ10500へと処理を進める。ステップ10500では、ステップ10100からステップ10400までの処理を繰返した結果を示す双方向隣接リストにおいて、入次数12150または出次数12130の値が1以上であるノードが存在するかを判定し、存在するならばステップ10700へと処理を進め、閉路が存在する、すなわち進路競合が存在するとしてステップ10800へと処理を進める。入次数12150または出次数12130の値が1以上であるノードが存在しないならばステップ10600へと処理を進め、閉路が存在しない、すなわち進路競合が存在しないとして本処理を終了する。本説明においては、図12の双方向隣接リストにおいて入次数、出次数の値がともに1であるノードID2，3，4，5が存在するため、ステップ10700へと処理を進め、閉路が存在する、すなわち進路競合が存在するとして、ステップ10800へと処理を進める。ステップ10800では存在する閉路を抽出する。
【００３２】
図13は、図10におけるステップ10800の処理の流れを示す図である。ステップ13100では、双方向隣接リストにおいて入次数、出次数の値が共に0であるノードに対し、ノードと接合するリンクを削除し、グラフデータ生成部1110により新しいグラフを生成する。
【００３３】
図14は、本説明において図12の双方向隣接リストにおいて入次数、出次数の値が共に0であるノードと隣接するリンクを削除し、再生成したグラフである。図5のグラフと比較すると、IDが１と6であるノードと接合するリンクが削除されている。
【００３４】
図13に戻り、図10におけるステップ10800の処理の流れの説明を続ける。ステップ13100により再生成したグラフに対し、ステップ13200へと処理を進める。ステップ13200では、入次数と出次数の値の和が3以上であるノードが存在するかどうか判定する。存在するならばステップ13300へと処理を進め、存在しないならばステップ13100において再生成したグラフ全体が1つの閉路を構成しているため、13400へと処理を進める。本説明においては、図12に示す双方向隣接グラフにおいて、入次数と出次数の和が3以上であるノードが存在しないので、再生成したグラフ全体が1つの閉路を構成していると判断し、ステップ13400へと処理を進める。ステップ13300では、ステップ13100において再生成したグラフに対して強連結成分分解を実行する。ここで、強連結成分とは、任意の２つのノードに対して有向な経路が存在する極大な部分グラフであり、強連結成分分解とは、有向グラフを強連結成分に分解することである。強連結成分分解を実行することで、閉路を構成しないリンクを削除し、複数存在する閉路や閉路を構成しないノードを強連結成分として分離することができる。強連結成分分解に対しては一般的に深さ優先探索を用いるアルゴリズムが存在するため、ここではそのアルゴリズムを用いることとする。強連結成分分解により抽出される強連結成分のうち、2つ以上のノード、リンクで構成される強連結成分が閉路となる。
【００３５】
図15は、図13のステップ13200にて入次数と出次数の値の和が3以上でありステップ13300へと処理を進める場合のグラフの例である。 なお、ここではノードとリンクの構成のみが処理の対象であるため、着発などのデータは省略した図としている。本例ではノード15103とノード15301において、入次数と出次数の値の和が3以上となっているため、ステップ13300へと処理を進める。本例では実際にノード15101、15102、15103と、ノード15301、15302、15303、15304がそれぞれ閉路を構成しているが、本例のように複数閉路のある可能性がある場合をステップ13200にて判定し、複数の閉路を分離するためにステップ13300の処理、すなわち強連結成分分解を実行する。本例に強連結成分分解を適用すると、グラフは15100、15200、15300に示す部分に分解される。このうち、2つ以上のノードで構成されている15100、15300をそれぞれ閉路として抽出する。図15のように、複数の閉路が閉路を構成しないリンク、ノードにより繋がっている場合、強連結成分分解により閉路のみを分離することができ、互いに原因が異なる複数の進路競合を別々に検出することができる。
【００３６】
図13に戻り、図10におけるステップ10800の処理の流れの説明を続ける。ステップ13300の処理により閉路を抽出したのち、ステップ13400へと処理を進め、閉路抽出結果データを生成し、閉路抽出処理であるステップ10800の処理を終了する。
【００３７】
図16は、図13におけるステップ13400の処理において作成される閉路抽出結果データを格納する閉路抽出結果テーブル1260のテーブル構成を示す図である。閉路抽出結果テーブル1260は1つの閉路すなわち進路競合の原因となる運行条件を1レコードとして管理しており、レコード内の項目は閉路の固有IDを示す閉路ID16110、閉路を構成するノードのリストである閉路構成ノードID16120、閉路を構成する複数のリンクについてリンク個々の運行条件、列車、駅に関するデータをテーブルとして保有する閉路構成リンク16130を保有する。閉路構成リンク16130は、進路競合の原因となる運行条件を表す1つのリンクを1レコードとして管理しており、レコード内の項目はリンクID16310、リンクが表す運行条件16320、リンクに関わる列車番号16330、リンクに関わる駅16340を保有する。本説明においては、再生成したグラフ全体が1つの閉路であったため、本テーブルはレコード16210に示す閉路のみで構成される。レコード16210は閉路構成ノードID16120に示すノード2、3、4、5と、閉路構成リンク16130に示すリンクB、C、D、Fで構成される閉路を示している。本閉路は、閉路構成リンク16130を構成するテーブルに示すように、aレとcレのK駅における番線使用順序と、aレとbレのK駅における出発順序と、bレのK駅における停車条件と、bレとcレのK駅における到着順序が矛盾していることによる進路競合を示している。
【００３８】
図10に戻り、閉路検出演算実行部1130の処理の流れの説明を続ける。ステップ10800により閉路を抽出し、進路競合箇所を特定したのち、閉路検出演算実行部1130の処理を終了する。なお、ノード数をn、リンク数をmとすると本処理は計算量Ｏ(n+m)のオーダーで実現可能である。
【００３９】
図3に戻り、本発明の進路競合検出における処理の流れの説明を続ける。ステップ3300にて進路競合の有無を判定したのち、ステップ3400へと処理を進め、進路競合が存在するならばステップ3600へと処理を進める。進路競合が存在しないならばステップ3500へと処理を進め進路競合なしと出力し、本処理を終了する。ステップ3600では、図10のステップ10800により抽出した進路競合の原因となる運行条件として、図16に示す運行条件16320と列車番号16330と駅16340を表示装置1400へ出力する。
【００４０】
図17は、ステップ3600においてステップ10800により抽出した進路競合の原因となる運行条件を表示装置1400に出力した結果を示す図である。図16の閉路抽出結果データに含まれるID16110毎に、列車運行全体を示すダイヤ図17100の進路競合該当箇所に1つの進路競合マークを表示し、進路競合マークのクリックイベントにより、進路競合の発生原因となる運行条件を表示する画面17200を出力する。画面17200には運行条件として、図16の閉路抽出結果データの該当レコード内の閉路構成リンクに格納されたリンク各々の運行条件、該当列車、駅を表示する。本説明においては、図16の閉路抽出結果データの示す通り、進路競合を示す閉路は1つであるため、ダイヤ図17100には1つの進路競合マークが表示される。また、図16に示す閉路IDが1である閉路の閉路構成リンクテーブルは4つのリンク情報から生成されているため、進路競合表示画面17200には4つの運行条件が駅名、列車番号とともに表示される。リンクID16310がBである運行条件は「K駅におけるaレとcレの番線使用順序」として、ID16310 がCである運行条件は「K駅におけるaレとｂレの出発順序」として、ID16310 がDである運行条件は「K駅におけるbレの停車条件」として、ID16310がFである運行条件は「K駅におけるbレとcレの到着順序」として、それぞれ表示される。
【００４１】
以上の処理にて本発明における一連の流れが終了する。
【符号の説明】
【００４２】
1100・・中央処理装置、1200・・データベース、1300・・入力装置、1400・・表示装置、1110・・グラフデータ生成部、1120・・双方向隣接リスト生成部、1130・・閉路検出演算実行部、1210・・ダイヤデータテーブル、1220・・リンク定義テーブル、1230・・グラフデータテーブル、1240・・双方向隣接リストテーブル、1250・・除去ノードバッファ、1260・・閉路検出結果テーブル
【図１】
0005386438.tif 000002
【図２】
0005386438.tif 000003
【図３】
0005386438.tif 000004
【図４】
0005386438.tif 000005
【図５】
0005386438.tif 000006
【図６】
0005386438.tif 000007
【図７】
0005386438.tif 000008
【図８】
0005386438.tif 000009
【図９】
0005386438.tif 000010
【図１０】
0005386438.tif 000011
【図１１】
0005386438.tif 000012
【図１２】
0005386438.tif 000013
【図１３】
0005386438.tif 000014
【図１４】
0005386438.tif 000015
【図１５】
0005386438.tif 000016
【図１６】
0005386438.tif 000017
【図１７】
0005386438.tif 000018