PDA

查看完整版本 : 【求助】求解矩阵的一种最小值的算法问题


Anndy1984
2007-05-04, 13:07
对于一个n*n的矩阵,取矩阵中的n个数,保证每一行每一列都取且只取一个数,怎么的算法能够使得这n个数的和最小??举个例子:
对于一个3×3的矩阵A,如下:

3 2 2
4 3 4
5 2 4
取A02(即数值2,第一行第三列),A10(即数值4,第二行第一列),A21(即数值2,第三行第二列),它们的和为:2+4+2=8,最小。
我也不知道怎么描述这个概念,不知道有没有甚么概念来描述这个最小值。
不知道达人能不能提供一种算法。急,在线等!
对了,如果有人知道怎么样可以用matlab直接实现这个就更好了!
请大侠帮帮忙!谢谢!

云龙九现
2009-03-24, 12:08
这好像是图论或者最优化里的问题,寻找最小路径或者最佳路径。方法挺复杂的,最坏的情况可能需要遍历整个矩阵
就拿这个矩阵来说吧!
3 2 2
4 3 4
5 2 4
Step1:i=1,在第i行里选择一个最小的元素,比如A13,如果有两个相同,那么任选哪个都行。我们不妨选A13,记录A13的行和列下标,以及A13的值
Step2:i=2,在第2行的第1列和第2列里选择最小的一个,我们找到了A22,这个时候,记录A22的行和列下标。
Step3:i=3,在第3行的第一列里选择A31,并记录行和列下标
Step4:求和,记录和为10.然后重复上述过程,在重复的过程中,第一行中选择另外一个次小的做为开始的值。如果找到的值比10小,则代替,如果不小,那么继续寻找。

anbcjys
2009-03-25, 08:08
蚁群 或者遗传都可以