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

من ويكي الهندسة المعلوماتية
اذهب إلى: تصفح، ابحث

هل تحب الصوص الحد ؟ إذا كنت كذلك إليك هذه الوصفة[١] :

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

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

  • في مراجع الحاسوب تعرّف الخوارزمية [٢]
هي مجموعة مرتبة من العمليات الواضحة و الفعّالة و التي عند تنفيذها ستعطينا النتيجة الصحيحة و تتوقف في زمن محدد.

أهمية الخوارزميات

قد يتراود هذا السؤال في الذهن، هل للخوارزميات تلك الأهمية الكبيرة؟

لتعرف الجواب اقرأ القليل عن استخداماتها العديدة :

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

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


مواصفات الخوارزمية الجيدة

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

لنأخذ مثالاً بسيطاً :

هناك عدد غير منته من الطرق للوصل بين نقطتين على مستوٍ ، ولكن أقصر هذه الطرق هو الطريق المستقيم بينهما.

في المثال السابق لدينا عدداً كبيراً من الطرق (الخوارزميات)، ولكن هناك الطريقة الأفضل (الخوارزمية الجيدة) وهي الوصل المستقيم بين النقطتين.

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


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

إذاً للخوارزمية الجيدة خواص :

  1. الترتيب الجيد:الخطوات في ترتيب واضح.
  2. الوضوح:العمليات موصوفة بشكل واضح و بأبسط شكل ممكن.
  3. الفعالية.

تطوير خوارزمية

  1. التعرف على المشكلة بشكل واضح .
  2. تحديد الدخل(المعلومات التي تحتاجها لحل المشكلة) و الخرج (النتيجة التي تريد أن تحصل عليها من الخوارزمية).
  3. تحدد الخطوات التي ستعالج الدخل للحصول على الخرج .
  4. اختبار الخوارزمية.

لغة التعبير عن الخوارزميات Program Design Language ,Pseudocode

  • تعليماتها من لغة البشر المحكية و هي تصف خطوات الخوارزمية .
  • تركّز على منطق الخوارزمية .
  • تعبر عن أفعال .
  • مرقمة الخطوات و تسخدم فيها الترقيمات الفرعبة لما داخل البنى .

مثال

باستخدام pseudocode اكتب خوارزمية برنامج لإدخال عددين (بسط و مقام ) و التأكد من المقام لا يساوي الصفر و من ثم طباعته .

الحل

  1. Declare variables: dividend, divisor, quotient
  2. Prompt user to enter dividend and divisor
  3. Get dividend and divisor
  4. IF divisor is equal to zero, THEN
    1. DO
      1. Display error message, “divisor must be non-zero”
      2. Prompt user to enter divisor
      3. Get divisor
    2. WHILE divisor is equal to zero
  5. ENDIF
  6. Display dividend and divisor
  7. Calculate quotient as dividend/divisor
  8. Display quotient