شرح تحليل وتصميم الخوارزميات

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

وسميت جداول الضرب والقسمة قديمًا بالخوارزميات ومع تقدم الحضارات واختراع الحاسوب ارتبطت الخوارزميات بها ارتباطًا تامًا.

تحليل وتصميم الخوارزميات

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

شاهد أيضًا: كيف تصبح عالمًا في الرياضيات

مبتكر الخوارزمية

  • أول من ابتكر مفهوم الخوارزميات هو العالم الرياضي أبو جعفر محمد بن موسى الخوارزمي، وقد عاش الخوارزمي في مدينة بغداد بين عامي ٧٨٠-٨٤٧م في عهد الخليفة المأمون، وقد برز الخوارزمي في علوم الرياضيات والفلك.
  • ومن أهم إنجازاته الرياضية أنه قام بوضع مبادئ علم الجبر، وقد ألف كتاب (الجبر والمقابلة)، ومنه اشتقت كلمة الجبر ليتم بعد ذلك ترجمتها إلى جميع لغات العالم، كما قدم الخوارزمي كتابًا آخر في الحساب، تم نقله إلى اللغة اللاتينية بعنوان (Algoritmi de numero lndriun).

شروط الخوارزمية

لابد أن تتوافر في الخوارزمية عدد من الشروط، وهي كما يلي:

  • المدخلات (Input)، لابد أن تكون المدخلات صفرًا، أو أكثر.
  • المخرجات (Output)، لابد أن تكون المخرجات ذات قيمةً.
  • الوضوح (Definiteness)، لابد أن تكون الخطوات واضحة وغير مبهمة، حتى يمكن فهمها بصورة سهلة وبسيطة لدى الناس، فمثلًا هذه العبارة (Add 7 or 8 to x) غير واضحة، وبالتالي لا تستوفي شروط الخوارزمية، ولا يسمح بوجودها في البرنامج.
  • المحدودية (Finiteness)، حيث يتم حل كل خطوة من خطوات الخوارزمية في وقت وزمن محدد، فمثلًا العبارة التالية (قسمة الرقم 11 على الرقم 3 بدقة عالية)، تعد غير محدودة، وبالتالي فإنها لا تستوفي شروط الخوارزمية ولا يسمح وجودها في البرنامج.
  • المحلولية (Effectiveness)، لابد أن تكون كل خطوة ممكنة الحل، فمثلًا تعد العبارة التالية: (3÷0) عبارة مستحيلة الحل، لأنها قيمة غير معروفة.

شرح تحليل وتصميم الخوارزميات

تحليل الخوارزمية (Algorithm Analysis)، هو تحديد مدى كفاءة الخوارزمية وجودتها، ثم القيام بتطويرها بشكل أفضل، ويقاس مدى جودة وكفاءة، وإنجاز الخوارزمية بمقياسين، هم كالآتي:

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

مقياس تعقيدات الوقت (Time complexity) وهو عبارة عن كمية الزمن الذي يلزم من أجل تكوين وتشكيل برنامج حتى وقت انتهائه، ويتكون من:

  • (T (P) = Const +tp) حيث إن الرمز (tp) يمثل وقت تشغيل البرنامج.
  • الرمز (Const) ثابت بوقت التأليف.

شاهد أيضًا: قوانين الإحصاء والاحتمالات في الرياضيات

طرق كتابة الخوارزمية

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

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

مثال

خوارزمية الاستيقاظ حيث توضح الخطوات من لحظة الاستيقاظ من النوم إلى وقت الذهاب إلى العمل.

الحل

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

صياغة الخوارزمية بلغة رمزية خاصة

  • حيث تقوم هذه الطريقة على أسس ومفاهيم رياضية، ومن أهم الطرق الرمزية لصياغة الخوارزميات لغات البرمجة سي++ (++C)، والترميز الرياضي للمفاهيم بعدة طرق مثل الأسلوب البياني.

صياغة الخوارزمية بطريقة بيانية

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

تصميم الخوارزمية

يتم تصميم الخوارزمية عن طريق استخدام المخطط (Graph)، والمخططات هي عدد من العناصر التي تعبر عن الرؤوس (Vertices)، إذ ترتبط العناصر مع بعضها البعض بعلاقات تسمى (الحواف Edges)، حيث تنقسم المخططات إلى ثلاثة أنواع، هي كما يلي:

المخطط غير المتجه

  • وهو عبارة عن المخطط الذي تتصل عناصره مع بعضها البعض بطريقة غير مرتبة، وبالتالي فإن الاتجاهات (الأسهم) فيه تكون مهمشة.

المخطط المتجه

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

المخطط المشترك

  • وهو عبارة عن المخطط الذي يتضمن كلًا من النوعين السابقين، فمن العناصر ما يتصل بالعناصر بعلاقة متجهة، ومنها ما يتصل بالعناصر بعلاقة غير متجهة.

الفرق بين البرنامج والخوارزمية

  • هناك فرق بين البرنامج والخوارزمية، من جهة النظرية الاحتسابية.
  • الخوارزمية تحقق جميع الشروط (المدخلات-المخرجات-الوضوح-المحدودية-المحلولية)، كما توصف الخوارزمية بعدة عبارات مثل لغة الخوارزمية، والمخططات الانسيابية.
  • البرنامج لا يحقق الشرط الثالث، ويتم وصف البرنامج بلغة الحاسوب وبالتالي، البرنامج=خوارزمية +هيكل بياني يبين أسلوب لتنظيم البيانات.

ويمكن تطوير البرنامج عن طريق عدد من الخطوات والمراحل، وهي كما يلي:

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

التأكد من الصلاحية

وتشمل هذه الخطوة ثلاثة أمور، هي:

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

أنواع الخوارزميات

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

على سبيل المثال

  • هناك خوارزمية يطلق عليها (خوارزميّة مطابقة السلسلة)، حيث يتم في هذه السلسلة ظهور المدخلات في متسلسلات أكبر أو أجزاء من النص، مثل خوارزمية رأبن كأرب.
  • خوارزمية (divide and conquer algorithm)، أحد أنواع الخوارزميات التي تعبر عن طريقة حل المسائل.
    • مثل خوارزمية  البحث الثنائي، والذي يبحث عن هدف له مدخلات مفرزة.
    • من خلال تقسيم المدخلات لأجزاء صغيرة من أجل إيجاد الهدف.
    • ممكن أن تمتد إحدى أنواع الخوارزميات لكلًا من النوعين السابقين.
    • مثل خوارزمية الفرز، التي تظهر خاصية الفرز المتكرر عن طريق وظيفة الفرز، أو وظيفة متكررة.

شاهد أيضًا: كيف تصبح ذكيًا بالرياضيات

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

موضوعات من نفس القسم