مربع الأدوات الخوارزمية
Offered By: University of California, San Diego via Coursera
Course Description
Overview
ستغطي هذه الدورة التقنيات الخوارزمية الأساسية والأفكار الخاصة بالمسائل الحسابية والتي تظهر بشكل متكرر في التطبيقات العملية: الفرز والبحث، فرق تسد، الخوارزميات الجشعة، البرمجة الديناميكية. ستتعلم أيضًا الكثير من النظريات: ستتعلم طريقة فرز البيانات وكيف تساعد في البحث؛ طريقة تقسيم مسألة كبيرة إلى أجزاء وحلها بالاستدعاء الذاتي؛ متى يكون من المنطقي المتابعة بجشع؛ طريقة استخدام البرمجة الديناميكية في دراسات الجينوم. ستتدرَّب في هذه الدورة على حل المسائل الحسابية، وتصميم خوارزميات جديدة، وتنفيذ الحلول بكفاءة (ومن ثمَّ ستعمل في أقل من ثانية).
Syllabus
- التحديات البرمجية
- مرحبًا بك في الوحدة الأولى من هياكل البيانات والخوارزميات! سنقدم هنا نظرة عامة عن مكان استخدام الخوارزميات وهياكل البيانات (تنويه: في كل مكان) وسنطلعك على بعض الأمثلة للتحديات البرمجية. تمثل التحديات البرمجية جزءًا مهمًا (وغالبًا الأصعب!) من هذا التخصص، لأنَّ الطريقة الوحيدة لفهم خوارزمية ما هي بواسطة تنفيذها. إنَّ كتابة برامج صحيحة وفعَّالة أمر صعب، رجاء لا تندهش إن لم تعمل كما خططت؛ فبرامجنا الأولى لم تعمل أيضًا! سنساعدك خلال رحلتك في هذا التخصص من خلال عرض كيفية تنفيذ أول تحدياتك البرمجية. وسنقدم لك أيضًا تقنيات الاختبار التي ستساعد في زيادة فرصك في اجتياز المهمات من أول محاولة. في حال كان برنامجك لا يعمل على النحو المنشود، سنريك كيفية إصلاحه، حتى وإن كنت لا تعلم أي الاختبارات فشل فيها تنفيذك.
- التمهيد للتعرف على الخوارزميات
- ستتعلم في هذه الوحدة أنَّ البرامج القائمة على خوازميات فعَّالة يمكنها حل نفس المسألة أسرع بمليارات المرات من البرامج القائمة على الخوارزميات الساذجة. ستتعلم كيفية تقدير وقت تنفيذ خوارزمية وذاكرتها من دون حتى تنفيذها. بتسلحك بهذه المعرفة، ستكون قادرًا على مقارنة الخوارزميات المتنوعة، واختيار أكثرها فعالية، وأخيرًا تنفيذها باعتبارها تحديات برمجية لدينا!
- الخوارزميات الجشعة
- ستتعلم في هذه الوحدة عن فئة الخوارزميات التي تبدو ساذجة ولكنها قوية وتسمى بالخوارزميات الجشعة. بعد أن تتعلم الفكرة الرئيسة وراء الخوارزميات الجشعة، قد تشعر أنها تمثل الحل الخوارزمي السحري الذي يمكن تطبيقه لحل تقريبًا جميع التحديات البرمجية في هذه الدورة. لكن كن حذرًا: فهذه الفكرة البدهية نادرًا ما تعمل أثناء الممارسة، مع بعض الاستثاءات التي سنغطيها! لهذا السبب، من المهم أن تثبت أن خوارزمية ما من الخوارزميات الجشعة تنتج دائمًا الحل الأمثل قبل استخدامها. في نهاية هذه الوحدة، سنختبر حدسك وذوقك نحو الخوارزميات بواسطة تقديم عدة تحديات برمجية.
- فرق تسد
- ستتعلم في هذه الوحدة تقنية خوارزمية قوية تُسمى فرق تسد. وفقًا لهذه التقنية، ستشاهد كيف تبحث في قواعد البيانات الضخمة أسرع بملايين المرات من استخدام البحث الخطي الساذج. حتى أنَّك ستعرف أن الطريقة العادية لضرب الأرقام (التي تعلمتها في المدرسة الابتدائية) هي أبعد ما تكون عن كونها أسرع طريقة! سنطبق بعد ذلك تقنية فرق تسد لتصميم خوارزميتين فعّالتين (الفرز بالدمج والفرز السريع) لفرز القوائم الضخمة، وهي مسألة لها تطبيقات عديدة في الممارسة العملية. أخيرًا، سنبين أنَّ هاتين الخوارزميتين مثاليتان، أي لا يمكن لخوارزمية أخرى الفرز أسرع منهما!
- البرمجة الديناميكية 1
- في هذه الوحدة الأخيرة من الدورة ستتعلم التقنية الخوارزمية القوية لحل العديد من مشاكل التحسين والمسماة بالبرمجة الديناميكية. اتضح أنَّ البرمجة الديناميكية تستطيع حل العديد من المسائل التي تفلت من الاستراتيجيات الجشعة أو فرق تسد. توجد تطبيقات لا تحصى للبرمجة الديناميكية في الممارسة العملية: بدءًا من زيادة عائدات الإعلانات من محطة تلفزيونية إلى الحد الأقصى، إلى البحث عن صفحات متشابهة على الإنترنت، ووصولًا إلى العثور على الجينات (المسألة التي يحتاج فيها علماء الأحياء إلى العثور على أقل عدد من الطفرات لتحويل جين ما إلى آخر). ستتعلم كيف أنَّ نفس الفكرة تساعد في تصحيح الأخطاء الهجائية وعرض الفروقات بين نسختين لنفس النص.
- البرمجة الديناميكية الثانية
- في هذه الوحدة، نستمر في التدرّب على تنفيذ حلول البرمجة الديناميكية.
Taught by
Michael Levin, Daniel M Kane, Alexander S. Kulikov, Pavel Pevzner and Neil Rhodes
Tags
Related Courses
4ever-clojureIndependent Algorithms for DNA Sequencing
Johns Hopkins University via Coursera Advanced Data Structures, RSA and Quantum Algorithms
University of Colorado Boulder via Coursera Conception et mise en œuvre d'algorithmes.
École Polytechnique via Coursera Algorithms
Stanford University via Coursera