مدخل إلى الخوارزميات
- التفاصيل
- الزيارات: 68229
ما هي الخوارزمية؟ لماذا تعد دراسة الخوارزميات عملية هامة في تعلم البرمجة ؟ ما هو دور الخوارزمية بالنسبة للتقنيات الأخرى المستخدمة في مجال الحواسيب؟
في هذا الموضوع سنحاول الإجابة على هذه التساؤلات…
قبل الخوض في التفاصيل فإن كثير من المبرمجين يعتقدون أن البرمجية هي إتقان لغة برمجة … وهذا طبعاً غير صحيح. فمن وجهة نظر برمجية تعتبر لغة البرمجة أداة تنفيذ الخوارزميات فقط لا غير.
فإن تمكن المبرمج من إتقان الخوارزميات .. يصبح من السهل عليه تطوير تطبيقات متقدمة بلغات برمجية مختلفة.
الخوارزمية: بشكل عام، يمكننا تعريف الخوارزمية بأنّها أي سلسلة من الخطوات الحسابية المعرفة بشكل جيد، والتي تأخذ قيمة أو أكثر كـدخل Input، وتعطي قيمة أو أكثر كـخرج Output.
بهذا المفهموم فإن الخوارزمية عبارة عن أداة لحل المسائل الحسابية. ونقصد بكلمة مسألة : العلاقة بين الدخل والخرج، وبالتالي فإن دور الخوارزمية توضيح الخطوات الضرورية للوصول إلى العلاقة المطلوبة، وعادةً ما تسمى قيم الدخل التي يتم اختبار الخوارزمية عليها بـ Instance.
لتوضيح المفاهيم السابقة نأخذ المثال التالي:
لنفترض أنه لدينا سلسلة من الأعداد الصحيحة ونريد ترتيبها تنازلياً فعندئذٍ:
المسألة: ترتيب تنازلي للأعداد الصحيحة.
الدخل: سلسلة من الأعداد عددها n.
الخرج: سلسلة الدخل مرتبة تنازلياً.
Insatnce: بفرض سلسلة الدخل هي <10,5,30,15,40> فإن سلسلة الخرج هي <5,10,15,30,40>.
أخذنا عملية الترتيب كمثال توضيحي لأهميتها الكبيرة في كثير من التطبيقات، وتمَّ تطوير عدد كبير من خوارزميات الترتيب والتي سنتطرق لها بالشرح والتحليل في مواضيع لاحقة.
بشكل عام، فإنّ أي مسألة حسابية ليس لها حل وحيد وحسب، وإنما عدد لا نهائي من الحلول، بمعنى أنّه يوجد لدينا عدد لا بأس به من الخورزميات، فكيف نختار الخوارزمية المناسبة للتطبيق؟
يتم الاختيار بحيث نحقق استغلالاً أمثلياًّ لموارد الحاسوب، فما هي هذه الموارد؟
أهم هذه الموارد هي: زمن المعالجة وحجم الذاكرة اللازمة لتنفيذ الخوارزمية.
بشكل عام يُفضّل أن يكون كل من زمن المعالجة وحجم الذاكرة المستهلكة أصغر ما يمكن، فنختار الخوارزمية التي تحقق أحد الشرطين السابقين على الأقل.
تدخل الخوازميات في تطبيقات كثيرة متنوعة وغاية في الأهمية، نسرد فيما يلي بعضها:
* الخارطة الجينية للإنسان Human Genome Project: يهدف هذا المشروع إلى تحديد أكثر من 100000 جين وراثي تُشكل الحمض النووي DNA، بالإضافة إلى تحديد ما يقارب 3 مليارات من الأزواج الكيميائية التي تكوِّن السلسلة الوراثية. إذاً، لدينا كم هائل من البيانات نحتاج لتخزينها ومعالجتها، وهنا يأتي دور الخوارزميات في تطوير تطبيقات وأدوات تحليل تُمكِّن العلماء من إجراء دراسات معمقة في زمن قصير نسبياً.
* تصفح الانترنت Internet Surfing: في وقتنا الحالي يوجد عدد كبير من مستخدمي شبكة الإنترنت، وهم يحصلون في كل لحظة على كم كبير جداً من المعلومات…. فكيف يتم تأمين دخول هذا العدد الكبير من الزبائن وتأمين المعلومات لهم.. لهذا الغرض تمَّ تطوير ما يسمى بالخوارزميات الذكية، تلك المسؤولة عن عملية تخزين وتحصيل المعلومات بشكل سريع، وكمثال على هذه الخوارزميات: خوارزميات البحث المتوفرة ضمن محركات البحث وأشهرها محرك بحث Google.
* التجارة الإلكترونية Electronic Commerce: تؤمِّن مجموعة من الخدمات الجيدة القابلة للتفاوض والتبادل بشكل إلكتروني، فرضت هذه الخدمات تأمين حماية بعض المعلومات الشخصية مثل: اسم المستخدم، كلمة المرور، رقم بطاقة الائتمان، الحسابات المصرفية وغيرها… مما أدى إلى تطوير خوارزميات التشفير والتوقيع الرقمي Digital Signature.
* أشهر الأمثلة: لنفترض أنه توجد لدينا خارطة لمدينة مع وضع المسافات بين التقاطعات، ونريد إيجاد أقصر طريق بين موقعين في هذه المدينة، فكيف يتم ذلك؟ يتم ذلك باستعمال خوارزمية ديجيكسترا الشهيرة… وكانت هذه مقدمة سريعة لعلم الخوارزميات وفي مواضيع لاحقة تفاصيل أكثر، وللحديث بقية…