鳩でもわかるC#鳩でもわかるC#C#とJavaScriptをメインに情報発信をしています。ロイド・シャプレイによって1962年に提示された問題です。同じ人数の男女がいて、各個人は各個人の好みに基づき異性全員のリストを持っています。暫定的にペアを作った場合、互いに現在組んでいる相手よりも好きであるペアが存在する場合、これをブロッキングペアとか不安定対と呼びます。ブロッキングペアが存在せず、全員が個人合理性を満たすマッチングを安定マッチングといいます。安定結婚問題の解は安定なマッチングです。すべての場合において安定マッチングは必ず存在します。その安定マッチングを求める方法のひとつがゲールシャプレーアルゴリズムなのです。以下のような問題が与えられたとします。適当に結婚相手を選びます。これをみると4は現在の婚約者であるbよりdとの結婚を望んでいます。dも現在の3より4との結婚を望んでいます。ハイ、駆け落ち成立です。このような駆け落ち(ブロッキングペア)が成立しないようにするにはどうすればよいのでしょうか?これなら駆け落ちされることはありません。全員がそれなりに幸せになれそうです。これが安定マッチングです。その方法のひとつがゲールシャプレーアルゴリズムです。ゲールシャプレーアルゴリズムとは?ゲールシャプレーアルゴリズムは以下のような方法です。婚約相手がいない男性1人が、これまでふられていない中から一番結婚したい女性に求婚する。求婚された女性は相手がいない、または現在婚約関係にある男声よりもよい相手ならこれまでの相手とは婚約を破棄してその人と婚約する。ないなら求婚は拒否します。これを何回も繰り返しすべての男性が誰かと婚約関係にあるなら処理は終了です。これで安定マッチングが得られます。C#でコーディングするC#でコーディングしてみることにします。上に以下の3行が必要です。System.Linq;Parsonクラスの定義0から始まる連番で男女にそれぞれ番号を与え、Queueの中に希望順に異性の番号を入れていきます。{male.Keep}");}}}よろしければ記事の拡散をお願いします。鳩でも分かるC#管理人からのお願いできる仕事であれば請け負います。鳩でもわかるC#管理人はクラウドワークスに在宅ワーカーとして登録しています。お仕事の依頼もお待ちしております。仕事を依頼するコメントについてコメントで英語などの外国語でコメントをされる方がいますが、管理人は日本語以外はわからないので基本的に内容が理解できず、承認することもありません。それからへんな薬を売っているサイトやリンク先のサイトが存在しないというスパムコメントも多々あります。comments.そんななか日本語のコメントもいただけるようになりました。「○○という変数はどこで宣言されているのか?」「××というメソッドはどこにあるのか」「例外が発生する」「いっそのことソース丸ごとくれ」という質問ですが、管理人としては嬉しく思います。「自分が書いた記事は読まれているんだな」と。疑問点には可能な限り答えます。記事に問題があれば修正いたします。そのうえでお願いがあります。「匿名」という味も素っ気もない名前ではなく、捨てハンでいいのでなにかハンドルネームをつくってほしいと思います。管理人のモチベーションアップのためによろしければご支援お願いします。閉路ができない連結方法」コメントをどうぞ返信をキャンセルする。2024年9月6日ブログやっています。メインはC#ですが、JavaScriptにも挑戦しています。ときどきPythonとPHPもあるかも。