我现在正在尝试一天来寻找一种算法来交换对称矩阵中的两个索引,以便结果也是一个对称矩阵。
假设我有以下矩阵:
0 1 2 3
1 0 4 5
2 4 0 6
3 5 6 0
假设我想交换第 1 行和第 3 行(其中第 0 行是第一行)。只需交换结果:
0 1 2 3
3 5 6 0
2 4 0 6
1 0 4 5
但是这个矩阵不再对称了。结果我真正想要的是跟随矩阵:
0 3 2 1
3 0 6 5
2 6 0 4
1 5 4 0
但是我找不到合适的算法。这真的让我很兴奋,因为这看起来很容易。
有人知道吗?
更新
Phylogenesis 给出了一个非常简单的答案,我觉得自己想不出来很傻。但这里有一个后续任务:
假设我将这个矩阵存储为二维数组。为了节省内存,我不保存冗余值,而且我也省略了始终具有 0
值的对角线。我的阵列看起来像这样:
[ [1, 2, 3], [4, 5], [6] ]
我的目标是将该数组转换为:
[ [3, 2, 1], [6, 5], [4] ]
如何使用给定的数组高效地交换行和列?
最佳答案
很简单!
正如您目前所做的那样,将第 1 行与第 3 行交换。然后将第 1 列与第 3 列交换。
关于交换对称矩阵中两个索引的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17997382/