背景:徐超不久前发布了以下问题:“ 是否存在不减少到分类网络的已知比较分类算法,使得每个元素被比较次? ”。看来我们对这个问题有些困惑;我曾在2009年与Valentin Polishchuk讨论过同样的问题,但我们一无所获。
为了获得一些新的想法,我试图提出一个最简单的问题,该问题具有相似的风格并且并非完全无关紧要。因此,下面的问题。
问题:将为您提供两个排序列表,每个列表包含元素。您可以合并列表,以便每个元素仅比较次吗?
自然,输出应为包含所有元素的排序列表。
[事实证明这很简单,答案是“否”。]
问题2:为您提供两个排序列表,每个列表包含元素。如果允许丢弃一小部分元素,是否可以合并列表,以便每个元素仅被比较次?
更精确地,输出应该是包含排序列表元素,和一个“垃圾箱”包含元素。值可以小到多少?使是微不足道的。像这样的事情应该可以直接实现。但是你能得到吗?T (n )T (n )T (n )= n T (n )= n / 100 T (n )= o (n )
笔记:
我们在这里使用比较模型。仅是确定性算法,我们对最坏情况的保证感兴趣。
请注意,两个列表都恰好具有元素。如果我们有一个包含元素的列表,而另一个包含元素的列表,答案显然是“否”。但是,如果两个列表很长,似乎是一个可能能够做一些“负载平衡”。Ñ 1
这次,任何一种算法都是有效的。如果您的算法使用排序网络作为构建基块,那就很好了。
首先,这里是一个简单的算法,该算法最多将每个元素进行200次比较:仅使用标准合并算法,但要维护列表开头的计数器。一旦达到200,就丢弃该元素。现在,对于您丢弃的每个元素,您已成功在输出数组中放置了200个元素。因此,您已实现。