این دوره در مورد ساختار داده ها، الگوریتم ها و نمودارها است. ما می خواهیم مشکلات را در زبان برنامه نویسی پایتون پیاده سازی کنیم. من به شدت توصیه میکنم این ساختارهای داده و الگوریتمها را چندین بار به تنهایی تایپ کنید تا درک خوبی از آن داشته باشید.
پس در این دوره قرار است چه چیزی یاد بگیرید؟
بخش 1:
تنظیم محیط
تفاوتهای بین ساختارهای داده و انواع دادههای انتزاعی
بخش 2 - آرایه ها:
ساختار داده آرایه چیست
سوالات مصاحبه مرتبط را آرایه می کند
بخش 3 - لیست های پیوندی:
ساختار داده لیست پیوندی و اجرای آن
لیستهای دارای پیوند دوگانه
لیست های پیوندی سوالات مصاحبه مرتبط
بخش 4 - پشته ها و صف ها:
پشته ها و صف ها
پشته حافظه و حافظه پشته
چگونه حافظه پشته دقیقاً کار می کند؟
سوالات مصاحبه مربوط به پشته و صف
بخش 5 - درختان جستجوی دودویی:
درخت جستجوی دودویی چیست
کاربردهای عملی درختان جستجوی باینری
مشکلات با درختان باینری
بخش 6 - درختان باینری متعادل (درختان AVL و درختان قرمز-سیاه):
چرا از درختان جستجوی باینری متعادل استفاده کنیم
درختان AVL
درختان قرمز-سیاه
بخش 7 - صف های اولویت دار و انبوه:
صف های اولویت دار چیست
هیپ چیست
نمای کلی الگوریتم دستهبندی
بخش 8 - هش کردن و دیکشنری ها:
آرایه ها و واژه نامه های انجمنی
نحوه دستیابی به زمان اجرای ثابت O(1) با هش
بخش 9 - پیمایش نمودار:
الگوریتم های اصلی نمودار
عرض اول
جستجوی اول در عمق
تجسم حافظه پشته برای DFS
بخش 10 - مسائل کوتاهترین مسیر (الگوریتمهای Dijkstra و Bellman-Ford):
الگوریتم های کوتاه ترین مسیر
الگوریتم Dijkstra
الگوریتم بلمن-فورد
چگونه فرصت های آربیتراژ در FOREX را شناسایی کنیم؟
بخش 11 - درختان پوشاننده (رویکردهای کروسکال و پریم):
درختان پوشاننده چه هستند
ساختار داده union-find چیست و چگونه از آن استفاده کنیم
تئوری و اجرای الگوریتم کروسکال نیز
الگوریتم پریم
بخش 12 - الگوریتم های جستجوی زیر رشته ای
الگوریتم های جستجوی زیر رشته ای چیست و چرا در نرم افزارهای دنیای واقعی مهم هستند
الگوریتم جستجوی زیر رشته ای brute-force
هش کردن و روش Rabin-Karp
الگوریتم جستجوی زیر رشته ای Knuth-Morris-Pratt
الگوریتم جستجوی زیر رشته Z (الگوریتم Z)
پیاده سازی در پایتون
بخش 13 - چرخه های همیلتونی (مشکل فروشنده دوره گرد)
چرخههای همیلتونی در نمودارها
مشکل فروشنده دوره گرد چیست؟
نحوه استفاده از Backtracking برای حل مشکل
رویکردهای فراابتکاری برای تقویت الگوریتم ها
بخش 14 - الگوریتم های مرتب سازی
الگوریتم های مرتب سازی
مرتبسازی حبابی، مرتبسازی انتخابی و مرتبسازی درج
مرتبسازی سریع و مرتبسازی ادغام شده
الگوریتمهای مرتبسازی غیرمقایسهای
شمارش مرتبسازی و مرتبسازی ریشه
بخش 15 - تجزیه و تحلیل الگوریتم ها
نحوه اندازه گیری زمان اجرای الگوریتم ها
تحلیل زمان اجرا با نمادهای O بزرگ (ordo)، Ω بزرگ (امگا) و θ بزرگ (تتا)
کلاس های پیچیدگی
الگوریتم های چند جمله ای (P) و چند جمله ای غیر قطعی (NP)
O(1)، O(logN)، O(N) و چندین پیچیدگی زمان اجرا دیگر
در قسمت اول دوره، ما در مورد ساختارهای داده پایه مانند لیست های پیوندی، پشته ها، صف ها، درختان جستجوی باینری، پشته ها و برخی از موارد پیشرفته مانند درختان AVL و درختان قرمز-مشکی آشنا می شویم. بخش مربوط به الگوریتمهای گراف مانند درختان پوشا، الگوریتمهای کوتاهترین مسیر و پیمایش گراف خواهد بود. ما سعی خواهیم کرد هر ساختار داده را تا حد امکان بهینه کنیم.
در هر فصل میخواهم در مورد پسزمینه نظری هر الگوریتم یا ساختار داده صحبت کنم، سپس میخواهیم کد را گام به گام در پایتون بنویسیم.
بیشتر الگوریتم های پیشرفته به شدت بر این موضوعات متکی هستند، بنابراین قطعاً ارزش درک اصول اولیه را دارد. این اصول را می توان در چندین زمینه استفاده کرد: در بانکداری سرمایه گذاری، هوش مصنوعی یا الگوریتم های تجارت الکترونیک در بازار سهام. موسسات تحقیقاتی عمدتاً از پایتون به عنوان یک زبان برنامه نویسی استفاده می کنند: کتابخانه های زیادی از یادگیری ماشین گرفته تا شبکه های پیچیده برای عموم در دسترس است.
از اینکه به دوره پیوستید متشکریم، بیایید شروع کنیم!
مهندس نرم افزار
نمایش نظرات