比较网络
比较网络是一种排序网络,它总是对输入进行排序。导线和比较器构成比较网络。比较器是具有两个输入 (x, y) 和输出 (x', y') 的设备。它执行以下函数:
x' = min(x, y),
y' = max(x, y)
比较器通常被绘制为单个垂直线,其中输入在左侧,输出在右侧。较小的输入值放在顶部输出,而较大的输入值放在底部输出。因此比较器可以被认为是对它的两个输入进行排序。假设每个比较器在 O(1) 时间内运行,即输入值出现和输出产生之间的时间是恒定的。
比较网络的第二个组成部分,即电线执行将值从一个地方传输到另一个地方的函数。这些是网络输入线或网络输出线。电线能够将比较器的输入连接到其他比较器的输出。
只有当它的两个输入值都可用时,比较器才会产生输出。现在,假设每个比较器花费单位时间“运行时间”可以定义。运行时间是输入线接收到值后输出线接收值所花费的时间。正式定义如下。比较网络的输入线深度为 0。现在,如果 d1 和 d2 是两条输入线的深度,则输出线的深度为 max(d1, d2) + 1。比较器的深度定义为它的输出线。
特性:
- 图必须是无环的。
- 只有当输入可用时才会产生输出。
- 如果输入可用,比较器会并行处理。
- 排序网络是对输出进行排序的比较网络。
- 并非所有的比较网络都是排序网络。
- 比较网络就像一个程序,它指定如何进行比较。
定理:
- 如果具有 n 个输入的比较网络正确地对所有 2n 个可能的 0 和 1 序列进行排序,则它正确地对任意数字的所有序列进行排序。
- 如果比较网络转换输入 a = ha1, a2, . . ., ani 进入输出 b = hb1, b2, . . ., bni,然后对于任何单调递增函数f,网络变换
f(a) = hf(a1), f(a2), . . ., f(an)i into f(b) = hf(b1), f(b2), . . ., f(bn)i