确切的比较次数以计算中位数


25

Knuth的《计算机编程艺术》第三章(第5章,第3.2节)包括下表,该表列出了从大小为的未排序集合中选择第个最小元素对所有所需的确切最小比较数。。该表中,与公知的封闭形式的表达式沿和,表示大部分的现有技术的状态的作为1976年Ñ 1 Ñ 10 V 1Ñ = ñ - 1 V 2Ñ = ñ - 2 + Ñ / 2 tn1tn10V1(n)=n1V2(n)=n2+n/2

Knuth III的表格:5.3.2

在过去的36年中,是否还计算了更精确值?我对精确值特别感兴趣,这是计算中位数所需的最小比较数。中号Ñ = V ñ / 2 Ñ Vt(n)M(n)=Vn/2(n)


正如@MarkusBläser指出,Knuth的表似乎已经包含了来自比尔Gasarch,韦恩·凯利,和比尔·皮尤最近的结果(找到的第i个最大的n个为小I,NSIGACT新闻 27(2):88-96,1996年)


2
我认为,有关该主题的最著名的论文是Pratt和Yao(1976)的论文,他们被认为是最早发现某种(对抗性)技术来证明这一问题下限的技术之一。如果我要找到有关该主题的最新论文,我将遵循对该论文的引用。最近的论文是Dor和Zwick的论文,但Paterson也在1996年进行了一次调查(尽管我没有看到它是否涉及确切的结果)。
热雷米

1
细说:在问题的最后一句中,您可能指的是天花板而不是地板。
伊藤刚(Tsuyoshi Ito)

6
杰夫(Jeff)很好奇,为什么您对确切的答案感兴趣。
Chandra Chekuri 2012年

5
肯尼斯·奥克萨嫩(Kenneth Oksanen)编写了一个有效的代码来计算。不幸的是,只有一个摘要可以使用sciencedirect.com/science/article/pii/S1571065306001582两年前,我的一个学生给他发送了一封电子邮件,并从他那里获得了代码。我不记得是否可以获得一些新的价值。Vi(n)
马库斯·布拉瑟(MarkusBläser),2012年

5
@ChandraChekuri:我正在研究Blum-Floyd-Pratt-Rivest-Tarjan线性时间选择算法的变体,作为潜在的算法作业问题。如果我们使用最小比较算法来找到每个块的中位数,那么什么块大小可以在big-Oh中为我们提供最佳常数?9胜于7胜于5; 那11点呢?
杰夫·杰夫·2012年

Answers:



3

我想知道这条信息是否对您有用。不幸的是,它没有提供有关此帖子问题的任何其他信息,而是更多地答复了您对此内容的评论(分析QuickSelect的变体)。

v(n,t)vt(n)

vt(n)=n+min(t,nt)+l.o.t..

这种结果并不经常使用,尤其是Martínez,Panario和Viola撰写的“ QuickSelect的自适应采样”中算法的基础。本文的出发点是QuickSelect三分位数,然后问:当我们寻找的元素的相对排名远低于n / 2或远高于n / 2时,系统地选择中位数是否有意义? ?

换句话说,假设您正在个元素的列表中寻找第个元素,并且从元素的簇中选择枢轴。除了取中位数()外,您还可以取,其中。他们表明,对于的正确选择,该算法实际上比3中位数变体更有效。Ñ / 2 α α = ķ / Ñ knmm/2αmα=k/nm

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.