تحليل وتصميم الخوارزميات
تحليل وتصميم الخوارزميات
لا نقول لفظة خواريزم إلا ويتبادر إلى ذهننا العالم الكبير أبو بكر الخوارزمي ، ويتبادر إلى ذهننا كذلك الحاسوب ، ولولا الخوارزميات لما عرفنا ولا توصلنا إلى الحاسوب وإلى أجهزة الكمبيوتر بأشكالها الحالية التي نعرفها .
ومن الجدير بالتنويه أنه في ثلاثينيات القرن الماضي قد بدأ علماء الرياضيات بشكلٍ ٍعام بالإهتمام الجاد بالخوارزميات ودراستها ، حيث كانت هذه الدراسة متبوعة كذلك بتطوير الحواسيب الإلكترونية والتي بدورها أدت إلى تطوير الكثير من الخوارزميات المشهورة والمهمة والفعالة.
وقد كانت الدوافع والمحفزات والأسباب من وراء هذا الإهتمام المتزايد من أجل التغلب على مشكلة محدودية وكلفة أجهزة الكمبيوتر. وبناءا ًعلى ذلك فقد حفزت هذه المحدودية والإشكالية كل من علماء الكمبيوتر وعلماء الرياضيات على الإهتمام الشديد والكبير بأداء البرامج وكذلك الإهتمام الجاد بتصميم خوارزميات الحاسوب المختلفة ذات الكفاءة العالية والدقيقة .
ما هو تعريف الخوارزمية : إنه مصطلح يشير إلى مجموعة محدودة ومعينة من الخطوات، حيث أن كل واحدة من هذه الخطوات قد تتطلب في حد ذاتها واحد أو أكثر من العمليات الحسابية والمنطقية ، وإذا ما تم إتمام وتنفيذ هذه الخطوات بشكل صحيح فإنه سوف نحصل على نتيجة أو على مجموعة من النواتج بعد فترة محدودة ومعينة من الوقت اللازم لتنفيذ ذلك .
وهناك مجموعة وعناصر من القيود والممانعات على نوع العمليات التي يمكن أن تتضمن وتحيط الخوارزمية وهي التالي:
أولاً- الوضوح : حيث يجب للمشكلة التي تعالجها الخوارزمية أن تكون واضحة.
ثانياً- الفعالية : وهذا يدل ويعني أن كل خطوة بالإمكان أن يقوم بتنفيذها وأدائها أي شخص في فترة محددة من الوقت .
ثالثاً- المحدودية :وهذا يعني ويشير إلى أنه يجب أن يكون للخوارزمية عدد محدود ومحدد من العمليات والخطوات .
رابعاً– يجب ومن الإلزام أن يكون للخوارزمية واحد أو أكثر من النواتج وأن يكون لها صفر أو أكثر من المدخلات .
إن أنظمة التشغيل في الكمبيوتر هي من التطبيقات المباشرة على الخوارزميات .
ونجد أن هذه النظم هي البرمجيات و الإجراءات الحسابية التي تتكون من مجموعة محدودة من الخطوات .
ونجد كذلك أن هنالك فرقٌ كبيرٌ ما بين الخوارزمية والإجراءات العادية ، فالخوارزمية نجدها تتوقف بعد فترة محدودة من الوقت في حين نجد أن الإجراء العادي قد يستمر ولا ينتهي في حلقة لا نهائية.
التركيبات المستخدمة في الخوارزم هي:
if-then-else
for / end for
while / end while
repeat / until
ويمكننا خلط شبه الكود هذا مع مفردات الإنجليزية أو العربية عند الضرورة
ما المقصود بتحليل الخوارزميات :-
هو تحليل كفاءة الخوارزمية وتحسينها، و يوجد مقياسين لذلك هما :
تعقيدات الخزن وهي تعني كمية الذاكرة التي يتطلبها تشغيل البرنامج (run ) حتى إكتمالها.
نجد إعتماد الخزن الذي يتطلبه البرنامج دوماً على جزئيين :
أولاً – جزء ثابت مستقل عن كافة خصائص المدخلات والمخرجات و يتضمن هذا الجزء فراغ التعليمات أو الإيعازات ، و كذلك الجزء المخصص لخزن المتغيرات البسيطة أو المركبة ذات الحجم الثابت، إضافة إلى خزن الثوابت.
ثانياً – جزء متغير :و يتألف من الفراغ أو الخزن الذي يتطلبه البرنامج للمتغيرات المركبة والتي يعتمد حجمها على مثال المسألة المراد حله، إضافة إلى فراغ المكدس المستخدم .
تعقيدات الوقت وهو هنا يعني كمية الوقت اللازم والتي يتطلبها تشغيل البرنامج (run ) حتى إكتمالها ويتألف من حاصل جمع وقتي التأليف -الترجمة – وتشغيل البرنامج .