موسوعة الخوارزمي

الخوارزميات و بتى المعطيات

المحتوى:

1. مقدمة

2. مقدمة في الرياضيات

3. خوارزميات الترتيب المختلفة

4. بنى المعطيات الأساسية

5. تقنيات تصميم و تحليل الخوارزميات

6. بنى معطيات متقدمة

Data Structures and Algorithms


1. مقدمة:

دعونا نبدأ بتعريف ماهو البرنامج الجيد.

هناك مواصفات محددة يجب أن يُحققها البرنامج حتى نقول أنه جيد وهي:

1. يُنفذ بشكل صحيح : فلا يجب أن تصل المركبة الفضائية مثلاً إلى المريخ إذا تم إرسالها إلى القمر.

2. فعّال : نقصد بكلمة فعّال أن البرنامج يجب أن يستغرق أقل وقت ممكن و في بعض الأحيان هناك أمور أخرى هامة يجب أن تُأخذ بعين الإعتبار (مثل استخدام أقل قدر ممكن من ذاكرة الكومبيوتر) حتى يُقال أن البرنامج فعال.

3. من السهل قراءته و فهمه : حتى من قِبل شخص آخر غير ذلك الذي قام بكتابة البرنامج.

4. من السهل فحصه و تدقيقه : فلابد من التأكد من صحة البرنامج و من أنه يقوم بالمطلوب.

5. من السهل تعديله : فهناك دائماً إصدارات جديدة و نسخ معدلة من البرامج.

كما سنرى لاحقاً فإن الحصول على البرنامج الصحيح (1) و الفعّال (2) يمكن تحقيقه باستخدام الخوارزميات و بنى المعطيات المناسبة (و هذا ما يميز المبرمجين المحترفين عن هواة البرمجة.)

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

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

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

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

و بشكل أكثر دقة نقول:

الخوارزمية:

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

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

موسوعة الخوارزمي

الصفحة الأساسية

بحث مخصص