10
これはアルゴリズム的/数学的な問題ですが、私はC++でソリューションを実装したいと考えています。マトリックスに数値を追加して最小結果を得るにはどうすればよいですか?
は、私はドットが整数を表すので、どこのような行列があるとします。
私はから最大1つの番号が存在するように、各列から数字を1つ選ぶとした場合、私は最低限の結果をもたらすであろうどのようにW X Y Z
A . . . .
B . . . .
C . . . .
D . . . .
各列?例えば
、私はAW BX CY DZ
またはAZ BX CY DW
ではなくAW BW CZ DZ
を選ぶことができるブルートフォースアプローチは、nを取るように見えるでしょう!計算。より速い方法がありますか?最終的にはサイズ〜60の行列に数値を追加したいと思います。
また、すべての数値は0から256
n実際に階乗。私の間違い。 – Tarik
AW、BX、BW、AXで始まっているとしましょう。どちらの場合も、A、B行、W、X列は出力されます。それらの行に沿って再帰的に考え、結果をキャッシュすることはそのトリックを行うべきです。 http://en.wikipedia.org/wiki/Dynamic_programming – Tarik
http://en.wikipedia.org/wiki/Hungarian_algorithm あなたの質問はこの問題と似ています。 – user2548103