Mr. & Mrs. Smith
個室露天風呂気分で入浴

恋の連立方程式、「パートナー探し」の最適化アルゴリズムに関する一考察

050619_094709 「自分にできるだけ相応(ふさわ)しいパートナー」を見つけることは、我々人間にとって、人生の最も重要なのテーマの一つでもある。しかし、そのプロセスである「恋愛」や「お見合い」に関して、なぜか今までシステマティックな考察がされて来なかったように思える。そこで、今回はその「パートナー探し」のプロセスをモデル化・数値化することにより、最適なアルゴリズムを見つけようと思う。

 まずは、「自分にできるだけ相応しいパートナーを探す」というあいまいな問題を、もう少し明確にモデル化された問題に単純化する。もちろん、単純化するとはいえ、あまり現実とかけ離れていては役に立たないので、現実味を壊さない程度の単純化を行う。

[モデル化された問題]
 結婚適齢期の女性が、これから10人の男性と順番にお見合いをして、その中から結婚相手を見つけることにしたとする。相手の意思は無視して良く、「この人と結婚したい」と宣言した時点で結婚できるものと仮定する。ただし、順番に一人づつしか合うことしかできず、今合っている人を「パス」しなければ次の人に合うことが出来ない(「ふたまた」禁止)。また、一度「パス」した人に戻ることも出来ない(「後戻り」禁止)。この条件でその10人のうちの誰かと必ず結婚しなければならないと想定した場合に、最適な戦術を求めよ。 

 これでかなり、問題として扱いやすくなった。次に、数値化のために、以下の条件を加える。

[数値化のための条件]
 お見合いで男の人に合うたびに、お見合いおよびその後のデートなどにより得られる容姿・性格・収入・家族構成・自分との相性などの情報を基にして、相手に100点満点で点数を付けることが可能だと想定する。その際、0点から100点まで、どの点数の人も同じような確率で現れるように採点する(均等分布)。この条件で先の「モデル化された問題」を与えられた時に、選ぶ結婚相手の点数の『期待値』を最大にすることこそが、最適な戦術であると規定する。 

 複雑な証明と計算式を後回しにして、この条件下での最適なアルゴリズム(手順)を書くとこうなる。

[最適なアルゴリズム]
・お見合い1回目→相手が85点以上なら結婚する、それ以下なら断る
・お見合い2回目→相手が84点以上なら結婚する、それ以下なら断る
・お見合い3回目→相手が82点以上なら結婚する、それ以下なら断る
・お見合い4回目→相手が80点以上なら結婚する、それ以下なら断る
・お見合い5回目→相手が78点以上なら結婚する、それ以下なら断る
・お見合い6回目→相手が74点以上なら結婚する、それ以下なら断る
・お見合い7回目→相手が70点以上なら結婚する、それ以下なら断る
・お見合い8回目→相手が63点以上なら結婚する、それ以下なら断る
・お見合い9回目→相手が51点以上なら結婚する、それ以下なら断る
・お見合い10回目→目をつぶって結婚する

 こうすることにより、期待値を約86点までに引き上げることができるのだ。

 このアルゴリズムは「ふたまた」と「後戻り」は禁止、かつ必ず結婚しなければならない、という条件下であれば恋愛結婚にも応用できる。その場合、最適なアルゴリズムは、

・たとえ今付き合っている人と別れたとしても、あと9回ぐらい恋愛する体力・気力・年齢的な余裕がある
 →今付き合っている相手が85点以上なら結婚する、そうでなければ別れる。
…(中略)…
・たとえ今付き合っている人と別れたとしても、あと2回ぐらい恋愛する体力・気力・年齢的な余裕がある
 →今付き合っている相手が63点以上なら結婚する、そうでなければ別れる。
・今付き合っている人と別れたとすると、年齢的に考えても、その次の恋が『最後の恋』だと思う
 →今付き合っている相手が平均点以上と思えるのなら結婚する、そうでなければ別れる。
・これが『最後の恋』→何がなんでもその人と結婚する。

となる。

 ちなみに、最適なアルゴリズムを使ったとしても、期待値を90点にするには15回の、期待値を95点にするには34回のお見合い(もしくは恋愛)をしなければならない。つまり、「あまり高望みはしない方が良い」と言う事が、初めて数学的に証明されたことになる。

 このアルゴリズムを思いついた時には、「これで何か商売が出来ないか」という邪悪な考えが一瞬心に浮かんだが、全人類の幸福を優先し、ここに公開することとした。ぜひとも、結婚適齢期の人たちにはこのアルゴリズムを活用して『最適なパートナー探し』に活用していただきたい。ただし、それによって「婚期を失う」などの結果になったとしても、私は一切責任を負わないので、そこだけは了承して自分なりに判断して行動していただきたい。

[参考文献]
浮気で生みたい女達 竹内久美子著
BC!な話―あなたの知らない精子競争 竹内久美子著
アルゴリズムの設計と解析 A.V.エイホ
東京ラブストーリー 柴門ふみ
パンツをはいたサル 栗本慎一郎

【付録:アルゴリズムの解説】
 これからk回のお見合いをする場合の最適なアルゴリズムが既に分かっていると場合、その期待値をF(k)とする(ただし満点を100ではなく1とする)。するとその一回前のお見合いにおいては、相手の点数がF(k)未満の場合には、「パス」することが(その場合の期待値はF(k))、そうでない場合は「その相手と結婚する」ことが最善の手である(その場合の期待値は(1+F(k))/2)。可能性は、それぞれF(k)、(1-F(k))なので、

 F(k+1)= F(k)*F(k) + (1+F(k))/2)*(1-F(k))

となり、これを整理すると

 F(k+1)=(1+F(k)*F(k))/2

となる。それに、「最後のお見合いではどんな相手でも必ず結婚しなければいけない」ので、その期待値はおのずと平均点の0.5点となる。

 F(0)=0.5

この二つ並べて書くと、

 F(0)=0.5
 F(k+1)=(1+F(k)*F(k))/2

となる。これを「恋の連立方程式」と呼ぶ。後は電卓を使い、F(k)を順番に求めて行けば良い。

 F(0)=0.5
 F(1)=0.625
 F(2)=0.695
 F(3)=0.742
 F(4)=0.775
 F(5)=0.800
 F(6)=0.820
 F(7)=0.836
 F(8)=0.849
 F(9)=0.861
 …

この0.5から始まる数字の列を、「恋愛数列」と呼ぶ。この数列は認知度も応用範囲はまだ「フィボナッチ数列」などにはまだまだかなわないが、今後研究が進むにつれ、そういったものもどんどん広がると期待されている。もしこのブログを読んだ方で動物行動学を専攻されている人がいたら、ぜひともこの数列が動物の生殖に関わる行動に現れているか、などの実験をしていただきたい。

Comments

stereo_eye

これって、普通にゲームの理論の応用というかそのまんまのように思えますが。
ギャングとヒットマンでこういう問題があったと思います。
でも結婚では、自分ではどんなパートナーが最適かが分からないところが問題なんですよね。

aaa

たしか安定した結婚っていうアルゴリズムあったよね

なみ

現実問題としては
・二(あるいはそれ以上)股をかける
・スレッショルド未満の点数はパス
を行ったほうが効率的に最適解を出せそうですね…

satoshi

>たしか安定した結婚っていうアルゴリズムあったよね

ありますね、確かに。次の「うんちく」のネタに使っちゃおうかな…

まろ

>あと○回ぐらい恋愛する体力・気力・年齢的な余裕がある
ってのが分かれば越したことはないんだけどね…。
ここも、あと1回は恋愛できる確率、2回はできる確率…とやって計算していくと、もっと適当なアルゴリズムが出来そうですね。

|-`).。oO

たしか秋山仁の本か何かで同じ問題をみました。後戻りもできるけど、周りのヒトの戦略によっていいひとが売れてゆくので、事態は複雑でした

nob

後になるほど理想が下がっていく、というのは現実的ではあるけれども、逆の気持ちもあるかもしれませんね。

同種の問題の答えで

《はじめのn人は無条件にパスして(採点はする)その後、「n人中最高だった人」を超える人が現われたらその人を選ぶ》

というのがありました。n =(人数/e)

この問題では「絶対評価による採点」はできないという前提なので、ひとり目がどんなに気に入ってもその人を選ぶことはできず、こんなやり方が最適になるようです。

現実では「絶対評価」は可能ですね。よほどの世間知らずでなければ。

Computer Repair

たしか秋山仁の本か何かで同じ問題をみました。後戻りもできるけど、周りのヒトの戦略によっていいひとが売れてゆくので、事態は複雑でした

Verify your Comment

Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been posted. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

Post a comment

Your Information

(Name is required. Email address will not be displayed with the comment.)