ما لن تعرفه عن الرياضيات ج3
تعلّمنا في المحطتين السابقتين عدّة أشیاء مهمة عن الریاضیات. كأهمیة التقریب وتعریف الخوارزميات والفرق بین الخطأ المُطلق والنسبي كما تعلمنا شیئًا أو شیئین عن نظریة الأعداد الأولیة. الیوم وبینما یسیر القطار دعونا نتعرف على أهمیة الریاضیات بالنسبة لعلوم الحاسب.
الكثیر من الطلّاب الجدد والراغبین في تعلّم البرمجة یتعجبون حین یُطلب منهم دراسة مقررات ریاضیّة بحتة وبعضهم یتذمر بجمل من قبیل “أحب البرمجة ولا أحب الریاضیات”. في الحقیقة أن هذه الجملة هي ببساطة مغلوطة؛ إذ أن الریاضیات تعتبر إلى حد كبیر أساس البرمجة ومن أكثر الأشیاء التي تربط الریاضیات بعلوم الحاسب ما یعرف باسم “الخوارزمیات”.
والخوارزمیّة ببساطة: هي مجموعة من الخطوات الریاضیة والمنطقیة والمتسلسلة اللازمة لحل مشكلة ما.
تخیل معي أن لدیك عددین هما A،B كم عدد المقارنات الذي يلزمك لتحدد من الأكبر A أم B؟ نعم، بالتأكید مقارنة واحدة!
لكن لماذا لا نُعقِّد الأمر أكثر؟
دعنا نتخیل أن لدیك A،B،C وترید ترتیبهم، كم عدد المقارنات الذي یلزمك؟
من المفترض في البداية ألّا تهتم بأي مقارنة، لذا فربما تبدأ مثلًا بمقارنة A،B ولنقل أنك فضلت A. الآن ربما ترید أن تقارن A مع C ولنقل أنك فضلت A كذلك كل ما ینقصك الآن لمعرفة الترتیب الصحیح هو أن تقارن B مع C فإذا فضلت B یكون الترتیب هو A،B،C وإذا فضلت C یكون الترتیب هو A،C،B.
لاحظ أننا احتجنا إلى ثلاث مقارنات على الأقل لمعرفة الترتیب الصحیح، لكن ماذا لو كان لدینا A،B،C،D فلو حاولت ترتیبهم ستجد أنك تحتاج إلى خمس مقارنات على الأقل لتعرف الترتیب الصحیح.
أي أنّه كلما زاد عدد الأشیاء التي تحتاج إلى ترتیبها كلما زاد تعقید العملیة. بعبارة أخرى، نستطیع القول أن عدد المقارنات اللازم لترتیب الأشیاء یزداد بزیادة عدد الأشیاء نفسها، فلو كان لديك مثلًا 100 شيء فمن المستحیل أن تحدد عدد المقارنات اللازم لترتیبهم، لكنَّنا بدلًا من ذلك نحاول تحدید الحد الأدنى والحد الأعلى.
الحد الأعلى بمعنى أنّه في أسوأ الأحوال ستجد نفسك اضطررت لعمل عدد كذا من المقارنات بینما الحد الأدنى یعني أنّه مهما كنت ماهرًا جدًا ستجد نفسك مضطرًا لعمل عدد كذا من المقارنات.
ومن أشهر الخوارزمیات المعروفة والمستخدمة بكثرة هي خوارزمیات الترتیب أو ما یعرف باسم Sorting Algorithm. لكل خوارزمیّة ما یسمى بال complexity أو التعقید وهي باختصار وبدون الدخول في تعقیدات عدد المرّات التي تتكرر فیها العملیة للوصول للنتیجة المطلوبة. وغالبًا ما تكون ال complexity دالة في عدد المدخلات.
ولكي نفهم أكثر هذا المفهوم، دعنا نستعرض معًا أحد خوارزمیات الترتیب والمعروف باسم Bubble sort
لنفترض أن لدیك عدّة أرقام غیر مرتبة: 5 ، 1 ، 4 ، 2 ، 8 ، 9
وما نریده الآن هو ترتیب هذه الأرقام، القاعدة تقول أنّنا نقارن كل رقمین بدایة من الیسار فمثلًا نقارن ال1 بال 5 لنجد أن الواحد أقل من الخمسة وبالتالي ننقل الواحد محل الخمسة ویصبح الترتیب كالتالي: 1 ،5 ،4 ،2 ، 8 ،9
الآن ننتقل إلى الرقمین التالیین ال 5 و4 نجد أن الخمسة أكبر من ال 4 لذا نستبدل كل من الخمسة والأربعة ویصبح الترتیب كالتالي: 9،8،2،5،4،1
نستمر بتكرار تلك العملیة حتى نحصل على الأرقام جمیعها مرتبة، ولمساعدتك أكثر على تخیل الأمر بإمكانك مشاهدة هذا الفیدیو القصیر:
الآن بإمكاننا أن نُسقط تعریف ال Complexity على هذا المثال بأنّه عدد المرات التي تُكرَّر فیها المقارنة والنقل حتى یتم ترتیب الأرقام بشكل كامل. فإن كان حظك جيدًا وكانت الأرقام مرتبة إلى حد ما ولا تحتاج لتكرار الخطوة كثیرًا فنحن نتحدث عن الحالة الأفضل أو ال Best case وتساويn حیث n هي عدد المدخلات في حالتنا هذه عدد الأرقام. لكن إن كنت من أصحاب الحظ السيء وكانت الأرقام غیر مرتبة بشكل جيد واضطررت لتكرار الخطوات كثیرًا فنحن نتحدث عن الحالة الأسوأ أو الworst case وتساوى 2^n.
مثال آخر كإحدى خوارزمیات الترتیب هو الQuick sort أو ما یعرف بالترتیب السریع كما یُفهم من اسمه فمن المفترض به أن یقوم بعملیة الترتیب في أحسن حالاته بشكل أسرع من باقي الخوارزمیات. لن نستعرضه بالتفصیل لكن فكرته الأساسیة هي اختیار رقم عشوائي من بین الأرقام وتقسیم الأرقام إلى كومتین؛ كومة أعلى من هذا الرقم وكومة أقل من هذا الرقم ثم تكرار العملیة حتى یتم ترتیب الأرقام ترتیبًا كاملًا. في أحسن الحالات سیكون عدد المقارنات التي تقوم بها هو n log n (تم شرح ال log في المقال السابق)، أما في أسوأها فستجد نفسك تكرر المقارنات بعدد 2^n. ولكنه في المتوسط یعتبر أسرع من غیره.
بهذا أكون قد أعطیتك نبذة مختصرة جدًا مع مثال أو اثنین عن أهمیة الریاضیات بالنسبة لعلوم الحاسب ونكون قد اقتربنا جدًا من محطتنا الأخیرة..
لكن بینما یسیر القطار، خطر ببالي سؤال وجَّهه لي أحدهم من قبل: لماذا یكره الناس الریاضیات؟
أعني: عندما نتحدث عن العلوم الأخرى فربما تُقابل العلوم الأخرى بعدم الاهتمام أو النفور العادي لكن عندما یأتي الأمر للریاضیات فإننا نتحدث عن كره حقیقي حیث تنتشر بكثرة عبارات مثل “أكره الریاضیات ” بین الطلّاب في مراحل عمريّة دراسيّة مبكرة.
إذًا ما سر هذه المؤامرة الغریبة على الریاضیات؟
التتابعیة:
كما أوضحنا في المقال الأول، الریاضیات علم تتابعي بشكل رئیسي أي أنّك لن تتمكن من فهم بعض النظریات والمفاهیم إن لم تكن على درایة جیدة بأساسیات الریاضیات. مثال على ذلك، إن لم تكن على درایة بكیفیة ضرب عددین یتكون كل منهما من رقمین فإنّه على الأرجح لن یكون لدیك حدس جید بقانون التوزیع وبذلك فإنك لن تكون مرتاحًا مع الضرب في الأقواس مثل : (3+X+2)*(X)، وبالتالي لن تكون قادرًا على فهم المعادلة التربیعیة بشكل جید وهكذا..
الأساطیر:
تكتسب الریاضیات ذلك الطابع السحري بأنها قدس الأقداس وإكسیر الحیاة لكن الحقیقة أنها كغیرها من العلوم قائمة على القواعد بشكل رئیسي أي أنها تعتمد بشكل كبیرعلى تعلّمك للقوانین لذلك قد یكون الفرق بین الطلاقة التقنیة والفهم الریاضي لبعض المفاهیم الریاضیة أقل مما یتصوره البعض.
قدرك الأسود:
بالتأكید لا ننسى الاعتقاد الراسخ بأن الریاضیات موهبة فطریة یُولد بها المرء أو لا. ولا شك أن البعض قد وُلدوا ببعض التمیز عن غیرهم في القدرات الریاضیة لكن الأمر بشكل عام یعتمد على المجهود والمثابرة أكثر من أي شيء آخر، أما انتشار تلك القصص التي تُصوِّر عباقرة الریاضیات منذ الصغر فهو سبب رئیسي في تصور البعض أنهم عاجزون عن فهم ومجاراة الریاضیات بشكل ما.
فأنا شخصیًّا لم أولد بموهبة خاصة في الریاضیات ولم یظهر تفوقي فیها حتى سن متأخرة نسبیًّا وعندما أفكر في هذا الآن أجد أنه ربما للأمر علاقة بالثقة بالنفس فعندما یستعصي علیك أمر ما لا یجب أن تفكر في “لم أُولد للریاضیات” بل علیك أن تبذل فیه مزیدًا من المجهود وسیتضح معك رویدًا رویدًا..
أعني أنّني لم أنتبه لنبوغي فيها حتى فعل ذلك أحد أساتذتي ولولاه لظننت أن الأمر عادي وأنّ الآخرين قادرون على رؤيتي بنفس المنظور.
الأهمیة:
كثیر من الطلبة لا یجدون رابطًا بین الریاضیات وأي شيء آخر مهم في هذه الحیاة، وعندما تبدأ بإدراك الأهمیة الحقیقیة للریاضیات كعلم منفصل (سنعود لهذه النقطة لاحقًا)، وكأداة تستخدمها بقیة العلوم یكون قد فاتك الكثیر من المعلومات الهامة وكما قلنا سابقًا فالریاضیات علم تتابعي بالأساس فیكون تعویض ما فاتك أصعب لأنك ستشعر بأن مستواك أقل والحقیقة أن ما تعلمته هو الأقل.
لم كل هذه الضجة بشأن الریاضیات؟
أعني ما أهمیة علم تجریدي كهذا في الحیاة بشكل عام ولِم یهتم علماء الریاضیات بحلّ مشكلات ریاضیة بحتة قد لا یكون لها أي تطبیق في العصر الحالي؟
عندما تقوم بدراسة شيء كالتكامل مثًلا یُقدَّم إلیك على أنه أحد فروع الریاضیات وفي محاولة لجذب انتباهك یُخبرك أستاذك أن التكامل یُستخدم لحساب المساحات تحت المنحنى كتطبیق بسیط ومباشر ویستطیع أن یریك علیه مثالًا في الفصل.
لكن عندما یأتي الأمر لأمور أكثر تجریدًا كنظریة الأعداد “وهي فرع من الریاضیات يهتم بدراسة خصائص الأعداد بشكل عام والأعداد الصحیحة بشكل خاص كدراسة الأعداد الأولیة مثلًا” فإنّك قد لا تجد فائدة من دراسة شيء كهذا في الزمان الذي ظهرت فیه لكن مع ظهور الحواسیب صار لها استخدامات واسعة في علوم الحاسب حیث ظهرت الحاجة إلیها في تكوین الشيفرات لحمایة سریة المعلومات وما إلى ذلك.
باختصار لدینا في العصر الحالي مشكلة ماذا ندرس وماذا نترك باعتبار أنه عصر یعتمد على التضخم المعلوماتي بشكل كبیر، لكن الریاضیات أثبتت مرارًا وتكرارًا أنّه علم يسبق عصره حتى وإن لم تظهر استخدامات لتلك المعادلات أو البراهین. في نفس الوقت الذي كُتبت فیه. وعلیه في المرة القادمة التي تسمع فیها عن مشكلة ریاضیة لم تُحل بعد وتتساءل لماذا یُكرِّس الناس حیاتهم لحل مثل هذه الأمور التي لا تبدو مفیدة جدًا. فكِّر مرة أخرى..
تووووت.. توووووت .. أخيـرًا حان موعد النزول من القطار أتمنى أن تكون قد استمتعت معنا بالرحلة، ومن یدري ربما نكرِّرها في وقت آخر..
أقول: ربما ..