减少排序网络

时间:2017-02-12 21:21:25

标签: algorithm sorting graph-algorithm sorting-network

排序网络是2个输入比较器的排列,可以对n个元素的输入序列进行排序。 例如,这是一个9元素输入的排序网络:

enter image description here

每条垂直线是2输入比较器,输入序列在左侧输入,排序序列在右侧。

我的问题是:如何证明如果我们删除任何有效n输入排序网络的顶线或底线,我们最终会得到一个有效的排序网络(n-1)输入?删除任何中间线怎么办?

我觉得这可以使用排序网络的图形表示来显示,但我找不到合适的表示。

1 个答案:

答案 0 :(得分:1)

确实可以删除顶部或底部线。证明这一点的一种方法是使用Knuth的0-1原理,该原则指出当且仅当每个0和1序列正确排序时,排序网络才是正确的。让S成为排序网络,让S'成为S,并删除顶行。设xS'的0-1输入。将0x传递给S。通过归纳,我们可以证明k阶段之后的值一致(除了删除的顶线),因为涉及顶线的所有门都是无操作。因此S'是一个正确的排序网络。

一般情况下,我们无法移除中间线。例如,考虑一下网络

1 *   *
  |   |
2 * * *
    |
3   *