إنه لطريق طويل، ولكنك بدأته، وعليك أن تكمله، لا مجال للتراجع – الجزء الرابع – مدخل إلى الخوارزميات وبنى المعطيات

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

غالباً ما يغفل المبرمجون ذاتيو التعلم عن الدراسة العميقة للخورازميات وبنى المعطيات، وهو برأيي أهم ما يتركون تعلمه من مواضيع البرمجة، فعلى المبرمج أن يفهم جميع بنى المعطيات الأساسية وخوارزميات البحث والترتيب وغيرها من الخوارزميات المهمة ليحسن انتقاء المناسب منها عندما يحتاجه، فمثلاً من المعروف أن خوارزمية Bubble sort من أبطأ خوارزميات الترتيب ولكنك عند دراستها ستعرف أن هناك حالات معينة تكون هي الخوارزمية الأنسب والأسرع للاستخدام.

الكتاب الأقوى والأشهر لدراسة الخوارزميات هو Introduction to Algorithms، وهو كتاب ثقيل من إنتاج دار نشر جامعة MIT من تأليف أربعة أساتذة من جامعات مختلفة، صدر الإصدار الثالث منه العام الماضي. الكتاب يدرس في عدد كبير من الجامعات ويعتمد كمرجع في الكثير من الأبحاث والأوراق العلمية.
مشكلة هذا الكتاب أنه يحتاج أن يملك القارئ أرضية رياضية لا بأس بها ليستطيع أن يتابع مع الكتاب، فالكتاب يحوي تحليل عميق ومفصل للخوارزميات التي يبحثها، لذلك فإن فهم الخوارزميات بشكل عام قبل قراءة الكتاب سيساعد في فهمه ويسهل عليك المهمة. أنصحك بتأجيل دراسته حتى قراءة أحد الكتابين التاليين.

أول كتاب أنصحك بقراءته إن كنت مبتدئ في مجال الخوارزميات هو Data Structures and Algorithms in Java، وهو – كما لابد أنك لاحظت – يعلمك الخوارزميات مترافقة مع بنى المعطيات، جمال الكتاب وبساطته في أنه يتلافى الدخول في تعقيدات تحليل الخوارزميات والغياهب الرياضية المرافقة لذلك، فيمكنك قراءة الكتاب لفهم مبادئ الخوارزميات وبنى المعطيات ثم تتعمق في دراسة تحليلها من الكتاب السابق. أنصحك بنفس هذا الكتاب إن كنت مبرمج #C، فرغم الاختلافات بين اللغتين إلا أن تشابه Syntax الكود سيجعل من السهل فهم الكتب لمبرمج #C، فلا يوجد أي كتاب خوارزميات بلغة #C يستحق القراءة، حتى لو وجدت أن دار النشر تتبع جامعة محترمة كجامعة كامبريدج، فستجد أن كتابهم #Data Structures and Algorithms Using C مليء بالأخطاء من كل الألوان، عار عليهم فعلاً!
كتاب بديل عن الكتاب السابق بلغة ++C بدلاً من لغة Java هو
++Data Structures and Algorithms in C، وهو يدرس في أغلب الجامعات في منطقتنا وكثير من جامعات العالم، الكتاب بسيط الفهم وقوي المعلومات وهو كتاب جيد للبدء في تعلم الخوارزميات مثله مثل كتاب جافا السابق.

بالإضافة إلى “معجم الخوارزميات”، أي كتاب Introduction to Algorithms، هناك العديد من المواقع التي تلعب دور “دليل” لسرد تفاصيل عن الخوارزميات وبنى المعطيات المختلفة، أذكر بعضها:

من المواضيع الهامة عند دراسة الخوارزميات هو فهم الطريقة المسماة Big O notation المستخدمة لتحليل تعقيد الخوارزميات مما يسمح بمقارنة سرعة تنفيذها في الحالات المختلفة، من أبسط ما وجدته عن شرح هذه الطريقة هو A Beginners’ Guide to Big O Notation الذي يشرح الأمر باستخدام كودات بسيطة جداً، و Plain English Explanation of Big O Notation وهو شرح يعتمد على اللغة المجردة السهلة في إيصال الفكرة.
طبعاً ستجد الكثير من الحديث عن الـO الكبيرة هذه في “معجم الخوارزميات” الضخم الذي ذكرناه مراراً اليوم، لذلك تأكد من فهم مبادئها قبل البدء بالخوض في الكتاب.

About these ads

2 تعليقات to “إنه لطريق طويل، ولكنك بدأته، وعليك أن تكمله، لا مجال للتراجع – الجزء الرابع – مدخل إلى الخوارزميات وبنى المعطيات”

  1. wsami Says:

    السلام عليك أخي

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

    أخوك سامي

  2. Ongoing Says:

    بسم الله الرحمن الرحيم
    السلام عليكم ورحمة الله وبركاته
    جزاك الله خيرا ونور حياتك كما نورتنا بمعلوماتك الجميلة.
    ان شاء الله نستمر معا في اكمال الطريق.

أضف تعليق

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

You are commenting using your WordPress.com account. تسجيل خروج   / تغيير )

Twitter picture

You are commenting using your Twitter account. تسجيل خروج   / تغيير )

Facebook photo

You are commenting using your Facebook account. تسجيل خروج   / تغيير )

Google+ photo

You are commenting using your Google+ account. تسجيل خروج   / تغيير )

Connecting to %s


تابع

Get every new post delivered to your Inbox.

%d مدونون معجبون بهذه: