2017-04-25 3 views
1

私は現在、高度なデータ構造クラスにあり、グラフについて良いことを学んでいます。今年の夏には、ルームメイトに合ったアルゴリズムを書くのを手伝うように求められました。私のデータ構造クラスでは、City Pathグラフを作成し、いくつかのソートとプリムのアルゴリズムを実行しました。私は、グラフが私のルームメイトマッチングアルゴリズムから始めるには最適な場所であると考えています。ルームメイトマッチングアルゴリズム

私たちのデータベースは単にテキストファイルである可能性があると思っていました。しかし、私はグラフの各ノードを初期化することができました。生徒はそれぞれの生徒がより多くの生徒に無向きなエッジを持つようになりました(別の生徒とルームメイトをしたくない生徒には縁がなく、繰り返すルームメイト)。今私は特別な興味に応じてエッジウェイトをさらに増やすことができました。

上記のすべては非常に簡単で、実装上の問題は発生しません。しかしここに私の質問があります:

_共通の興味分野をどのように更新すればよいですか?物理的な調査でそれを開始し、次にテキストファイルに戻ってエッジの重量を手動で更新する必要がありますか?または、私は、一致する興味を追跡するフィールドを作成する必要がありますか?

ところで、すべてがJavaで書かれています。

答えて

0

あなたが設計しようとしているのは、2部一致のと呼ばれています。幸運にも、他の二者間マッチングアルゴリズムとは異なり、このためには派手なグラフアルゴリズムや複雑な実装は必要ありません。これは、Stable Marriage Problemの非常に近くにあり、驚くべきことに、このためのアルゴリズムは非常に効果的です。

あなたが興味があれば、安定した結婚問題の私のC++実装を分かち合うことができます。