我正在研究C++中Robert Sedwick Algorithms的奇偶合并排序。
作为本文的一部分,作者提到了如何使用奇偶合并排序来实现排序网络中的并行排序在这种情况下,作者提到了蝴蝶网
我的问题是什么是蝴蝶网络,为什么叫蝴蝶。请用简单的例子说明。
我在谷歌上搜索过,但找不到简单的例子解释。
最佳答案
蝴蝶网络是一种特定的sorting network。分类网络可以看作是一个抽象的网络(如数据流网络),也可以看作是一个非常具体的电路。
这些网络由输入线和输出线以及一对比较器组成,比较器将输入值从一条线路由到另一条线。这是一个并行排序的例子。
来源:multiplexers
在上图中,输入在左边,输出在右边,
方块是比较器。其思想是,您可以在每个输入端放置0到15之间的任意值,比较器将这些值路由到输出端(比较器检查输入值并决定路由到另一条线或保持在同一条线上),所有0值将路由到最高输出端(000),所有1值路由到第二个输出端(001)等。
它的名字是imho派生自Universität Leipzig,例如在butterfly graph中,这种数据流与它的交叉代表一个蝴蝶。
来源:Fast Fourier Transform
若你们看蝴蝶网络的第一个图表,你们会看到它一遍又一遍地重复。