如何找到矩阵排序的下限?
Posted
技术标签:
【中文标题】如何找到矩阵排序的下限?【英文标题】:How can the lower bound for matrix sorting be found? 【发布时间】:2013-01-24 12:27:18 【问题描述】:考虑对n x n
矩阵进行排序的问题(即行和列按升序排列)。我想找出这个问题的下限和上限。
我发现它是O(n^2 log n)
,只需对元素进行排序,然后输出第一个n
元素作为第一行,接下来的n
元素作为第二行,以此类推。
但是我想证明它也是Omega(n^2 log n)
。
在尝试了更小的示例之后,我想我应该证明,如果我可以使用少于 n^2 log(n/e)
的比较来解决这个问题,那么它将违反 log(m!)
对 m
元素进行排序所需的比较下限。
关于如何证明这一点的任何想法?
【问题讨论】:
【参考方案1】:看看http://en.wikipedia.org/wiki/Sorting_algorithm#Comparison_of_algorithms。
您的问题听起来好像您只是在对 n² 元素而不是 n 进行排序,因此“O(n² log n²)”可能对例如合并排序有效。
如果第一行中的前 n 个元素不必自己排序,它可能会更快,但不是必须的,这取决于算法。
最后但同样重要的是,尝试一些例子并不能证明什么,尤其是那些统计数据不起作用的小例子(它们甚至没有表明什么)
【讨论】:
以上是关于如何找到矩阵排序的下限?的主要内容,如果未能解决你的问题,请参考以下文章
我如何向 Google ortools 添加一组值而不是下限和上限?
如何在 14x14 numpy 矩阵中找到 10 个最高数字的索引? [复制]