我们可以从排序矩阵中获得排序列表吗


9

我糊涂了。我想证明以乘矩阵排序(即行和列以升序)的问题是。我假设它可以比更快地进行,并尝试违反 下限,以进行对m个元素进行排序所需的比较。我有两个矛盾的答案:nnΩ(n2logn)n2lognlog(m!)

  1. 我们可以从的排序矩阵中获得元素的排序列表/math/298191/lower-bound-for-matrix-sorting/298199?iemail = 1#298199n2O(n2)
  2. 您无法从矩阵中获得排序列表的速度快于 /programming/4279524/how-to-sort-amxn-matrix-which-has-所有它的行排序和n列排序Ω(n2log(n))

哪一个是对的?


6
顺便说一句,当我们看到“排序为 ”但未指定输入模型和计算模型时,这使我感到恼火。比较排序为。通常,排序可能比排序快,例如对于字符串(如果是总输入长度)或整数(在某些允许恒定时间整数算术运算的计算模型中)的排序。Ω(nlogn)Ω(nlogn)n
David Eppstein

3
更加学究:比较排序不是 ,因为比较排序不是从到的函数。在任何二进制决策树模型中(而不只是比较),排序都需要时间。Ω(nlogn)RRΩ(nlogn)
Jeffε

Answers:


15

下界是正确的(2)-您不能比更好地做到这一点,并且(1)当然是错误的。让我们首先定义什么是排序矩阵-它是矩阵,其中每一行和每一列中的元素都按升序排序。Ω(n2logn)

现在很容易验证每个对角线可能包含任意顺序的元素-您只需要使它们足够大即可。特别地,对矩阵进行排序意味着对这些对角线中的每一个进行排序。第个对角线有个项,因此可能的订购。这样,排序后的矩阵至少可以定义 不同的顺序。现在可以很容易地验证,这意味着在比较模型中(正如Jeff在下面提到的任何二进制决策树模型中),至少这是一个下限在排序时间上。iii!X=i=1ni!log2X=Ω(n2logn)


3
同样,在任何二进制决策树模型中,不仅是比较。
Jeffε
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.