Batcher tarafından geliştirilen Bitonik Sıralama (Bitonic Sort) ve Tek-Çift Birleştirme (Odd-Even Merge) gibi karşılaştırıcı tabanlı donanımsal paralel sıralama ağlarını modeller.
Sıralama Ağları (Sorting Networks), veri girdilerinden bağımsız olarak önceden tanımlanmış sabit karşılaştırıcı (comparator) kablolarıyla verileri sıralayan donanımsal modellerdir.
Tek-Çift Birleştirme (Odd-Even Merge), sıralı iki diziyi paralel karşılaştırmalarla birleştiren bir Batcher ağıdır. Bitonik Sıralama (Bitonic Sort) ise önce monoton artan ve azalan alt diziler oluşturup (bitonic sequence), ardından bunları kelebek tarzı kablolarla paralelce birleştiren popüler bir ağ yapısıdır.
Mükemmel Karıştırma (Perfect Shuffle), bir diziyi tam ortadan bölüp elemanları sırayla ardışık şekilde interleave ederek karıştırma adımıdır ve paralel ağ bağlantılarında yönlendirme için temel teşkil eder. Sistolik Diziler (Systolic Arrays) ise veri akışının işlemci hücreleri arasında adım adım senkronize yayıldığı 2D donanım ızgaralarıdır.
Aşağıdaki uygulamalar PDF kaynaklarındaki pseudo kod akışını modern veri yapılarıyla ifade eder. Kenar durumları görünür bırakıldığı için örnekler doğrudan test edilebilir.
1export function compareAndSwap(arr: number[], i: number, j: number, dir: boolean): void {2 // dir = true for ascending, false for descending3 if ((arr[i] > arr[j] && dir) || (arr[i] < arr[j] && !dir)) {4 const temp = arr[i];5 arr[i] = arr[j];6 arr[j] = temp;7 }8}910export function bitonicMerge(arr: number[], low: number, cnt: number, dir: boolean): void {11 if (cnt > 1) {12 const k = cnt / 2;13 for (let i = low; i < low + k; i++) {14 compareAndSwap(arr, i, i + k, dir);15 }16 bitonicMerge(arr, low, k, dir);17 bitonicMerge(arr, low + k, k, dir);18 }19}2021export function bitonicSort(arr: number[], low: number, cnt: number, dir: boolean): void {22 if (cnt > 1) {23 const k = cnt / 2;24 // Sort in ascending order25 bitonicSort(arr, low, k, true);26 // Sort in descending order27 bitonicSort(arr, low + k, k, false);28 // Merge the whole sequence29 bitonicMerge(arr, low, cnt, dir);30 }31}Bitonik Sıralama veya Batcher Tek-Çift birleştirme karşılaştırıcı adımlarını diziler üzerinde adım adım simüle edin.
Bitonik Sıralama veya Batcher Tek-Çift birleştirme karşılaştırıcı adımlarını diziler üzerinde adım adım simüle edin.
En İyi Durum: O(log^2 n) - Paralel zaman derinliği
Ortalama Durum: O(log^2 n)
En Kötü Durum: O(log^2 n)
O(n) - Kablo kanallarındaki veriler için yerinde sıralama - Bu algoritmanın karmaşıklığı belirtilmemiş.
Paralel Birleştirme ve Ağlar (Parallel Merging & Networks) Algoritması ile benzer veya alternatif olarak değerlendirilebilecek diğer başlıklar: