我有一个12×12矩阵,对角线值从非零变为零,我想知道是否有一个算法来交换矩阵中的所有行,以确保没有非零值.
我的矩阵C,在C(i,i)处不得有任何非零值.思考?
例:
我有一个5×5矩阵
3 4 5 0 6
1 0 4 3 0
0 5 1 0 3
0 1 0 2 0
2 0 5 0 0
如何使它没有非零对角线元素?
最佳答案 >构建二分图.
>在左侧创建一组节点,每个行索引一个.
>在右侧创建一组节点,每个列索引一个.
>对于矩阵的每个元素A(i,j):
>如果A(i,j)为零,则在第i行节点和第j列节点之间添加边.
>在二分图中找到完美匹配.匹配中的n个边将告诉您如何置换行.匹配中的Edge(i,j)表示行i应该成为行j.
请参阅此处了解完美匹配算法:http://en.wikipedia.org/wiki/Bipartite_matching#In_unweighted_bipartite_graphs