(57)【要約】【課題】処理の途中で無限ループに陥ることもなく、安定なマッチングを得ることができる双方向マッチングシステムを得る。【解決手段】複数の要素からなり、要素の一部に複数の要素を含むグループが属する集合Ａと、複数の要素からなる集合Ｂの各要素をマッチングし、集合Ａおよび集合Ｂの各要素は、相手の集合の全部または一部に対して一意に順位付けられた優先度リストを有し、集合Ｂの各要素は、集合Ａに対する正整数の定員とを有している。集合Ａおよび集合Ｂの各要素が有する前記優先度リストに基づき、集合Ａの要素と集合Ｂの要素とをマッチングさせ、マッチングを繰り返した後、未処理の集合Ａの要素がなくなったとき、マッチングを確定させる。このとき、当該マッチングの際に、集合Ｂの所定の要素の定員を、集合Ｂの所定の要素にマッチングされた集合Ａの要素の中で、（最も要素数の多いグループの要素数−１）まで増員させる。【選択図】図２
2008181549.tif 000002
【特許請求の範囲】
【請求項１】
募集側の集合Ｂの各要素がそれぞれ保有する募集側コンピュータと、志願側の集合Ａの各要素がそれぞれ保有する志願側コンピュータとが、通信ネットワークを介して、それぞれマッチング仲介コンピュータに接続されて、前記マッチング仲介コンピュータは、集合Ａの要素を集合Ｂの要素と対応付けるマッチングを行い、集合Ａおよび集合Ｂの各要素は互いに優先度リストに含まれる相手とのみ対応付けされる双方向マッチングシステムであって、
集合Ｂの各要素ごとに定員が設定されており、集合Ｂの各要素に対して、集合Ａの複数の要素が該定員の範囲で割り当て可能であって、
前記マッチング仲介コンピュータは、
前記募集側コンピュータから集合Ｂの各要素ごとの上記定員を示す正整数の値を受信する手段と、
受信した前記値を、集合Ｂの各要素ごとに、それの定員として記憶する集合Ｂ定員記憶手段と、
前記志願側コンピュータから、集合Ａの各要素ごとに、集合Ｂの要素の全部または一部に対して付した、対応付けのための一意的な優先度順位を示した優先度リストを受信する手段と、
前記志願側コンピュータから受信した前記優先度リストを記憶する集合Ａ優先度リスト記憶手段と、
前記募集側コンピュータから、集合Ｂの各要素ごとに、集合Ａの要素の全部または一部に対して付した、対応付けのための一意的な優先度順位を示した優先度リストを受信する手段と、
前記募集側コンピュータから受信した前記優先度リストを記憶する集合Ｂ優先度リスト記憶手段と、
集合Ａの要素のうちの２以上の所定の要素は１つのグループを構成しており、
該グループの各要素は、集合Ｂの要素の全部または一部に対して付した一意的な対応付けのための優先度順位を示した同一の優先度リストを持ち、
集合Ａは該グループを１以上含んでいるものであって、
集合Ａの各該グループを他の要素と同様に１つの要素として置き換えた集合を集合Ａ'とするとき、
集合Ｂの各要素の前記優先度リストとして、前記集合Ｂ優先度リスト記憶手段が記憶している優先度リストにおいて、前記グループを構成する要素のうち、優先度順位が最も大きい要素に対する優先度順位を該グループの優先度順位とし、該グループを構成する他の要素に対する優先度順位を削除した、新しい優先度リストを生成する集合Ｂ優先度リスト生成手段と、
前記集合Ｂ優先度リスト生成手段により生成された前記優先度リストと、前記集合Ｂ定員記憶手段に記憶されている前記定員の値と、前記集合Ａ優先度リスト記憶手段に記憶されている前記優先度リストのうち前記グループを構成する要素についてはそれらの要素に対する前記同一の優先度リストを用いるとともにグループを構成しない要素については記憶されている当該要素の優先度リストを用いて、集合Ａ’および集合Ｂの各要素のうち、互いが相手方の優先度リストに含まれている要素同士があるかを検索し、当該要素同士があれば、それらを優先度順位の小さい順に、かつ、集合Ｂの各要素ごとに設定された前記定員の範囲で、対応付けることで、集合Ｂの各要素と集合Ａ’の各要素とを対応付けるマッチング処理を行うマッチング手段と、
集合Ｂの要素と対応付けされる集合Ａ'の要素の中で、集合Ｂの要素と対応付けされる集合Ａ'の要素の最も順位が大きいものが前記グループである場合には、該集合Ｂの要素の前記定員を、（（該グループの要素の個数）−１）だけ大きくする定員増員処理手段と、
前記マッチング手段によるマッチング処理結果を出力する手段と
を備えたことを特徴とする双方向マッチングシステム。
【請求項２】
前記募集側コンピュータは、
前記集合Ｂの要素ごとに、前記集合Ａに含まれる前記グループとのマッチングを拒否する処理を行うか否かを設定する設定手段と、
前記設定手段において前記処理を行うと設定されている場合に、前記優先度リストへ優先度順位が入力される集合Ａの要素がグループを構成しているか否かを判定する判定手段と、
前記判定手段によりグループであると判定された場合に集合Ａの当該要素に対する優先度順位の入力を拒否する入力確認手段と
を備えたことを特徴とする請求項１に記載の双方向マッチングシステム。
【請求項３】
前記マッチング仲介コンピュータは、
前記マッチング手段によるマッチング処理の結果、集合Ａ’に含まれる前記グループが集合Ｂのいずれの要素ともマッチングできなかった場合に、前記グループを解消して、前記グループを構成する各要素を未処理の別々の要素としてマッチング処理を再度行うために、集合Ｂの各要素の前記優先度リストとして、前記集合Ｂ優先度リスト記憶手段が記憶している前記優先度リストにおいて、前記グループを構成する要素のうち、優先度順位が最も大きい要素に対する優先度順位に対して、それより１つ大きい順位を該グループの優先度順位として挿入し、当該挿入された優先度順位以降の要素について、それらの優先度順位を１つずつ繰り下げた、新しい優先度リストを生成する第２の集合Ｂ優先度リスト生成手段と、
前記第２の集合Ｂ優先度リスト生成手段により生成された前記優先度リストと前記集合Ａ優先度リスト記憶手段が記憶している前記優先度リストと前記集合Ｂ定員記憶手段に記憶されている前記定員の値とに基づいて、前記グループを構成していた各要素および集合Ｂの各要素のうち、互いが相手方の優先度リストに含まれている要素同士があるかを検索し、当該要素同士があれば、それらを優先度順位の小さい順に、かつ、集合Ｂの各要素ごとに設定された前記定員の範囲で、再度対応付けることで、集合Ｂの各要素と集合Ａ’に含まれる前記グループを構成する各要素とを対応付けるマッチング処理を行う再マッチング手段と
をさらに備えたことを特徴とする請求項１または２に記載の双方向マッチングシステム。
【請求項４】
募集側の集合Ｂの各要素がそれぞれ保有する募集側コンピュータと、志願側の集合Ａの各要素がそれぞれ保有する志願側コンピュータとが、通信ネットワークを介してそれぞれ接続されて、集合Ａおよび集合Ｂの各要素を互いに優先度リストに含まれる相手とのみ対応付けするように、集合Ａの要素を集合Ｂの要素と対応付けるマッチングを行うマッチング仲介コンピュータを、
前記募集側コンピュータから、集合Ｂの各要素ごとに集合Ａの複数の要素に対して設定された割り当て可能な定員を示す正整数の値を受信する手段と、
受信した前記値を、集合Ｂの各要素ごとに、それの定員として記憶する集合Ｂ定員記憶手段と、
前記志願側コンピュータから、集合Ａの各要素ごとに、集合Ｂの要素の全部または一部に対して付した、対応付けのための一意的な優先度順位を示した優先度リストを受信する手段と、
前記志願側コンピュータから受信した前記優先度リストを記憶する集合Ａ優先度リスト記憶手段と、
前記募集側コンピュータから、集合Ｂの各要素ごとに、集合Ａの要素の全部または一部に対して付した、対応付けのための一意的な優先度順位を示した優先度リストを受信する手段と、
前記募集側コンピュータから受信した前記優先度リストを記憶する集合Ｂ優先度リスト記憶手段と、
集合Ａの要素のうちの２以上の所定の要素は１つのグループを構成しており、該グループの各要素は、集合Ｂの要素の全部または一部に対して付した一意的な対応付けのための優先度順位を示した同一の優先度リストを持ち、集合Ａは該グループを１以上含んでいるものであって、集合Ａの各該グループを他の要素と同様に１つの要素として置き換えた集合を集合Ａ'とするとき、集合Ｂの各要素の前記優先度リストとして、前記集合Ｂ優先度リスト記憶手段が記憶している優先度リストにおいて、前記グループを構成する要素のうち、優先度順位が最も大きい要素に対する優先度順位を該グループの優先度順位とし、該グループを構成する他の要素に対する優先度順位を削除した、新しい優先度リストを生成する集合Ｂ優先度リスト生成手段と、
前記集合Ｂ優先度リスト生成手段により生成された前記優先度リストと、前記集合Ｂ定員記憶手段に記憶されている前記定員の値と、前記集合Ａ優先度リスト記憶手段に記憶されている前記優先度リストのうち前記グループを構成する要素についてはそれらの要素に対する前記同一の優先度リストを用いるとともにグループを構成しない要素については記憶されている当該要素の優先度リストを用いて、集合Ａ’および集合Ｂの各要素のうち、互いが相手方の優先度リストに含まれている要素同士があるかを検索し、当該要素同士があれば、それらを優先度順位の小さい順に、かつ、集合Ｂの各要素ごとに設定された前記定員の範囲で、対応付けることで、集合Ｂの各要素と集合Ａ’の各要素とを対応付けるマッチング処理を行うマッチング手段と、
集合Ｂの要素と対応付けされる集合Ａ'の要素の中で、集合Ｂの要素と対応付けされる集合Ａ'の要素の最も順位が大きいものが前記グループである場合には、該集合Ｂの要素の前記定員を、（（該グループの要素の個数）−１）だけ大きくする定員増員処理手段と、
前記マッチング手段によるマッチング処理結果を出力する手段と
して機能させるための双方向マッチングプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、双方向マッチングシステムおよび双方向マッチングプログラムに関し、特に、双方向に優先度を持つ集合間でマッチングを行うための双方向マッチングシステムおよび双方向マッチングプログラムに関する。
【背景技術】
【０００２】
就職志願者の集合と志願者を受け入れる企業の集合の間のマッチング問題のように、双方向に優先度を持つ集合間のマッチング問題においてマッチングを行うための手法が提案されつつある（例えば、非特許文献１参照。）。
【０００３】
ここで、各志願者は自分が就職したい企業を好みにより順位づけした優先度リストを持ち、一方各企業の方も受け入れたい志願者を順位づけした優先度リストを持つものとする。志願者ａの優先度リストＲＯＬ（ａ）は、企業の集合の部分集合であり、順位によって等号を含まない不等号によって順序づけられた全順序集合である。ここでは、志願者ａがｐをｐ'より好む場合に、ｐ＜ｐ'と書くことにする（具体例を挙げれば、ｐが優先度第１位で、ｐ'は優先度第３位の場合には、ｐ（＝１）＜ｐ'（＝３）となる。）。また、企業ｐの志願者に対する優先度リストＲＯＬ（ｐ）についても同様である。また、各企業には志願者を受け入れる採用枠（定員）がある。企業ｐの定員Ｑ（ｐ）は１以上の整数である。マッチングＭとは、志願者と企業とのペア（ａ，ｐ）からなる集合であって次の２つの条件を満たすものとする。
【０００４】
１．  任意の志願者ａに関して、ａを含むペア（ａ，ｐ）はＭにおいて１個以下である。
２．  任意の企業ｐに関して、ｐを含むペア（ａ，ｐ）はＭにおいて、企業の定員Ｑ（ｐ）個以下である。
【０００５】
マッチングの一例を図７に示す。図７では、志願者の集合｛ａ１，ａ２，ａ３，ａ４，ａ５，ａ６，ａ７｝と企業の集合｛ｐ１，ｐ２，ｐ３，ｐ４｝の間のマッチングとして、｛（ａ１，ｐ１），（ａ２，ｐ３），（ａ３，ｐ４），（ａ５，ｐ３），（ａ６，ｐ４）｝が得られている。このマッチングでは、志願者ａ４，ａ７と企業ｐ２にはマッチング相手が存在しない。
【０００６】
また、図８に志願者と企業の優先度リストの例を示す。それぞれの優先度リストでは上に記載されているものほど好ましい相手を示す。言い換えれば、下に行くほど順位が大きくなる。図８の例では、志願者は３つの企業に対して、ｐ１＜ｐ４＜ｐ３という順序をつけている。企業は６人の志願者にａ７＜ａ１＜ａ４＜ａ３＜ａ５＜ａ６という順序をつけている。マッチングすることをまったく望まない相手は優先度リストに記載しない。
【０００７】
マッチング問題とは、志願者の集合、企業の集合、全志願者および全企業の優先度リストが与えられたときに、志願者と企業の間のマッチングを求める問題のことを言う。マッチング方法とは、マッチング問題に対する解法、すなわち、志願者と企業の間のマッチングを求める方法のことである。従って、マッチングシステムとは、マッチング方法を実行するシステムのことである。
【０００８】
また、上記のようなマッチングには安定性を定義することができる。マッチングＭが安定であるのは、次の２つの条件が共に満たされる場合を言う。
【０００９】
１．すべての志願者（企業）は、自分の優先度リストに載せた企業（志願者）としかマッチングしない。
２．マッチングＭに含まれない志願者と企業のすべてのペア（ａ，ｐ）はブロッキングペアではない。ここで、ブロッキングペアとは次の３つの条件を共に満たすものである。
２．０．  ａはｐの優先度リストに記載され、かつ、ｐはａの優先度リストに記載されている。
２．１．  Ｍにおいてａはどの企業ともマッチングしていないか、またはＭにおいてａはｐ'とマッチングしていて、ａの優先度リストにおいてｐ＜ｐ'が成り立つ。
２．２．  Ｍにおいてｐがマッチングしている志願者数は定員Ｑ（ｐ）より少ないか、または、Ｍにおいてｐがマッチングしているある志願者ａ'が存在し、ｐの優先度リストにおいてａ＜ａ'が成り立つ。
【００１０】
マッチング問題においては、安定なマッチングを生成する方法が求められる。不安定なマッチングが得られた場合、自分が優先度リストに記載していない相手、すなわち、自分のまったく望まない相手とマッチングした志願者または企業が存在するか、あるいは、ブロッキングペアが存在する。ブロッキングペアを構成する志願者と企業の両者にとって、得られたマッチングよりブロッキングペアの相手の方が好ましいため、不安定なマッチングは公平でない。つまり、不安定なマッチングを生成する方法ではマッチングに対する信頼性が無くなり、マッチングの対象者がマッチングに参加する意思を損なうことになる。
【００１１】
図９に、上記非特許文献１に書かれているＧａｌｅ−Ｓｈａｐｌｅｙアルゴリズムを用いた従来のマッチング方法を示すフローチャート図を示す。全志願者が順番に、まず自分の優先度リストで順位の一番小さい企業から順番にプロポーズを行なうのが特徴である。
【００１２】
図９の説明を行う前に、図１０を用いて簡単に概要を説明する。図１０の例は、４つの病院の集合と、それらの病院に就職を希望する８人の志願者の集合とのマッチング問題を想定している。明石さんから工藤さんまでの全志願者が順番に、まず自分の優先度リストで順位の一番小さい企業から順番にプロポーズを行なう。
明石さんは、第１希望が双川病院であるので、先ず、はじめに、明石さんは双川病院にプロポーズする。双方病院では、明石さんが優先度リストの４位にあるので、（明石，双川病院）が仮マッチングされる。
次に、井上さんがプロポーズを行う。井上さんの優先度リストにおいては、第１希望が双川病院であるので、井上さんは双川病院にプロポーズする。双川病院では、井上さんが優先度リストの５位にあり、かつ、双川病院の定員は２名でまだ１名分空いているので、（井上，双川病院）が仮マッチングされる。
次に、上野さんがプロポーズを行う。上野さんの優先度リストにおいては、第１希望が双川病院であるので、上野さんは双川病院にプロポーズする。双川病院では、上野さんが優先度リストの６位にあり、かつ、双川病院の定員は空きがないので、優先度リストの第２希望の病院にプロポーズを行う。第２希望の一山病院では、上野さんは１位であるので、（上野，一山病院）が仮マッチングされる。
次に、江口さんは、第１希望の一山病院にプロポーズするが、一山病院の優先度リストに江口さんの名前はないため、拒絶され、第２希望の双川病院にプロポーズするが、双川病院の優先度リストの７位で、かつ、定員に空きがないため、拒絶され、第３希望の美村病院にプロポーズすると、６位に名前があるため、（江口，美村病院）が仮マッチングされる。
次に、大川さんは、第１希望の双川病院にプロポーズする。双川病院の優先度リストで、大川さんは３位である。定員は２名であり、すでに２名が仮マッチングされている。しかしながら、仮マッチングされているのは、優先度リストにおける４位の明石さんと５位の井上さんである。このため、最も順位の大きい井上さんが除外され、（大川，双川病院）が仮マッチングされる。
除外された井上さんは、双川病院の次に自分の優先度リストでの順位が小さい病院に対してプロポーズをやり直す。当該病院は一山病院である。しかしながら、一山病院の優先度リストに井上さんの名前はないため、拒絶される。井上さんの優先度リストには第２希望までしか登録されていないため、井上さんは、すべての病院から拒絶されたことになる。
次に、川口さんの処理を行う。川口さんの優先度リストにおいては、第１希望が双川病院であるので、川口さんは双川病院にプロポーズする。双川病院では、川口さんは優先度リストの８位にあり、かつ、双川病院の定員は川口さんより上位の志願者に占められ空きがないので、川口さんは川口さんの優先度リストの第２希望の病院にプロポーズを行う。第２希望の美村病院の優先度リストでは、川口さんの名前はないので、拒絶される。第３希望の一山病院でも同様に拒絶され、第４希望の四谷病院で、優先度リストの６位に名前があるので、（川口，四谷病院）が仮マッチングされる。
次に、木村さんは、第１希望の双川病院にプロポーズする。双川病院の優先度リストで、木村さんは１位である。定員は２名であり、すでに２名が仮マッチングされている。しかしながら、仮マッチングされているのは、優先度リストにおける４位の明石さんと３位の大川さんである。このため、最も順位の大きい明石さんが除外され、（木村，双川病院）が仮マッチングされる。
除外された明石さんは、双川病院の次に自分の優先度リストでの順位が小さい病院に対してプロポーズをやり直すが、明石さんの優先度リストには第１希望の双川病院しか登録されていないため、明石さんは、すべての病院から拒絶されたことになる。
次に、工藤さんは、第１希望の四谷病院にプロポーズする。四谷病院の優先度リストで、工藤さんは５位である。定員は２名であり、すでに１名が仮マッチングされているが、空きが１名分ある。そのため、（工藤，四谷病院）が仮マッチングされる。
ここで、すべての志願者が、いずれかの病院と仮マッチングされるか、または、自分の優先度リストに記載した病院すべてから拒絶されたので、処理は終了する。
マッチングの結果は、（大川，双川病院）、（木村，双川病院）、（上野，一山病院）、（江口，美村病院）、（川口，四谷病院）、（工藤，四谷病院）となり、明石さんと井上さんは自分の優先度リストに記載したすべての病院から拒絶されたことになった。
【００１３】
上記の図９のフローチャートを用いて、図１０を例にして行ったこの処理について説明する。ステップＳ１００において、あらかじめ仮マッチングを空集合にする。ステップＳ１０１において、未処理の志願者がなければ終了し、あればその志願者の１人ａに対して以下の処理を行う。ステップＳ１０２において、志願者ａが優先度リストＲＯＬ（ａ）の何番目の企業に対してプロポーズするかの指標であるａ．ｉを１に設定する。これは、全志願者は順番に、まず自分の優先度リストで順位の一番小さい企業に対してプロポーズを行うことを示す。ステップＳ１０３において、優先度リストＲＯＬ（ａ）の要素数がａ．ｉより小さければ、志願者ａは最終的にどの企業ともマッチングできなかったことになり、ステップＳ１０１に戻る。一方、ステップＳ１０３において、優先度リストＲＯＬ（ａ）の要素数がａ．ｉより小さくなければ、ステップＳ１０４において、優先度リストＲＯＬ（ａ）のａ．ｉ番目の企業をｐとする。ステップＳ１０５において、ａがｐの優先度リストＲＯＬ（ｐ）に含まれなければ、ａ．ｉをａ．ｉ＋１に設定し直して、ステップＳ１０３に戻る。これは、プロポーズされた企業ｐはプロポーズした志願者ａがＲＯＬ（ｐ）に記載されていなけれ拒絶し、拒絶された志願者ａは、自分の優先度リストＲＯＬ（ａ）での順位が企業ｐの次に小さい企業にプロポーズをやり直すことに相当する。一方、ステップＳ１０５において、ａがｐの優先度リストＲＯＬ（ｐ）に含まれていれば、ステップＳ１０６において、その時点でｐが仮マッチングしている志願者の数が定員Ｑ（ｐ）より少なければ、ペア（ａ，ｐ）を仮マッチングに加えてステップＳ１０１に戻る。一方、ステップＳ１０６において、その時点でｐが仮マッチングしている志願者の数が定員Ｑ（ｐ）より少なくなければ、ステップＳ１０７において、ｐと仮マッチングしている志願者の中で、ｐの優先度リストＲＯＬ（ｐ）で順位が最も大きいものをａ１とする。ａ１とプロポーズしている志願者ａとの間で、ＲＯＬ（ｐ）での順位を比較する。ａの順位の方が大きければ、ａ．ｉをａ．ｉ＋１に設定し直して、ステップＳ１０３に戻る。これは、ａの順位の方が大きければ企業ｐはａを拒絶することに相当する。拒絶された志願者ａは、ｐの次に自分の優先度リストＲＯＬ（ａ）での順位が小さい企業にプロポーズをやり直すことになる。このステップＳ１０７以降では企業ｐと仮マッチングしている志願者数が定員Ｑ（ｐ）と等しい。ステップＳ１０８において、ａ１の順位の方がａの順位より大きいので、ペア（ａ，ｐ）を仮マッチングに加え、ペア（ａ１，ｐ）を仮マッチングから除外し、ａをａ１に設定し直す。ステップＳ１０９において、ａ．ｉをａ．ｉ＋１に設定し直してステップＳ１０３に戻る。つまり、仮マッチングから除外された志願者（元のａ１）は、ｐの次に自分の優先度リストでの順位が小さい企業に対してプロポーズをやり直すことになる。図９の処理が終了するのは、ステップＳ１０１において、すべての志願者が、いずれかの企業と仮マッチングされるか、または、自分の優先度リストに記載された企業すべてから拒絶されたときである。図９の処理が終了した段階で最終的に得られた仮マッチングをマッチング結果とする。Ｇａｌｅ−Ｓｈａｐｌｅｙアルゴリズムにより得られるマッチングは安定であることが先行技術文献に記載されている。
【００１４】
【非特許文献１】「Ｔｈｅ  Ｓｔａｂｌｅ  Ｍａｒｒｉａｇｅ  Ｐｒｏｂｌｅｍ」、Ｄ．Ｇｕｓｆｉｅｌｄ  及び  Ｒ．Ｗ．Ｉｒｖｉｎｇ著、Ｔｈｅ  ＭＩＴ  Ｐｒｅｓｓ、１９８９年
【発明の開示】
【発明が解決しようとする課題】
【００１５】
上述した従来のＧａｌｅ−Ｓｈａｐｌｅｙアルゴリズムの問題点について説明する。その問題点とは、Ｇａｌｅ−Ｓｈａｐｌｅｙアルゴリズムにおいては、志願者のカップルが存在する場合には、安定なマッチングを保証できなくなることである。ここで、カップルとは、同一の企業とマッチングすることを望み、同一の優先度リストを持つ志願者２人の組である。企業はカップルとカップルを構成しない志願者に対して順位を一意的につけた優先度リストを持つ必要がある。しかし、企業はあらかじめカップルを意識する必要がなく、カップルであるなしにかかわらず志願者個人に対する優先度リストを最初に持つとしてもよい。その場合には、マッチング処理を行う前に各企業の優先度リストＲＯＬ（ｐ）を次のように変更する。カップルを構成する両者が企業ｐの優先度リストに記載されているときにのみカップルを企業ｐの優先度リストＲＯＬ（ｐ）に挿入し、カップルを構成する志願者個人はＲＯＬ（ｐ）からすべて除外する。このとき、変更された企業の優先度リストにおいて、挿入したカップルに対して順位をつける必要がある。カップルに対する順位のつけ方は、最終的に得られる企業の優先度リストにおいて、カップルとカップルを構成しない志願者に対して順位が一意的につくようにすれば、どのような方法でも構わない。一例として、カップルの順位を例えばカップルの中で順位が大きい方の志願者（優先度リストから除外される）の順位に等しいと設定すると、カップルとカップルを構成しない志願者に対して、順位を一意的につけることができる。
【００１６】
図１１に、企業の優先度リストをカップルを考慮するものに変更する方法の一例を示す。図１１の左にもともとの志願者個人に対する企業の優先度リスト（符号１０）の例を示す。もともとの優先度リストでの順位はａ７＜ａ１＜ａ４＜ａ３＜ａ５＜ａ６となっている。ここで、志願者ａ１とａ５がカップルｃであるとする。このとき、企業のカップルとカップルを構成しない志願者に対する優先度リストを、カップルを構成する志願者を優先度リストから除去し、カップルｃを構成する志願者のうち、順位が大きい方のａ５の位置にカップルｃを挿入することにより作る。このようにして得られる優先度リストを図１１の右に示す。図１１の右の優先度リスト（符号１１）は、カップルとカップルを構成しない志願者に対して一意的な順位ａ７＜ａ４＜ａ３＜ｃ＜ａ６をつけることができる。
【００１７】
このようにカップルとカップルを構成しない志願者に対して一意的に順位がつけられると、カップルをあたかも１人の志願者のようにして、マッチングを行うことができる。しかしながら、このマッチングの処理に、Ｇａｌｅ−Ｓｈａｐｌｅｙアルゴリズムを用いると、カップルを考慮しない場合と異なり、安定なマッチングを必ずしも見つけることができなくなるという問題がある。また、安定なマッチングを見つけることができない場合に、無理に安定なマッチングを得ようとすると無限ループに陥ることがある。例として次のようなマッチング問題を考える。
【００１８】
企業の集合が｛ｐ１，ｐ２｝、カップルの集合が｛ｃ｝、カップルを構成しない志願者の集合が｛ａ１，ａ２，ａ３，ａ４｝とする。また、企業の定員はＱ（ｐ１）＝Ｑ（ｐ２）＝２とする。各優先度リストは次のように与えられるとする。
ｐ１の優先度リスト＝｛ａ１，ｃ，ａ２，ａ３｝
ｐ２の優先度リスト＝｛ａ２，ａ４，ａ１｝
ａ１の優先度リスト＝｛ｐ２，ｐ１｝
ａ２の優先度リスト＝｛ｐ１，ｐ２｝
ａ３の優先度リスト＝｛ｐ１｝
ａ４の優先度リスト＝｛ｐ２｝
ｃの優先度リスト＝｛ｐ１｝
ここで、優先度リストは左側の要素ほど順位が小さいものとする。例えば、ｐ１の優先度リストは、ａ１＜ｃ＜ａ２＜ａ３である。また、企業の優先度リストはもともとの志願者個人に対する優先度リストから前記のように導出した、カップルとカップルを構成しない志願者に対する優先度リストであるとする。このマッチング問題に対して、Ｇａｌｅ−Ｓｈａｐｌｅｙアルゴリズムを用いてマッチングを行うとする。ここで、カップルとカップルを構成しない志願者がａ１，ａ２，ａ３，ａ４，ｃの順に自分の優先度リストで順位の小さい企業からプロポーズを行うとする。志願者ａ１からａ４までプロポーズを行った段階（図９のステップＳ１０６）で、次のような仮マッチングが得られる。
【００１９】
ｐ１の仮マッチング相手＝｛ａ２，ａ３｝
ｐ２の仮マッチング相手＝｛ａ４，ａ１｝
【００２０】
次に、ステップＳ１０１に戻り、カップルｃがプロポーズを行うことになる。カップルｃは企業ｐ１にのみプロポーズするが、すでに企業ｐ１が仮マッチングしている志願者数は定員と等しい２であるので、図９でステップＳ１０８まで進むことになる。ここで、企業ｐ１での順位はｃ＜ａ２＜ａ３であるが、志願者ａ３を仮マッチングから除いても、カップルｃと企業ｐ１のペアを仮マッチングに加えることができない。なぜならば、カップルｃが企業ｐ１とマッチングすると、ｐ１の仮マッチング相手の志願者数が３となり定員を超えてしまうためである。したがって、カップルｃをマッチングに加えることができなくなるが、このときペア（ｃ，ｐ１）は上記の仮マッチングに対するブロッキングペアになるので、安定なマッチングを得ることができないことになる。
【００２１】
また、ステップＳ１０８において、企業ｐ１での順位はｃ＜ａ２＜ａ３であるので、志願者ａ２とａ３の両方を仮マッチングから除くようにすると、カップルｃを企業ｐ１とマッチングさせることができ、次のような仮マッチングを得ることができる。
【００２２】
ｐ１の仮マッチング相手＝｛ｃ｝
ｐ２の仮マッチング相手＝｛ａ４，ａ１｝
【００２３】
このとき、志願者ａ２が仮マッチングから除外されたので、ａ２は企業ｐ１の次に優先度リストでの順位が小さい企業ｐ２にプロポーズすることにより、Ｇａｌｅ−Ｓｈａｐｌｅｙアルゴリズムを続行することになる。実際、企業ｐ２において、ａ２＜ａ４＜ａ１なので、ペア（ａ２，ｐ２）がブロッキングペアにならないようにするには、仮マッチングから、企業ｐ２にマッチングしている順位が最大の志願者ａ１を除いて、ペア（ａ２，ｐ２）を仮マッチングに加え、次のような仮マッチングを得ることになる。
【００２４】
ｐ１の仮マッチング相手＝｛ｃ｝
ｐ２の仮マッチング相手＝｛ａ２，ａ４｝
【００２５】
今度は、仮マッチングから除外された志願者ａ１において、ａ１＜ｃなので、ペア（ａ１，ｐ１）がブロッキングペアにならないようにするため、仮マッチングからカップルｃを除いてペア（ａ１，ｐ１）を仮マッチングに加え、次のような仮マッチングを得ることになる。
【００２６】
ｐ１の仮マッチング相手＝｛ａ１｝
ｐ２の仮マッチング相手＝｛ａ２，ａ４｝
【００２７】
ところが、この仮マッチングにはペア（ａ２，ｐ１）がブロッキングペアになってしまい、結局安定なマッチングは得られないことになる。
【００２８】
ここで、Ｇａｌｅ−Ｓｈａｐｌｅｙアルゴリズムから外れるが、もしこのブロッキングペア（ａ２，ｐ１）を解消しようとすると、次のような仮マッチングが得られる。
【００２９】
ｐ１の仮マッチング相手＝｛ａ１，ａ２｝
ｐ２の仮マッチング相手＝｛ａ４｝
【００３０】
ところが、今度はこの仮マッチングにはペア（ａ１、ｐ２）がブロッキングペアになってしまう。このブロッキングペア（ａ１、ｐ２）を解消しようとすると、次のような仮マッチングが得られる。
【００３１】
ｐ１の仮マッチング相手＝｛ａ２｝
ｐ２の仮マッチング相手＝｛ａ４，ａ１｝
【００３２】
ところが、この仮マッチングでは（ａ３，ｐ１）がブロッキングペアになっているので、このブロッキングペア（ａ３，ｐ１）を解消すると次のような仮マッチングになる。
【００３３】
ｐ１の仮マッチング相手＝｛ａ２，ａ３｝
ｐ２の仮マッチング相手＝｛ａ４，ａ１｝
【００３４】
ところがこれはカップルｃが最初にプロポーズする前の段階での仮マッチングと等しく、ペア（ｃ，ｐ１）がブロッキングペアになっている。
【００３５】
以上の例から、カップルが存在する場合には、安定なマッチングが得られないだけでなく、安定なマッチングを得ようとすると処理が無限ループに陥る可能性もあることがわかる。
【００３６】
以上のように、従来のマッチング方法においては、志願者の中にカップルが存在する場合には、安定なマッチングが得られないだけでなく、安定なマッチングを得ようとすると処理が無限ループに陥る可能性があるという問題点があった。
【００３７】
この発明は、かかる問題点を解決するためになされたものであり、処理の途中で無限ループに陥ることもなく、安定なマッチングを得ることができる双方向マッチングシステムおよび双方向マッチングプログラムを得ることを目的としている。
【課題を解決するための手段】
【００３８】
この発明は、募集側の集合Ｂの各要素がそれぞれ保有する募集側コンピュータと、志願側の集合Ａの各要素がそれぞれ保有する志願側コンピュータとが、通信ネットワークを介して、それぞれマッチング仲介コンピュータに接続されて、前記マッチング仲介コンピュータは、集合Ａの要素を集合Ｂの要素と対応付けるマッチングを行い、集合Ａおよび集合Ｂの各要素は互いに優先度リストに含まれる相手とのみ対応付けされる双方向マッチングシステムであって、集合Ｂの各要素ごとに定員が設定されており、集合Ｂの各要素に対して、集合Ａの複数の要素が該定員の範囲で割り当て可能であって、前記マッチング仲介コンピュータは、前記募集側コンピュータから集合Ｂの各要素ごとの上記定員を示す正整数の値を受信する手段と、受信した前記値を、集合Ｂの各要素ごとに、それの定員として記憶する集合Ｂ定員記憶手段と、前記志願側コンピュータから、集合Ａの各要素ごとに、集合Ｂの要素の全部または一部に対して付した、対応付けのための一意的な優先度順位を示した優先度リストを受信する手段と、前記志願側コンピュータから受信した前記優先度リストを記憶する集合Ａ優先度リスト記憶手段と、前記募集側コンピュータから、集合Ｂの各要素ごとに、集合Ａの要素の全部または一部に対して付した、対応付けのための一意的な優先度順位を示した優先度リストを受信する手段と、前記募集側コンピュータから受信した前記優先度リストを記憶する集合Ｂ優先度リスト記憶手段と、集合Ａの要素のうちの２以上の所定の要素は１つのグループを構成しており、該グループの各要素は、集合Ｂの要素の全部または一部に対して付した一意的な対応付けのための優先度順位を示した同一の優先度リストを持ち、集合Ａは該グループを１以上含んでいるものであって、集合Ａの各該グループを他の要素と同様に１つの要素として置き換えた集合を集合Ａ'とするとき、集合Ｂの各要素の前記優先度リストとして、前記集合Ｂ優先度リスト記憶手段が記憶している優先度リストにおいて、前記グループを構成する要素のうち、優先度順位が最も大きい要素に対する優先度順位を該グループの優先度順位とし、該グループを構成する他の要素に対する優先度順位を削除した、新しい優先度リストを生成する集合Ｂ優先度リスト生成手段と、前記集合Ｂ優先度リスト生成手段により生成された前記優先度リストと、前記集合Ｂ定員記憶手段に記憶されている前記定員の値と、前記集合Ａ優先度リスト記憶手段に記憶されている前記優先度リストのうち前記グループを構成する要素についてはそれらの要素に対する前記同一の優先度リストを用いるとともにグループを構成しない要素については記憶されている当該要素の優先度リストを用いて、集合Ａ’および集合Ｂの各要素のうち、互いが相手方の優先度リストに含まれている要素同士があるかを検索し、当該要素同士があれば、それらを優先度順位の小さい順に、かつ、集合Ｂの各要素ごとに設定された前記定員の範囲で、対応付けることで、集合Ｂの各要素と集合Ａ’の各要素とを対応付けるマッチング処理を行うマッチング手段と、集合Ｂの要素と対応付けされる集合Ａ'の要素の中で、集合Ｂの要素と対応付けされる集合Ａ'の要素の最も順位が大きいものが前記グループである場合には、該集合Ｂの要素の前記定員を、（（該グループの要素の個数）−１）だけ大きくする定員増員処理手段と、前記マッチング手段によるマッチング処理結果を出力する手段とを備えた双方向マッチングシステムである。なお、グループの一例としてカップルが挙げられるが、カップルとは２個の要素からなるグループのことである。
【発明の効果】
【００３９】
この発明によれば、募集側の集合Ｂの各要素がそれぞれ保有する募集側コンピュータと、志願側の集合Ａの各要素がそれぞれ保有する志願側コンピュータとが、通信ネットワークを介して、それぞれマッチング仲介コンピュータに接続されて、前記マッチング仲介コンピュータは、集合Ａの要素を集合Ｂの要素と対応付けるマッチングを行い、集合Ａおよび集合Ｂの各要素は互いに優先度リストに含まれる相手とのみ対応付けされる双方向マッチングシステムであって、集合Ｂの各要素ごとに定員が設定されており、集合Ｂの各要素に対して、集合Ａの複数の要素が該定員の範囲で割り当て可能であって、前記マッチング仲介コンピュータは、前記募集側コンピュータから集合Ｂの各要素ごとの上記定員を示す正整数の値を受信する手段と、受信した前記値を、集合Ｂの各要素ごとに、それの定員として記憶する集合Ｂ定員記憶手段と、前記志願側コンピュータから、集合Ａの各要素ごとに、集合Ｂの要素の全部または一部に対して付した、対応付けのための一意的な優先度順位を示した優先度リストを受信する手段と、前記志願側コンピュータから受信した前記優先度リストを記憶する集合Ａ優先度リスト記憶手段と、前記募集側コンピュータから、集合Ｂの各要素ごとに、集合Ａの要素の全部または一部に対して付した、対応付けのための一意的な優先度順位を示した優先度リストを受信する手段と、前記募集側コンピュータから受信した前記優先度リストを記憶する集合Ｂ優先度リスト記憶手段と、集合Ａの要素のうちの２以上の所定の要素は１つのグループを構成しており、該グループの各要素は、集合Ｂの要素の全部または一部に対して付した一意的な対応付けのための優先度順位を示した同一の優先度リストを持ち、集合Ａは該グループを１以上含んでいるものであって、集合Ａの各該グループを他の要素と同様に１つの要素として置き換えた集合を集合Ａ'とするとき、集合Ｂの各要素の前記優先度リストとして、前記集合Ｂ優先度リスト記憶手段が記憶している優先度リストにおいて、前記グループを構成する要素のうち、優先度順位が最も大きい要素に対する優先度順位を該グループの優先度順位とし、該グループを構成する他の要素に対する優先度順位を削除した、新しい優先度リストを生成する集合Ｂ優先度リスト生成手段と、前記集合Ｂ優先度リスト生成手段により生成された前記優先度リストと、前記集合Ｂ定員記憶手段に記憶されている前記定員の値と、前記集合Ａ優先度リスト記憶手段に記憶されている前記優先度リストのうち前記グループを構成する要素についてはそれらの要素に対する前記同一の優先度リストを用いるとともにグループを構成しない要素については記憶されている当該要素の優先度リストを用いて、集合Ａ’および集合Ｂの各要素のうち、互いが相手方の優先度リストに含まれている要素同士があるかを検索し、当該要素同士があれば、それらを優先度順位の小さい順に、かつ、集合Ｂの各要素ごとに設定された前記定員の範囲で、対応付けることで、集合Ｂの各要素と集合Ａ’の各要素とを対応付けるマッチング処理を行うマッチング手段と、集合Ｂの要素と対応付けされる集合Ａ'の要素の中で、集合Ｂの要素と対応付けされる集合Ａ'の要素の最も順位が大きいものが前記グループである場合には、該集合Ｂの要素の前記定員を、（（該グループの要素の個数）−１）だけ大きくする定員増員処理手段と、前記マッチング手段によるマッチング処理結果を出力する手段とを備えた双方向マッチングシステムであるので、マッチングする集合Ａの要素で最も順位が大きいものがグループの場合のみ、（最も要素数の多いグループの要素数−１）までのマッチングを許すことにより、グループが存在しても、無限ループに陥ることもなく、常に安定なマッチングを得ることができる。
【発明を実施するための最良の形態】
【００４０】
実施の形態１．
以下では、企業と志願者の間のマッチングを例に取って記述するが、本発明は適用対象が何であれ（たとえば通信におけるパケットとチャネルの間のマッチング等）成立するものである。
【００４１】
まず、必要な用語を定義する。カップルｃのサイズｓ（ｃ）を２とし、カップルを構成しない志願者（以下シングルと呼ぶ）ａのサイズｓ（ａ）を１とする。企業ｐのサイズを考慮したマッチング数ＳＭ（ｐ）を、ｐとマッチングしている志願者個人の数とする。つまりＳＭ（ｐ）とはｐとマッチングしているすべてのカップルまたはシングルｂに対するサイズｓ（ｂ）の総和である。
【００４２】
図１および図２に、この発明の実施の形態１に係る双方向マッチングシステムにおけるマッチング方法を示す。図１および図２より、この発明によるマッチングは次のように行なわれる。ステップＳ１において、あらかじめ仮マッチングを空集合にし、各企業ｐに対してＳＭ（ｐ）＝０、各カップルに対してｓ（ｃ）＝２、各シングルａに対してｓ（ａ）＝１と初期化する。このとき、各企業は、志願者の全部または一部に対して一意的な順位を付けた優先度リストの入力を済ませており、各志願者は、企業の全部または一部に対して一意的な順位を付けた優先度リストの入力を済ませているものとする。各企業の優先度リストは、順位をつけながら志願者の入力をしていった後に、志願者端末から登録された、どの志願者とどの志願者がカップルであるかのカップル構成情報をもとに、特定の規則に従って、図１１で示したように、図１１の左側の優先度リスト１０を右側の優先度リスト１１に変換することにより、優先度リストを生成するようにしてもよい。あるいは、各企業において、カップルとシングルとを混在させて、志願者を順位をつけながら入力していって（図１１の優先度リスト１１の例では、１位：ａ７、２位：ａ４、３位：ａ３、４位：ｃ、・・・というように入力）、そのデータをもとに優先度リストを生成するようにしてもよい。
【００４３】
次に、ステップＳ２において、すべてのカップルまたはシングルに対して、ｂが優先度リストＲＯＬ（ｂ）の何番目の企業に対してプロポーズするかの指標であるｂ．ｉを１に設定する。これはカップルとシングルは順番に、まず自分の優先度リストで順位の一番小さい企業に対してプロポーズを行うことを示す。次に、ステップＳ３に進み、未処理のカップルまたはシングルが存在するか否かの判定を行う。判定の結果、未処理のカップルまたはシングルがなければ、ステップＳ１３に進み、その時点での仮マッチングを最終的に得られたマッチングとして処理を終了する。一方、未処理のカップルまたはシングルがあれば、ステップＳ４に進み、そのカップルまたはシングルｂに対して以下の処理を行う。ステップＳ４において、優先度リストＲＯＬ（ｂ）の要素数がｂ．ｉより小さいか否かの判定を行う。判定の結果、小さければ、ｂは最終的にどの企業ともマッチングできなかったことになり、ステップＳ３に戻る。一方、判定の結果、小さくなければ、ステップＳ５において、優先度リストＲＯＬ（ｂ）のｂ．ｉ番目の企業をｐとする。
【００４４】
次に、ステップＳ６において、ｂがｐの優先度リストＲＯＬ（ｐ）に含まれているか否かの判定を行う。判定の結果、含まれていなければ、ステップＳ７で、ｂ．ｉをｂ．ｉ＋１に設定し直した後に、ステップＳ４に戻る。これは、プロポーズされた企業ｐはプロポーズしたｂがＲＯＬ（ｐ）に記載されていなければ拒絶し、拒絶されたｂは、企業ｐの次に自分の優先度リストＲＯＬ（ｂ）での順位が小さい企業にプロポーズをやり直すことに相当する。一方、ステップＳ６の判定の結果、ｂがｐの優先度リストＲＯＬ（ｐ）に含まれていた場合には、ステップＳ８に進む。ステップＳ８においては、ペア（ｂ，ｐ）を仮マッチングに加え、企業ｐのサイズを考慮したマッチング数ＳＭ（ｐ）をＳＭ（ｐ）＋ｓ（ｂ）に設定し直す。次に、ステップＳ９に進み、その時点でｐが仮マッチングしている志願者個人の数ＳＭ（ｐ）がｐの定員Ｑ（ｐ）以下であるか否かの判定を行う。判定の結果、ＳＭ（ｐ）が定員Ｑ（ｐ）以下であれば、ステップＳ３に戻る。一方、ステップＳ９の判定の結果、その時点でｐが仮マッチングしている志願者個人の数ＳＭ（ｐ）が定員Ｑ（ｐ）より大きければ、ステップＳ１０において、ｐと仮マッチングしているカップルまたはシングルの中で、ｐの優先度リストＲＯＬ（ｐ）で順位が最も大きいものｂ１とする。
【００４５】
ステップＳ１１において、ＳＭ（ｐ）−ｓ（ｂ１）が定員Ｑ（ｐ）より小さいか否かの判定を行い、ＳＭ（ｐ）−ｓ（ｂ１）が定員Ｑ（ｐ）より小さい場合には、ステップＳ３に戻る。一方、ステップＳ１１の比較において、ＳＭ（ｐ）−ｓ（ｂ１）が定員Ｑ（ｐ）より小さくない場合には、ステップＳ１２に進む。
【００４６】
ステップＳ１２において、ペア（ｂ１，ｐ）を仮マッチングから除外し、ＳＭ（ｐ）をＳＭ（ｐ）−ｓ（ｂ１）に設定し直す。また、ｂ１．ｉをｂ１．ｉ＋１に設定し直して、ｂ１を未処理にし、ステップＳ１０に戻る。未処理にされたｂ１は、これ以降の段階で、ステップＳ３において、未処理の志願者として選ばれることになり、ｐの次に自分の優先度リストでの順位が小さい企業に対してプロポーズをやり直すことになる。図１および図２の処理が終了するのは、ステップＳ３において、すべてのカップルまたはシングルが、いずれかの企業と仮マッチングされるか、または、自分の優先度リストに記載された企業すべてから拒絶されたときである。
【００４７】
この発明による双方向マッチングシステムにおけるマッチング方法は、カップルおよびシングルが順番に、まず自分の優先度リストで順位の一番小さい企業から順番にプロポーズを行っていき、ある企業がマッチングする相手により定員一杯になる場合、企業がマッチングする相手で最も順位の大きいものがカップルの場合に限り、定員より１人多い志願者とマッチングできるようにするのが特徴である。この特徴により、本マッチング方法はカップルが存在する場合にも安定なマッチングを生成して終了する。
【００４８】
このように、本実施の形態によれば、ある企業がマッチングにより定員一杯になる場合、企業がマッチングする相手で最も順位の大きいものがカップルの場合に限り、マッチング相手の志願者個人の数が定員より１人多くなっても構わないようにすることにより、安定なマッチングを保証できる。これを従来例で示した例を用いて説明する。次の仮マッチングが得られるところまでは従来例と同じである。
ｐ１の仮マッチング相手＝｛ａ２，ａ３｝
ｐ２の仮マッチング相手＝｛ａ４，ａ１｝
次に、ステップＳ３に戻り、カップルｃがプロポーズを行うことになる。カップルｃは企業ｐ１にのみプロポーズするが、本実施の形態によれば、ステップＳ８まで進み、次のような仮マッチングが得られることになる。
ｐ１の仮マッチング相手＝｛ｃ，ａ２，ａ３｝
ｐ２の仮マッチング相手＝｛ａ４，ａ１｝
このとき、ＳＭ（ｐ１）＝４であり、企業ｐ１の定員Ｑ（ｐ１）が２であることから、ステップＳ１２まで２回進んだ後、次の仮マッチングが得られた段階で、ステップＳ３に戻ることになる。
ｐ１の仮マッチング相手＝｛ｃ｝
ｐ２の仮マッチング相手＝｛ａ４，ａ１｝
今度は、仮マッチングから除外された志願者ａ２において、ステップＳ３では未処理とみなされるので、企業ｐ２にプロポーズすることになり、次の仮マッチングが得られることになる。
ｐ１の仮マッチング相手＝｛ｃ｝
ｐ２の仮マッチング相手＝｛ａ２，ａ４｝
今度は、仮マッチングから除外された志願者ａ１において、ステップＳ３では未処理とみなされるので、企業ｐ１にプロポーズすることになる。企業ｐ１の優先度リストに志願者ａ１は記載されているので、志願者ａ１を企業ｐ１と仮マッチングさせることになるが、このときカップルｃを仮マッチングから除く必要はない。なぜなら、ＳＭ（ｐ１）＝３であるが、企業ｐ１において、最も順位の大きい仮マッチング相手がカップルｃであるので、ｓ（ｃ）＝２であることから、ＳＭ（ｐ１）−ｓ（ｃ）＜Ｑ（ｐ１）となり、ステップＳ１１の判定により、ステップＳ１２に進むことなく、ステップＳ３に戻ることになるからである。ステップＳ１１は、企業ｐ１において、最も順位の大きい仮マッチング相手がカップルであれば、仮マッチングしている志願者個人の数は定員Ｑ（ｐ１）より一人多くても構わないことを示している。この結果、次のような仮マッチングを得ることになる。
ｐ１の仮マッチング相手＝｛ａ１，ｃ｝
ｐ２の仮マッチング相手＝｛ａ２，ａ４｝
本実施の形態によれば、最終的にこの仮マッチングが正式なマッチング結果になる。この仮マッチングに対しては、どの志願者およびカップルもブロッキングペアを構成しない。したがって、本実施の形態におけるマッチング方法により、安定なマッチングが得られる。また、処理の途中で無限ループに陥ることもない。
【００４９】
なお、集合Ａ'の各要素は集合Ｂの全部または一部に対する優先度リストを持ち、集合Ｂの各要素は集合Ａ'の全部または一部に対する優先度リストを持つことにより、図１および図２におけるＳ１〜Ｓ１３は、集合Ｂの要素と集合Ａ'の要素とをマッチングさせることにより、集合Ｂの要素を集合Ａの要素とマッチングさせるマッチング手段を構成している。また、図２におけるステップＳ９〜Ｓ１２は、集合Ｂの要素とマッチングする集合Ａ'の要素の中で、集合Ｂの要素と仮マッチングされた集合Ａ'の要素の最も順位が大きいものが前記グループである場合には、該集合Ｂの要素の前記定員を、（（該グループの要素の個数）−１）だけ大きくする定員増員処理手段を構成している。
【００５０】
以上のように、本実施の形態においては、Ａの要素を他方のＢの要素と対応付けるマッチングにおいて、Ｂの各要素はそれぞれ正整数の定員を持っており、また、Ａの各要素はＢの要素の全部または一部に対して一意的な順位を付けた優先度リストを持ち、Ｂの各要素はＡの要素の全部または一部に対して一意的な順位を付けた優先度リストを持ち、互いに優先度リストに含まれる相手にのみマッチングを行う際に、Ｂの要素とマッチングするＡの要素の中で、最も順位が大きいものがカップルの場合のみ、定員＋１までのマッチングを許すことにより、カップルが存在していても常に安定なマッチングを得ることができる。
【００５１】
なお、この発明の実施の形態１の変形例として、特定の企業（複数でも可）はカップルをまったく受け付けないようにするマッチング方法がある。カップルをまったく受け入れない企業は、もともとの志願者個人に対する優先度リストからカップルを構成する志願者を除外し、カップルを一切付け加えない優先度リストを持つとみなすことにより実現できる。そのような企業は、カップルとマッチングすることが無いので、マッチングする志願者個人の数は必ず定員以下になることが保証される。なお、カップルをまったく受け入れない企業において、誤って、カップルを優先度リストに登録しないように、該企業の端末において入力された志願者がカップルか否かの判定を行って、カップルの場合には入力を拒否する入力確認手段を設けるようにしておいてもよい。さらには、優先度リストへの志願者の入力の際に、誤ってカップルを入力した場合には、「カップルのため登録できません。入力し直して下さい。」というメッセージを端末の画面に表示されるか、あるいは、アラームを発する等してユーザに知らせるようにしてもよい。なお、入力確認手段の動作のオン／オフは、企業の端末においてユーザが切り替えられるようにしておくとよい。マッチング処理後に誤入力に気づくと処理が無駄になり損失が大きいので、このように、入力確認手段を設けておくと、誤入力を未然に防ぐことができ、便利かつ効率的である。
【００５２】
なお、この発明の実施の形態１では、例として企業の集合と志願者の集合の間のマッチングについて述べたが、マッチングの対象としては企業と志願者の集合に限られるものではない。たとえば、学科や科目や専攻の集合と学生の集合の間のマッチング、役割の集合と人間の集合の間のマッチングなどにも適用できるものである。複数のグループを含む要素からなる集合Ａと、正整数の定員を有する集合Ｂのマッチングであればよく、会社や工場や部署の集合と仕事の集合の間のマッチング、通信におけるチャネルやルートの集合とパケットの集合の間のマッチング、配送における配送手段（トラックなど）の集合と荷物の集合の間のマッチング、情報処理におけるタスクの集合とプロセッサの集合の間のマッチング、行政における地域の集合と施設の集合の間のマッチング、またお見合いや先生・生徒で構成される英会話教室、大学のゼミなどにも適用できる。
【００５３】
また、この発明の実施の形態１では、例として、志願者の中にカップルが存在する場合について述べたが、この場合に限らず、志願者３人のグループ等、志願者２人以上のグループが存在する場合にも適用可能である。但し、その場合には、グループの人数がＮ人であるとすると、グループのサイズはＮであり、ＳＭ（ｐ）は、最大Ｑ（ｐ）＋（Ｎ−１）となる。
【００５４】
さらに、異なる人数のグループが志願者の中に存在する場合においても、この発明は適用可能である。すなわち、志願者の中に、Ｍ人のグループとＮ人のグループとＬ人のグループがそれぞれ１以上存在しているような場合でもこの発明を適用することができる。但し、その場合には、例えば、Ｍ，Ｎ，Ｌの中でＬが最大値であるとすると、ＳＭ（ｐ）は、最大Ｑ（ｐ）＋（Ｌ−１）となる。すなわち、例えば、最大値Ｌが４だった場合には、企業の定員が３０名であった場合、最大３０＋（４−１）＝３３まで企業の定員枠が増えることになる。従って、企業の定員枠が最大Ｑ（ｐ）＋（Ｌ−１）まで増えてもよいことがこの変形例の条件となる（なお、定員枠を増やしたくない場合には、予め、定員を（Ｌ−１）だけ少ない値にしておくことも可能である。）。
【００５５】
実施の形態２．
本実施の形態においては、まず、各企業ｐごとに図３のような仮採用リストＴｍｐＬｉｓｔ（ｐ）を持つ。図３（ａ）に示すように、仮採用リストＴｍｐＬｉｓｔ（ｐ）（符号１）は、仮マッチングしているカップルまたはシングルに対するポインタと、そのカップルまたはシングルの優先度リストＲＯＬ（ｐ）における順位と、そのカップルまたはシングルのマッチング順位によって構成される要素からなるリストである。また、仮採用リスト（符号２）は、図３（ｂ）の例に示すように、優先度リストにおける順位に関して、順位が小さい順に要素を並べたものである。ここで、マッチング順位は次のように定義され、また計算することができる。
【００５６】
仮採用リストの一番上の要素、つまり、ＲＯＬ（ｐ）における順位が最も小さい要素のマッチング順位を１とする。仮採用リストで、上から二番目の要素から順番に、直上の要素のマッチング順位に、直上の要素のサイズを足したものを自分のマッチング順位とする。たとえば、上から二番目の要素について考えると、直上の要素がカップルの場合、サイズが２なので、マッチング順位は１＋２で３になる。一方、直上の要素がシングルの場合には、サイズが１なので、マッチング順位は１＋１で２になる。
【００５７】
図３（ｂ）の例は、カップル４組とシングル３組と仮マッチングしている仮採用リストであり、上記のように計算されたマッチング順位についても示している。仮採用リストの内容が変わるとマッチング順位も変化するが、常に優先度リストにおける順位と同様に昇順に並ぶことになる。
【００５８】
仮採用リストを用いたこの発明によるマッチング方法を図４に示す。図４より、この発明によるマッチングは次のように行なわれる。ステップＳ２０において、あらかじめ仮マッチングを空集合にし、各企業ｐに対してＳＭ（ｐ）＝０、各カップルに対してｓ（ｃ）＝２、各シングルａに対してｓ（ａ）＝１と初期化する。ステップＳ２１において、すべてのカップルまたはシングルｂに対して、ｂが優先度リストＲＯＬ（ｂ）の何番目の企業に対してプロポーズするかの指標であるｂ．ｉを１に設定する。これは、カップルとシングルは順番に、まず自分の優先度リストで順位の一番小さい企業に対してプロポーズを行うことを示す。ステップＳ２２において、未処理のカップルまたはシングルがなければ終了し、あればそのカップルまたはシングルｂに対して、以下のステップＳ２３以降の処理を行う。次に、ステップＳ２３において、優先度リストＲＯＬ（ｂ）の要素数がｂ．ｉより小さければ、ｂは最終的にどの企業ともマッチングできなかったことになり、ステップＳ２２に戻る。一方、ステップＳ２３において、優先度リストＲＯＬ（ｂ）の要素数がｂ．ｉより小さくなければ、ステップＳ２４に進む。ステップＳ２４においては、優先度リストＲＯＬ（ｂ）のｂ．ｉ番目の企業をｐとする。次に、ステップＳ２５において、企業ｐはｂに対する仮採用テストを行う。なお、仮採用テストの処理は後述する。次に、ステップＳ２６において、ステップＳ２５の仮採用テストでカップルまたはシングルが１個または複数個返された場合、返されたカップルまたはシングルすべてに対して次の処理を行う。返されたカップルまたはシングルをｂ１とすると、ｂ１．ｉをｂ１．ｉ＋１に設定し直して、ｂ１を未処理とし、ステップＳ２２に戻る。ここでｂ１はもともとのｂと同じである場合もあり得る。一方、ステップＳ２６において、ステップＳ２５の仮採用テストで何も返されなかった場合は、何もせずにステップＳ２２に戻る。
【００５９】
ステップＳ２５における、企業ｐのカップルまたはシングルｂに対する仮採用テストの処理を図５に示す。図５より仮採用テストの処理は次のように行われる。ステップＳ３０において、ｂが優先度リストＲＯＬ（ｐ）に記載されていなければｂを返して終了する。一方、ステップＳ３０において、ｂが優先度リストＲＯＬ（ｐ）に記載されていれば、ステップＳ３１に進む。ステップＳ３１において、仮採用リストＴｍｐＬｉｓｔ（ｐ）の要素を上から順番に検索し、すべての要素がＲＯＬ（ｐ）での順位に関して上から昇順に並ぶように、ｂの要素をＴｍｐＬｉｓｔ（ｐ）に挿入する。次に、ステップＳ３２において、ＴｍｐＬｉｓｔ（ｐ）の一番上の要素のマッチング順位を１とする。次に、ステップＳ３３において、ＴｍｐＬｉｓｔ（ｐ）の上から二番目の要素から順番に一番下の要素まで、もし存在すれば、その要素をカップルまたはシングルｂ２の要素とし、その要素の直上の要素をカップルまたはシングルｂ３の要素とすると、ｂ２のマッチング順位を直上の要素のマッチング順位に直上の要素のサイズｓ（ｂ３）を足したものに設定する。ステップＳ３４において、ＴｍｐＬｉｓｔ（ｐ）の要素を下から順番に調べ、マッチング順位がｐの定員Ｑ（ｐ）より大きい要素があれば、それらの要素すべてをＴｍｐＬｉｓｔ（ｐ）から除外し、それらの要素が持つカップルまたはシングルをすべて返して終了する。一方、ステップＳ３４において、ＴｍｐＬｉｓｔ（ｐ）の一番下の要素のマッチング順位がｐの定員Ｑ（ｐ）より大きくない場合には、ステップＳ３５において、何も返さずに終了する。なお、図５において、ステップＳ３１とステップＳ３２〜Ｓ３３は同時に行うことができる。
【００６０】
以上のように、本実施の形態においては、図４と図５によるこの発明の双方向マッチングシステムにおけるマッチング方法により、カップルが存在する場合にも安定なマッチングを得ることができる。
【００６１】
なお、この発明の実施の形態２の変形例として、サイズが２のカップルだけでなく、サイズが３以上のグループを含んだ場合のマッチング方法がある。ここで、グループとは志願者の複数の組で、それぞれが同一の優先度リストを持ち、同一の企業とマッチングすることを望むものである。このようなグループが存在する場合には、仮採用リストおよび図４と図５において、カップルの代わりにグループを考え、グループのサイズを当該グループを構成する志願者個人の数に等しいと考えれば、この発明の実施の形態２のマッチング方法でカップルをグループに置き換えてマッチングを行うことができる。このとき、マッチングする相手で順位最大のものがグループである場合に、マッチングされる志願者個人の数が定員よりグループのサイズから１を引いた数だけ大きくなる可能性がある。この変形例により、グループが存在する場合にも安定なマッチングを得ることができる。
【００６２】
実施の形態３．
この発明の実施の形態３における双方向マッチングシステムにおけるマッチング方法は、この発明の実施の形態１における図１および図２のマッチング方法あるいは実施の形態２における図４のマッチング方法でマッチングを得た結果、どの企業ともマッチングできなかったカップルに対して次のような処理を行う。カップルｃが優先度リストＲＯＬ（ｃ）に記載するどの企業ともマッチングできなかった場合、カップルを解消して、新たな未処理の２人のシングルａ１、ａ２として図１および図２あるいは図４のマッチング処理を続行する。ただし、企業は、シングルと、カップルと、カップルを構成する個人とのすべてに対して、一意的な優先度リストを持つ必要があり、カップルを解消してもかまわない志願者個人は企業に対して、カップルとしての優先度リストの他に、シングルとしての優先度リストも持つ必要がある。ここでシングルとしての優先度リストはカップルの優先度リストと同じである必要はない。
【００６３】
図６に、カップルｃが優先度リストＲＯＬ（ｃ）に記載するどの企業ともマッチングできない場合には、カップルを解消して志願者ａ１と志願者ａ５としてマッチングする場合の企業の優先度リストの変換例を示す。図６の左に、もともとの志願者個人に対する企業の優先度リストの一例（符号３）を示す。もともとの優先度リストでの順位は、ａ７＜ａ１＜ａ４＜ａ３＜ａ５＜ａ６となっている。ここで、志願者ａ１とａ５がカップルｃであるとする。このとき、カップルと、シングルと、カップルを構成する志願者に対する企業の優先度リストを、カップルを構成する志願者を優先度リストに残したまま、カップルｃを構成する志願者のうち順位が大きいものであるａ５の真下の順位に、カップルｃを挿入することにより作る。このようにして得られる優先度リストを図６の右に示す。図６の右の優先度リスト（符号４）での順位は、ａ７＜ａ１＜ａ４＜ａ３＜ａ５＜ｃ＜ａ６となる。
【００６４】
以上のように、この発明の実施の形態３による双方向マッチングシステムでは、マッチングの結果、集合Ａに含まれるカップル（またはグループ）が集合Ｂのいずれの要素ともマッチングできなかった場合に、該カップル（またはグループ）を、集合Ａの２以上の要素に戻して、該２以上の要素と集合Ｂの要素のマッチングを行う再マッチング手段を備えるようにしたので、カップルとしてどの企業ともマッチングできなかった志願者個人が、カップルを解消することにより、どこかの企業にマッチングする可能性を持つことができるようになる。
【００６５】
実施の形態４．
この発明の上記の実施の形態１では、各企業において、マッチングする相手で順位最大のものがカップルである場合に、マッチングされる志願者個人の数が定員より１人多くなっても構わないとしたが、これを一部の企業または全企業で、マッチングを行う前に定員を実際より１だけ小さく設定し直しておくことにより、たとえマッチングする相手で順位最大のものがカップルであったとしても、該企業にマッチングされる志願者個人の数を必ずもともとの定員以下にすることができる。
【００６６】
また、上述のようにユーザが定員を入力する際に、定員より１人多くなって良いか否かを考慮して、定員の数を入力するようにしてもよいが、実施の形態４の変形例として、自動的にその処理を行うようにしてもよい。すなわち、企業の定員を入力する定員入力手段と、マッチングする志願者で最も順位の大きいものがカップルの場合に、定員＋１までのマッチングを許すか否かの可否を入力する増員処理可否入力手段と、増員処理可否入力手段に可と入力された場合には、定員入力手段に入力された定員をそのまま登録し、増員処理可否入力手段に否と入力された場合に、定員入力手段に入力された定員から１を引いた数を定員として登録する定員数登録手段とを設けるようにする。これにより、定員＋１までのマッチングを許さない企業においては、マッチングされる志願者個人の数を必ずもともとの定員以下にすることができる。
【図面の簡単な説明】
【００６７】
【図１】この発明の実施の形態１に係る双方向マッチングシステムの処理の流れを示したフローチャートである。
【図２】この発明の実施の形態１に係る双方向マッチングシステムの処理の流れを示したフローチャートである。
【図３】この発明の実施の形態２に係る双方向マッチングシステムにおける仮採用リストの一例を示した説明図である。
【図４】この発明の実施の形態２に係る双方向マッチングシステムの処理の流れを示したフローチャートである。
【図５】この発明の実施の形態２に係る双方向マッチングシステムの処理の流れを示したフローチャートである。
【図６】この発明の実施の形態３に係る双方向マッチングシステムにおける優先度リストの一例を示した説明図である。
【図７】従来のマッチング方法におけるマッチングの一例を示した説明図である。
【図８】従来のマッチング方法における優先度リストの一例を示した説明図である。
【図９】従来のマッチング方法の処理の流れを示したフローチャートである。
【図１０】従来のマッチング方法を示した説明図である。
【図１１】従来のマッチング方法における企業の優先度リストをカップルを考慮するものに変更する方法の一例を示した説明図である。
【符号の説明】
【００６８】
１  仮採用リスト、２  仮採用リスト、３  優先度リスト、４  優先度リスト、１０  優先度リスト、１１  優先度リスト。
【図１】
2008181549.tif 000003
【図２】
2008181549.tif 000004
【図３】
2008181549.tif 000005
【図４】
2008181549.tif 000006
【図５】
2008181549.tif 000007
【図６】
2008181549.tif 000008
【図７】
2008181549.tif 000009
【図８】
2008181549.tif 000010
【図９】
2008181549.tif 000011
【図１０】
2008181549.tif 000012
【図１１】
2008181549.tif 000013