هناك الكثير من المصطلحات الرنانة التي تتردد دائمًا في الأوساط التقنية والحاسوبية، مثل: تعلم الآلة Machine Learning أو علم البيانات Data Science أو الخوارزميات Algorithms، والأخيرة هي ما سنتحدث عنه اليوم.
الخوارزميات واحدة من أساسيات علوم الحاسوب Computer Science التي يدرسها المبرمجين ومهندسي الحاسوب أثناء دراستهم الأكاديمية أو تعلمهم الذاتي، وهو مصطلح لا يمكن لأي متخصص ولا شخص عادي حتى أن يغفل عنه.
فلقد أصبحت هذه الخوارزميات جزءًا لا غنى عنه في حياتنا، فمثلًا كثيرًا ما نسمع الآن عن خوارزميات السوشيال ميديا التي تعالج المحتوى الذي نقوم بنشره على حسابتنا، أو خوارزميات محركات البحث التي تُظهر نتائج البحث وترتبها.
في هذا المقال سوف نقدم لك عزيزي القارئ كل ما تريد معرفته عن الخوارزميات بدءًا من تعريفها وتاريخها ووأنواعها وكيف تعمل، وسوف نضع لك قائمة بأهم وأفضل الكورسات العالمية التي تمكنك من تعلم الخوارزميات.
ما هي الخوارزميات Algorithms
الخوارزميات هي مجموعة من الخطوات الواضحة التي يتم تطبيقها من أجل الوصول إلى نتيجة ما أو حل مشكلة ما. تعريف بسيط أليس كذلك؟
قد يبدو لك هذا التعريف أبسط من اللازم، ولكنه على النقيض ليس هكذا أبدًا، فهذا هو التعريف الذي اتفق عليه المختصين والأكاديميين.
فالخوارزميات من الممكن تبسيطها أو تشبيهها بالوصفات الخاصة بالأكل، فمن خلالها ستقوم بتحويل المواد التي بحوزتك عبر مجموعة من الخطوات إلى الوجبة التي ستقوم بتناولها.
هذا هو لب تعريف الخوارزميات مهما بلغت سهولتها أو تعقيدها، أو كانت متعلقة بالتداول أو الأسواق المالية أو تُستخدم في المستشفيات والعلاج، أو حتى تستخدم في تسيير الصواريخ الصاعدة إلى الفضاء.
ولبعض التفصيل حول هذا الأمر، فالخوارزميات تتكون من:
- المشكلة أو التساؤل موصوفًا بطريقة رياضية يفهمها الحاسوب.
- صيغة رياضية أو مجموعة من الخطوات الواضحة للتعامل مع الحالة.
- طريقة لإدخال معطيات المشكلة لتطبيق الصيغة أو الخطوات عليها.
- تنفيذ تلك الخطوات أو الصيغة بشكل دقيق وسلس.
- الحصول على المخرجات المطلوبة من المدخلات أو المعطيات السابق إدخالها.
وسوف نتحدث بعد قليل عن الكيفية التي تعمل بها الخوارزمية باستخدام مثال بسيط وسهل يوضح لنا آلية عملها.
وبشكل عام فإن الخوارزميات هي الطريقة السحرية التي جعلت حياتنا بهذه السهولة، فهي توفر الكثير من الوقت والجهد والمال، كما أنها أكثر فعالية ودقة من العامل البشري وأسرع بعشرات ومئات المرات.
تاريخ الخوارزميات
بالطبع ستكون فكرت في أن الخوارزميات ومفردها الخوارزمية كلمة عربية فصحى أو على الأقل قريبة من اللغة العربية، وهذا صحيح فالعلماء العرب هم أول من توصلوا إلى شكلها الذي نعرفه الآن.
فكلمة خوارزمية أو خوارزميات تأتي من اسم العالم العربي محمد بن موسي الخوارزمي؛ الذي كان واحد من أبرع العلماء العرب في مجال الرياضيات بجانب إسهاماته في العديد من العلوم الأخرى كالفلك والجغرافيا وغيرها.
الخوارزمي هو أبو علم الجبر وهو مؤسسه كما نعرفه اليوم، والذي بسببه سميت الخوارزميات خوارزميات لأنها تعتمد عليه بشكل كبير في عملها.
ويمكنك مشاهدة هذا المقطع القصير الرائع عن لماذا سُميت الخوارزميات بهذا الاسم من الـ BBC:
بعد هذه البداية العربية القوية قام الغرب بترجمة هذه المعارف، وتطويرها واستيعابها في حضارتهم وإنجازاتهم العلمية فيما بعد.
فمثلًا في القرن التاسع عشر قامت آدا لوفلايس باكتشاف أن الخوارزميات من الممكن أن يتم تطبيقها وتنفيذها من قبل الآلات، وبذلك فتحت الباب بعد ذلك للخوارزميات التي نستخدمها اليوم.
وفي القرن العشرين قام العالم العبقري آلان تورنغ بتطبيق مفهومها من خلال آلة تورنغ، والتي قامت بجعل الآلة فعليًا تقوم باستخدام خوارزمية في العالم الواقعي، وبذلك فتح الباب أمام الحوسبة و الذكاء الاصطناعي اللذان نعرفهما اليوم.
كيف تعمل الخوارزميات؟
طريقة عمل الخوارزميات سهلة للغاية مهما اختلفت أي خوارزمية عن نظيرتها، فهي عبارة عن مدخلات Inputs يتم إجراء بعض الحسابات أو الخطوات عليها حتى الحصول على المخرجات Outputs المطلوبة.
ولكي نبسط الطريقة التي تعمل بها الخوارزميات دعنا نفكر في الخوارزمية التي نقوم من خلالها باختيار الملابس التي نرتديها، وكيف نشرح لطفل صغير كيف يختار الملابس التي يقوم بارتدائها بناءاً عليها.
في البداية ستكون المدخلات Inputs عبارة عن العوامل التي نعتمد عليها في اختيار هذه الملابس، مثل: درجة الحرارة بالأرقام أو الموسم صيفي/شتوي، بالإضافة إلى المناسبة وطبيعتها، والتوقيت الذي سيقوم بالخروج فيه.
من خلال هذه المدخلات سوف نقوم بمعالجة الملابس التي لدينا، ومن ثم سنقوم بعد ذلك باختيار أكثر الملابس المناسبة لدينا التي بإمكاننا ارتدائها.
وعامة فإن هناك العشرات والمئات من العوامل التي بإمكانك أن تضعها في الحسبان غير تلك، مثل إمكانية هطول الأمطار، وطبيعة النشاط الذي ستقوم به، والملابس التي يرتديها الأشخاص الذين ستقابلهم، وهلم جرا.
وكلما زادت أعداد هذه المدخلات كلما زاد تعقيد الخوارزمية، وبالتالي دقة نتائجها وكونها أكثر ذكاءًا وكفاءة في آداء مهمتها.
بعد الحصول على كافة المدخلات المطلوبة، سيأتي هنا دور المعالجة أو الخطوات المستخدمة، وهي التي تُعرف في الخوارزميات التقنية بالحوسبة Computation.
ففي البداية ستستبعد الملابس غير المناسبة لهذا النشاط أو المناسبات التي ستحضرها، ومن ثم ستستبعد الملابس التي لا تناسب الطقس أو المناخ الحالي.
وهكذا بعد عملية طويلة من الاستبعادات حسب المدخلات الخاصة بك، سوف يتبقى لديك خيارات أقل لتقوم بالارتداء من خلالها.
ستضطر حينها إلى محاولة الوصول إلى أكبر تناسق بين هذه الملابس لكي يتوفر لك حلة مناسبة للخروج بها.
في نهاية الأمر بعد أن تصل إلى هذه الحلة سيسمى هذا الأمر بالمخرجات Outputs، وهو الناتج النهائي الذي كنا نود الحصول عليه منذ البداية.
هذه خوارزمية بسيطة، ولو أردنا الحديث عن خوارزميات أذكى، مثل تلك الخاصة بتعلم الآلة أو بالتعلم العميق Deep Learning أو معالجة اللغة الطبيعية NLP فسنزيد التعقيد بعض الشيء.
فستغذي خوارزميتك بالكثير من البيانات والمعلومات كمدخلات، مثل: تجاربك الماضية في اختيار الملابس أو شعورك ناحية هذه الملابس خلال المرات السابقة التي ارتديتها فيها، ويمكنك أيضًا تضمين تجارب الآخرين.
فمن خلال هذا الكم الكبير من البيانات ستستطيع الخوارزمية أن تكون أكثر كفاءة، وأن تكون ذكية للغاية للقيام باختيار أفضل حلة تقوم بارتدائها.
أنواع الخوارزميات
هناك الكثير للغاية من أنواع الخوارزميات التي يتم استخدامها كل لحظة من حولنا، ولكن بإمكاننا القول بأن هناك 7 أنواع هم الأهم للخوارزميات:
1. الخوارزميات التكرارية أو العودية Recursive Algorithms: وهي الخوارزميات التي تقوم باستدعاء وتكرار نفسها حتى يتم حل المشكلة والتوصل إلى النتيجة النهائية.
2. خوارزميات البرمجة الديناميكية Dynamic programming Algorithms: هذه الخوارزميات معقدة بعض الشيء، وتستخدم في حل المشاكل الأكثر تعقيدًا، وهي تستخدم بكثرة في الأمور المعقدة، مثل دراسة الحمض النووي في علوم الأحياء.
3. الخوارزميات العشوائية Randomized Algorithms: وهي الخوارزميات التي تقوم باستخدام النتائج والقيم العشوائية.
4. الخوارزميات التراجعية أو خوارزميات التعقب العكسي Backtracking Algorithms: هذه الخوارزميات تقوم بحل المشاكل الكبيرة والمعقدة من خلال تجربة تقسيمها ومحاولة حلها بشكل متكرر حتى التوصل إلى النتائج الصحيحة، بحيث يتم حل المشكلة بشكل عكسي.
5. الخوارزميات الجشعة Greedy Algorithms: تعمل هذه الخوارزميات من خلال التفكير في أفضل خطوة أو تصرف على المدى القصير بدون التفكير في عواقب هذا الاختيار فيما بعد.
6. خوارزميات فرق تسد Divide and conquer Algorithms: تقوم هذه الخوارزميات في البداية بتقسيم المشكلة أو البيانات إلى أجزاء أصغر، ومن ثم تعمل على حلها وبعد ذلك تجميعها.
7. خوارزميات القوة العمياء Brute Force Algorithms: هذه الخوارزمية من أبسط الخوارزميات على الإطلاق حيث إنها تقوم بالتجربة، فمثلًا لو كنت تود إيجاد الرقم السري المكون من 4 أرقام الخاص بمستخدم ما، فإنك ستقوم بتجربة الـ 9999 احتمال حتى تصل إلى الرقم السري الصحيح.
وبشكل عام وعلى الرغم من وجود المئات والآلاف من الخوارزميات التي من الصعب أو المستحيل أن يتعلمها أي مبرمج جميعها، فهناك بعض الخوارزميات التي يتم استخدامها بكثرة، مثل:
خوارزميات البحث Search Algorithms: هذه الخوارزميات مستخدمة بكثرة، وتنطوي على عدة خوارزميات، وتستخدم بشكل عام كما يوحي اسمها في البحث عن قيمة أو شيء معين بين البيانات.
وهي تحتوي على الكثير من الأنواع، مثل: البحث الخطي Linear Search، والبحث الثنائي Binary Search، والبحث الأسي Exponential Search، والبحث القفزي Jump Search، وغيرها.
خوارزميات الترتيب Sorting Algorithms: وهي الخوارزميات التي تُستخدم في ترتيب أو إعادة ترتيب البيانات والقيم في القوائم أو المصفوفات، وهي من الخوارزميات المشهورة كالغاية، ولديها الكثير من الأنواع.
خورازمية ديكسترا Dijkstra: هذه الخوارزمية تُستخدم في الوصول إلى أقصر مسار أو مسافة بين نقطتين بشكل سريع.
خوارزمية بِلمان فورد Bell Man Ford Algorithm: وهي خوارزمية تستخدم في الوصول إلى أقصر خط بين نقطتين، خاصة في الرسومات البيانية ذات أوزان الأضلاع السالبة.
اقرأ أيضاً: أساسيات علم الحاسوب وكيف تتعلمها من أفضل المصادر
أهمية تعلم الخوارزميات
في عالم البرمجة والحوسبة لا يمكن للمتخصص ألا يتعلم الخوارزميات Algorithms، فهي الأساس الذي تقوم عليه كافة التقنيات والمخترعات الحديثة.
كما تعلم فإن الكمبيوتر لا يتحدث إلا لغة الصفر والواحد، ولكن من خلال الخطوات الكثيرة والخوارزميات المعقدة بإمكاننا جعله يقوم بعملية جراحية أو بقيادة طائرة بمفرده.
الخوارزميات تقوم باختصار الكثير من الوقت لنا، فبدلًا من تضييع الساعات بل والأيام في مهمة ما، يمكن للخوارزميات أن تقوم بنفس المهمة في بضعة دقائق، خاصة مع تطور الحواسيب.
كما أنها توفر المال والمجهود، فباستخدامها يمكننا أتمتة المهام التي نقوم بها، وجعلها تتكفل بالأمور الروتينية لكي نستغل هذا الوقت في التعامل مع الأمور الإبداعية أو الأكثر أهمية.
ومن صفات الخوارزميات أنها محدودة وحتمية، فهي تقوم في النهاية بحل المشكلة أو التوصل للنتيجة المطلوبة منها بشكل صحيح، وإلا لا يتم تعريفها على أنها خوارزمية، وبهذا نضمن فعاليتها الشديدة.
وفي هذا الوقت تشهد الخوارزميات اهتمام كبير للغاية من قبل المتخصصين في التقنية وعلماء الحاسوب، فهناك تخصصات كاملة متعلقة بتحليل وتحسين وإختراع الخوارزميات.
أفضل كورسات تعلم الخوارزميات
لحسن الحظ فإن إيجاد مصدر لتعلم الخوارزميات سهل للغاية، بالرغم من صعوبة وتعقيد الموضوع نفسه، وهذا بسبب وجود الكثير من الأشخاص والمصادر التي تشرح هذا الموضوع بكافة اللغات والطرق.
فستجد الكثير من الكتب والكورسات وقوائم اليوتيوب التي تقوم بشرح هذا الموضوع الهام.
ومن أفضل الكورسات التي ارشجها لك:
1. كورس مقدمة إلى الخوارزميات Introduction to Algorithms من MIT على اليوتيوب
هذا الكورس غني عن التعريف، فمثل معظم كورسات MIT الخاصة بعلوم الحاسوب والبرمجة، فإن هذا الكورس يكون من أشهر محطات بداية الهواة لتعلم الخوارزميات، فالكورس الذي يعود للعام 2011 ويحتوي على 47 محاضرة حظي بأكثر من 4 ونصف مليون مشاهدة.
كما أنصحك بشدة أن تقوم بشراء المرجع الخاص بالكورس Introduction to Algorithms للإطلاع عليه مع دراسة هذا الكورس أو حتى بجانب أي كورس آخر.
2. كورس Intro to Data Structures and Algorithms المُقدم من جوجل على منصة Udacity
هذا الكورس المجاني والمختصر على منصة Udacity قد اكتسب صيتًا كبيرًا في الآونة الأخيرة، وأصبح يشاد به كثيرًا على كونه من أفضل محطات البداية للمبتدئين، خاصة وأنه يستغرق 4 أسابيع فقط ويدرس الخوارزميات باستخدام لغة البايثون.
3. كورس ++Mastering Data Structures & Algorithms using C and C على يوديمي
هذا الكورس هو أشهر وأهم كورس للخوارزميات على منصة يوديمي، ومقدمه Abdul Bari واحد من أشهر معلمي علوم الحاسوب والبرمجة في العالم، ويحظى شرحه للخوارزميات بشهرة كبيرة للغاية في كونه من أبسط وأسهل الكورسات على الإطلاق.
ويمكنك الإطلاع على نسخة مجانية مختصرة قليلًا لمحتوى الكورس، من خلال القائمة الخاصة به المُسماة Algorithms على قناته على اليوتيوب.
4. تخصص Algorithms Specialization على كورسيرا
هذا التخصص المكون من 4 كورسات على كورسيرا والمُقدم من جامعة ستانفورد هو واحد من أشهر المحطات التي يلجأ إليها من يريد تعلم الخوارزميات، ويتمتع بشهرة وباحترام كبيرين، وسيحتاج منك إلى 4 أشهر تقريبًا للانتهاء منه بمعدل 4 ساعات أسبوعيًا.
في نهاية المقال يجب التأكيد على أن الخوارزميات قد غيرت شكل حياتنا تمامًا، وجعلتنا نعيش في هذا التقدم التقني المذهل، ولذا فإنها تحظى بالكثير من الاهتمام من قبل المتخصصين وعلماء الحاسوب بسبب ما يمكنها أن تقدمه لنا.
تعد الخوارزميات من اهم أساليب التطوير في البرمجة بشكل عام فيعتمد عليها الفيس بوك لإفاده الزائرين ومعرفه المحتوي المفضل لديهم وأيضا الربط بين الفيديوهات والمنشورات التي تعجب الزائر وتجعله يظل لوقت اكبر في الموقع وشكرا أيضا لمعلوماتك ومجهودك الرائع في كتابه نلك المقالة
شكراً لك