الخوارزميات و اهميتها في العلوم المختلفة
-----------------------------------------------------------------------
الخوارزمية: بشكل عام، يمكننا تعريف الخوارزمية بأنّها أي سلسلة من الخطوات الحسابية المعرفة بشكل جيد، والتي تأخذ قيمة أو أكثر كـدخل Input، وتعطي قيمة أو أكثر كـخرج Output.
وقد أسسها
العالم المسلم محمد بن مسلم الخوارزمي, تبحث الخوارزميات في البحث عن حلول لمسائل معينة في المعلوماتية بغية تحويلها إلى برامج ، كما تبحث أيضا في إيجاد الحل الأفضل في حال تعدد الحلول .
تعريف الخوارزمية Algorithm تعتبر الخوارزميات من أهم العلوم في فرع المعلوماتية و قد أسسها العالم المسلم محمد بن مسلم الخوارزمي, تبحث الخوارزميات في البحث عن حلول لمسائل معينة في المعلوماتية بغية تحويلها إلى برامج ، كما تبحث أيضا في إيجاد الحل الافضل في حال تعدد الحلول و قد عرف العالم كنوث الخوارزمية في كتابه "فن البرمجة" بأنها مجموعة من القواعد التي تتميز بالصفات التالية:
* يجب أن تكون هذه المجموعة منتهية و تنتهي بعدد منته من التعليمات
* يجب أن تكون محددة و دقيقة بمعنى ان تكون كل يجب أن توصف بدون التباس
* يجب تحديد مجال تعريف معطيات الدخل إن وجدت (أعداد صحيحة ،حقيقية,أحرف.......)
* يجب أن تكون هناك نتيجة(واحدة على الاقل)
* يجب أن تكون فعّالة أي أن تكون العمليات كلها قابلة للتنفيذ و في وقت منته من قبل شخص يستخدم الامكانات اليدوية\
بهذا المفهموم فإن الخوارزمية عبارة عن أداة لحل المسائل الحسابية. ونقصد بكلمة مسألة : العلاقة بين الدخل والخرج، وبالتالي فإن دور الخوارزمية توضيح الخطوات الضرورية للوصول إلى العلاقة المطلوبة، وعادةً ما تسمى قيم الدخل التي يتم اختبار الخوارزمية عليها بـ 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.
* أشهر الأمثلة: لنفترض أنه توجد لدينا خارطة لمدينة مع وضع المسافات بين التقاطعات، ونريد إيجاد أقصر طريق بين موقعين في هذه المدينة، فكيف يتم ذلك؟ يتم ذلك باستعمال خوارزمية ديجيكسترا الشهيرة
# طرق التعبيير عن الخوارزمية flowcharts
هنالك عدة طرق للتعبير عن الخوارزمية منها بيانية(مخططات)و منها نصية(عبارات) و سوف نتحدث عن الطرق البيانية فقط تعتمد الطريقة البيانية لصياغة الخوارزميات على توضيح خطوات تنفيذ الخوارزمية باستخدام أشكال هندسية خاصة و أسهم تصل بينها إضافة إلى عبارات باللغة الطبيعية و تعابيير رياضية أو منطقية. وبذلك نحصل على ما يسمى بالمخطط التدفقي Flowchart Diagram ونلاحظ هنا أن الأسهم تفصل العمليات اللازمة لانجاز العمل و تبين تسلسلها يستخدم المخطط التدفقي أشكالاً هندسية متفق عليها خصص كل منها لنوع من العمليات .
* الدائرة (الشكل البيضوي)لتحديد بداية الخوارزمية و نهايتها
* المستطيل العمليات(التنفيذبة العادية,الحسابية)
* متوازي الأضلاع عمليات الادخال و الاخراج
* المعين العمليات التي ترتبط باختبار تحقق سشرط ما و تتطلب قراراً منطقياً
* السهم يحدد اتجاهالتنفيذ
مثال (1): نريد تحويل وحدة قياس الوزن من الباوند الى الكيلوغرام .
*ان اول خطوه في كتابة الخوارزمية هي ايجلد علاقة بين المدخلات والمخرجات
في هذا المثال:
المدخلات هي : وزن بوحدة الباوند..........
المخرجات :وزن بوحدة الكيلوغرام..........
العلاقة: 1كيلو=1باوند*0.445
* الان نستطيع كتابة الخوارزمية بعد ان اوجدنا العلاقات وحددنا المدخلات والمخرجات كالتالي:
1. اقرا الوزن بالباوند
2.احسب الوزن بالكيلو حسب العلاقة 1كيلو=1باوند*0.445
3. اطبع الناتج بالكيلو
*مكونات الخوارزمية:يتضح من المثال السابق ان اي خوارزمية مهما كانت بساطتها او تعقيدها لابد من ان تتكون من مكونات اساسية وهي :
1. القيم ومتغيرات( مكون اساسي)
2.الاوامر والتعليمات(مكون اساسي)
* تعد الاوامر والتعليمات اهم مكون في الخوارزمية وله العديد من الخصائص