Algorithm 按对角线对矩阵元素排序

Algorithm 按对角线对矩阵元素排序,algorithm,sorting,matrix,Algorithm,Sorting,Matrix,我正在寻找一种算法,它可以对矩阵的行进行排序,这样元素就可以沿着对角线累积。 我将有一个仅包含值0和1的方形矩阵(大约80行/列)。有一些算法对行进行排序,使值为1的大多数元素位于对角线下方。 我需要一个排序算法来最小化元素到对角线的平均距离。 像这样: 发件人: 致: 由于我不熟悉这个话题,我希望有人能帮助我。我不是在寻找一个完整的解决方案。这种算法的名称(如果存在)或伪代码就足够了 非常感谢 可能有一种更有效的方法,但您可以将此问题视为一个问题(尝试将每一行指定给对角元素) 这可以通过三个步

我正在寻找一种算法,它可以对矩阵的行进行排序,这样元素就可以沿着对角线累积。 我将有一个仅包含值0和1的方形矩阵(大约80行/列)。有一些算法对行进行排序,使值为1的大多数元素位于对角线下方。 我需要一个排序算法来最小化元素到对角线的平均距离。 像这样: 发件人:

致:

由于我不熟悉这个话题,我希望有人能帮助我。我不是在寻找一个完整的解决方案。这种算法的名称(如果存在)或伪代码就足够了


非常感谢

可能有一种更有效的方法,但您可以将此问题视为一个问题(尝试将每一行指定给对角元素)

这可以通过三个步骤完成:

1) 创建一个新矩阵M,其中每个条目M(i,j)包含将输入矩阵的行i分配给对角元素j的成本。对于您的示例,该矩阵将如下所示(到对角线元素的平均距离):

示例:
M(0,0)=1
是将输入矩阵(
0 1 0
)的第0行指定给位于0的对角元素时的平均距离

2) 运行算法以找到最佳分配(例如)。这将为您提供行和列之间的最佳1:1匹配,从而最小化矩阵中的成本总和

The result will be the elements (0,1), (1,2) and (2,0)
3) 使用这些知识重新排列输入矩阵。所以

row 0 -> row 1
row 1 -> row 2
row 2 -> row 0

谢谢这个解决方案绝对有意义——特别是对我的应用程序而言。@spaceEngineer很高兴我能提供帮助。考虑一下投票或接受帮助你的答案。
1   0   1
1   1   1
1  0.5 1.5
The result will be the elements (0,1), (1,2) and (2,0)
row 0 -> row 1
row 1 -> row 2
row 2 -> row 0