oeo*_*aio 6 algorithm matrix mathematical-optimization dynamic-programming
只是寻找一些方向,我意识到给出的例子可以使用强力迭代来解决,但我正在寻找一个更优雅(即数学?)解决方案,它可以解决更大的例子(比如20x20或30x30) ).完全有可能无法做到这一点,而且我在提出一种不依赖蛮力的方法方面收效甚微......
我有一个矩阵(称之为A),它是nxn.我希望从矩阵A中选择一个子集(称之为B).子集将由n个元素组成,其中从每一行和A的每一列中取出一个且只有一个元素.输出应提供解决方案( B)使得构成B的元素的总和是给定这些约束的最大可能值(例如,在下面的示例中为25).如果找到B的多个实例(即,给出相同最大总和的不同解),则应选择具有最大最小元素的B的解.
B也可以是n×n的选择矩阵,但是只有n个期望的元素是非零的.
例如:如果A =
|5 4 3 2 1|
|4 3 2 1 5|
|3 2 1 5 4|
|2 1 5 4 3|
|1 5 4 3 2|
Run Code Online (Sandbox Code Playgroud)
=> B会的
|5 5 5 5 5|
Run Code Online (Sandbox Code Playgroud)
但是,如果A =
|5 4 3|
|4 3 2|
|3 2 1|
Run Code Online (Sandbox Code Playgroud)
B =
|3 3 3|
Run Code Online (Sandbox Code Playgroud)
因为B的最小元素是3,它大于
|5 3 1|
Run Code Online (Sandbox Code Playgroud)
要么
|4 4 1|
Run Code Online (Sandbox Code Playgroud)
这也是9的总和