این دوره در مورد ساختار داده ها و الگوریتم ها است. ما میخواهیم مشکلات را در جاوا پیادهسازی کنیم، اما سعی میکنم تا حد امکان عمومی این کار را انجام دهم: بنابراین میتوان از هسته الگوریتمها در C++ یا Python استفاده کرد. این دوره تقریباً 12 ساعت طول می کشد. من به شدت توصیه میکنم این ساختارهای داده را چندین بار به تنهایی تایپ کنید تا درک خوبی از آن داشته باشید.
بخش 1 - تلاش ها
درختان پیشوند چیست ( تلاش )
عملیات اساسی: درج، مرتبسازی و تکمیل خودکار
طولانی ترین مشکل پیشوند رایج
برنامه های درخت پیشوند در شبکه (مسیریابی IP)
بخش 2 - درختان جستجوی سه تایی
مشکل تلاش ها چیست؟
درخت جستجوی سه تایی چیست
عملیات اساسی: درج و بازیابی
برنامه های آزمایشی (مسیریابی IP و بازی Boggle)
بخش 3 - الگوریتم های جستجوی زیر رشته ای
الگوریتم های جستجوی زیر رشته
جستجوی brute-force substring
الگوریتم جستجوی زیر رشته Z
الگوریتم و هش Rabin-Karp
الگوریتم جستجوی زیر رشته ای Knut-Morris-Pratt (KMP)
بخش 4 - رشته ها
رشته ها در برنامه نویسی جاوا
استخر ثابت رشته چیست؟
پیوندها و پسوندها
طولانی ترین مشکل پیشوند رایج
طولانی ترین مشکل رشته فرعی مکرر
تلاش های پسوندی و آرایه های پسوندی
بخش 5 - الگوریتم های مرتب سازی
الگوریتمهای مرتبسازی پایه
مرتبسازی حبابی و مرتبسازی انتخابی
مرتبسازی درج و مرتبسازی پوسته
مرتبسازی سریع و مرتبسازی ادغام شده
رویکردهای مبتنی بر مقایسه و غیرمقایسه
الگوریتمهای مرتبسازی رشتهای
مرتب سازی سطلی و مرتب سازی ریشه
بخش 6 - الگوریتم های فشرده سازی داده
فشرده سازی داده چیست
رمزگذاری طول اجرا
رمزگذاری هافمن
فشرده سازی و رفع فشار LZW
بخش 7 - تجزیه و تحلیل الگوریتم ها
نحوه اندازه گیری زمان اجرای الگوریتم ها
تحلیل زمان اجرا با نمادهای O بزرگ (ordo)، Ω بزرگ (امگا) و θ بزرگ (تتا)
کلاس های پیچیدگی
الگوریتم های چند جمله ای (P) و چند جمله ای غیر قطعی (NP)
O(1)، O(logN)، O(N) و چندین پیچیدگی زمان اجرا دیگر
ابتدا، ما در مورد درختهای پیشوند بحث میکنیم: برای مثال موتورهای جستجوی مدرن اغلب از این ساختارهای داده استفاده میکنند. وقتی در گوگل جستجو میکنید، به دلیل ساختار دادههای آزمایشی، یک ویژگی تکمیل خودکار وجود دارد. همچنین برای مرتبسازی خوب است: هشتبلها از عملیات مرتبسازی پشتیبانی نمیکنند، اما از سوی دیگر، سعی میکند پشتیبانی کند.
جستجوی زیر رشته ای یکی دیگر از زمینه های مهم علوم کامپیوتر است. شما در مورد الگوریتم Z یاد خواهید گرفت و ما در مورد روش brute-force و همچنین روش Rabin-Karp بحث خواهیم کرد.
فصل بعدی درباره مرتب سازی است. چگونه آرایه ای از اعداد صحیح، دوتایی، رشته ها یا اشیاء سفارشی را مرتب کنیم؟ میتوانیم این کار را با مرتبسازی حبابی، مرتبسازی درج، ادغام یا مرتبسازی سریع انجام دهیم. شما در مورد تئوری و همچنین اجرای دقیق این الگوریتم های مهم چیزهای زیادی خواهید آموخت.
آخرین سخنرانیها درباره فشردهسازی دادهها هستند: رمزگذاری طول اجرا، رمزگذاری هافمن و فشردهسازی LZW.
از اینکه به دوره پیوستید متشکریم، بیایید شروع کنیم!
مهندس نرم افزار
نمایش نظرات