蝴蝶网络排序

时间:2013-11-18 07:18:32

标签: algorithm sorting sorting-network

我正在研究C ++中Robert Sedwick Algorithms的奇数合并排序。

作为文本的一部分,作者提到了如何使用奇偶合并排序来实现排序网络中的并行排序。在这个背景下,作者提到了蝴蝶网络

我的问题是什么是基本上蝴蝶网络,为什么它被称为蝴蝶。用简单的例子说明将不胜感激。

我用谷歌搜索了它,但没有用例子找到简单的解释。

1 个答案:

答案 0 :(得分:3)

蝴蝶网络是某种sorting network。分类网络可以被视为抽象网络(例如数据流网络)或者非常具体地被视为电路。

这些网络由输入和输出线以及一对比较器multiplexers组成,它们将输入值从一根线路由到另一根线路。这是并行排序的一个例子。

Butterfly Network

来源:Universität Leipzig

在上面的图表中,输入位于左侧,输出位于右侧, 方框是比较器。我们的想法是你可以在每个输入端放置0到15之间的任意值,它们会被比较器路由到输出端(检查输入值并决定路由到另一根导线或保持在同一根导线上),全部为0值将被路由到顶部输出(000),所有1个值都被路由到第二个输出(001)等。

这个名字是恕我直言,来自butterfly graph,例如在Fast Fourier Transform中显示,这种数据流与它的交叉重新组合成一只蝴蝶。

Butterfly Graph

来源:Wikipedia

如果您查看蝴蝶网络的第一个图表,您会看到它一遍又一遍地重复。