减少分拣网络

Reducing a Sorting Network

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

每条竖线是一个2输入比较器,输入序列在左边进入,排序后的序列出现在右边。

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

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

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

一般情况下,我们不能删除中间线。例如,考虑网络

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