Zum Inhalt springen

Arabic:علوم الحاسوب والخوارزميات

Aus MOOCsWiki Staging
aiMOOC-Siegel

علوم الحاسوب والخوارزميات



مقدمة

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

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

يقدم الفيديو مدخلًا عربيًا موجزًا إلى هياكل البيانات والخوارزميات، ويمكنك استخدامه كبداية قبل الانتقال إلى التحليل والتطبيقات البرمجية في هذا المقرر.


أهداف التعلم

بعد إكمال المقرر ستكون قادرًا على:

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


التفكير الحاسوبي وتصميم الخوارزميات

الخوارزمية سلسلة محددة ومنتهية من الخطوات تحول مدخلات إلى مخرجات مطلوبة. ولكي تكون مفيدة يجب أن تكون خطواتها واضحة، قابلة للتنفيذ، وأن تنتهي بعد عدد محدود من الخطوات. عند حل مشكلة حاسوبية، لا تبدأ عادة بالكود؛ ابدأ بالسؤال: ما الذي أعرفه؟ ما الذي أريد إنتاجه؟ وما القيود التي يجب احترامها؟

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

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

مثال: تريد إيجاد أكبر قيمة في قائمة. يمكنك تتبع أفضل قيمة رأيتها حتى الآن وتحديثها عند العثور على قيمة أكبر:

إجراء إيجاد_الأكبر(قيم):
    اجعل الأكبر = أول عنصر
    لكل قيمة في بقية العناصر:
        إذا كانت القيمة أكبر من الأكبر:
            اجعل الأكبر = القيمة
    أعد الأكبر

ويمكن تمثيل الفكرة بمخطط تدفق نصي بسيط:

ابدأ
  ↓
اقرأ القائمة
  ↓
اجعل أول عنصر هو الأكبر
  ↓
هل بقي عنصر؟ ── لا ──→ أخرج الأكبر ──→ انتهِ
  │
 نعم
  ↓
قارن العنصر بالأكبر وحدّثه عند الحاجة
  └──────────────────────↺

لاحظ أن الخوارزمية تزور كل عنصر مرة تقريبًا، لذلك يزداد العمل بنسبة تتناسب مع عدد العناصر. سنعود إلى هذا عند دراسة التعقيد.


هياكل البيانات: كيف ننظم المعلومات؟

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

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

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

رسم يوضح عقد قائمة مترابطة أحادية واتصال كل عقدة بالعقدة التالية
قائمة مترابطة أحادية: كل عقدة تشير إلى العقدة التالية.

المكدس يتبع مبدأ آخر داخل أول خارج. فكر في رزمة أطباق: تضيف من الأعلى وتسحب من الأعلى. يستخدم المكدس في التراجع في المحررات، وتتبع استدعاءات الدوال، وتحليل التعبيرات.

رسم يوضح فكرة المكدس وإضافة العناصر وإزالتها من الطرف نفسه
المكدس يضيف العناصر ويزيلها من الطرف نفسه.

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

رسم مبسط لطابور بيانات يوضح اتجاه دخول العناصر وخروجها
الطابور يعالج العناصر وفق ترتيب دخولها.

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

رسم لشجرة ثنائية تحتوي على عقد وروابط هرمية
مثال على بنية شجرة ثنائية.
رسم متحرك يبين إدخال قيم في شجرة بحث ثنائية
حركة توضح كيف تتغير شجرة البحث الثنائية عند إدخال عناصر جديدة.

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

رسم بياني يحوي عدة رؤوس وروابط بينها
مثال بصري على رسم بياني يربط مجموعة من الرؤوس.

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

من الأخطاء الشائعة الاعتقاد أن هيكلًا واحدًا هو الأفضل دائمًا. الواقع أن الاختيار يعتمد على العمليات الأهم: هل تحتاج وصولًا متكررًا بالفهرس؟ إدخالًا وحذفًا؟ معالجة بالترتيب؟ بحثًا عن علاقات؟ لا توجد إجابة واحدة دون معرفة نمط الاستخدام.


البحث والترتيب وبناء الخوارزمية

البحث الخطي يفحص العناصر واحدًا تلو الآخر حتى يجد الهدف أو يصل إلى النهاية. لا يحتاج إلى ترتيب البيانات، لكنه قد يفحص جميع العناصر.

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

رسم متحرك يوضح تضييق مجال البحث إلى النصف في كل خطوة
حركة توضح مبدأ البحث الثنائي في قائمة مرتبة.

تنفيذ مبسط بلغة بايثون:

def بحث_ثنائي(قيم, هدف):
    منخفض = 0
    مرتفع = len(قيم) - 1
    while منخفض <= مرتفع:
        وسط = (منخفض + مرتفع) // 2
        if قيم[وسط] == هدف:
            return وسط
        elif قيم[وسط] < هدف:
            منخفض = وسط + 1
        else:
            مرتفع = وسط - 1
    return -1

اختبر الكود ذهنيًا على القائمة [2, 5, 8, 12, 16, 23, 38] عند البحث عن 16. ثم اسأل نفسك: ماذا يحدث لو لم تكن القائمة مرتبة؟ هنا يظهر شرط مسبق مهم: البحث الثنائي يفترض ترتيب البيانات وفق المعيار نفسه المستخدم في المقارنة.

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

رسم متحرك لأعمدة تتبادل مواقعها أثناء تنفيذ الترتيب بالفقاعات
حركة توضح الترتيب بالفقاعات خطوة خطوة.

الترتيب بالدمج يستخدم استراتيجية فرق تسد: يقسم القائمة إلى أجزاء صغيرة، يرتبها، ثم يدمج الأجزاء المرتبة. يحتاج عادة إلى مساحة إضافية، لكنه يحقق أداء جيدًا حتى مع المدخلات الكبيرة.

رسم متحرك يوضح تقسيم العناصر ثم دمجها في ترتيب صحيح
حركة توضح فكرة الترتيب بالدمج.

يعرض هذا الفيديو العربي عدة خوارزميات ترتيب بصريًا وعمليًا. أثناء المشاهدة، لا تكتف بتتبع التبديلات؛ حاول تحديد قاعدة كل خوارزمية وتوقع عدد المقارنات عندما يكبر حجم القائمة.

مثال مبسط للترتيب بالفقاعات:

def ترتيب_فقاعات(قيم):
    n = len(قيم)
    for نهاية in range(n - 1, 0, -1):
        تبديل = False
        for i in range(نهاية):
            if قيم[i] > قيم[i + 1]:
                قيم[i], قيم[i + 1] = قيم[i + 1], قيم[i]
                تبديل = True
        if not تبديل:
            break
    return قيم

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


التعقيد الحاسوبي: كيف نقيس الكفاءة؟

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

ترميز O الكبير يصف حدًا علويًا لمعدل النمو مع تجاهل الثوابت والتفاصيل الصغيرة عندما يصبح n كبيرًا. من المعدلات الشائعة:

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

مثال: إذا كان لدينا هذا الكود:

def اطبع_كل_زوج(قيم):
    for أ in قيم:
        for ب in قيم:
            print(أ, ب)

إذا كان عدد العناصر n، فالحلقة الداخلية تنفذ n مرة لكل واحد من n عناصر، أي نحو n² عملية طباعة. لذلك نصف النمو بأنه تربيعي.

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

من المفاهيم المهمة أيضًا أفضل حالة وأسوأ حالة والحالة المتوسطة. لا يكفي أن تقول إن برنامجًا كان سريعًا على مثال واحد؛ يجب أن تسأل كيف يتغير السلوك عبر أحجام وأنماط مختلفة من المدخلات.

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


الصحة المنطقية والاستدعاء الذاتي

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

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

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

مثال لحساب مضروب عدد غير سالب:

def مضروب(n):
    if n == 0:
        return 1
    return n * مضروب(n - 1)

عند حساب مضروب 4، تنشأ استدعاءات لمضروب 3 ثم 2 ثم 1 ثم 0. تحفظ بيئة التنفيذ معلومات كل استدعاء على مكدس الاستدعاءات. لذلك يرتبط فهم الاستدعاء الذاتي بفهم المكدس والتعقيد الفضائي.

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


المنطق والتجريد والرسوم البيانية

يعمل الحاسوب وفق شروط منطقية دقيقة. الجملة الشرطية قد تجمع قضايا باستخدام AND وOR وNOT. فهم المنطق يساعدك على كتابة شروط صحيحة وتجنب حالات لا تغطيها الخوارزمية.

الشرط أ الشرط ب أ و ب أ أو ب
صحيح صحيح صحيح صحيح
صحيح خطأ خطأ صحيح
خطأ صحيح خطأ صحيح
خطأ خطأ خطأ خطأ

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

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

يمكن تمثيل رسم بياني بقائمة تجاور:

شبكة = {
    "أ": ["ب", "ج"],
    "ب": ["د"],
    "ج": ["د", "هـ"],
    "د": [],
    "هـ": []
}

هنا يخبرنا كل مفتاح بالرؤوس المتصلة به. هذا التجريد يفصل بين بنية المشكلة وبين تفاصيل العرض على الشاشة.


مختبر برمجي للتجريب والتحسين

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

ابدأ بهذا الهيكل وعدله:

def بحث_خطي(قيم, هدف):
    مقارنات = 0
    for i, قيمة in enumerate(قيم):
        مقارنات += 1
        if قيمة == هدف:
            return i, مقارنات
    return -1, مقارنات

بعد ذلك صمم نسخة من البحث الثنائي تعيد أيضًا عدد المقارنات. إذا كان لديك 1024 عنصرًا مرتبًا، فكر في سبب أن عدد مرات تقسيم المجال إلى نصفين يبقى صغيرًا مقارنة بالبحث الخطي.

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

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


مهام تفاعلية


اختبار: اختبر معرفتك

ما الفكرة الأساسية في البحث الثنائي؟ (استبعاد نصف مجال البحث تقريبًا في كل خطوة) (!فحص جميع العناصر بالترتيب دون استبعاد) (!تبديل كل عنصر مع العنصر المجاور) (!تخزين جميع العناصر في مكدس)




ما الشرط الضروري لاستخدام البحث الثنائي بصورة صحيحة؟ (أن تكون البيانات مرتبة وفق معيار المقارنة) (!أن تكون البيانات مخزنة في طابور) (!أن تكون جميع القيم مختلفة) (!أن يكون عدد العناصر زوجيًا)




أي بنية تتبع مبدأ آخر داخل أول خارج؟ (المكدس) (!الطابور) (!الرسم البياني) (!جدول التجزئة)




أي بنية تتبع مبدأ أول داخل أول خارج؟ (الطابور) (!المكدس) (!الشجرة الثنائية) (!القائمة العكسية)




ماذا يصف ترميز O الكبير أساسًا؟ (معدل نمو تكلفة الخوارزمية مع زيادة حجم المدخلات) (!الزمن الدقيق بالثواني على كل جهاز) (!عدد أسطر الكود فقط) (!اسم لغة البرمجة المستخدمة)




ما التعقيد التقريبي للبحث الخطي في أسوأ حالة؟ (زمن خطي) (!زمن ثابت) (!زمن لوغاريتمي) (!زمن صفري)




ما العنصر الضروري في الدالة الاستدعائية الصحيحة؟ (حالة أساس توقف الاستدعاء) (!حلقة لا نهائية) (!متغير عام إجباري) (!طابور منفصل دائمًا)




أي وصف يناسب التجريد في حل المشكلات؟ (التركيز على التفاصيل المهمة وإهمال غير المؤثر منها) (!إضافة كل التفاصيل الواقعية إلى النموذج) (!تجنب تقسيم المشكلة إلى أجزاء) (!اختيار أطول برنامج ممكن)




لماذا تعد خوارزمية الترتيب بالدمج مناسبة للمدخلات الكبيرة غالبًا؟ (لأن معدل نمو زمنها أفضل من الترتيب التربيعي المعتاد) (!لأنها لا تستخدم أي ذاكرة إضافية مطلقًا) (!لأنها تفحص عنصرًا واحدًا فقط) (!لأنها لا تحتاج مقارنات)




ما الهيكل الشائع في تنفيذ البحث بالعرض على رسم بياني؟ (الطابور) (!المكدس فقط) (!المصفوفة ذات العنصر الواحد) (!شجرة بلا روابط)





لعبة الذاكرة

الخوارزمية خطوات محددة ومنتهية تحول المدخلات إلى مخرجات
المصفوفة بنية مناسبة للوصول إلى عنصر بواسطة فهرس
المكدس بنية تعمل بمبدأ آخر داخل أول خارج
الطابور بنية تعمل بمبدأ أول داخل أول خارج
التجريد الاحتفاظ بالتفاصيل المؤثرة وإهمال غير الضروري
التعقيد وصف لنمو الزمن أو الذاكرة مع حجم المدخلات





السحب والإفلات

طابق المفهوم مع الاستخدام أو الخاصية الصحيحة. علوم الحاسوب والخوارزميات
البحث الثنائي يقلص مجال البحث إلى نصفه تقريبًا
الترتيب بالفقاعات يقارن عناصر متجاورة ويبدلها
الترتيب بالدمج يقسم البيانات ثم يدمج الأجزاء المرتبة
البحث بالعرض يستخدم طابورًا لزيارة المستويات بالتتابع
البحث بالعمق يتقدم في مسار ثم يرجع عند الحاجة
جدول التجزئة يربط المفتاح بموضع تخزين عبر دالة تجزئة





كلمات متقاطعة

خوارزمية ما الاسم الذي يطلق على سلسلة خطوات محددة ومنتهية لحل مشكلة؟
مصفوفة ما البنية التي تسمح عادة بالوصول إلى عنصر باستخدام فهرسه؟
تعقيد ما المفهوم الذي يصف نمو تكلفة الخوارزمية مع حجم المدخلات؟
مكدس ما البنية التي تعمل بمبدأ آخر داخل أول خارج؟
طابور ما البنية التي تعمل بمبدأ أول داخل أول خارج؟
استدعاء ما الكلمة المركزية في أسلوب تجعل فيه الدالة نفسها جزءًا من الحل؟





مهام مفتوحة


سهل

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


متوسط

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


متقدم

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





مجالات تعلم مرتبطة

ترتبط هذه الموضوعات بعضها ببعض: الرياضيات المتقطعة والمنطق يقدمان لغة دقيقة للعلاقات والشروط، وهياكل البيانات تحدد كيفية تمثيل المعلومات، والخوارزميات تحدد كيفية معالجتها، وهندسة البرمجيات تضيف أساليب الاختبار والتنظيم والصيانة. ويمكن تطبيق هذه المهارات في تحليل البيانات والذكاء الاصطناعي والأمن السيبراني والمحاكاة وتطوير التطبيقات.


مسرد

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


مشروعات aiMOOC

MOOCwiki · Deutsch

Nach dem Lernen ist vor dem Lernen

Entdecke direkt den nächsten Lernkurs. Weitere Inhalte erscheinen, wenn Du weiter nach unten scrollst.

Zur MOOCwiki-Hauptseite

Mediathek

Mediathek

Inhalte werden geladen ...

Mediathek wird aus dem Wiki geladen ...