(57)【要約】【課題】乗り物の指定席の予約において、利用区間を通して同一の座席が確保できない場合にも、適切な予約処理を可能とする。【解決手段】乗り物の指定席の予約を希望するユーザの端末から当該乗り物の便及び利用区間に関する情報を受信した場合、座席予約情報を検索し、利用区間を構成する各単位区間に少なくとも１つの空席が存在するか確認するステップと、各単位区間に少なくとも１つの空席が存在し且つ利用区間を通して共通の空席が存在しない場合、利用区間を網羅する単位区間の各々の空席の組み合わせパターンを特定して記憶装置に格納するステップとを実行する。これにより、利用区間を通して同一の座席を確保できない場合においても、利用区間を構成する各単位区間に少なくとも１つの空席が存在すれば、確保可能な座席の組み合わせパターンの候補を特定することが可能となる。【選択図】  図１
2004265167.tif 000002
【特許請求の範囲】
【請求項１】
乗り物の指定席の予約を希望するユーザの端末から当該乗り物の便及び利用区間に関する情報を受信した場合、座席予約情報を検索し、前記利用区間を構成する各単位区間に少なくとも１つの空席が存在するか確認する空席検索ステップと、
前記各単位区間に少なくとも１つの空席が存在し且つ前記利用区間を通して共通の空席が存在しない場合、前記利用区間を網羅する前記単位区間の各々の空席の組み合わせパターンを特定して記憶装置に格納する空席特定ステップと、
を含むコンピュータにより実施される乗り物の指定席予約のための情報処理方法。
【請求項２】
前記空席特定ステップが、前記利用区間内において同一座席につき空席が連続する区間及び当該座席を特定するステップを含む
請求項１記載のコンピュータにより実施される乗り物の指定席予約のための情報処理方法。
【請求項３】
前記ユーザの端末から第１の座席属性に関する情報を受信した場合、
前記空席特定ステップが、前記利用区間内において前記第１の座席属性に適合する同一座席につき空席が連続する区間及び当該座席を特定するステップを含む請求項１記載のコンピュータにより実施される乗り物の指定席予約のための情報処理方法。
【請求項４】
前記空席特定ステップが、特定された前記区間のうち最長のものを選択するステップをさらに含む
請求項２又は３記載のコンピュータにより実施される乗り物の指定席予約のための情報処理方法。
【請求項５】
前記ユーザの端末から第１の座席属性に関する情報を受信した場合、
前記空席特定ステップが、前記第１の座席属性に適合する空席を優先して前記各単位区間における空席情報を抽出するステップを含む
請求項１記載のコンピュータにより実施される乗り物の指定席予約のための情報処理方法。
【請求項６】
前記ユーザの端末から第２の座席属性に関する情報を受信した場合、
前記空席特定ステップにおいて、前記第２の座席属性に適合する空席を優先して空席の組み合わせパターンを特定することを特徴とする
請求項１記載のコンピュータにより実施される乗り物の指定席予約のための情報処理方法。
【請求項７】
前記空席特定ステップにおいて特定された、空席の組み合わせパターンのうち少なくとも１つを所定の条件に従い特定し、記憶装置に格納する組み合わせパターン特定ステップをさらに含む
請求項３又は５記載のコンピュータにより実施される乗り物の指定席予約のための情報処理方法。
【請求項８】
前記組み合わせパターン特定ステップにおいて、座席間の移動回数が最も少ない空席の組み合わせパターンを特定することを特徴とする
請求項７記載のコンピュータにより実施される乗り物の指定席予約のための情報処理方法。
【請求項９】
前記組み合わせパターン特定ステップにおいて、座席間の移動回数が最も少なく且つ座席間の移動距離が最も短い空席の組み合わせパターンを特定することを特徴とする
請求項７記載のコンピュータにより実施される乗り物の指定席予約のための情報処理方法。
【請求項１０】
前記ユーザの端末から第２の座席属性に関する情報を受信した場合、
前記組み合わせパターン特定ステップにおいて、座席間の移動回数が最も少なく且つ座席間の移動距離が最も短く且つ前記第２の座席属性に適合する空席が最も多く含まれる、空席の組み合わせパターンを特定することを特徴とする
請求項７記載のコンピュータにより実施される乗り物の指定席予約のための情報処理方法。
【請求項１１】
前記組み合わせパターン特定ステップにおいて特定された、空席の組み合わせパターンの情報を前記ユーザの端末に送信するステップをさらに含む
請求項７記載のコンピュータにより実施される乗り物の指定席予約のための情報処理方法。
【請求項１２】
請求項１乃至１１のいずれか１つに記載の乗り物の指定席予約のための情報処理方法をコンピュータに実行させるためのプログラム。
【請求項１３】
乗り物の指定席の予約を希望するユーザの端末から当該乗り物の便及び利用区間に関する情報を受信した場合、座席予約情報を検索し、前記利用区間を構成する各単位区間に少なくとも１つの空席が存在するか確認する手段と、
前記各単位区間に少なくとも１つの空席が存在し且つ前記利用区間を通して共通の空席が存在しない場合、前記利用区間を網羅する前記単位区間の各々の空席の組み合わせパターンを特定して記憶装置に格納する手段と、
を有する乗り物の指定席予約のための情報処理装置。
【発明の詳細な説明】
【０００１】
【発明が属する技術分野】
本発明は、乗り物の指定席予約のための情報処理技術に関する。
【０００２】
【従来の技術】
乗り物の利用者が指定席を予約しようとする場合、通常、予約したい便及びその利用区間に空席があるかどうか、運行会社の窓口や旅行代理店等に問合わせを行う。運行会社の窓口や旅行代理店等では、例えば座席予約管理システムを利用して空席を検索し、空席が見つかれば指定席券の発行を行う。また、運行会社の窓口や旅行代理店等を介さずに、インターネット等のサービスを利用して、利用者が自ら空席を検索して指定席の予約を行う場合もある。
【０００３】
また、その他にも指定席の予約を便利に行えるような技術が存在する。例えば、列車内でも乗客や乗務員が当該列車や他の列車の座席予約を可能とするシステムが存在する（特許文献１参照）。すなわち、列車座席予約端末からの予約要求に対して列車の座席の予約状況に応じて空席の照会および座席の割当を行う列車座席予約管理装置において、列車内に座席の予約要求を入力する車上列車座席予約端末装置と、車上列車座席予約端末装置と地上の該列車座席予約管理装置との間の情報伝送手段とを設けることにより、列車運転中に車内の空席状況を判断し乗客または乗務員が希望する座席を予約したり他の列車の座席予約を行う。
【０００４】
【特許文献１】
特開平８−１０１８７０号公報
【０００５】
【発明が解決しようとする課題】
以上の技術によると、例えば予約したい便の利用区間を通して空席である同一の座席があれば確保することが可能であるが、そのような座席が存在しない場合には指定席の予約はできない。どうしてもその他の便では都合が悪い場合には自由席に乗るしかないが、自由席が存在しない乗り物又は便においては、予約をあきらめざるを得ない。利用区間が長い場合には、途中までの区間に空席があれば一旦確保しておき、上で述べた技術を利用してリアルタイムに予約を行っていくようなことも可能であるが、目的地までの座席の確保が保証されていないため現実的ではない。
【０００６】
また、区間を分けて予約すれば、同一の座席ではなくても目的地までの座席の確保が可能な場合もあるが、そのような状況であることを確認するためには、利用区間の全ての単位区間について空席があるか１つずつ検索する必要があり、予約も複数行わなければならないため面倒である。また、必要以上に座席間の移動が発生するような予約形態になってしまうこともある。
【０００７】
従って本発明の目的は、乗り物の指定席の予約において、利用区間を通して同一の座席が確保できない場合にも、適切な予約処理を可能とするための情報処理技術を提供することである。
【０００８】
【課題を解決するための手段】
本発明に係る、乗り物の指定席予約のための情報処理方法は、乗り物の指定席の予約を希望するユーザの端末から当該乗り物の便及び利用区間に関する情報を受信した場合、座席予約情報を検索し、利用区間を構成する各単位区間に少なくとも１つの空席が存在するか確認する空席検索ステップと、各単位区間に少なくとも１つの空席が存在し且つ利用区間を通して共通の空席が存在しない場合、利用区間を網羅する単位区間の各々の空席の組み合わせパターンを特定して記憶装置に格納する空席特定ステップとを含む。
【０００９】
これにより、利用区間を通して同一の座席を確保できない場合においても、利用区間を構成する各単位区間に少なくとも１つの空席が存在すれば、確保可能な座席の組み合わせパターンの候補を特定することが可能となる。
【００１０】
また、上で述べた空席特定ステップが、利用区間内において同一座席につき空席が連続する区間及び当該座席を特定するステップを含むような構成であってもよい。これにより、連続する区間において確保可能な座席を特定することができ、同じ座席に長く座るような予約形態が可能となる。また、不必要な座席移動を減らすことができる。
【００１１】
また、ユーザの端末から第１の座席属性に関する情報を受信した場合、上で述べた空席特定ステップが、利用区間内において第１の座席属性に適合する同一座席につき空席が連続する区間及び当該座席を特定するステップを含むような構成であってもよい。
【００１２】
これにより、例えば禁煙席等、ユーザの希望に則した座席で且つ長い区間において確保可能な座席を特定することができる。
【００１３】
また、上で述べた空席特定ステップが、特定された区間のうち最長のものを選択するステップをさらに含むような構成であってもよい。これにより、最も長く座り続けることが可能な座席を確保することができる。なお、最長の区間の選択においては、当該区間を構成する単位区間の数が最も多いものを選択する場合と、当該区間の運行時間が最も長いものを選択する場合とがある。
【００１４】
また、ユーザの端末から第１の座席属性に関する情報を受信した場合、上で述べた空席特定ステップが、第１の座席属性に適合する空席を優先して各単位区間における空席情報を抽出するステップを含むような構成であってもよい。
【００１５】
このように、空席の組み合わせパターンを構成する際に、予め各単位区間において、例えば禁煙席等、ユーザの希望に則した座席を優先して抽出しておく場合もある。なお、例えば禁煙席をユーザが希望した場合、禁煙席の空席がない区間については、喫煙席を抽出しておく。
【００１６】
また、ユーザの端末から第２の座席属性に関する情報を受信した場合、上で述べた空席特定ステップにおいて、第２の座席属性に適合する空席を優先して空席の組み合わせパターンを特定するような構成であってもよい。これにより、例えば窓側等、優先順位が例えば２番目であるユーザの希望を反映した座席の確保が可能となる。
【００１７】
また、上で述べた空席特定ステップにおいて特定された、空席の組み合わせパターンのうち少なくとも１つを所定の条件に従い特定し、記憶装置に格納する組み合わせパターン特定ステップをさらに含むような構成であってもよい。これにより、確保可能な座席の組み合わせパターンの候補を、与えられた条件によって絞り込むことができるようになる。
【００１８】
また、上で述べた組み合わせパターン特定ステップにおいて、座席間の移動回数が最も少ない空席の組み合わせパターンを特定する場合もある。確保可能な座席の組み合わせパターンの候補を、座席間の移動回数で絞り込むことによって、不必要な座席移動を削減できる。
【００１９】
また、上で述べた組み合わせパターン特定ステップにおいて、座席間の移動回数が最も少なく且つ座席間の移動距離が最も短い空席の組み合わせパターンを特定する場合もある。確保可能な座席の組み合わせパターンの候補を、座席間の移動回数及び移動距離で絞り込むことによって、不必要な座席移動を削減でき、座席移動における移動距離をなるべく短くすることができる。
【００２０】
また、ユーザの端末から第２の座席属性に関する情報を受信した場合、上で述べた組み合わせパターン特定ステップにおいて、座席間の移動回数が最も少なく且つ座席間の移動距離が最も短く且つ第２の座席属性に適合する空席が最も多く含まれる、空席の組み合わせパターンを特定する場合もある。確保可能な座席の組み合わせパターンの候補を、座席間の移動回数及び移動距離及び第２の座席属性で絞り込むことによって、不必要な座席移動を削減でき、座席移動における移動距離をなるべく短くした上で、優先順位が例えば２番目であるユーザの希望を反映させることができる。
【００２１】
上で述べた組み合わせパターン特定ステップにおいて特定された、空席の組み合わせパターンの情報をユーザの端末に送信するステップをさらに含むような構成であってもよい。これにより、ユーザは、例えば禁煙席等、優先順位が例えば１番目であるユーザの希望が反映され、且つ与えられた条件によって絞り込まれた、確保可能な座席の組み合わせパターンを知ることができる。
【００２２】
なお、本発明に係る方法を実施するためのプログラムは、例えばフレキシブル・ディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等の記憶媒体又は記憶装置に格納される。また、ネットワークを介してデジタル信号として頒布される場合もある。なお、処理途中のデータについては、コンピュータのメモリに一時保管される。
【００２３】
【発明の実施の形態】
［実施の形態１］
本発明に係る情報処理方法を、例えば列車の指定席予約処理に適用した場合を一例として以下説明する。なお、本発明の主旨より、予約対象となる列車には自由席が設定されていないものとする。すなわち、指定席車両のみで構成された列車であり、乗車には指定席の確保が必要となる。
【００２４】
本発明の実施の形態に係るシステム構成図を図１に示す。例えばインターネットであるネットワーク１には、１又は複数の空席検索サーバ５と例えばパーソナル・コンピュータである１又は複数のユーザ端末３と例えば携帯電話機である１又は複数のユーザ端末７とが、無線又は有線によって接続されている。空席検索サーバ５は、例えばメイン・メモリにワーク・メモリ領域１５を確保し、空席検索処理を実行する際に一時使用するデータをワーク・メモリ領域１５に格納する。
【００２５】
また、空席検索サーバ５は、例えば専用線等により予約管理サーバ９との通信が可能となっている。予約管理サーバ９は予約管理ＤＢ１９を管理しており、予約管理ＤＢ１９には列車の座席予約に関するデータが格納されている。
【００２６】
また、空席検索サーバ５は、図示していないがウェブ（Ｗｅｂ）サーバ機能及びユーザ認証機能を有しており、空席検索サービスの会員であるユーザからのアクセスの受け付け、ログイン処理及びＷｅｂページ・データの送信処理ができるようになっている。また、ユーザ端末３及びユーザ端末７は、図示していないがＷｅｂブラウザ機能を有しており、Ｗｅｂページの閲覧が可能となっている。
【００２７】
なお、ネットワーク１を経由する通信には、図示していないがドメイン・ネーム・サーバ（ＤＮＳ）やファイア・ウォール等のインターネット接続に必要な機器及び機能を使用するものとする。
【００２８】
図２乃至図４に、予約管理ＤＢ１９のテーブル構成及び格納されているデータの一例を示す。図２に、列車テーブルの一例を示す。図２の例には、列車番号の列２０と名称の列２２と東京（発車時刻）の列２４と新横浜（発車時刻）の列２６と名古屋（発車時刻）の列２７と小倉（発車時刻）の列２８と博多（到着時刻）の列２９とが含まれている。このほか、名古屋・小倉間において省略してある停車駅の列が含まれ、本テーブルには時刻表と同様のデータが格納されている。
【００２９】
なお、図２に示した例では、同じ路線で同じ停車駅の列車の場合について示されているが、列車によって停車駅が異なっていてもよい。また、同様のテーブルが例えば路線毎に存在する。
【００３０】
図３に、車両テーブルの一例を示す。図３の例には、車両番号の列３０とグリーン車（フラグ）の列３２と禁煙車両（フラグ）の列３４とが含まれている。このほか、サービス・コーナー（フラグ）の列や車椅子対応トイレ（フラグ）の列等、車両の属性に関する列が含まれる場合もある。図３の例では、ある列車（便）の車両毎の属性が示されている。基本的には、図２に示した例の１つの列車（１行）について１つの車両テーブルが対応しているが、車両構成が同じ列車については、複数の列車において共通のテーブルがあってもよい。
【００３１】
図３の例では、号車番号の列３０には例えば１から１６までの数字が格納されており、当該列車には１号車から１６号車までの車両があることがわかる。グリーン車（フラグ）の列３２には、該当する車両がグリーン車であれば「Ｙ」が、グリ−ン車でなければ「Ｎ」が格納されている。ここでは８号車乃至１０号車がグリーン車であることが示されている。なお、本実施の形態においては、グリーン車を空席検索処理の対象とはしておらず、グリーン車以外の車両について空席のチェックを行うような構成となっている。
【００３２】
また、禁煙車両（フラグ）の列３４には、該当する車両が禁煙車両であれば「Ｙ」が、禁煙車両でなければ「Ｎ」が格納されている。ここでは３号車、４号車、１０号車、１５号車及び１６号車は禁煙車両ではないことが示されている。
【００３３】
図４に、予約状況テーブルの一例を示す。図４の例には、車両番号の列４００と座席番号の列４０と区間１の列４１と区間２の列４２と区間３の列４３と区間４の列４４と区間５の列４５と区間６の列４６と区間７の列４７と区間８の列４８と区間９の列４９とが含まれている。区間は列車が停車する駅の間を表しており、区間１は例えば東京・新横浜間を表す。図４の例では、区間は例えば９つあるが、列車が停車する駅の数に対応して増減する。
【００３４】
また、本テーブルには、ある特定の日のある特定の列車（便）についての座席予約データが格納されており、列車（便）の運行数分、テーブルが存在する。そして、座席の予約やキャンセルによってデータが更新される。なお、本実施の形態においては、全座席が指定席であるので、１テーブルの行数はその列車における座席数と等しい。なお、上で述べたとおり、本実施の形態においてはグリーン車を空席検索処理の対象としていないため、グリーン車の座席は対象となる列車の座席数に含んでおらず、グリーン車（例えば車両番号８乃至１０）の座席データ（行）はテーブルから除かれている。
【００３５】
本テーブルでは、車両番号の列４００と座席番号の列の４０とによって当該列車における座席が特定され、当該座席がどの区間において空席であるかが示されている。例えば１行目のデータを見ると、車両番号「１」の座席番号「１Ａ」、すなわち１号車の１Ａという座席は、区間１の列４１の値が「−」で示されており、これは予約済みを表している。例えば東京・新横浜間は１号車の１Ａは空席ではないということになる。
【００３６】
一方、１行目の区間２の列４２の値は「空」と示されており、これは空席であることを表している。例えば新横浜・名古屋間において１号車の１Ａは空席であり、予約が可能であるということになる。
【００３７】
次に、図５乃至図８を用いて図１に示したシステムの処理の内容を説明する。まず、ユーザ端末３（又は７）は、ユーザの操作に従い、空席検索ページ・データの要求を空席検索サーバ５に対して送信する（図５：ステップＳ１）。なお、これより前にログイン処理が行われているものとし、ユーザ端末３は、ユーザからの図示しない路線選択ページ等に対する選択入力を受け付け、空席検索ページ・データの要求を行う。そして、ユーザ端末３から送信されるデータには、ある特定の路線を指定するデータが含まれているものとする。空席検索サーバ５は、空席検索ページ・データの要求をユーザ端末３から受信する（ステップＳ３）。
【００３８】
空席検索サーバ５は、ユーザから指定された路線に関する列車データの要求を予約管理サーバ９に対して送信する（ステップＳ５）。予約管理サーバ９は、空席検索サーバ５から列車データの要求を受信する（ステップＳ７）。予約管理サーバ９は、路線に関するデータを用いて予約管理ＤＢ１９から列車テーブル（図２参照）を特定し、空席検索サーバ５に対して列車データを送信する（ステップＳ９）。空席検索サーバ５は、列車データを予約管理サーバ９から受信し、一旦記憶装置に格納する（ステップＳ１１）。
【００３９】
そして、空席検索サーバ５は、列車データを用いて空席検索ページのデータを生成し、ユーザ端末３に対して送信する（ステップＳ１３）。ユーザ端末３は、空席検索ページのデータを空席検索サーバ５から受信し、表示装置に表示する（ステップＳ１５）。
【００４０】
図６に、空席検索ページの一例を示す。図６の例には、列車データ表示部６０と乗車年月日選択部６１と列車名選択部６２と乗車駅・降車駅選択部６３と第１の希望条件選択部６４と第２の希望条件選択部６５と空席検索ボタン６６とが含まれている。
【００４１】
第１の希望条件選択部６４では、例えば喫煙席と禁煙席とからユーザが希望する座席属性の選択を受け付ける。ここで指定される条件は、空席検索処理において最も優先されるような構成になっている。また、第２の希望条件選択部６５では、例えば窓側と通路側とからユーザが希望する座席属性の選択を受け付ける。ここで指定される条件は空席検索処理における優先順位が低く、第１の希望条件選択部６４で指定された条件、座席移動回数及び座席移動距離によって特定された座席の組み合わせパターンが複数存在する場合、ここで選択された座席属性に適合した座席を最も多く含む座席の組み合わせパターンが選択される。そして、空席検索ボタン６６がクリックされることにより、選択入力された条件に従った空席検索処理の実行要求を受け付ける。
【００４２】
図５の処理フローに戻り、ユーザ端末３は、空席検索ページ（図６）に対するユーザからの選択入力を受け付け、空席検索サーバ５に対して送信する（ステップＳ１７）。空席検索サーバ５は、選択入力データをユーザ端末３から受信し、一旦記憶装置に格納する（ステップＳ１９）。そして空席検索サーバ５は、予約状況データの要求を予約管理サーバ９に対して送信する（ステップＳ２１）。なお、ここで送信されるデータには、ユーザ端末３から受信した選択入力データに基づくある特定の便を指定するデータが含まれている。
【００４３】
予約管理サーバ９は、予約状況データの要求を空席検索サーバ５から受信する（ステップＳ２３）。そして予約管理サーバ９は、便に関するデータを用いて予約管理ＤＢ１９から予約状況テーブル（図４参照）を特定し、空席検索サーバ５に対して予約状況データを送信する（ステップＳ２５）。空席検索サーバ５は、予約状況データを予約管理サーバ９から受信し、一旦記憶装置に格納する（ステップＳ２７）。
【００４４】
そして空席検索サーバ５は、予約状況データとステップＳ１９においてユーザ端末３から受信した選択入力データ（空席検索条件）とを用いて空席検索処理を行う（ステップＳ２９）。この処理については後に詳述する。空席検索処理によって座席の組み合わせパターンが特定されると、空席検索サーバ５は、検索結果ページのデータを生成し、ユーザ端末３に対して送信する（ステップＳ３１）。ユーザ端末３は、検索結果ページのデータを空席検索サーバ５から受信し、表示装置に表示する（ステップＳ３３）。
【００４５】
図７に、検索結果ページの一例を示す。図７の例には、検索条件表示部７０と座席組み合わせパターン表示部７２と予約ボタン７４と戻るボタン７６とが含まれている。検索条件表示部７０には、空席検索ページ（図６）に対するユーザからの選択入力によって指定された条件が示されている。図７の例では「２００３年２月２２日」に「の○み３号」で「東京から博多」まで乗車し、座席は「禁煙席優先」で「出来れば窓側」という条件が示されている。
【００４６】
座席組み合わせパターン表示部７２には、区間毎に特定された座席について、車両番号、座席番号、希望条件１（適合又は不適合）及び希望条件２（適合又は不適合）が示されている。図７の例では、東京から新横浜までは５号車の（座席番号）３Ａ、新横浜から京都までは７号車の（座席番号）１３Ａ、京都から岡山までは６号車の（座席番号）１６Ｃ、岡山から広島まで及び小倉から博多までは４号車の（座席番号）５Ａ、広島から小倉までは５号車の（座席番号）３Ａという座席の組み合わせパターンが示されている。このように、ユーザは乗車区間（東京から博多まで）の座席を、同一車両、同一座席ではないが、確保できることが分かる。
【００４７】
なお、図７の例では座席の組み合わせパターンが１つだけ示されているが、空席検索処理が複数の候補を特定するような構成であった場合には、座席組み合わせパターン表示部７２と同様の一覧を複数示し、ラジオ・ボタン等によりユーザが選択可能なようにしてもよい。
【００４８】
また、予約ボタン７４がクリックされることにより、予約処理の実行要求を受け付ける。また、戻るボタン７６がクリックされることにより、空席検索ページの表示処理の実行要求を受け付ける。
【００４９】
図５の処理フローに戻り、ユーザ端末３は、検索結果ページ（図７）に対するユーザからの選択入力を受け付け、空席検索サーバ５に対して送信する（ステップＳ３５）。空席検索サーバ５は、選択入力データをユーザ端末３から受信し、一旦記憶装置に格納する（ステップＳ３７）。そして空席検索サーバ５は、ユーザの要求が予約であったかどうか判定する（ステップＳ３９）。ユーザからの検索結果ページ（図７）への選択入力が、予約ボタン７４（図７）のクリックであれば、ユーザの要求は予約であり、戻るボタン７６（図７）のクリックであれば予約ではない。予約ではなかったと判定された場合（ステップＳ３９：Ｎｏルート）、ステップＳ１３に戻る。
【００５０】
一方、予約であったと判定された場合（ステップＳ３９：Ｙｅｓルート）、空席検索サーバ５は、予約データを予約管理サーバ９に対して送信する（ステップＳ４１）。なお、ここで送信される予約データには、空席検索処理の結果（図７参照）と同様の区間及び座席のデータ（座席の組み合わせパターン）が含まれている。予約管理サーバ９は、予約データを空席検索サーバ５から受信する（ステップＳ４３）。そして予約管理サーバ９は、予約データに基づき予約管理ＤＢ１９を更新する（ステップＳ４５）。すなわち、予約状況テーブル（図４）の該当する箇所を「空」から「−」に変更する。
【００５１】
なお、ステップＳ２５においてテーブルをロックしていない場合には、更新しようとしたデータが既に「−」（予約済み）になっている可能性がある。そのような場合には、予約管理サーバ９は予約状況テーブル（図４）の更新は行わず、例えば予約不可を表すデータを空席検索サーバ５に対して送信する。整合性を保持して予約状況テーブル（図４）の更新が行われた場合には、図示していないが、予約管理サーバ９は予約完了を表すデータを空席検索サーバ５に対して送信する。
【００５２】
そして空席検索サーバ５は、予約確認ページのデータを生成し、ユーザ端末３に対して送信する（ステップＳ４７）。なお、上で述べたように予約管理サーバ９から予約不可を表すデータを受信した場合には、予約が間に合わなかった旨を示すページのデータを生成する。そしてユーザ端末３は、予約確認ページのデータを空席検索サーバ５から受信し、表示装置に表示する（ステップＳ４９）。
【００５３】
図８に、予約確認ページの一例を示す。図８の例には、予約番号表示部８０と予約者氏名表示部８２と電話番号表示部８３と乗車年月日表示部８４と列車名表示部８５と乗車駅・降車駅表示部８６と予約座席表示部８７と料金表示部８８とが含まれている。
【００５４】
予約番号表示部には、当該予約を一意に識別する予約番号が示されている。予約番号は、例えば空席検索サーバ５によって生成され、管理される。ユーザは、駅の窓口や旅行代理店等に予約番号を提示することにより、当該予約に対する指定席券を購入することができる。なお、予約処理に引き続き電子決済で予め代金を支払っておくような場合もあり、支払方法は限定されない。その他指定席券を電子的に発券し、ＩＣカードや携帯電話機に格納する方法等、様々な方法を用いることが可能である。
【００５５】
予約者氏名表示部８２と電話番号表示部８３とには、ユーザの氏名と電話番号とが示されている。上で述べたようにユーザはログイン済みであり、ログインしているユーザのデータが示されている。
【００５６】
また、乗車年月日表示部８４と列車名表示部８５と乗車駅・降車駅表示部８６と予約座席表示部８７とには、検索結果ページ（図７）に示したデータと同様のデータ（乗車する便のデータ及び処理結果）が示されている。そして、料金表示部８８には、座席予約により生じた特急料金、運賃及びこれらの合計金額が示されている。この金額は、例えば空席検索サーバ５が、乗車区間に基づき図示しない料金ＤＢ等を検索し、当該乗車年月日が「通常期」「閑散期」「繁忙期」のいずれかであるのかの区別を行った上で、特定する。
【００５７】
このようにして、ユーザは乗車したい便の指定席の予約において、乗車区間を例えば複数の区間に分けた場合においても一括して予約を行うことができる。
【００５８】
次に、図９乃至図１６を用いて、空席検索処理（図５：ステップＳ２９）の詳細について説明する。なお、以下の処理は、特に断りのない限り空席検索サーバ５が実行する。
【００５９】
まず、ステップＳ２７（図５）において受信した予約状況データを読み込み、ワーク・メモリ領域１５に格納する（図９：ステップＳ５１）。例えば図４に示したようなデータを格納する。そして、乗車区間を構成する各単位区間に少なくとも１座席の空きがあるかどうか確認し（ステップＳ５３）、確認の結果、空きがあったかどうか判定する（ステップＳ５５）。
【００６０】
空きがないと判定された場合（ステップＳ５５：Ｙｅｓルート）、予約不可と判定し（ステップＳ５７）、端子Ｅを介して空席検索処理を終了する。すなわち、満席の単位区間があり、乗車区間を通して座席の確保ができない場合には、予約不可とする。
【００６１】
一方、空きがあると判定された場合（ステップＳ５５：Ｎｏルート）、ステップＳ１９（図５）において受信したユーザの第１の希望条件（座席属性）を満たす座席のうち、最も長い区間連続して空席であるものを抽出し、ワーク・メモリ領域１５に格納する（ステップＳ５９）。
【００６２】
例えばユーザの第１の希望条件（座席属性）が禁煙席で、座席の予約状況が図４に示したようになっている場合について具体例を示す。なお、図４の例において省略してある部分については空席がないものとする。まず、車両属性が図３に示したようになっている場合、ステップＳ５９の処理において、喫煙車両である３号車、４号車、１５号車及び１６号車の座席データは除かれる。残りの座席データのうち、最も長い区間空席が連続している座席を特定する。ここでは空席が連続する単位区間の数で比較しているが、各単位区間における乗車時間又は距離を集計して、最も長い時間又は距離、確保可能な空席を抽出するような構成であってもよい。
【００６３】
そして、図４に示した例では、禁煙車両で且つ区間４乃至区間６の３つの単位区間にわたって連続して空席である、車両番号４００の値が「６」で座席番号４０の値が「１６Ｃ」の座席（以下、６−１６Ｃと略す）が抽出される。
【００６４】
図１０に、抽出した結果（座席データ）をワーク・メモリ領域１５に格納した場合における概要図を示す。図１０の例には、区間１の列１０１と区間２の列１０２と区間３の列１０３と区間４の列１０４と区間５の列１０５と区間６の列１０６と区間７の列１０７と区間８の列１０８と区間９の列１０９とが含まれている。図１０の例では、区間４の列１０４、区間５の列１０５及び区間６の列１０６における各行（車両番号、座席番号、希望条件１及び希望条件２）にデータが格納されている。
【００６５】
すなわち、区間４乃至区間６については、座席（６−１６Ｃ）が特定できたことが示されている。そして、当該座席は禁煙席であり、通路側であるため、希望条件１が「○」で希望条件２が「×」と示されている。
【００６６】
なお、ステップＳ５９（図９）において複数の座席候補が抽出された場合には、複数の座席についてこのようなデータがワーク・メモリ領域１５に格納される。
【００６７】
図９の処理フローに戻り、ステップＳ５９において条件に該当する座席候補が抽出されたかどうか判定する（ステップＳ６１）。すなわち、少なくともユーザの第１の希望条件（座席属性）を満たす空席があったかどうか判定する。なお、最長連続区間が例えば１単位区間の場合もある。
【００６８】
条件に該当する座席候補が抽出されたと判定された場合（ステップＳ６１：Ｎｏルート）、抽出された最長連続区間（座席候補）のうち、未処理のものを１件読み込み、ワーク・メモリ領域１５に格納する（ステップＳ６３）。ここで未処理のものとは、最長連続区間（座席候補）が１又は複数抽出された場合、以下に述べる処理が未だ行われていない座席候補を指す。
【００６９】
最長連続区間が乗車区間に等しい場合には、抽出された座席だけで乗車区間がカバーされるので問題ないが、最長連続区間が乗車区間に満たない場合には、以下で詳細に述べる処理に従って、残りの区間についても座席を特定する。そしていくつかの座席の組み合わせによって乗車区間をカバーする。このようにして最長連続区間（座席候補）を中心として乗車区間をカバーした１又は複数の座席の組み合わせを、座席組み合わせパターンとして特定する。
【００７０】
なお、ワーク・メモリ領域１５は、このステップＳ６３における読み込み処理によって上書きされることはなく、ステップＳ５９において抽出された座席のデータは保持されているものとする。
【００７１】
そして、読み込んだ座席のデータに基づき、当該座席は乗車から降車までの乗車区間をカバーできたかどうか判定する（ステップＳ６５）。すなわち、乗車区間を通して当該座席を確保できるかどうか判定する。乗車区間をカバーできていないと判定された場合（ステップＳ６５：Ｎｏルート）、処理は端子Ａを介して図１１の処理に移行する。例えば、図１０に示した例ではこのルートで処理が行われる。
【００７２】
一方、乗車区間をカバーできたと判定された場合（ステップＳ６５：Ｙｅｓルート）、ステップＳ５９において抽出された全ての座席候補について、処理を行ったかどうか判定する（ステップＳ６７）。全ての座席候補についての処理が終了していないと判定された場合（ステップＳ６７：Ｎｏルート）、ステップＳ６３の処理に戻り、次の座席候補を１件読み込む。
【００７３】
一方、全ての座席候補についての処理が終了したと判定された場合（ステップＳ６７：Ｙｅｓルート）、座席移動回数が最も少ない（座席の組み合わせ）パターンを特定し、ワーク・メモリ領域１５に格納する（ステップＳ６９）。
【００７４】
また、ステップＳ６１において条件に該当する座席候補が抽出されなかったと判定された場合（ステップＳ６１：Ｙｅｓルート）、ユーザの第１の希望条件（座席属性）に拘らず最も長い区間連続して空席である座席候補を抽出し、ワーク・メモリ領域１５に格納する（ステップＳ７１）。例えばユーザの第１の希望条件（座席属性）が禁煙席であった場合、ここではステップＳ６１において禁煙席の空席が１つもないと判定されていることになるので、喫煙席の空席について最長連続区間（座席候補）を抽出する。また、ステップＳ５５において少なくとも１座席の空きがあると判定されているので、少なくとも１件の座席候補は抽出される。
【００７５】
そして、抽出された最長連続区間（座席候補）のうち、未処理のものを１件読み込み、ワーク・メモリ領域１５に格納する（ステップＳ７３）。ここで未処理のものとは、上で述べたのと同様に、乗車区間をカバーする座席の組み合わせパターン特定処理が未だ行われていない座席候補を指す。
【００７６】
そして、読み込んだ座席のデータに基づき、当該座席は乗車から降車までの乗車区間をカバーできたかどうか判定する（ステップＳ７５）。すなわち、乗車区間を通して当該座席を確保できるかどうか判定する。
【００７７】
乗車区間をカバーできていないと判定された場合（ステップＳ７５：Ｎｏルート）、処理は端子Ｂを介して図１４の処理に移行する。一方、乗車区間をカバーできたと判定された場合（ステップＳ７５：Ｙｅｓルート）、ステップＳ７１において抽出された全ての座席候補について、処理を行ったかどうか判定する（ステップＳ７７）。
【００７８】
全ての座席候補についての処理が終了していないと判定された場合（ステップＳ７７：Ｎｏルート）、ステップＳ７３の処理に戻り、次の座席候補を１件読み込む。
【００７９】
一方、全ての座席候補についての処理が終了したと判定された場合（ステップＳ７７：Ｙｅｓルート）、先に述べたステップＳ６９の処理に移行する。
【００８０】
そして、ステップＳ６９において特定された、座席の組み合わせパターンが複数あるかどうか判定する（ステップＳ７９）。複数ないと判定された場合（ステップＳ７９：Ｎｏルート）、座席の組み合わせパターンが１件特定されているので、そのまま処理を終了する。
【００８１】
一方、複数あると判定された場合（ステップＳ７９：Ｙｅｓルート）、座席間の移動距離が最も短い座席の組み合わせパターンを特定し、ワーク・メモリ領域１５に格納する（ステップＳ８１）。
【００８２】
そしてさらに、ステップＳ８１において特定された、座席の組み合わせパターンが複数あるかどうか判定する（ステップＳ８３）。複数ないと判定された場合（ステップＳ８３：Ｎｏルート）、座席の組み合わせパターンが１件特定されているので、そのまま処理を終了する。
【００８３】
一方、複数あると判定された場合（ステップＳ８３：Ｙｅｓルート）、ユーザの第２の希望条件（座席属性）を最も多く満たす座席の組み合わせパターンを特定し、ワーク・メモリ領域１５に格納する（ステップＳ８５）。
【００８４】
このようにして空席検索処理が行われ、特定された、座席の組み合わせパターンが、処理結果としてワーク・メモリ領域１５に格納される。なお、ステップＳ８５において特定された、座席の組み合わせパターンが複数あると判定された場合には、例えば最も座席番号の若い座席を含む、座席の組み合わせパターンを特定するような構成であってもよいし、そのまま座席の組み合わせパターンを複数提示して、ユーザの選択を促すような構成であってもよい。
【００８５】
次に、端子Ａを介して移行した処理について図１１を用いて説明する。ここでは、ステップＳ６５（図９）において乗車区間をカバーできていないと判定されていることから、乗車区間において未だ座席が特定されていない区間が存在する。そこで、残りの区間につき、ユーザの第１の希望条件（座席属性）を満たす最長連続区間（座席候補）を抽出し、ワーク・メモリ領域１５に格納する（ステップＳ９１）。
【００８６】
そして、ステップＳ９１において条件に該当する座席候補が抽出されたかどうか判定する（ステップＳ９３）。すなわち、少なくともユーザの第１の希望条件（座席属性）を満たす空席があったかどうか判定する。なお、最長連続区間が例えば１単位区間の場合もある。
【００８７】
条件に該当する座席候補が抽出されなかったと判定された場合（ステップＳ９３：Ｙｅｓルート）、処理は端子Ｂを介して図１４の処理に移行する。一方、条件に該当する座席候補が抽出されたと判定された場合（ステップＳ９３：Ｎｏルート）、抽出された座席候補が複数あるかどうか判定する（ステップＳ９５）。
【００８８】
抽出された座席候補は複数ではない（１つであった）と判定された場合（ステップＳ９５：Ｎｏルート）、ステップＳ１０７の処理に移行する。一方、抽出された座席候補が複数あると判定された場合（ステップＳ９５：Ｙｅｓルート）、既に決定している区間（ワーク・メモリ領域１５にデータが格納済み）と連結した区間の座席候補を特定し、ワーク・メモリ領域１５に格納する（ステップＳ９７）。
【００８９】
そして、ステップＳ９７において該当する座席候補が特定されたかどうか判定する（ステップＳ９９）。該当する座席候補が特定されたと判定された場合（ステップＳ９９：Ｎｏルート）、既に決定している区間における座席からの移動距離が最も短い座席候補を特定し、ワーク・メモリ領域１５に格納する（ステップＳ１０１）。
【００９０】
そして、ステップＳ１０１において特定された座席候補が複数あるかどうか判定する（ステップＳ１０３）。複数ないと判定された場合（ステップＳ１０３：Ｎｏルート）、座席が１件特定されたので、ステップＳ１０７の処理に移行する。一方、複数あると判定された場合（ステップＳ１０３：Ｙｅｓルート）、ユーザの第２の希望条件（座席属性）を満たす座席を特定し、ワーク・メモリ領域１５に格納する（ステップＳ１０５）。
【００９１】
ここで、図１０に示した具体例において引き続き、以上の処理（ステップＳ９１乃至ステップＳ１０５）を行った場合について説明する。まず、ステップＳ９１における残りの区間とは、区間１乃至区間３及び区間７乃至区間９である。そして、この残りの区間について、図４に示した座席の予約状況に基づきユーザの第１の希望条件（座席属性）を満たす最長連続区間（座席候補）を抽出すると、「５−３Ｂ」と「７−１３Ａ」とが抽出される。いずれの座席も禁煙席（ユーザの第１の希望条件を満たす）で２単位区間（最長連続区間）にわたって空席である。
【００９２】
そして、ステップＳ９３における判定処理では、該当する座席があるので、Ｎｏルートへ進み、ステップＳ９５における判定処理では、複数（２つ）あるので、Ｙｅｓルートへ進む。
【００９３】
そして、ステップＳ９７の処理において、既に決定している区間である区間４乃至区間６（図１０参照）と連結した区間の座席候補を特定し、ワーク・メモリ領域１５に格納する。ここで「５−３Ｂ」は、区間１及び区間２が空席であり、区間４乃至区間６と連結していないのに対し、「７−１３Ａ」は、区間２及び区間３が空席であり、区間４乃至区間６と連結している。従って「７−１３Ａ」が特定される。
【００９４】
ステップＳ９９における判定処理では、該当する座席があるので、Ｎｏルートへ進み、ステップＳ１０１における処理では、特定されている座席が１つであるので、「７−１３Ａ」のデータをワーク・メモリ領域１５に格納する。そして、ステップＳ１０３における判定処理では、複数ないので、Ｎｏルートへ進む。
【００９５】
図１２に、上で述べた具体例の結果（座席データ）をワーク・メモリ領域１５に格納した場合における概要図を示す。図１２の例には、区間１の列１２１と区間２の列１２２と区間３の列１２３と区間４の列１２４と区間５の列１２５と区間６の列１２６と区間７の列１２７と区間８の列１２８と区間９の列１２９とが含まれている。図１２の例では、区間４の列１２４、区間５の列１２５及び区間６の列１２６における各行（車両番号、座席番号、希望条件１及び希望条件２）に予めデータが格納されており（図１０参照）、新たに区間２の列１２２と区間３の列１２３における各行にデータが格納された場合が示されている。
【００９６】
すなわち、区間４乃至区間６については、座席（６−１６Ｃ）が特定されており、残りの区間である区間１乃至区間３及び区間７乃至区間９について、座席の特定処理を行った結果、区間２及び区間３において座席（７−１３Ａ）が特定されたことが示されている。このようにして、最初に特定された最長連続区間（座席候補）を中心として座席が特定されていく。なお、「７−１３Ａ」は禁煙席であり且つ窓側であるため、希望条件１及び希望条件２が「○」と示されている。
【００９７】
図１１の処理フローに戻り、これまでの処理によって乗車区間をカバーできたかどうか判定する（ステップＳ１０７）。乗車区間をカバーできた（座席の組み合わせパターンが１件特定できた）と判定された場合（ステップＳ１０７：Ｙｅｓルート）、処理は端子Ｃを介してステップＳ６３（図９）の処理に戻る。一方、乗車区間をカバーできていないと判定された場合（ステップＳ１０７：Ｎｏルート）、ステップＳ９１の処理に戻り、さらに残りの区間につき、座席の特定処理を行う。
【００９８】
また、ステップＳ９９において、該当する座席候補がないと判定された場合（ステップＳ９９：Ｙｅｓルート）、座席候補を１件抽出する（ステップＳ１０９）。そして、区間を指定して区間連結処理を行う（ステップＳ１１１）。この処理については後に詳述する。そして、全ての座席候補について区間連結処理を行ったかどうか判定する（ステップＳ１１３）。未だ区間連結処理を行っていない座席候補が存在する場合（ステップＳ１１３：Ｎｏルート）、ステップＳ１０９の処理に戻り、次の座席候補を１件抽出する。
【００９９】
すなわち、未だ座席が特定されていない区間における座席候補（最長連続区間）は複数存在するが、いずれの座席候補も既に決定している区間と連結していないため、この段階では座席候補を特定できない。そこで、座席候補１件ずつについて既に決定している区間との連結処理（間の区間の座席を特定する処理）を行う。その後、以下に述べるように座席候補（間を埋めたので座席の組み合わせ）の絞込みを行い、座席候補パターンを特定する。
【０１００】
ステップＳ１１３において、全ての座席候補について区間連結処理を行ったと判定された場合（ステップＳ１１３：Ｙｅｓルート）、区間連結処理の結果である座席候補パターンを比較し、座席移動回数が最も少ない座席候補パターンを特定し、ワーク・メモリ領域１５に格納する（ステップＳ１１５）。
【０１０１】
そして、ステップＳ１１５において特定された座席候補パターンが複数あるかどうか判定する（ステップＳ１１７）。複数ないと判定された場合（ステップＳ１１７：Ｎｏルート）、座席候補パターンが１件特定されたので、ステップＳ１０７の処理に移行する。
【０１０２】
一方、複数あると判定された場合（ステップＳ１１７：Ｙｅｓルート）、座席間の移動距離が最も短い座席候補パターンを特定し、ワーク・メモリ領域１５に格納する（ステップＳ１１９）。
【０１０３】
そしてさらに、ステップＳ１１９において特定された、座席候補パターンが複数あるかどうか判定する（ステップＳ１２１）。複数ないと判定された場合（ステップＳ１２１：Ｎｏルート）、座席候補パターンが１件特定されたので、ステップＳ１０７の処理に移行する。
【０１０４】
一方、複数あると判定された場合（ステップＳ１２１：Ｙｅｓルート）、ユーザの第２の希望条件（座席属性）を最も多く満たす座席候補パターンを特定し、ワーク・メモリ領域１５に格納する（ステップＳ１２３）。なお、ステップＳ１２３において特定された、座席候補パターンが複数ある場合には、例えば最も座席番号の若い座席を含む、座席候補パターンを特定する。そして、先に述べたステップＳ１０７の処理に移行する。
【０１０５】
ここで、図１２に示した具体例において引き続き、以上の処理（ステップＳ１０７以降の処理）を行った場合について説明する。まず、ステップＳ１０７において、乗車区間はカバーされていないので、Ｎｏルート（ステップＳ９１）へ進む。そして、ステップＳ９１における残りの区間とは、区間１及び区間７乃至区間９である。そして、この残りの区間について、図４に示した座席の予約状況に基づきユーザの第１の希望条件（座席属性）を満たす最長連続区間（座席候補）を抽出すると、「５−３Ａ」と「５−３Ｂ」と「１−１Ｂ」とが抽出される。いずれの座席も禁煙席（ユーザの第１の希望条件を満たす）で１単位区間（最長連続区間）にわたって空席である。なお、「５−３Ａ」と「５−３Ｂ」とは、区間１における座席候補であり、さらに区間８における座席候補でもあるため、重複して抽出される。
【０１０６】
そして、ステップＳ９３における判定処理では、該当する座席があるので、Ｎｏルートへ進み、ステップＳ９５における判定処理では、複数（３つ（延べ５つ））あるので、Ｙｅｓルートへ進む。
【０１０７】
そして、ステップＳ９７の処理において、既に決定している区間である区間２乃至区間６（図１２参照）と連結した区間の座席候補を特定し、ワーク・メモリ領域１５に格納する。ここで「１−１Ｂ」は、区間８が空席であり、区間２乃至区間６と連結していないのに対し、「５−３Ａ」と「５−３Ｂ」とは、区間１が空席であるため、区間２乃至区間６と連結している。従って「５−３Ａ」と「５−３Ｂ」とが特定される。
【０１０８】
ステップＳ９９における判定処理では、該当する座席があるので、Ｎｏルートへ進み、ステップＳ１０１における処理では、連結する区間である区間２において特定されている座席「７−１３Ａ」からの距離を「５−３Ａ」と「５−３Ｂ」とについて比較する。「５−３Ａ」と「５−３Ｂ」とは同じ列であるため、どちらも移動距離が最も短い座席として特定される。
【０１０９】
そして、ステップＳ１０３における判定処理では、複数（２つ）あるので、Ｙｅｓルートへ進み、ステップＳ１０５の処理において、ユーザの第２の希望条件（例えば窓側）を満たすのは「５−３Ａ」であるので、「５−３Ａ」が特定される。
【０１１０】
図１３に、上で述べた具体例の結果（座席データ）をワーク・メモリ領域１５に格納した場合における概要図を示す。図１３の例には、区間１の列１３１と区間２の列１３２と区間３の列１３３と区間４の列１３４と区間５の列１３５と区間６の列１３６と区間７の列１３７と区間８の列１３８と区間９の列１３９とが含まれている。図１３の例では、区間２の列１３２、区間３の列１３３、区間４の列１３４、区間５の列１３５及び区間６の列１３６における各行（車両番号、座席番号、希望条件１及び希望条件２）に予めデータが格納されており（図１２参照）、新たに区間１の列１３１における各行にデータが格納された場合が示されている。
【０１１１】
すなわち、区間２乃至区間６については、座席（７−１３Ａ及び６−１６Ｃ）が特定されており、残りの区間である区間１及び区間７乃至区間９について、座席の特定処理を行った結果、区間１において座席（５−３Ａ）が特定されたことが示されている。なお、「５−３Ａ」は禁煙席であり且つ窓側であるため、希望条件１及び希望条件２が「○」と示されている。
【０１１２】
図１１の処理フロー（具体例の説明）に戻り、ステップＳ１０７における判定処理では、乗車区間はカバーされていないので、Ｎｏルート（ステップＳ９１）へ進む。そして、ステップＳ９１における残りの区間とは、区間７乃至区間９である。そして、この残りの区間について、図４に示した座席の予約状況に基づきユーザの第１の希望条件（座席属性）を満たす最長連続区間（座席候補）を抽出すると、「１−１Ｂ」と「５−３Ａ」と「５−３Ｂ」とが抽出される。いずれの座席も禁煙席（ユーザの第１の希望条件を満たす）で１単位区間（最長連続区間）にわたって空席である。また、いずれの座席候補も区間８の空席であり、残りの区間７及び区間９にはユーザの第１の希望条件（禁煙席）を満たす座席は存在しないことが分かる。
【０１１３】
そして、ステップＳ９３における判定処理では、該当する座席があるので、Ｎｏルートへ進み、ステップＳ９５における判定処理では、複数（３つ）あるので、Ｙｅｓルートへ進む。
【０１１４】
そして、ステップＳ９７の処理において、既に決定している区間である区間１乃至区間６（図１３参照）と連結した区間の座席候補を特定し、ワーク・メモリ領域１５に格納する。ここで「１−１Ｂ」と「５−３Ａ」と「５−３Ｂ」とは、区間８が空席であり、区間１乃至区間６と連結していない。そして、ステップＳ９９における判定処理では、Ｙｅｓルートへ進む。
【０１１５】
そして、例えば「１−１Ｂ」と「５−３Ａ」と「５−３Ｂ」との順に１件ずつ区間連結処理を行う。いずれの座席候補も区間８であり、区間８と、既に決まっている区間１乃至区間６との間である区間７について、区間連結処理が行われる。なお、区間連結処理の対象となる（指定）区間は、複数単位区間にわたっている場合もある。また、区間連結処理については後に詳述するため、「１−１Ｂ」と「５−３Ａ」と「５−３Ｂ」とに対するこの先の処理（具体例）も後に説明する。
【０１１６】
次に、端子Ｂを介して移行した処理について図１４を用いて説明する。ステップＳ７５（図９）において乗車区間をカバーできていないと判定された場合又はステップＳ９３（図１１）においてユーザの第１の希望条件（座席属性）を満たす最長連続区間（座席候補）が存在しないと判定された場合、以下の処理が行われる。すなわち、座席候補が少なくとも１件特定されており且つ乗車区間において未だ座席が特定されていない残りの区間が存在し、当該残りの区間にはユーザの第１の希望条件（座席属性）を満たす空席は存在しないという場合における処理である。
【０１１７】
まず、乗車区間において未だ座席が特定されていない残りの区間につき、最長連続区間（座席候補）を抽出し、ワーク・メモリ領域１５に格納する（ステップＳ１３１）。なお、ステップＳ５５（図９）において各単位区間に少なくとも１座席の空きが存在すると判定されているため、このステップＳ１３１の処理によって少なくとも１件の座席候補が抽出される。
【０１１８】
以下、乗車区間において未だ座席が特定されていない残りの区間を、ユーザの第１の希望条件（座席属性）を満たしていない座席によってカバーする（埋めていく）処理を行うが、ステップＳ１３３乃至ステップＳ１６１における処理は、図１１に示したステップＳ９５乃至ステップＳ１０７と同様の処理であるため、説明を省略する。なお、ステップＳ１４５において、乗車区間をカバーできたと判定された場合（ステップＳ１４５：Ｙｅｓルート）、処理は端子Ｄを介してステップＳ７３（図９）の処理に戻る。
【０１１９】
次に、図１５を用いて、空席検索処理のサブ・ルーチンである区間連結処理（図１１：ステップＳ１１１、図１４：ステップＳ１４９）の詳細について説明する。この区間連結処理では、未だ座席が特定されていない所定の（指定された）１又は複数の連続した単位区間について座席を特定する処理を行う。
【０１２０】
まず、指定された区間につき、ユーザの第１の希望条件（座席属性）を満たす最長連続区間（座席候補）を抽出し、ワーク・メモリ領域１５に格納する（ステップＳ１７１）。
【０１２１】
そして、ステップＳ１７１において条件に該当する座席候補が抽出されたかどうか判定する（ステップＳ１７３）。すなわち、少なくともユーザの第１の希望条件（座席属性）を満たす空席があったかどうか判定する。
【０１２２】
条件に該当する座席候補が抽出されなかったと判定された場合（ステップＳ１７３：Ｙｅｓルート）、指定された区間につき、最長連続区間（座席候補）を抽出し、ワーク・メモリ領域１５に格納する（ステップＳ１７５）。一方、条件に該当する座席候補が抽出されたと判定された場合（ステップＳ１７３：Ｎｏルート）、ステップＳ１７５の処理をスキップする。
【０１２３】
そして、ステップＳ１７１の処理又はステップＳ１７５の処理において抽出された座席候補が複数あるかどうか判定する（ステップＳ１７７）。抽出された座席候補は複数ではない（１つであった）と判定された場合（ステップＳ１７７：Ｎｏルート）、ステップＳ１８９の処理に移行する。一方、抽出された座席候補が複数あると判定された場合（ステップＳ１７７：Ｙｅｓルート）、既に決定している区間と連結した区間の座席候補を特定し、ワーク・メモリ領域１５に格納する（ステップＳ１７９）。
【０１２４】
そして、ステップＳ１７９において該当する座席候補が特定されたかどうか判定する（ステップＳ１８１）。該当する座席候補が特定されたと判定された場合（ステップＳ１８１：Ｎｏルート）、既に決定している区間における座席からの移動距離が最も短い座席候補を特定し、ワーク・メモリ領域１５に格納する（ステップＳ１８３）。該当する座席候補が例えば１つであれば、その座席のデータをワーク・メモリ領域１５に格納する。
【０１２５】
そして、ステップＳ１８３において特定された座席候補が複数あるかどうか判定する（ステップＳ１８５）。複数ないと判定された場合（ステップＳ１８５：Ｎｏルート）、座席が１件特定されたので、ステップＳ１８９の処理に移行する。一方、複数あると判定された場合（ステップＳ１８５：Ｙｅｓルート）、ユーザの第２の希望条件（座席属性）を満たす座席を特定し、ワーク・メモリ領域１５に格納する（ステップＳ１８７）。
【０１２６】
そして、これまでの処理によって指定された区間をカバーできたかどうか判定する（ステップＳ１８９）。指定された区間をカバーできた（座席の組み合わせパターンが１件特定できた）と判定された場合（ステップＳ１８９：Ｙｅｓルート）、区間連結処理を終了する。一方、指定された区間をカバーできていないと判定された場合（ステップＳ１８９：Ｎｏルート）、カバーできていない区間を指定して、区間連結処理を行う（ステップＳ１９１）。そして、ステップＳ１８９の処理に戻る。なお、ステップＳ１９１において区間連結処理を行うことにより、指定された区間をカバーできるため、ステップＳ１８９における区間連結処理の終了後はリターンする（空席検索処理に戻る）ような構成であってもよい。
【０１２７】
また、ステップＳ１８１において、該当する座席候補がないと判定された場合（ステップＳ１８１：Ｙｅｓルート）、座席候補を１件抽出する（ステップＳ１９３）。そして、抽出された座席候補の区間と既に決定している区間との間の区間を指定して区間連結処理を行う（ステップＳ１９５）。そして、全ての座席候補について区間連結処理を行ったかどうか判定する（ステップＳ１９７）。未だ区間連結処理を行っていない座席候補が存在する場合（ステップＳ１９９：Ｎｏルート）、ステップＳ１９３の処理に戻り、次の座席候補を１件抽出する。
【０１２８】
一方、ステップＳ１９７において、全ての座席候補について区間連結処理を行ったと判定された場合（ステップＳ１９７：Ｙｅｓルート）、区間連結処理の結果である座席候補パターンを比較し、座席移動回数が最も少ない座席候補パターンを特定し、ワーク・メモリ領域１５に格納する（ステップＳ１９９）。
【０１２９】
そして、ステップＳ１９９において特定された座席候補パターンが複数あるかどうか判定する（ステップＳ２０１）。複数ないと判定された場合（ステップＳ２０１：Ｎｏルート）、座席候補パターンが１件特定されたので、ステップＳ１８９の処理に移行する。
【０１３０】
一方、複数あると判定された場合（ステップＳ２０１：Ｙｅｓルート）、座席間の移動距離が最も短い座席候補パターンを特定し、ワーク・メモリ領域１５に格納する（ステップＳ２０３）。
【０１３１】
そしてさらに、ステップＳ２０３において特定された、座席候補パターンが複数あるかどうか判定する（ステップＳ２０５）。複数ないと判定された場合（ステップＳ２０５：Ｎｏルート）、座席候補パターンが１件特定されたので、ステップＳ１８９の処理に移行する。
【０１３２】
一方、複数あると判定された場合（ステップＳ２０５：Ｙｅｓルート）、ユーザの第２の希望条件（座席属性）を最も多く満たす座席候補パターンを特定し、ワーク・メモリ領域１５に格納する（ステップＳ２０７）。なお、ステップＳ２０７において特定された、座席候補パターンが複数ある場合には、例えば最も座席番号の若い座席を含む、座席候補パターンを特定する。そして、先に述べたステップＳ１８９の処理に移行する。
【０１３３】
このようにして、未だ座席が特定されていない所定の（指定された）１又は複数の連続した単位区間について座席を特定する。
【０１３４】
ここで、図１３に示した具体例において引き続き、以上の処理（ステップＳ１０９（図１１）以降の処理）を行った場合について説明する。先の説明で述べたとおり、図１１に示した処理フローに従って、ステップＳ９１において「１−１Ｂ」と「５−３Ａ」と「５−３Ｂ」とが抽出されている。そしてステップＳ１０９の処理において、まず例えば「１−１Ｂ」が抽出される。「１−１Ｂ」は区間８が空席であり、区間８と、既に決まっている区間１乃至区間６（図１３参照）との間の区間７を指定して、ステップＳ１１１の区間連結処理を行う。
【０１３５】
図１５に示した区間連結処理では、まずステップＳ１７１において、指定された区間である区間７につき、図４に示した座席の予約状況に基づきユーザの第１の希望条件（座席属性）を満たす最長連続区間（座席候補）を抽出する。なお、区間７に禁煙席の空席はないので、抽出件数は０件となる。従ってステップＳ１７３の判定処理ではＹｅｓルートへ進む。
【０１３６】
そして、ステップＳ１７５の処理において、指定された区間である区間７につき、図４に示した座席の予約状況に基づき、ユーザの第１の希望条件（座席属性）に拘らず最長連続区間（座席候補）を抽出すると、「３−１１Ａ」と「４−５Ａ」と「４−５Ｂ」と「１６−６Ａ」とが抽出される。指定された区間が、区間７という１単位区間であるため、いずれの座席も最長連続区間（１単位区間）にわたって空席である。なお、指定された区間（ここでは区間７）以外の区間について（例えば区間９まで連続して空席等）は考慮しない。
【０１３７】
そして、ステップＳ１７７における判定処理では、複数（４つ）あるので、Ｙｅｓルートへ進み、ステップＳ１７９の処理において、既に決定している区間である区間１乃至区間６（図１３参照）と連結した区間の座席候補を特定し、ワーク・メモリ領域１５に格納する。ここでは、上で述べたとおり、いずれの座席候補も区間７が空席であり、区間１乃至区間６に連結しているため、ステップＳ１８１における判定処理では、複数（４つ）あると判定され、Ｎｏルートへ進む。
【０１３８】
そして、ステップＳ１８３の処理において、区間６の座席「６−１６Ｃ」からの移動距離を比較し、最も短い「４−５Ａ」と「４−５Ｂ」とを特定し、ワーク・メモリ領域１５に格納する。ステップＳ１８５における判定処理では、複数（２つ）あるので、Ｙｅｓルートへ進み、ステップＳ１８７の処理において、例えば窓際であるユーザの第２の希望条件（座席属性）を満たす「４−５Ａ」を特定し、ワーク・メモリ領域１５に格納する。
【０１３９】
そして、ステップＳ１８９における判定処理では、指定された区間である区間７の座席が特定されたので、Ｙｅｓルートへ進み、区間連結処理を終了して図１１の処理フローに戻る。
【０１４０】
ステップＳ１１１（図１１）の区間連結処理が終了したので、ステップＳ１１３の判定処理を行う。ここでは、ステップＳ９１において抽出された「１−１Ｂ」と「５−３Ａ」と「５−３Ｂ」との全ての座席候補について処理がなされたかどうか判定する。そして、この段階では全ての座席候補について処理がなされていない（「１−１Ｂ」についての処理のみ）ため、Ｎｏルートへ進み、次の座席候補である「５−３Ａ」を抽出する。
【０１４１】
そして、ステップＳ１１１において、「５−３Ａ」についての区間連結処理を行う。「１−１Ｂ」についての処理と同様の処理のため、図１５を用いた詳細な説明は省略するが、「１−１Ｂ」と同様に、区間７には「４−５Ａ」が特定される。
【０１４２】
そして、ステップＳ１１３における判定処理では、Ｎｏルートへ進み、次の座席候補である「５−３Ｂ」を抽出する。そして、ステップＳ１１１において、「５−３Ｂ」についての区間連結処理を行う。「１−１Ｂ」及び「５−３Ａ」についての処理と同様の処理のため、図１５を用いた詳細な説明は省略するが、「１−１Ｂ」及び「５−３Ａ」と同様に、区間７には「４−５Ａ」が特定される。
【０１４３】
なお、ここでは説明を簡略化するために区間連結処理において指定される区間が区間７だけである例を示したが、区間連結処理において指定される区間は、連続する複数の単位区間である場合もある。また、ステップＳ９１において抽出された座席候補によって異なる区間が指定される場合もある。例えば、区間４乃至区間６の座席が既に特定されていて、ステップＳ９１において抽出された座席候補が、区間１が空席のものと区間９が空席のものとであった場合、区間２及び区間３と、区間７及び区間８との各々連続する異なる区間が指定される。
【０１４４】
そして、全ての座席候補について区間連結処理がなされると、ステップＳ１１３における判定処理では、Ｙｅｓルートに進む。そして、区間７及び区間８の座席候補パターンを比較する。ここでは、「４−５Ａ（区間７），１−１Ｂ（区間８）」と「４−５Ａ（区間７），５−３Ａ（区間８）」と「４−５Ａ（区間７），５−３Ｂ（区間８）」との座席候補パターンについて比較する。
【０１４５】
まず、ステップＳ１１５の処理において、座席移動回数が最も少ない座席候補パターンを特定する。いずれの座席候補パターンも１回であり、そのまま特定される。
【０１４６】
そして、ステップＳ１１７における判定処理では、複数（３件）あるのでＹｅｓルートへ進み、ステップＳ１１９の処理において、座席移動距離が最も短い「４−５Ａ（区間７），５−３Ａ（区間８）」と「４−５Ａ（区間７），５−３Ｂ（区間８）」とが特定される。なお、座席候補パターンが、３つ以上の座席の組み合わせによって構成されている場合には、座席移動距離の合計を比較する。
【０１４７】
そして、ステップＳ１２１における判定処理では、複数（２件）あるのでＹｅｓルートへ進み、ステップＳ１２３の処理において、例えば窓際であるユーザの第２の希望条件（座席属性）を最も多く満たす「４−５Ａ（区間７），５−３Ａ（区間８）」が特定される。
【０１４８】
図１６（ａ）に、上で述べた具体例の結果（座席データ）をワーク・メモリ領域１５に格納した場合における概要図を示す。図１６（ａ）の例には、区間１の列１６１と区間２の列１６２と区間３の列１６３と区間４の列１６４と区間５の列１６５と区間６の列１６６と区間７の列１６７と区間８の列１６８と区間９の列１６９とが含まれている。図１６（ａ）の例では、区間１の列１６１、区間２の列１６２、区間３の列１６３、区間４の列１６４、区間５の列１６５及び区間６の列１６６における各行（車両番号、座席番号、希望条件１及び希望条件２）に予めデータが格納されており（図１３参照）、新たに区間７の列１６７と区間８の列１６８とにおける各行にデータが格納された場合が示されている。
【０１４９】
すなわち、区間１乃至区間６については、座席（５−３Ａ、７−１３Ａ及び６−１６Ｃ）が特定されており、残りの区間である区間７乃至区間９について、座席の特定処理を行った結果、区間７及び区間８において座席（４−５Ａ及び５−３Ａ）が特定されたことが示されている。
【０１５０】
なお、上で述べたとおり、区間７にはユーザの第１の希望条件（座席属性）を満たす禁煙席の空席がなかったため、先に区間８の座席候補が特定され、その後、区間連結処理によって区間７の座席が特定されている。
【０１５１】
また、図１６（ａ）の例では、「４−５Ａ」は喫煙席であり且つ窓側であるため、希望条件１が「×」で希望条件２が「○」と示されており、「５−３Ａ」は禁煙席であり且つ窓側であるため、希望条件１及び希望条件２が「○」と示されている。
【０１５２】
図１１の処理フロー（具体例の説明）に戻り、ステップＳ１０７における判定処理では、乗車区間はカバーされていないので、Ｎｏルート（ステップＳ９１）へ進む。そして、ステップＳ９１における残りの区間とは、区間９である。そして、この残りの区間について、図４に示した座席の予約状況に基づきユーザの第１の希望条件（座席属性）を満たす禁煙席の最長連続区間（座席候補）を抽出すると、該当するものがないため、抽出件数は０件となる。
【０１５３】
そして、ステップＳ９３における判定処理では、該当する座席がないので、Ｙｅｓルートへ進み、端子Ｂを介して図１４の処理に移行する。そして、ステップＳ１３１（図１４）の処理において、残りの区間である区間９につき、図４に示した座席の予約状況に基づき、ユーザの第１の希望条件（座席属性）に拘らず最長連続区間（座席候補）を抽出すると、「４−５Ａ」と「４−５Ｂ」と「１５−７Ａ」とが抽出される。残りの区間が、区間９という１単位区間のみであるため、いずれの座席も最長連続区間（１単位区間）にわたって空席である。ステップＳ１３３における判定処理では、複数（３つ）あるので、Ｙｅｓルートへ進む。
【０１５４】
そして、ステップＳ１３５の処理において、既に決定している区間である区間１乃至区間８（図１６（ａ）参照）と連結した区間の座席候補を特定し、ワーク・メモリ領域１５に格納する。ここで「４−５Ａ」と「４−５Ｂ」と「１５−７Ａ」とは、いずれも区間９が空席であるため、区間１乃至区間８と連結している。従ってステップＳ１３７における判定処理では、複数（３つ）あるので、Ｎｏルートへ進む。
【０１５５】
そして、ステップＳ１３９における処理では、連結する区間である区間８において特定されている座席「５−３Ａ」からの距離を「４−５Ａ」と「４−５Ｂ」と「１５−７Ａ」とについて比較する。「４−５Ａ」と「４−５Ｂ」とは同じ列であり、どちらも移動距離が最も短い座席として特定される。
【０１５６】
そして、ステップＳ１４１における判定処理では、複数（２つ）あるので、Ｙｅｓルートへ進み、ステップＳ１４３の処理において、ユーザの第２の希望条件（例えば窓側）を満たすのは「４−５Ａ」であるので、「４−５Ａ」が特定される。このようにして、乗車区間における全ての単位区間の座席（座席の組み合わせパターン）が特定できる。
【０１５７】
図１６（ｂ）に、上で述べた具体例の結果（座席データ）をワーク・メモリ領域１５に格納した場合における概要図を示す。図１６（ｂ）の例では、図１６（ａ）に示したデータに加え、新たに区間９の列１６９の各行にデータが格納されている。具体的には、車両番号の行には「４」、座席番号の行には「５Ａ」、希望条件１の行には「×」、希望条件２の行には「○」が格納されている。
【０１５８】
図１４の処理フロー（具体例の説明）に戻り、ステップＳ１４５（図１４）における判定処理では、乗車区間がカバーされているので、Ｙｅｓルートへ進み、端子Ｄを介して図９のステップＳ７３の処理に移行する。ステップＳ７３（図９）において、未処理の最長連続区間は０件である（本具体例ではステップＳ７１を経由していない）ため、そのままステップＳ７５の判定処理を行う。
【０１５９】
ステップＳ７５における判定処理では、乗車区間がカバーされているので、Ｙｅｓルートへ進み、ステップＳ７７における判定処理では、最長連続区間が抽出されていない（０件）ため、Ｙｅｓルートへ進む。
【０１６０】
そして、ステップＳ６９乃至ステップＳ８５の処理において、座席の組み合わせパターンの絞り込みを行うが、ここでは座席の組み合わせパターンは１件であるため、そのまま特定し、空席検索処理を終了する。
【０１６１】
このようにして、始めにユーザの第１の希望条件（座席属性）を満たす最長連続区間（座席候補）を特定し、その座席候補を中心として、連結する区間における座席を特定していくことにより、乗車区間の座席の組み合わせパターンを特定する。
【０１６２】
［実施の形態２］
次に、本発明の第２の実施の形態における処理について説明する。上で述べた第１の実施の形態とは、空席検索処理の処理フロー（図９乃至図１６参照）が異なっており、その他、システム構成や画面構成、予約処理手順等（図１乃至図８参照）については共通である。すなわち、空席検索処理の第２の方法を示す。
【０１６３】
以下、図１７乃至図２０を用いて、空席検索処理（図５：ステップＳ２９）の詳細について説明する。なお、以下の処理は、特に断りのない限り空席検索サーバ５が実行する。
【０１６４】
まず、ステップＳ２７（図５）において受信した予約状況データを読み込み、ワーク・メモリ領域１５に格納する（図１７：ステップＳ３０１）。例えば図４に示したようなデータを格納する。そして、乗車区間を構成する各単位区間に少なくとも１座席の空きがあるかどうか確認し（ステップＳ３０３）、確認の結果、空きがあったかどうか判定する（ステップＳ３０５）。
【０１６５】
空きがないと判定された場合（ステップＳ３０５：Ｙｅｓルート）、予約不可と判定し（ステップＳ３０７）、空席検索処理を終了する。すなわち、満席の単位区間があり、乗車区間を通して座席の確保ができない場合には、予約不可とする。
【０１６６】
一方、空きがあると判定された場合（ステップＳ３０５：Ｎｏルート）、乗車区間を構成する各単位区間毎に、ステップＳ１９（図５）において受信したユーザの第１の希望条件（座席属性）を満たす空席があれば抽出し、ワーク・メモリ領域１５に格納する（ステップＳ３０９）。なお、ユーザの第１の希望条件（座席属性）を満たす空席がない単位区間については、そのまま空席のデータをワーク・メモリ領域１５に格納する。
【０１６７】
そして、ステップＳ３０９において抽出された空席について、各単位区間毎に例えば座席番号の若い順に１件ずつ特定していく。まず、第１の単位区間における空席を１件特定する（ステップＳ３１１）。次に、第２の単位区間における空席を１件特定する（ステップＳ３１３）。次に、第３の単位区間における空席を１件特定する（ステップＳ３１５）。
【０１６８】
ここでは、説明を簡略化するために、列車の運行区間及びユーザの乗車区間が例えば３単位区間である場合のフローを示しているが、乗車区間を構成する単位区間の数だけ、このように各単位区間における空席を１件ずつ特定する処理を行う。乗車区間が例えば５単位区間であれば、ステップＳ３１５の後に、第４の単位区間における空席を１件特定するステップと、第５の単位区間における空席を１件特定するステップとが追加される。また、乗車区間が例えば２単位区間であれば、ステップＳ３１５がスキップされる。すなわち、列車の運行区間を構成する単位区間の数だけ、ステップＳ３１１乃至ステップＳ３１５と同様の処理ステップを用意しておき、乗車区間を構成する単位区間の数に応じて実行する。
【０１６９】
そして、ステップＳ３１１乃至ステップＳ３１５において特定された空席（座席）を組み合わせ、座席の組み合わせパターンを１件特定し、ワーク・メモリ領域１５に格納する（ステップＳ３１７）。また、当該座席の組み合わせパターンにおける座席間の移動回数及び移動距離を集計し、座席の組み合わせパターンに対応付けてワーク・メモリ領域１５に格納しておく。なお、座席間の移動回数及び移動距離の集計は、後で（比較処理時等、必要に応じて）行ってもよい。
【０１７０】
そして、第３の区間における空席の全件について処理が終了したかどうか判定する（ステップＳ３１９）。終了していないと判定された場合（ステップＳ３１９：Ｎｏルート）、ステップＳ３１５に戻り、第３の区間における次の空席を１件特定する。一方、終了したと判定された場合（ステップＳ３１９：Ｙｅｓルート）、第２の区間における空席の全件について処理が終了したかどうか判定する（ステップＳ３２１）。
【０１７１】
ここで、乗車区間が例えばｎ（ｎは４以上の整数）単位区間である場合、ステップＳ３１９の前に第ｎの区間における空席の全件について処理が終了したかどうか判定し、第ｎの区間における空席の全件についての処理が終了するまでステップＳ３１７の処理を繰り返す。そして、第ｎの区間における空席の全件についての処理が終了すると、第（ｎ−１）の区間における次の空席を１件特定し、第ｎの区間における空席について再度最初の１件から順にステップＳ３１７の処理を行う。
【０１７２】
すなわち、ステップＳ３１５とステップＳ３１９とによって構成されるループの内側に、（ｎ−３）個のループが構成される。上で述べたように、列車の運行区間を構成する単位区間の数だけループを用意しておき、乗車区間を構成する単位区間の数に応じてループ処理を実行する。また、ループの数の異なるフローを１又は複数用意しておき、乗車区間を構成する単位区間の数に応じて使い分けるようにしてもよい。
【０１７３】
そして、ステップＳ３２１において、第２の区間における空席の全件について処理が終了していないと判定された場合（ステップＳ３２１：Ｎｏルート）、ステップＳ３１３に戻り、第２の区間における次の空席を１件特定する。一方、終了したと判定された場合（ステップＳ３２１：Ｙｅｓルート）、第１の区間における空席の全件について処理が終了したかどうか判定する（ステップＳ３２３）。
【０１７４】
第１の区間における空席の全件について処理が終了していないと判定された場合（ステップＳ３２３：Ｎｏルート）、ステップＳ３１１に戻り、第１の区間における次の空席を１件特定する。一方、終了したと判定された場合（ステップＳ３２３：Ｙｅｓルート）、処理は端子Ｆを介して図１８の処理に移行する。
【０１７５】
ここまでの処理で、ステップＳ３０９において抽出された各単位区間の空席に基づき、全通りの座席の組み合わせパターンが特定されている。そして、これらの座席の組み合わせパターンのうち、座席間の移動回数が最も少ない、座席の組み合わせパターンを特定し、ワーク・メモリ領域１５に格納する（図１８：ステップＳ３３１）。
【０１７６】
そして、ステップＳ３３１において特定された座席の組み合わせパターンが複数あるかどうか判定する（ステップＳ３３３）。複数ないと判定された場合（ステップＳ３３３：Ｎｏルート）、座席の組み合わせパターンが１件特定されたので、空席検索処理を終了する。
【０１７７】
一方、複数あると判定された場合（ステップＳ３３３：Ｙｅｓルート）、座席間の移動距離が最も短い、座席の組み合わせパターンを特定し、ワーク・メモリ領域１５に格納する（ステップＳ３３５）。
【０１７８】
そしてさらに、ステップＳ３３５において特定された、座席の組み合わせパターンが複数あるかどうか判定する（ステップＳ３３７）。複数ないと判定された場合（ステップＳ３３７：Ｎｏルート）、座席の組み合わせパターンが１件特定されたので、空席検索処理を終了する。
【０１７９】
一方、複数あると判定された場合（ステップＳ３３７：Ｙｅｓルート）、ユーザの第２の希望条件（座席属性）を最も多く満たす座席の組み合わせパターンを特定し、ワーク・メモリ領域１５に格納する（ステップＳ３３９）。なお、ステップＳ３３９において特定された、座席の組み合わせパターンが複数ある場合には、例えば最も座席番号の若い座席を含む、座席の組み合わせパターンを特定するような構成であってもよいし、そのまま座席の組み合わせパターンを複数提示して、ユーザの選択を促すような構成であってもよい。
【０１８０】
例えばユーザの第１の希望条件（座席属性）が禁煙席で、座席の予約状況が図４に示したようになっている場合について具体例を示す。なお、図４の例において省略してある部分については空席がないものとする。また、ユーザの乗車区間は区間５乃至区間７とする。
【０１８１】
車両属性が図３に示したようになっている場合、まず、ステップＳ３０９の処理において、区間５では「５−３Ａ」と「５−３Ｂ」と「６−１６Ｃ」とが抽出される。なお「４−５Ｃ」は区間５において空席であるが、喫煙席であるため抽出されない。同様に区間６では「５−３Ａ」と「６−１６Ｃ」とが抽出される。ここでも「１５−７Ａ」は喫煙席であるため抽出されない。一方、区間７では禁煙席の空席がないため、「３−１１Ａ」と「４−５Ａ」と「４−５Ｂ」と「１６−１６Ａ」とが、そのままワーク・メモリ領域１５に格納される。
【０１８２】
図１９に、ステップＳ３０９において抽出した結果（座席データ）をワーク・メモリ領域１５に格納した場合における概要図を示す。図１９の例には、区間５の列１９５と区間６の列１９６と区間７の列１９７とが含まれている。そして、区間５の列１９５には３件、区間６の列１９６には２件、区間７の列１９７には４件のデータが格納されている。
【０１８３】
図１７の処理フロー（具体例の説明）に戻り、ステップＳ３１１の処理において、第１の区間である区間５における空席が１件、例えば区間５の列１９５（図１９）の１行目の「５−３Ａ」が特定される。そして、ステップＳ３１３の処理において、第２の区間である区間６における空席が１件、例えば区間６の列１９６（図１９）の１行目の「５−３Ａ」が特定される。そしてさらに、ステップＳ３１５の処理において、第３の区間である区間７における空席が１件、例えば区間７の列１９７（図１９）の１行目の「３−１１Ａ」が特定される。
【０１８４】
そして、ステップＳ３１７の処理において、「５−３Ａ（区間５），５−３Ａ（区間６），３−１１Ａ（区間７）」という座席の組み合わせパターンが特定される。また、当該座席の組み合わせパターンにおいて、座席の移動回数は１回である。また、各車両の座席の列数が例えば１６列であった場合、移動距離は例えば２４列（５両目３列＋４両目１６列＋３両目５列）と集計される。
【０１８５】
なお、移動距離の計算は、列車全体における各座席（列）の絶対位置に基づき行うようにしてもよい。例えば、上に示した例では「５−３Ａ」は列車全体における６７列目（１６×４（両）＋３）とする。同様に「３−１１Ａ」は列車全体における４３列目（１６×２（両）＋１１）とする。これにより「５−３Ａ」と「３−１１Ａ」との距離は、２４列（｜６７−４３｜）と計算できる。
【０１８６】
そして、ステップＳ３１９における判定処理では、第３の区間である区間７における未処理の空席が残り３件あるため、Ｎｏルートへ進み、ステップＳ３１５の処理において、例えば区間７の列１９７（図１９）の２行目の「４−５Ａ」が特定される。
【０１８７】
そして、ステップＳ３１７の処理において、「５−３Ａ（区間５），５−３Ａ（区間６），４−５Ａ（区間７）」という座席の組み合わせパターンが特定される。また、当該座席の組み合わせパターンにおいて、座席の移動回数は１回である。また、各車両の座席の列数が例えば１６列であった場合、移動距離は１４列と集計される。
【０１８８】
このようにして、ステップＳ３１７の処理を繰り返し実行し、座席の組み合わせパターンを特定していく。そして、第３の区間である区間７における空席について全件の処理が終了した場合には、ステップＳ３１９における判定処理では、Ｙｅｓルートへ進む。ステップＳ３２１における判定処理では、第２の区間である区間６における未処理の空席が残り１件あるため、Ｎｏルートへ進み、ステップＳ３１３の処理において、例えば区間６の列１９６（図１９）の２行目の「６−１６Ｃ」が特定される。
【０１８９】
そして、ステップＳ３１５の処理において、例えば区間７の列１９７（図１９）の１行目の「３−１１Ａ」が再度特定される。そして、この場合、ステップＳ３１７の処理において、「５−３Ａ（区間５），６−１６Ｃ（区間６），３−１１Ａ（区間７）」という座席の組み合わせパターンが特定される。また、当該座席の組み合わせパターンにおいて、座席の移動回数は２回である。また、各車両の座席の列数が例えば１６列であった場合、移動距離は８２列（｜６７−９６｜＋｜９６−４３｜）と集計される。同様に第３の区間である区間７における未処理の空席について処理を行う。
【０１９０】
そして、ステップＳ３２１における判定処理では、第２の区間である区間６における空席について全件の処理が終了したので、Ｙｅｓルートへ進む。そして、ステップＳ３２３における判定処理では、第１の区間である区間５における未処理の空席が残り２件あるため、Ｎｏルートへ進み、ステップＳ３１１の処理において、例えば区間５の列１９５（図１９）の２行目の「５−３Ｂ」が特定される。
【０１９１】
以下、「５−３Ｂ」を含む全通りの座席の組み合わせパターンが特定され、同様に、区間５の列１９５（図１９）の３行目の「６−１６Ｃ」を含む全通りの座席の組み合わせパターンが特定され、ワーク・メモリ領域１５に格納される。
【０１９２】
図２０に、以上（ステップＳ３２３まで）の処理の結果（座席の組み合わせデータ）をワーク・メモリ領域１５に格納した場合における概要図を示す。図２０の例には、区間５の列２０５と区間６の列２０６と区間７の列２０７と移動回数の列２０８と移動距離の列２０９とが含まれている。そして、各行には、座席の組み合わせパターンのデータが格納されている。例えば１行目には「５−３Ａ（区間５），５−３Ａ（区間６），３−１１Ａ（区間７）」という座席の組み合わせパターンが示され、当該座席の組み合わせパターンの移動回数が１回であり、移動距離が２４列であることが示されている。そして、座席の組み合わせパターンの数だけ行が存在する。すなわち、図１７に示したステップＳ３１１乃至ステップＳ３２３により構成されるループ処理によって、ステップＳ３１７の処理が実施される毎に、座席の組み合わせパターンのデータが１行ずつ追加されていく。
【０１９３】
図１７の処理フロー（具体例の説明）に戻り、図２０に示したように座席の組み合わせパターンが全通り特定されると、ステップＳ３２３における判定処理では、Ｙｅｓルートへ進み、端子Ｆを介して図１８の処理へ移行する。
【０１９４】
そして、ステップＳ３３１（図１８）の処理において、移動回数が１回と最も少ない８件（図２０：１乃至４行目及び２１乃至２４行目）の、座席の組み合わせパターンが特定され、、ワーク・メモリ領域１５に格納される。そして、ステップＳ３３３における判定処理では、複数（８件）あるため、Ｙｅｓルートへ進む。
【０１９５】
そして、ステップＳ３３５の処理において、移動距離が１４列と最も短い２件（図２０：２行目及び３行目）の、座席の組み合わせパターンが特定され、ワーク・メモリ領域１５に格納される。
【０１９６】
そして、ステップＳ３３７における判定処理では、複数（２つ）あるので、Ｙｅｓルートへ進み、ステップＳ３３９の処理において、ユーザの第２の希望条件（例えば窓側）を最も多く満たす「５−３Ａ（区間５），５−３Ａ（区間６），４−５Ａ（区間７）」（図２０：２行目）という座席の組み合わせパターンが特定される。
【０１９７】
なお、先に述べた第１の実施の形態においては、区間５及び区間６の座席が「６−１６Ｃ」となる例を示したが、ユーザの乗車区間を区間５乃至区間７と設定して処理を行った場合においては、第２の実施の形態と同様の結果となる。
【０１９８】
このように、第２の実施の形態では、まず、ユーザの第１の希望条件（座席属性）を優先して抽出された各単位区間における空席に基づき、座席の組み合わせパターンを全通り特定した後、移動回数、移動距離及びユーザの第２の希望条件（座席属性）によって絞り込み処理を行うような構成となっている。
【０１９９】
以上本発明の実施の形態について説明したが、本発明はこれに限定されるものではない。例えば、図２乃至図４に示したテーブル構成は一例であって、同様のデータを格納するためであれば、別の構成を採用するようにしてもよい。また、必要に応じて項目を追加又は削除するようにしてもよい。また、図６乃至図８に示した画面構成は一例であって、同様の内容を別の態様にて表現することも可能である。また、図１０、図１２、図１３、図１６（ａ）及び（ｂ）、図１９及び図２０に示したワーク・メモリ領域１５におけるデータも一例であって、同様のデータを別の表現で示す場合もある。また、空席検索サーバ５及び予約管理サーバ９が一体であってもよいし、各々複数のサーバによって構成されていてもよい。
【０２００】
また、座席を特定するための条件も一例であって、優先順位を入れ替えた構成であってもよい。例えばユーザの希望条件も一例であって、喫煙席又は禁煙席よりも、窓側又は通路側を優先させるような構成であってもよいし、座席移動回数の少なさや座席移動距離の短さを最優先の条件にしてもよい。また、座席移動回数と座席移動距離とのバランスをとって、例えば１回の長距離移動よりも２回の短距離移動を、場合によっては優先させるような構成であってもよい。また、グリーン車や車椅子用トイレがある車両等、様々な車両属性を優先条件に加えてもよい。また、列車に座席モニタ等がある場合には、座席の組み合わせパターンを表示させて、ユーザが移動先の座席を把握しやすいようにすることも可能である。
【０２０１】
さらに、上で示した処理フローは一例であって、同じ機能を有する他のフローを利用することも可能である。また、本発明を列車の指定席の予約処理に用いた場合について説明したが、本発明の用途はこれに限定されない。例えば経由地のあるバスや飛行機等、その他の乗り物における指定席の予約処理についても利用可能である。
【０２０２】
【発明の効果】
以上述べたように、本発明によれば、乗り物の指定席の予約において、利用区間を通して同一の座席が確保できない場合にも、適切な予約処理を可能とすることができる。
【図面の簡単な説明】
【図１】本発明の実施の形態におけるシステム概要図である。
【図２】列車テーブルの構成及び格納されるデータの一例を示す図である。
【図３】車両テーブルの構成及び格納されるデータの一例を示す図である。
【図４】予約状況テーブルの構成及び格納されるデータの一例を示す図である。
【図５】本発明の実施の形態における処理フロー（その１）を示す図である。
【図６】空席検索ページの一例を示す図である。
【図７】検索結果ページの一例を示す図である。
【図８】予約確認ページの一例を示す図である。
【図９】本発明の実施の形態１における処理フロー（その１）を示す図である。
【図１０】データをワーク・メモリ領域１５に格納した場合における概要図（その１）である。
【図１１】本発明の実施の形態１における処理フロー（その２）を示す図である。
【図１２】データをワーク・メモリ領域１５に格納した場合における概要図（その２）である。
【図１３】データをワーク・メモリ領域１５に格納した場合における概要図（その３）である。
【図１４】本発明の実施の形態１における処理フロー（その３）を示す図である。
【図１５】本発明の実施の形態１における処理フロー（その４）を示す図である。
【図１６】データをワーク・メモリ領域１５に格納した場合における概要図（その４）である。
【図１７】本発明の実施の形態２における処理フロー（その１）を示す図である。
【図１８】本発明の実施の形態２における処理フロー（その２）を示す図である。
【図１９】データをワーク・メモリ領域１５に格納した場合における概要図（その５）である。
【図２０】データをワーク・メモリ領域１５に格納した場合における概要図（その６）である。
【符号の説明】
１  ネットワーク    ３，７  ユーザ端末
５  空席検索サーバ    ９  予約管理サーバ
１５  ワーク・メモリ領域    １９  予約管理ＤＢ
【図１】
2004265167.tif 000003
【図２】
2004265167.tif 000004
【図３】
2004265167.tif 000005
【図４】
2004265167.tif 000006
【図５】
2004265167.tif 000007
【図６】
2004265167.tif 000008
【図７】
2004265167.tif 000009
【図８】
2004265167.tif 000010
【図９】
2004265167.tif 000011
【図１０】
2004265167.tif 000012
【図１１】
2004265167.tif 000013
【図１２】
2004265167.tif 000014
【図１３】
2004265167.tif 000015
【図１４】
2004265167.tif 000016
【図１５】
2004265167.tif 000017
【図１６】
2004265167.tif 000018
【図１７】
2004265167.tif 000019
【図１８】
2004265167.tif 000020
【図１９】
2004265167.tif 000021
【図２０】
2004265167.tif 000022