非混乱定理的证明

时间:2015-04-18 19:49:18

标签: algorithm sorting theorem-proving

我不能证明这个不搞乱的定理。这是一个定理,它说明如果你对矩阵的行和列进行排序,行将保持排序。

我已经阅读了一份说明的草图:

  • 对行进行排序
  • 置换行以对第一列进行排序
  • 置换行,为每一行丢弃它的第一个元素,对第二列进行排序,依此类推。
  • 不变量是每行保持排序行。 (无论那意味着什么 - 我引用了这些步骤)

我无法证明这一点。有人可以给我一个更详细的证据或链接到一些文件吗?

1 个答案:

答案 0 :(得分:3)

简单段落说明:如果行已排序,并且您有A列,B列,A列中的数字r和A列中的n数字小于或等于r,则:B列中最多n个数字小于r(对应于A列中的n个数字)。其余的等于或大于r。您可以将r作为A列中的任意数字,结果仍然有效。然后对每列使用相同的逻辑。

图片的详细说明

我们可以从一个已经按行排序的简单矩阵开始:

enter image description here

如果我们按照第一个数字对彩色块进行排序,我们得到这个矩阵(注意,这基本上是对A列进行排序,还是用它拖动B列):

enter image description here

现在,在下一张图片中,2小于或等于蓝色的所有内容。因此,无论您如何对B列进行排序,第1行仍将进行排序:

enter image description here

在下一张图片中,因为行和列A已排序,3小于或等于紫色的所有内容。因此,当列B排序时,3旁边的数字必须大于或等于它。因此,我们知道第2行将保持排序。

enter image description here

在下一张图片中,由于行A和列A已排序,因此3小于或等于黑色的所有内容。因此,当列B排序时,3旁边的数字必须大于或等于它。因此,我们知道第3行将保持排序。

enter image description here

对于最后一行,我们可以使用相同的逻辑。但是,我们还可以注意到,显然有一个数字会将最后一行排序(当前在它旁边的那一行,7)。如果不存在7,则另一个数字>列B排序后,必须。第4行将保持排序:

enter image description here

我们最终得到了这个:

enter image description here

对于尚未排序的列,并不总是的行将被排序。例如,请注意此行的矩阵排序:

[4 7 8  9]
[1 5 10 12]
[2 3 6  11]

如果我们对上面矩阵中的前两列进行排序,我们得到:

[1 3 8  9]
[2 5 10 12]
[4 7 6  11]

第3行未排序。但是,在排序第3列后,它将获得数字10,一切都会再次正常。