فرز Bitonic
خوارزمية فرز الدمج الثنائية هي خوارزمية متوازية للفرز. تُستخدم أيضًا كطريقة بناء لإنشاء شبكة فرز . ابتكر هذه الخوارزمية كين باتشر . [ 3 ] تتكون شبكات الفرز الناتجة منالمقارنات ولها تأخير قدره، أينيمثل عدد العناصر المراد فرزها. [ 1 ] [ 2 ] وهذا ما يجعله خيارًا شائعًا لفرز أعداد كبيرة من العناصر على بنية تحتوي بدورها على عدد كبير من وحدات التنفيذ المتوازية التي تعمل بشكل متزامن ، مثل وحدة معالجة الرسومات النموذجية .
المتتالية المرتبة هي متتالية رتيبة ، أي متتالية إما غير متناقصة أو غير متزايدة. وتكون المتتالية ثنائية الرتابة عندما تتكون من متتالية غير متناقصة متبوعة بمتتالية غير متزايدة، أي عندما يوجد دليلوالتي[ 3 ]
لا يستطيع مُرتب البتون فرز سوى المدخلات التي تكون بتونية. ويمكن استخدام مُرتبات البتون لبناء شبكة فرز بتونية قادرة على فرز أي تسلسل، وذلك باستخدام مُرتب البتون مع مخطط الفرز بالدمج، حيث تُدمج الحلول الجزئية باستخدام مُرتبات أكبر.
تعرض الأقسام التالية الخوارزمية في صيغتها الأصلية، والتي تتطلب سلسلة إدخال طولهاهو قوة مثالية للعدد اثنين. لذلك سنسمحليكن العدد الصحيح الذيوهذا يعني أنه يمكن تعداد أجهزة الفرز ثنائية اللون بترتيب تصاعدي للحجم من خلال النظر في القيم المتتالية..
فرز ثنائي الاتجاه

جهاز فرز ثنائي الاتجاه لـهو ببساطة مُقارِن. [ 3 ] ويتضح ذلك من خلال تخطيط الصندوق المعطى، حيث يمثل X وY المدخلات، بينما يمثل H وL المخرجات العليا والدنيا، على التوالي.
مع جهاز الفرز لـيمكننا إنشاء مُصنِّف من رتبة أعلى بشكل متكرر. على سبيل المثال، انظر إلى ما يلي[ 3 ]

يتكون فارز البتون من طبقتين: طبقة إعادة التركيب، التي تعيد تركيب مدخلات البتون في سلسلتين جديدتين من البتون، كل منهما نصف طول السلسلة الأصلية، وطبقة فرز البتون التي تتكون من فارزين للبتون من الرتبة، حيث يقوم كل منها بفرز إحدى المتتاليتين الثنائيتين اللتين تنتجهما الطبقة السابقة. ويمكن توسيع هذا الهيكل بشكل متكرر لقيم أعلى منمن خلال ضمان أن يقبل كل مُقارِن دائمًا مُدخلًا واحدًا من كل نصف من نصفي التسلسل الثنائي الذي يُفترض أن يُساعد في فرزه. يوضح الرسم التوضيحي التالي هذه الاتصالات بشكل تخطيطي. [ 3 ]

كما تلاحظ، تتم مقارنة عناصر النصف الأول من سلسلة الإدخال مع العناصر المناظرة لها في النصف الأخير منها. تُنتج مقارنة كل عنصر من السلسلة الفرعية ( الخضراء ) مع العنصر المقابل له في السلسلة الفرعية الأخرى ( البرتقالية ) عند نفس الفهرس سلسلتين فرعيتين ثنائيتي النغمة. يمكن بعد ذلك إدخال هاتين السلسلتين ( الزرقاء والحمراء على التوالي) إلى مُرتب ثنائي النغمة ذي الرتبة الأدنى. يُمكن القيام بذلك لأن جميع عناصر السلسلة الحمراء مضمونة بأنها أعلى من جميع عناصر السلسلة الزرقاء. [ 3 ]
صحة جهاز الفرز ثنائي النواة
قدّم كين باتشر في بحثه [ 3 ] بعض الملخصات الرياضية للبرهان. وبدون فقدان للعمومية، يُفترض أن يكون تسلسل الإدخال الثنائي هومعوبدون فقدان للعمومية، يمكن عكس التسلسل، وبالتالي يمكننا أن نفترض.
الحالة 1 : إذاعندئذٍ يكون كل عنصر من عناصر المتتاليتين الجزئيتين أصغر. في هذه الحالةومعوبالتاليوهي ثنائية التوتر بشكل بديهي.
الحالة الثانية : وإلا فإنه يوجدبحيث يكون العنصرحجم التسلسل الفرعي الأول أكبر منمن التسلسل الفرعي الثاني، بينما يكون العكس صحيحًا بالنسبة لـوهذا يعني أنوصحيح بالنسبة لنوع محددلذلك، نعلم الآن أن:
1. لـالتسلسلات هيو
2. لـتُعرَّف المتتاليات بأنها عكس العدد 1، معو
ثم يدعي في الورقة الأصلية أن المتباينات التالية تنتج عن تلك التعريفات: [ 3 ]
متابعةً للنقطة 1 :
- لالذي - التي
- لالذي - التي
- لالذي - التي
متابعةً للنقطة 2 :
- لالذي - التي
- لالذي - التي
من كلا الطرفين:
يستنتج من الورقة البحثية أن التسلسلاتوهي في الواقع ثنائية التوتر. [ 3 ]
شبكات الفرز ثنائية الاتجاه (فرز الدمج ثنائي الاتجاه)
تُنشأ شبكة فرز ثنائية باستخدام عدة خوارزميات فرز ثنائية. تُستخدم هذه الخوارزميات بشكل متكرر لإنشاء متتابعتين رتيبتين، إحداهما متناقصة والأخرى متزايدة، ثم تُوضعان في المرحلة التالية. ينتج عن ذلك سلسلة ثنائية للمرحلة التالية، والتي بدورها تستخدم هذه السلسلة الثنائية كسلسلة رتيبة للمرحلة التالية. لنأخذ المثال التالي كمثال. شبكة فرز ثنائية النغمة. [ 3 ]

شبكة الفرز ثنائية الاتجاه لـيمكن إنشاؤها باستخدامجهاز فرز ثنائي القاعدة واثنينالفرزان. يُنشئ الفرزان تسلسلًا مُرتبًا تنازليًا أو تصاعديًا لإنشاء مُدخل ثنائي لفرز البيانات الثنائي. تُستخدم شبكات الفرز الثنائي ذات الرتبة المنخفضة في الغالب للفرزين الأوليين؛ لذلك، يُمكن وصف تعريف تكراري لشبكة الفرز الثنائي انطلاقًا من الفرزين الثنائيين. في المثال أعلاه، شبكتا الفرز الثنائي هما الشبكات؛ لذا فهي مجرد أداة للمقارنة. [ 3 ] يوضح الشكل التالي المخطط العام.

يتطلب هذا المخطط العام أن يكون لدى جهاز الفرز مدخلات تسلسلية تمثل قوة للعدد اثنين. ومع ذلك، توجد إمكانيات للتخفيف من ذلك، على سبيل المثال باستخدام قيم مرجعية.
الشفرة الزائفة
يصف الكود الزائف التالي عملية الفرز. في هذا الكود، aيُمثل المصفوفة المراد فرزها، lowو فهرس العنصر الأول في المصفوفة الفرعية المراد فرزها، kو countعدد العناصر في المصفوفة الفرعية التي يتم فرزها في هذه الدالة. directionقيمة منطقية تُحدد ما إذا كان يتم فرز المصفوفة الفرعية بترتيب تصاعدي أو تنازلي.
bitonicSort(a, 0, n, 1)يتم استخدام استدعاء الدالة للفرز a(تصاعديًا)، حيث nيمثل عدد العناصر في a.
الدالة bitonicMerge( a , low , count , direction ) هي: إذا كان count > 1 ، فإن k ← count / 2 // قارن العناصر وبدّلها بين النصفين for i ← low to low + k do // تحديد ما إذا كان عنصران من a غير مرتبين بالنسبة لاتجاه الفرز. if ( direction == 1 AND a [i] > a [i + k]) OR ( direction == 0 AND a [i] < a [i + k]) THEN swap a [i] with a [i + k] // دمج النصفين بشكل متكرر bitonicMerge ( أ , منخفض , ك , اتجاه ) bitonicMerge ( أ , منخفض + ك , ك , اتجاه ) // هذا يعمل فقط عندما يكون حجم الإدخال قوة للعدد 2. الدالة bitonicSort( a , low , count , direction ) هي: إذا كان count > 1 ، فإن k ← count / 2 // فرز النصف الأول/الثاني بترتيب تصاعدي/تنازلي bitonicSort ( a , low , k, 1) bitonicSort ( a , low + k, k, 0) // دمج التسلسل بأكمله بالترتيب المطلوب bitonicMerge ( a , low , count , direction )
تعقيد
في هذا القسم، نفترض أن جهاز الفرز الخاص بنا لديهعناصر الإدخال كما كانت سابقاً.
تضيف كل عملية تكرار في شبكة فرز ثنائية النغمة فرزًا من رتبة، والتي تتكون من ثنائي القاعدةالفرز والتكرار التالي. بما أن كلا الفرزين الفرعيين يمكن تنفيذهما بالتوازي، تتم إضافة مستوى واحد فقط لكل مستوى في كلا الفرزين الفرعيين. لذلك، يحتوي كل فرز ثنائي على طبقة إعادة تركيب واحدة وفرز ثنائي منخفض الرتبة لتكراره. ينتج عن ذلكعدد المستويات لكل فارز ثنائي. لذلك، يمكننا وصف مستويات هذا البناء على النحو التالي:.
يمكن اختزال هذا المجموع باستخدام صيغة مجموع جاوس.
وبالتالي، فإن عدد المستويات التي يمكن فيها إجراء كل مقارنة بالتوازي يُعطى بواسطة[ 3 ] مما يعطينابافتراضيمكن إجراء المقارنات بالتوازي.
على الرغم من أن العدد المطلق للمقارنات عادةً ما يكون أعلى من فرز الزوجي والفردي في باتشر ، إلا أن العديد من العمليات المتتالية في الفرز الثنائي تحافظ على موضع المرجع ، مما يجعل التطبيقات أكثر ملاءمة لذاكرة التخزين المؤقت وأكثر كفاءة في الممارسة العملية. [ 3 ]
انظر أيضاً
مراجع
- ميغا ، جاين؛ سانجاي، كومار؛ في كي، باتل (مارس 2015). " خوارزمية الفرز الثنائي: مراجعة" . المجلة الدولية لتطبيقات الحاسوب . 113 ( 13): 40-43 . Bibcode : 2015IJCA..113m..40J . doi : 10.5120/19890-1930 . تاريخ الاسترجاع: 14 مايو 2025 .
- 1 2 3 4 5 رانكوفيتش، فوكاسين؛ كوس، انطون؛ ميلوتينوفيتش ، فيليكو (يوليو 2013). “تنفيذ فرز دمج Bitonic على نظام الحوسبة الفائقة Maxeler Dataflow” (PDF) . معاملات IPSI BGD على أبحاث الإنترنت . 9 (2): 5- 10 . تم الاسترجاع في 14 مايو 2025 .
- 1 2 3 4 5 6 7 8 9 10 11 12 13 باتشر، ك. إي. (30 أبريل 1968). "شبكات الفرز وتطبيقاتها". وقائع المؤتمر المشترك للحاسوب الربيعي المنعقد في الفترة من 30 أبريل إلى 2 مايو 1968 - AFIPS '68 (ربيع) . الصفحات 307-314 . doi : 10.1145/1468075.1468121 .
روابط خارجية
- خوارزميات الفرز
