2013-06-20 17 views
5

私はそこに似たような話題がたくさんあることを知っています。しかし、私の場合、ほとんどの人が私に疑念を残しました。私がしたいのは、完璧なマッチングを見つけることです(もちろん、完璧なマッチングができない場合にはできる限り完璧に近づけてください)。そして、n個の頂点のうちkをマッチさせることができるすべてのマッチングから)、私は可能な限り高い総重量を選択したい。ほとんどの場合(非加重)最大マッチングがあいまいなので、私は最大のを持っているものを選択したい 重み付けされたバイパータイトマッチング

  • できるだけ多くの頂点として

    1. マッチ: だから単純に追従しているものを私は言って置く優先順位エッジ上の重みの合計。同じ重量のものがいくつかある場合は、どちらを選択するかは関係ありません。

    私はFord-Fulkersonアルゴリズムについて聞いたことがあります。それは私がそれを記述する方法で動作しているか、他のアルゴリズムが必要ですか?

  • 答えて

    5

    これを自分で実装する場合は、おそらくHungarian algorithmを使用します。より高速のアルゴリズムは存在しますが、理解や実装が容易ではありません。

    Ford-Fulkersonは最大フローアルゴリズムです。重みのないマッチングを簡単に解決することができます。加重マッチングアルゴリズムに変換するには追加のトリックが必要です。そのトリックで、あなたはハンガリーのアルゴリズムを思いついた。

    また、最小コストのフローアルゴリズムを使用して加重二者間マッチングを行うこともできますが、同様にうまく機能しない可能性があります。ネットワークシンプレックス法もありますが、それは主に歴史的関心事のようです。

    +0

    実は、私の最終学歴の卒業証書(学位に相当する国際的に同等の学位)には、志願問題があるので、私はford-fulkersonを理解しようとします。問題は、私が望むやり方でそれが働いているかどうか分かりません。 := <1,3,1><2,4,1><1,4、無限大> max-flowはエッジ<1,4,inf>が取られることを意味し、同様に最大重量を取ることを意味します。最初に最大頂点集合を見つけ、第2の条件としてエッジ重みの合計を求める。 – abc

    +0

    これは本当にこれを解決するためにフローを使用する方法ではありません。単位容量が必要です。直接的な定式化が必要な場合は、最小コストのフローモデルを使用し、単位容量を維持し、コストをそのコストとみなします。これは最大フロー問題ではありませんが、最大フローをサブルーチンとして使用できるトリック(primal-dualメソッド)があります。 – tmyklebu

    関連する問題