1. Batcher比較器
Batcher比較器是指如果在兩個輸入端給定輸入x,y,再在兩個輸出端輸出最大值max{x,y}和最小值min{x,y}。如圖1所示,我們規定Batcher比較器的上輸出端輸出最小值,下輸出端輸出最大值。
2. 雙調序列
所謂雙調序列(Bitonic Sequence)是指由一個非嚴格增序列X和非嚴格減序列Y(其中X的最小元素正好是Y的最大元素)構成的序列,比如序列(23,10,8,3,5,7,11,78)。23,10,8為減序列,8,3,5,7,11,78為增序列,8為中間元素。具體的數學定義是醬紫de:
定義:一個序列a1,a2,…,an是雙調序列(Bitonic Sequence),如果
(1)存在一個ak(1≤k≤n), 使得a1≥…≥ak≤…≤an成立;或者
(2)序列能夠循環移位滿足條件(1)
總的來說,雙調序列存在一個中間元素,該元素左邊為一個增序列(或減序列),右邊為一個減序列(或增序列)。如圖2所示(向下和向上的斜線分別表示減序列和增序列):
3. Batcher定理
Batcher定理是說將任意一個長為2n的雙調序列A從中間切成兩半,分成等長的兩個序列X和Y,然后X和Y相同位置的元素xi與yi比較,小的放到Min序列,大的放到Max序列。由此得到的Max序列和Min序列也是雙調序列。且Min序列的每個元素小於或等於Max序列的每個元素。如圖3所示:
4. 基於Batcher定理的雙調歸並網絡
利用Batcher定理,我們可以將任意一個長為2n的雙調序列A划分成Min序列和Max序列,再分別對Min序列和Max序列進行划分,以此類推,直到n=1。最后再將所有含兩個元素的子序列歸並成完全有序的序列。如圖4所示:
5. 雙調排序網絡
雙調歸並網絡的輸入必須是雙調序列。如果要將其變成任意輸入序列的排序網絡,那么首先需要將輸入序列轉換成一個雙調序列。主要思想是:將長度為2n的序列看成n個2個元素的有序序列,任意兩個有序序列都可以組成一個4元素雙調序列,則可以得到n/2個4元素的雙調序列;4元素的雙調序列通過一個4個輸入的雙調歸並網絡即可得到一個4元素的有序序列;兩個4元素的有序序列又可以組成一個8元素的雙調序列,再經過一個8輸入的雙調歸並網絡即可得到一個8元素的有序序列;以此類推,直到最后得到一個2n個元素的有序序列。如圖5所示:
參考文獻:
1. Batcher歸並網絡
2. 雙調排序
3. 比較器網絡的選擇與排序
4. 並行計算——結構·算法·編程(第3版)陳國良編著