分而治之的经典应用是解决以下问题:
给定不同的可比较元素的数组,计算数组中的反转对的数量:对,使得和。
一种解决方法是进行合并排序,但还要计算子问题中反转对的数量。在合并步骤中,我们计算跨越(两个)子问题的反转对的数量,并将其添加到子问题的计数中。
虽然这很好,并且给出了时间算法,但是却弄乱了数组。
如果我们还有其他限制,即数组是只读的,则可以制作一个副本并处理该副本,或者使用其他数据结构(例如订单统计平衡二叉树)进行计数,两者都使用空间。
当前的问题是在不影响运行时间的情况下尝试改善空间。即
是否存在时间算法来计算反转对的数量,该算法适用于只读数组并使用亚线性(即)空间?
假设一个成本均一的RAM模型,并且元素占用空间,并且它们之间的比较为。
参考会做,但是一个解释会更好:-)
我尝试在网上搜索,但找不到任何肯定/否定答案。我想这只是出于好奇。
3
Chan和Pătraşcu给出了一个时间算法,但据我从略读中可以看出,它们需要Ω (n )空间。
—
拉斐尔
@Raphael:谢谢!如果没有答案,那么您的评论将是迄今为止最好的答案。
—
Aryabhata
顺便说一句,我对Ajtai等人的下界有些困惑。定理8说“任何算法”,但是我的下限似乎反对单次精确流算法,这是一个非常受限制的模型
—
Sasho Nikolov 2012年