📜  比较网络

📅  最后修改于: 2022-05-13 01:57:03.357000             🧑  作者: Mango

比较网络

比较网络是一种排序网络,它总是对输入进行排序。导线和比较器构成比较网络。比较器是具有两个输入 (x, y) 和输出 (x', y') 的设备。它执行以下函数:

x' = min(x, y),
y' = max(x, y) 

比较器通常被绘制为单个垂直线,其中输入在左侧,输出在右侧。较小的输入值放在顶部输出,而较大的输入值放在底部输出。因此比较器可以被认为是对它的两个输入进行排序。假设每个比较器在 O(1) 时间内运行,即输入值出现和输出产生之间的时间是恒定的。

比较网络的第二个组成部分,即电线执行将值从一个地方传输到另一个地方的函数。这些是网络输入线或网络输出线。电线能够将比较器的输入连接到其他比较器的输出。

只有当它的两个输入值都可用时,比较器才会产生输出。现在,假设每个比较器花费单位时间“运行时间”可以定义。运行时间是输入线接收到值后输出线接收值所花费的时间。正式定义如下。比较网络的输入线深度为 0。现在,如果 d1 和 d2 是两条输入线的深度,则输出线的深度为 max(d1, d2) + 1。比较器的深度定义为它的输出线。

特性:

  • 图必须是无环的。
  • 只有当输入可用时才会产生输出。
  • 如果输入可用,比较器会并行处理。
  • 排序网络是对输出进行排序的比较网络。
  • 并非所有的比较网络都是排序网络。
  • 比较网络就像一个程序,它指定如何进行比较。

定理:

  1. 如果具有 n 个输入的比较网络正确地对所有 2n 个可能的 0 和 1 序列进行排序,则它正确地对任意数字的所有序列进行排序。
  2. 如果比较网络转换输入 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