第七章 互连网络

4. 均匀洗牌置换

  均匀洗牌置换是将输入端分成数目相等的两半,前一半和后一半按序一个隔一个地从头至尾依次与输出端相连。这好比洗扑克牌时,将整副牌分成相等的两叠来洗。达到理想的一张隔一张的均匀情况。故称为均匀洗牌置换,或简称为洗牌置换。其函数关系可表示为:
   
  由此表达式可见,洗牌变换是将输入端二进制地址循环左移一位即得到对应的输出端二进制址。
  此外,还可以分别定义子洗牌(subshuffle) 和超洗牌(supershuffle) 如下:
   
  显然成立
   
  图7.6示出了N=8的的变换图形。从图可以看出:子洗牌是将整组数据分成若干个子组,对每个子组完成均匀洗牌变换,超洗牌仍对整组数据进行均匀洗牌变换,但增加了数据变换的宽度。

  逆均匀洗牌是均匀洗牌的逆函数,它所完成的变换图形如图7.7所示。与图7.6相比,两者的输入端和输出端正好互换了个位置,其函数表达式为:
   
  这说明逆洗牌是将输入端二进制地址编号循环右移一位即得到相应的输出端地址。
  均匀洗牌与逆均匀洗牌是两种十分有用的互连函数,以它们代表的链路与以交换置换代表的开关多级组合起来可构成网络与逆网络。s函数在实现多项式求值、矩阵转置和FFT等并行运算以及并行排序等方面都得到广泛的应用。