مرجع
آخر الزيارات

تصنيف الكومة

488 كلمة•0 مشاهدة•🗒️ منذ 9 أيام
باختصار: تصنيف الكومة في علم الحاسوب هو عبارة عن خوارزمية تصنيف تعتمد على المقارنات بين القيم المختلفة. تجد هنا «الخوارزمية».
المحتويات
  1. الخوارزمية
تصنيف الكومة

على سبيل التعريف، تصنيف الكومة في علم الحاسوب هو عبارة عن خوارزمية تصنيف تعتمد على المقارنات بين القيم المختلفة. يمكن اعتبار تصنيف الكومة بأنه نسخة معدّلة من التصنيف الانتقائي، إذ يقسم كل من التصنيفين المدخلات إلى قسمين، أحدهما مرتب والآخر غير مرتب، ويقلَّل حجم القسم غير المرتب بشكل دوري ومتتابع من خلال اختيار القيمة الأعلى من بين القيم غير المرتبة وموضعتها بطريقة صحيحة في القسم المرتب.  يختلف تصنيف الكومة عن التصنيف الانتقائي من حيث الفعالية فيما يتعلق بحسابات الوقت اللازم لتصنيف وترتيب المدخلات كاملة، تصنيف الكومة لا يضيع الوقت كالتصنيف الانتقائي، وهو جيد جدًا فيما يتعلق بالسرعة، فباستخدام تصنيف الكومة يمكننا ترتيب كافة المدخلات في زمن خطيّ، من خلال اختيار العنصر ذي القيمة الأعلى في كل مرة. وفيما يلي تفاصيل أوسع عن ذلك.

كذلك، اكتشف العالم والرياضي ج. و. ج. ويليامز تصنيف الكومة في العام 1964. وفي نفس العام كان اختراع الكومة أو الكدسة كتعبير برمجي يستعمل لتخزين البيانات المختلفة وقام العالم ويليامز بتوظيف بنية المعطيات التي اخترعها من أجل تصنيف وترتيب البيانات وأظهر مدى أهمية هذه البنية. وكذلك في العام 1964، نشر العالم ر.و.فلويد نسخة معدّلة من هذا التصنيف مثبتًا أنه يمكنه ترتيب مصفوفة كاملة من البيانات دون الحاجة إلى مساحة تخزينية إضافية، ومكملًا بذلك بحثه عن الخوارزميات المستعملة في التنصيف عند استعمال الشجر كبنية للتعبير عن المدخلات (بالإنجليزية: treesort).

كذلك، رغم أن تصنيف الكومة قد يكون بطيئًا في مسائل معينة وعلى أجهزة معينة إذا ما قورن بالتصنيف السريع، فله حسنةً خاصةً به، وهي أن الزمن الأسوأ والأطول اللازم لحساب أية مسألة لا يمكن أن يتجاوز (ن لو ن) ( وبالإنجليزية: ( O(n log n). بالإصافة إلى ذلك، يعمل تصنيف الكومة بترتيب المدخلات دون الحاجة إلى مساحة تخزينية إضافية، فهو يوجد النتيجة المرجوة وتصنيفها في نفس المساحة التخزينية المحجوزة مسبقًا لتخزين المدخلات، لكن تصنيف الكومة لا يمكن اعتباره تصنيفًا ثابتًا.

الخوارزمية

ومن ناحية أخرى، من أجل تطبيق تصنيف الكومة، علينا إدراج البيانات المدخلة في البداية في ما يسمى الكومة التصاعدية (بالإنجليزية: Max heap). ثم تبدل الخوارزمية بين القيمة الأولى والقيمة الأخيرة من المصفوفة أو القائمة مقللة بذلك حجم القيم التي ينبغي أخذها بالحسبان عند ترتيب الكومة، ومدرجة القيمة الأولى في مكانها الصحيح في الكومة التصاعدية. تتوقف الخوارزمية عندما يصبح حجم القيم التي ينبغي علينا أخذها بالحسبان قيمة واحدة فقط.

وهذه الخطوات هي:

من جانب آخر، 4.   كرر الخطوات بدءًا بالخطوة الثانية حتى يصبح عدد القيم الموجودة في القائمة مساويًا لوحدة واحدة.

كذلك، 2.   استبدل العنصر الأول في القائمة بالعنصر الأخير. قلل عدد القيم المأخوذة بعين الاعتبار بمقدار وحدة واحدة.

كذلك، 3.   استدعِ الاقتران siftDown على القائمة ليتموضع العنصر الأول في القائمة في مكانه المناسب في الكومة.

إضافةً إلى ذلك، 1.    في البداية، استدعِ الاقتران buildMaxHeap لتطبيقه على المدخلات الأساسية الموجودة في قائمة معينة. ثم طبق الاقتران heapify، والذي سيبني الكومة بمقدار زمني خطي (بالإنجليزية: (O(n).

علاوةً على ذلك، الاقتران buildMaxHeap ينفذ مرة واحدة فقط، وينفذ في زمن خطي مقداره (ن)، (بالإنجليزية: (O(n). أما الاقتران siftDown فيستهلك زمنًا مقداره (لو ن)، (بالإنجليزية: (O(lgn)، ونستقدم هذا الاقتران بعدد (ن) من المرات. بالتالي يمكن حساب أداء هذه الخوارزمية كالتالي: (ن + ن لو ن) (بالإنجليزية: (O(n + n log n). لتلخيص كل ما سبق، يمكن اعتبار أداء هذه الخوارزمية (O(n + n log n.

ما رأيك في هذه المقالة؟

📝 هل في هذه المقالة خطأ؟

إذا وجدت معلومة تحتاج تصحيحاً أو إضافة، أو أردت حذف المقالة، أرسل لنا طلباً وسنراجعه.