الخوارزميات والتعقيد: أسئلة تدريبية مع الشرح

أسئلة تدريبية مجانية متعددة الخيارات في الخوارزميات والتعقيد مع تلميحات وشروح، بثلاثة مستويات: المصطلحات والحقائق الأساسية, تطبيق المفاهيم, الحالات والتحليل.

مسألة تدريبية مجانيةسهلة

أي فئة تعقيد تنمو بأسرع ما يمكن عندما تكون n كبيرة؟

ما الذي تتدرّب عليه

  1. سهلةالمصطلحات والحقائق الأساسية
  2. متوسطةتطبيق المفاهيم
  3. صعبةالحالات والتحليل

تعلّم الخوارزميات والتعقيد من البداية

1ما الذي يقيسه التعقيد

الخوارزمية قائمة منتهية من الخطوات الدقيقة تحل مسألة ما، مثل فرز قائمة أو إيجاد اسم في دليل الهاتف.

يمكن لخوارزميتين حل المسألة نفسها لكنهما تستغرقان زمنين مختلفين جدًا. ويصف التعقيد كيف ينمو العمل عندما يكبر المدخل.

يسمى حجم المدخل n: عدد العناصر المراد فرزها، أو طول قائمة، أو عدد العقد في بيان.

تخيّل البحث عن اسم في دليل هاتف من 1000 صفحة. قراءة كل صفحة تحتاج إلى 1000 خطوة على الأكثر. وفتحه في المنتصف وتنصيف المجال كل مرة يحتاج إلى نحو 10 خطوات.

تعقيد الزمن يعدّ الخطوات. وتعقيد المساحة يعدّ الذاكرة الإضافية. وكلاهما يُكتب دالةً في n.

عادةً تنظر إلى أسوأ حالة: أكبر عمل على كل المدخلات ذات الحجم n. وأحيانًا يُطلب الحالة المتوسطة أو أفضل حالة.

تحقّق ذاتي خوارزمية ينمو عملها مثل n² تستغرق ثانية واحدة عندما n = 1000. فكم تقريبًا تستغرق عندما n = 2000؟
  1. 4 ثوانٍ
  2. 8 ثوانٍ
  3. ثانية واحدة
  4. ثانيتان

الإجابة: 4 ثوانٍ. مضاعفة n تضرب n² في 2² = 4، فينتقل الزمن من نحو 1 إلى نحو 4 ثوانٍ. وثانيتان هي الجواب للنمو الخطي، و8 لـ n³.

2O الكبيرة وفئات النمو

يحتفظ رمز O الكبيرة بما يهم للقيم الكبيرة لـ n فقط. تُسقط العوامل الثابتة وتُبقي الحد الأسرع نموًا فقط.

3n² + 5n + 2 ⇒ O(n²)

عندما n = 1000 يكون الحد n² يساوي 3 000 000 بينما 5n يساوي 5000 فقط. فالحدود الأصغر بالكاد تغيّر المجموع.

تتكرر هذه الفئات دائمًا، من الأبطأ نموًا إلى الأسرع:

  • O(1)، ثابت: قراءة عنصر مصفوفة بفهرسه.
  • O(log n)، لوغاريتمي: البحث الثنائي الذي ينصّف المسألة في كل خطوة.
  • O(n)، خطي: مرور واحد على كل العناصر، مثل إيجاد أكبر قيمة.
  • O(n log n): خوارزميات الفرز الجيدة مثل الفرز بالدمج.
  • O(n²)، تربيعي: حلقتان متداخلتان على العناصر، مثل الفرز الفقاعي.
  • O(2ⁿ)، أسّي: تجربة كل المجموعات الجزئية. يصبح غير قابل للاستخدام بسرعة.
ntlog nnn log nn²2ⁿ

O الكبيرة حدّ أعلى: ينمو العمل بهذه السرعة على الأكثر. وΩ (أوميغا الكبيرة) حدّ أدنى، وΘ (ثيتا) حدّ محكم، أعلى وأدنى معًا.

أساس اللوغاريتم لا يهم في O الكبيرة، لأن اللوغاريتمات بأسس مختلفة تختلف بعامل ثابت فقط.

تحقّق ذاتي ما O الكبيرة للمقدار 4n + 2n² + 100؟
  1. O(100)
  2. O(2n²)
  3. O(n)
  4. O(n²)

الإجابة: O(n²). عند القيم الكبيرة لـ n يهيمن الحد n²، ويُسقط العامل الثابت 2. أما O(n) فتُبقي الحد الخطأ، وO(2n²) تنسى إسقاط الثابت.

3البحث والفرز والتعاود

تظهر بضع خوارزميات في كل مقرر تقريبًا. احفظ تعقيداتها كحقائق.

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

الدالة التعاودية تستدعي نفسها على مدخل أصغر حتى تبلغ الحالة الأساسية التي تجيب عنها مباشرةً. ويُكتب زمن تشغيلها على شكل علاقة تعاودية:

  • T(n) = T(n/2) + O(1) تعطي O(log n)، مثل البحث الثنائي.
  • T(n) = 2T(n/2) + O(n) تعطي O(n log n)، مثل الفرز بالدمج.
  • T(n) = T(n − 1) + O(n) تعطي O(n²).
  • T(n) = 2T(n − 1) + O(1) تعطي O(2ⁿ).

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

تحقّق ذاتي ما تعقيد الزمن في أسوأ حالة للفرز السريع؟
  1. O(log n)
  2. O(n log n)
  3. O(n)
  4. O(n²)

الإجابة: O(n²). مع محاور سيئة يترك كل تقسيم n − 1 عنصرًا في جهة واحدة، فيعطي O(n²). أما O(n log n) فهي حالته المتوسطة، وهي أسوأ حالة للفرز بالدمج.

4الطريقة خطوة بخطوة

لإيجاد تعقيد الزمن لقطعة من الشيفرة:

  1. حدّد ما هو n: حجم المدخل.
  2. عُدّ كم مرة تُنفَّذ كل حلقة. الحلقة التي تضيف 1 في كل مرة تُنفَّذ نحو n مرة. والحلقة التي تضاعف أو تنصّف تُنفَّذ نحو log₂ n مرة.
  3. الحلقات المتداخلة تُضرب. والحلقات المتتالية تُجمع.
  4. للدالة التعاودية، اكتب العلاقة التعاودية: كم استدعاءً، وعلى أي حجم، مضافًا إليه العمل في كل استدعاء.
  5. احتفظ بالحد الأسرع نموًا وأسقط الثوابت.
  6. تحقّق بعدد صغير، مثل n = 8 أو n = 1024.

في سؤال نظري، سمِّ أولًا الخوارزمية أو الفكرة التي يصفها، ثم استحضر تعقيدها وشروطها (مدخل مرتّب، أوزان غير سالبة، مسائل فرعية متداخلة).

5مثال محلول

تابع كل خطوة. حاول أن تتوقّع الخطوة التالية قبل أن تفتحها.

مثال محلول

ما تعقيد الزمن لهذه الشيفرة؟ for i = 1 to n: (j = 1; while j < n: j = j × 2)

1

سمِّ حجم المدخل

n هو العدد الذي تعمل الحلقات حتى بلوغه.

2

عُدّ الحلقة الخارجية

يتغير i من 1 إلى n بخطوة 1، فتُنفَّذ الحلقة الخارجية n مرة.

3

عُدّ الحلقة الداخلية

يأخذ j القيم 1 و2 و4 و8 و… ويتوقف عند بلوغ n. بعد k جولة j = 2k، فتتوقف الحلقة بعد نحو log₂ n جولة.

4

اجمع الحلقتين

الحلقة الداخلية داخل الخارجية، لذا تُضرب الأعداد.

n · log₂ n ⇒ O(n log n)
5

تحقّق بعدد

عندما n = 1024 تُنفَّذ الحلقة الداخلية log₂ 1024 = 10 مرات، فيُنفَّذ الجسم 1024 · 10 = 10 240 مرة. وهذا أقل بكثير من n² = 1 048 576.

الإجابة

O(n log n)

6أخطاء شائعة

  • ضرب حلقتين متتاليتين. n + n = 2n لا يزال O(n).
  • الإبقاء على الثوابت، كما في O(2n) أو O(n/2). كلتاهما O(n).
  • عدّ حلقة المضاعفة n جولة. إنها تُنفَّذ نحو log₂ n مرة.
  • استخدام البحث الثنائي على بيانات غير مرتّبة، أو على قائمة مترابطة لا يمكن بلوغ منتصفها في خطوة واحدة.
  • ذكر الحالة المتوسطة للفرز السريع عندما تُطلب أسوأ حالة.
  • الظن أن O الكبيرة تعني «بالضبط». O(n²) حدّ أعلى؛ أما Θ(n²) فهي النمو الدقيق.
تحقّق ذاتي دالة تنفّذ حلقة من n تكرار ثم، بشكل منفصل، حلقة أخرى من n تكرار. ما تعقيد زمنها؟
  1. O(2n)
  2. O(log n)
  3. O(n)
  4. O(n²)

الإجابة: O(n). الحلقات المتتالية تُجمع: n + n = 2n، ويُسقط الثابت، فتكون O(n). وO(n²) تصح فقط إذا كانت إحدى الحلقتين داخل الأخرى.

7كيف تبدو أسئلة الامتحان

  • سهل: المصطلحات والحقائق. تعقيد البحث الثنائي أو الفرز بالدمج أو الوصول إلى عنصر في مصفوفة، ومعنى O وΩ وΘ، وما هو التعاود.
  • متوسط: تطبيق المفاهيم. تعقيد مقطع شيفرة، وعلاقة تعاودية للحل، وكيف يتغير الزمن عند مضاعفة n، وأي خوارزمية تناسب مهمة.
  • صعب: الحالات والتحليل. مبرهنة الماجستر، وأسوأ حالات الفرز السريع، والجشع مقابل البرمجة الديناميكية، والفئات P وNP وNP-complete.

تضم P المسائل التي يمكن حلها في زمن حدودي. وتضم NP المسائل التي يمكن التحقق من حلولها في زمن حدودي. كل مسألة في P هي في NP؛ أما هل P = NP فلا يزال مجهولًا.

تعلّمه خطوة بخطوة في التطبيقتعلّمه خطوة بخطوة في التطبيق

أمثلة على الأسئلة

مثال 1سهلة

أي ترميز يصف حدًا أعلى للنمو؟

  1. Aأوميغا الكبير (Big Omega)
  2. Bأوميغا الصغير (Little omega)
  3. CO الكبير (Big O)
  4. Dثيتا الكبير (Big Theta)
أظهر التلميحات
  1. «على الأكثر».
  2. شُطبت الآن إجابتان خاطئتان. إحدى الإجابتين المتبقيتين صحيحة.
أظهر الإجابة والشرح

لماذا هذه هي الإجابة

يعطي O حدًا أعلى، ويعطي Ω حدًا أدنى، ويعطي Θ حدًا محكمًا.

الإجابة

C · O الكبير (Big O)
مثال 2متوسطة

في مصفوفة مرتبة تبحث عن عنصرين مجموعهما يساوي هدفًا بتحريك مؤشر من كل طرف نحو الداخل. ما التعقيد الزمني؟

  1. AO(n)
  2. BO(n log n)
  3. CO(n²)
  4. DO(log n)
أظهر التلميحات
  1. كل خطوة تحرك مؤشرًا واحدًا موضعًا واحدًا.
  2. شُطبت الآن إجابتان خاطئتان. إحدى الإجابتين المتبقيتين صحيحة.
أظهر الإجابة والشرح

لماذا هذه هي الإجابة

إذا كان المجموع صغيرًا جدًا يتحرك المؤشر الأيسر يمينًا، وإذا كان كبيرًا جدًا يتحرك المؤشر الأيمن يسارًا، فيكون هناك n خطوة على الأكثر.

الإجابة

A · O(n)
مثال 3صعبة

تضرب خوارزمية ستراسن المصفوفات باستخدام 7 بدل 8 عمليات ضرب عودية لكتل نصف الحجم. ما زمن تنفيذها؟

  1. AΘ(n² log n)
  2. BΘ(n2)
  3. CΘ(n³)
  4. DΘ(nlog₂ 7)، أي نحو n2,81
أظهر التلميحات
  1. علاقة التكرار T(n) = 7T(n/2) + O(n²).
  2. شُطبت الآن إجابتان خاطئتان. إحدى الإجابتين المتبقيتين صحيحة.
أظهر الإجابة والشرح

لماذا هذه هي الإجابة

مع a = 7 وb = 2 تهيمن nlog₂ 7 على عمل الجمع O(n²)، فيكون الزمن نحو n2,81.

الإجابة

D · Θ(nlog₂ 7)، أي نحو n2,81

أسئلة وأجوبة

ما هو الخوارزميات والتعقيد؟

يمكن لخوارزميتين حل المسألة نفسها لكنهما تستغرقان زمنين مختلفين جدًا. ويصف التعقيد كيف ينمو العمل عندما يكبر المدخل.

يسمى حجم المدخل n: عدد العناصر المراد فرزها، أو طول قائمة، أو عدد العقد في بيان.

كيف أتعلم الخوارزميات والتعقيد خطوة بخطوة؟
  1. ما الذي يقيسه التعقيد
  2. O الكبيرة وفئات النمو
  3. البحث والفرز والتعاود
  4. الطريقة خطوة بخطوة
  5. مثال محلول
  6. أخطاء شائعة
  7. كيف تبدو أسئلة الامتحان
ماذا تغطي تمارين الخوارزميات والتعقيد؟
  • سهلة: المصطلحات والحقائق الأساسية
  • متوسطة: تطبيق المفاهيم
  • صعبة: الحالات والتحليل

لكل سؤال أربعة خيارات، واحد منها فقط صحيح. هل علِقت؟ افتح تلميحًا صغيرًا أولًا، والشرح الكامل فقط عندما تحتاج إليه.

كيف يعمل التدريب

  • لكل سؤال أربعة خيارات، واحد منها فقط صحيح.
  • هل علِقت؟ افتح تلميحًا صغيرًا أولًا، والشرح الكامل فقط عندما تحتاج إليه.
  • يُحفظ تقدّمك وأخطاؤك ومسائلك المحفوظة، لتتمكّن من مراجعتها قبل الامتحان.

مواضيع قبل هذا الموضوع وبعده

ثم تابع مع

مقرّرات تتضمّن هذا الموضوع

مواضيع أخرى في علوم الحاسوب

ورقة عمل قابلة للطباعة