آموزش بازگشت، بک ترک و برنامه نویسی پویا در پایتون

Recursion, Backtracking and Dynamic Programming in Python

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
توضیحات دوره: آموزش برنامه نویسی رقابتی، روش های بازگشتی، عقب نشینی، روش های تقسیم و غلبه و برنامه نویسی پویا در پایتون. پایتون

این دوره در مورد مفاهیم اساسی مسائل الگوریتمی با تمرکز بر بازگشت، عقبگرد، برنامه نویسی پویا و رویکردهای تقسیم و غلبه است. تا جایی که به من مربوط می شود، امروزه این تکنیک ها بسیار مهم هستند، الگوریتم ها را می توان در چندین زمینه از مهندسی نرم افزار گرفته تا بانکداری سرمایه گذاری یا R D استفاده کرد (و کاربردهای متعددی دارد).

بخش 1 - بازگشت

  • روش های بازگشتی و بازگشتی چیستند

  • نمایش کلی حافظه پشته و حافظه پشته

  • سرریز پشته چیست؟

  • اعداد فیبوناچی

  • تابع عاملی

  • مشکل برج هانوی

بخش 2 - الگوریتم های جستجو

  • رویکرد جستجوی خطی

  • الگوریتم جستجوی دودویی

بخش 3 - الگوریتم های انتخاب

  • الگوریتم های انتخاب چیست؟

  • الگوریتم Hoare

  • چگونه آمار مرتبه k در زمان اجرای خطی O(N) را پیدا کنیم؟

  • الگوریتم انتخاب سریع

  • الگوریتم میانه میانه

  • مشکل منشی

بخش 4 - مشکلات دستکاری بیتی

  • اعداد باینری

  • عملگرهای منطقی و عملگرهای شیفت

  • بررسی اعداد زوج و فرد

  • مشکل طول بیت

  • تکثیر دهقانان روسی

بخش 5 - رهگیری

  • بازگشت چیست؟

  • مشکل n-queens

  • مشکل چرخه هامیلتونی

  • مشکل رنگ آمیزی

  • مشکل تور شوالیه

  • مشکل پیچ و خم

  • مشکل سودوکو

بخش 6 - برنامه نویسی دینامیک

  • برنامه نویسی پویا چیست؟

  • مشکل کوله پشتی

  • مشکل برش میله

  • مشکل جمع زیر مجموعه

  • الگوریتم Kadane

  • طولانی ترین مشکل متداول فرعی (LCS)

بخش 7 - بسته بندی بهینه

  • بسته بندی بهینه چیست؟

  • مشکل بسته بندی مخزن

بخش 8 - رویکردهای تقسیم و تسخیر

  • رویکرد تفرقه بینداز و حکومت کن چیست؟

  • برنامه نویسی پویا و روش تقسیم و غلبه

  • چگونه می توان به مرتب سازی در O(NlogN) با مرتب سازی ادغام دست یافت؟

  • مشکل نزدیکترین جفت نقطه

بخش 9 - الگوریتم های جستجوی زیر رشته ای

  • الگوریتم های جستجوی زیر رشته

  • جستجوی brute-force substring

  • الگوریتم جستجوی زیر رشته Z

  • الگوریتم و هش Rabin-Karp

  • الگوریتم جستجوی زیر رشته ای Knut-Morris-Pratt (KMP)

بخش 10 - سؤالات متداول مصاحبه

  • برترین سوالات مصاحبه (گوگل، فیسبوک و آمازون)

  • مشکل آناگرام

  • مشکل پالیندروم

  • مشکل بازگشت عدد صحیح

  • مشکل پرچم ملی هلند

  • مشکل آب باران به دام افتادن

بخش 11 - تجزیه و تحلیل الگوریتم ها

  • نحوه اندازه گیری زمان اجرای الگوریتم ها

  • تحلیل زمان اجرا با نمادهای O بزرگ (ordo)، Ω بزرگ (امگا) و θ بزرگ (تتا)

  • کلاس های پیچیدگی

  • الگوریتم های چند جمله ای (P) و چند جمله ای غیر قطعی (NP)

در هر بخش در مورد پیشینه نظری همه این الگوریتم‌ها صحبت خواهیم کرد، سپس می‌خواهیم این مشکلات را با هم از ابتدا در پایتون پیاده‌سازی کنیم.

از اینکه به دوره پیوستید متشکریم، بیایید شروع کنیم!


سرفصل ها و درس ها

معرفی Introduction

  • معرفی Introduction

راه اندازی محیط Environment Setup

  • نصب پایتون Installing Python

  • در حال نصب PyCharm Installing PyCharm

بازگشت Recursion

  • حافظه پشته و پشته چیست؟ What are stack and heap memory?

  • پشته حافظه و شبیه سازی حافظه پشته Stack memory and heap memory simulation

  • آزمون پشته حافظه و حافظه Heap Stack Memory and Heap Memory Quiz

  • بازگشت ( فراخوانی تابع بازگشتی) چیست؟ What is recursion (recursive function call)?

  • اجرای بازگشت سر و دم Head and tail recursion implementation

  • حافظه بازگشتی و پشته ای (سرریز پشته) Recursion and stack memory (stack overflow)

  • بهینه سازی بازگشتی در پایتون Recursion optimization in Python

  • آزمون بازگشت Recursion Quiz

  • مشکل فاکتوریل - با بازگشت سر Factorial problem - with head recursion

  • مشکل فاکتوری - تجسم پشته Factorial problem - visualizing the stack

  • تبدیل یک بازگشت سر به یک بازگشت دم Transforming a head recursion into a tail recursion

  • مشکل اعداد فیبوناچی - با بازگشت سر Fibonacci numbers problem - with head recursion

  • اعداد فیبوناچی - تجسم حافظه پشته Fibonacci numbers - visualizing the stack memory

  • اعداد فیبوناچی با بازگشت دم Fibonacci-numbers with tail recursion

  • راه حل - اعداد فیبوناچی با کد بازگشتی دنباله Solution - Fibonacci-numbers with tail recursion code

  • معرفی برج های هانوی Towers of Hanoi introduction

  • اجرای برج هانوی Towers of Hanoi implementation

  • برج های هانوی - تجسم پشته Towers of Hanoi - visualizing the stack

  • حل بازگشت با تکرار Solving recursion with iteration

  • راه حل - حل بازگشت با تکرار Solution - solving recursion with iteration

  • الگوریتم اقلیدسی چیست؟ What is the Euclidean algorithm?

  • اجرای الگوریتم اقلیدسی Euclidean algorithm implementation

  • بازگشت و تکرار بازبینی شد Recursion and iteration revisited

  • آزمون مشکلات بازگشتی Recursive Problems Quiz

الگوریتم های جستجو Search Algorithms

  • جستجوی خطی چیست؟ What is linear search?

  • اجرای جستجوی خطی Linear search implementation

  • جستجوی خطی با بازگشت Linear search with recursion

  • راه حل - جستجوی خطی با بازگشت Solution - linear search with recursion

  • جستجوی دودویی (لگاریتمی) چیست؟ What is binary (logarithmic) search?

  • اجرای جستجوی باینری Binary search implementation

  • آزمون الگوریتم های جستجو Search Algorithms Quiz

الگوریتم های انتخاب Selection Algorithms

  • مقدمه الگوریتم های انتخاب Selection algorithms introduction

  • مقدمه انتخاب سریع - الگوریتم Hoare Quickselect introduction - Hoare's algorithm

  • تجسم انتخاب سریع Quickselect visualization

  • مسابقه انتخاب سریع Hoare's Hoare's Quickselect Quiz

  • اجرای سریع انتخاب Quickselect implementation

  • تمرین - مرتب سازی با انتخاب Exercise - sorting with selection

  • راه حل - مرتب سازی با انتخاب Solution - sorting with selection

  • مشکل پیوت ها چیست؟ What the problem with pivots?

  • آزمون محوری الگوریتم های انتخاب Selection Algorithms Pivoting Quiz

  • انتخاب پیشرفته - میانه میانه ها، انتخاب درونی Advanced selection - median of medians, introselect

  • اجرای الگوریتم میانه میانه ها Median of medians algorithm implementation

  • الگوریتم Introselect - قدرت ترکیب الگوریتم ها Introselect algorithm - power of combining algorithms

  • انتخاب آنلاین - مشکل منشی Online selection - the secretary problem

  • آزمون الگوریتم های انتخاب Selection Algorithms Quiz

مشکلات دستکاری بیت Bit Manipulation Problems

  • نمایش دودویی اعداد Binary representation of numbers

  • عملگرهای منطقی Logical operators

  • عملگرهای شیفت باینری Binary shift operators

  • پیدا کردن طول بیت یک عدد صحیح Finding the bit length of an integer

  • بررسی اعداد زوج و فرد Checking even and odd numbers

  • مشکل دهقانان روسیه Russian peasant problem

  • ضرب دهقانی روسی با بازگشت Russian peasant multiplication with recursion

عقب نشینی Backtracking

  • عقب نشینی چیست؟ What is backtracking?

  • جستجوی بی رحمانه و عقب نشینی Brute-force search and backtracking

  • آزمون عقبگرد Backtracking Quiz

  • معرفی مسئله N-queens N-queens problem introduction

  • درخت جستجو چیست؟ What is the search tree?

  • پیاده سازی مسئله N-queens I N-queens problem implementation I

  • اجرای مسئله N-queens II N-queens problem implementation II

  • مشکل N-queens و تجسم حافظه پشته N-queens problem and stack memory visualization

  • چگونه با مشکل N-queens یک میلیون دلار کسب کنیم؟ How to earn $1 million with N-queens problem?

  • معرفی مسیرها (و چرخه ها) همیلتونی Hamiltonian paths (and cycles) introduction

  • تصویر چرخه هامیلتونی Hamiltonian cycle illustration

  • پیاده سازی مسیر همیلتونی I Hamiltonian path implementation I

  • اجرای مسیر همیلتونی II Hamiltonian path implementation II

  • یافتن چرخه های همیلتونی Finding Hamiltonian cycles

  • راه حل - یافتن چرخه هامیلتونی Solution - finding Hamiltonian cycle

  • معرفی مشکل رنگ آمیزی Coloring problem introduction

  • تجسم مشکل رنگ آمیزی Coloring problem visualization

  • اجرای مشکل رنگ آمیزی Coloring problem implementation

  • معرفی تور نایت Knight's tour introduction

  • اجرای تور نایت I Knight's tour implementation I

  • اجرای تور نایت II Knight's tour implementation II

  • معرفی مشکل ماز Maze problem introduction

  • پیاده سازی مشکل ماز Maze problem implementation

  • مشکل ماز و تجسم حافظه پشته Maze problem and stack memory visualization

  • معرفی سودوکو Sudoku introduction

  • اجرای سودوکو I Sudoku implementation I

  • اجرای سودوکو II Sudoku implementation II

  • اجرای سودوکو III Sudoku implementation III

  • مشکل عقب نشینی چیست؟ What is the problem with backtracking?

  • امتحان مشکلات عقبگرد Backtracking Problems Quiz

برنامه نویسی پویا Dynamic Programming

  • مقدمه برنامه نویسی پویا Dynamic programming introduction

  • آزمون برنامه نویسی پویا Dynamic Programming Quiz

  • معرفی اعداد فیبوناچی Fibonacci numbers introduction

  • پیاده سازی اعداد فیبوناچی Fibonacci numbers implementation

  • معرفی مشکل کوله پشتی Knapsack problem introduction

  • مثال مشکل کوله پشتی Knapsack problem example

  • مشکل کوله پشتی با بازگشت (درخت بازگشتی) Knapsack problem with recursion (recursion tree)

  • مشکل کوله پشتی با بازگشت Knapsack problem with recursion

  • راه حل - مشکل کوله پشتی با بازگشت Solution - knapsack problem with recursion

  • اجرای مشکل کوله پشتی Knapsack problem implementation

  • معرفی مشکل برش میله Rod cutting problem introduction

  • مثال مشکل برش میله Rod cutting problem example

  • اجرای مشکل برش میله Rod cutting problem implementation

  • مقدمه مسئله جمع زیر مجموعه Subset sum problem introduction

  • مثال مسئله جمع زیر مجموعه Subset sum problem example

  • اجرای جمع زیر مجموعه Subset sum implementation

  • حداکثر مشکل زیرآرایه (الگوریتم Kadane) Maximum subarray problem (Kadane's algorithm)

  • طولانی ترین معرفی متداول بعدی Longest common subsequence introduction

  • طولانی ترین اجرای متداول متوالی Longest common subsequence implementation

  • طولانی ترین دنباله مشترک با بازگشت (درخت بازگشت) Longest common subsequence with recursion (recursion tree)

  • آزمون برنامه نویسی پویا Dynamic Programming Quiz

مشکل بسته بندی بهینه Optimal Packing Problem

  • معرفی مشکل بسته بندی سطل زباله Bin packing problem introduction

  • اجرای مشکل بسته بندی بن Bin packing problem implementation

  • مشکل بسته بندی سطل - مقاله مفید Bin packing problem - useful article

  • مسابقه بسته بندی بن Bin Packing Quiz

الگوریتم های تقسیم و غلبه Divide and Conquer Algorithms

  • رویکردهای تفرقه بیانداز و حکومت کن چیست؟ What are divide-and-conquer approaches?

  • مسابقه تقسیم و پیروز Divide and Conquer Quiz

  • جستجوی باینری دوباره مورد بازدید قرار گرفت Binary search revisited

  • نظریه مرتب سازی ادغام Merge sort theory

  • اجرای مرتب سازی ادغام Merge sort implementation

  • ادغام مرتب سازی و تجسم حافظه پشته Merge sort and stack memory visualization

  • ادغام مرتب سازی به ترتیب نزولی Merge sort in descending order

  • راه حل - موارد را به ترتیب نزولی مرتب کنید Solution - sort the items in descending order

  • مقدمه مسئله جفت امتیاز را می بندد I Closes pair of points problem introduction I

  • مقدمه مسئله زوج نقطه می بندد II Closes pair of points problem introduction II

  • اجرای مشکل زوج نقطه را می بندد Closes pair of points problem implementation

  • نزدیکترین جفت امتیاز - مقاله مفید Closest pair of points - useful article

  • مسابقه نزدیکترین جفت امتیاز Closest Pair of Points Quiz

الگوریتم های جستجوی زیر رشته ای Substring Search Algorithms

  • مقدمه جستجوی Brute-Force Brute-force search introduction

  • اجرای جستجوی Brute-Force Brute-force search implementation

  • آزمون جستجوی ساده زیر رشته ای Naive Substring Search Quiz

  • معرفی الگوریتم رابین-کارپ Rabin-Karp algorithm introduction

  • پیاده سازی الگوریتم رابین-کارپ Rabin-Karp algorithm implementation

  • مسابقه جستجوی زیر رشته Rabin-Karp Rabin-Karp Substring Search Quiz

  • معرفی الگوریتم Knuth-Morris-Pratt Knuth-Morris-Pratt algorithm introduction

  • ساخت جدول مسابقه جزئی Constructing the partial match table

  • اجرای الگوریتم Knuth-Morris-Pratt Knuth-Morris-Pratt algorithm implementation

  • آزمون الگوریتم Knuth-Morris-Pratt Knuth-Morris-Pratt Algorithm Quiz

  • معرفی الگوریتم Z Z algorithm introduction

  • تصویر الگوریتم Z Z algorithm illustration

  • پیاده سازی الگوریتم Z Z algorithm implementation

  • آزمون الگوریتم Z Z Algorithm Quiz

  • مقایسه الگوریتم های جستجوی زیر رشته ای Substring search algorithms comparison

  • کاربردهای جستجوی زیر رشته ای Applications of substring search

سوالات متداول مصاحبه (آمازون، فیس بوک و گوگل) COMMON INTERVIEW QUESTIONS (Amazon, Facebook and Google)

  • معکوس کردن یک نمای کلی آرایه در محل Reversing an array in-place overview

  • معکوس کردن یک راه حل آرایه در محل Reversing an array in-place solution

  • بررسی اجمالی مشکل پالیندروم Palindrome problem overview

  • راه حل مشکل پالیندروم Palindrome problem solution

  • بررسی اجمالی مشکل برگشت عدد صحیح Integer reversion problem overview

  • راه حل مشکل بازگشت اعداد صحیح Integer reversion problem solution

  • نمای کلی مشکل آناگرام Anagram problem overview

  • حل مشکل آناگرام Anagram problem solution

  • بررسی اجمالی مشکل پرچم ملی هلند Dutch national flag problem overview

  • نظریه مشکل پرچم ملی هلند Dutch national flag problem theory

  • راه حل مشکل پرچم ملی هلند Dutch national flag problem solution

  • بررسی اجمالی مشکل آب باران به دام انداختن Trapping rain water problem overview

  • تئوری مشکل آب باران به دام انداختن Trapping rain water problem theory

  • حل مشکل آب باران به دام انداختن Trapping rain water problem solution

مراحل بعدی Next Steps

  • مراحل بعدی Next Steps

### ضمیمه - درس تصادف نظریه پیچیدگی ### ### APPENDIX - COMPLEXITY THEORY CRASH COURSE ###

  • چگونه زمان اجرای الگوریتم ها را اندازه گیری کنیم؟ How to measure the running times of algorithms?

  • تصویر نظریه پیچیدگی Complexity theory illustration

  • نمادهای پیچیدگی - ordo بزرگ (O). Complexity notations - big (O) ordo

  • نمادهای پیچیدگی - Ω بزرگ (امگا) Complexity notations - big Ω (omega)

  • نمادهای پیچیدگی - تتا بزرگ (θ). Complexity notations - big (θ) theta

  • زمان اجرای الگوریتم Algorithm running times

  • کلاس های پیچیدگی Complexity classes

  • تجزیه و تحلیل الگوریتم ها - حلقه ها Analysis of algorithms - loops

برنامه تصویرسازی الگوریتم رایگان Algorhyme FREE Algorithms Visualizer App

  • برنامه تجسم الگوریتم ها Algorithms Visualization App

  • الگوریتم - الگوریتم ها و ساختارهای داده Algorhyme - Algorithms and Data Structures

مواد درسی (دانلود) Course Materials (DOWNLOADS)

  • مطالب دوره (اسلایدها و کد منبع) Course materials (slides and source code)

نمایش نظرات

نظری ارسال نشده است.

آموزش بازگشت، بک ترک و برنامه نویسی پویا در پایتون
خرید اشتراک و دانلود خرید تکی و دانلود | 160,000 تومان (5 روز مهلت دانلود) زمان تقریبی آماده سازی لینک دانلود این دوره آموزشی حدود 5 تا 24 ساعت می باشد.
جزییات دوره
15.5 hours
141
Udemy (یودمی) udemy-small
01 بهمن 1401 (آخرین آپدیت رو دریافت می‌کنید، حتی اگر این تاریخ بروز نباشد.)
9,805
4.6 از 5
دارد
دارد
دارد

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Holczer Balazs Holczer Balazs

مهندس نرم افزار

Udemy (یودمی)

یودمی یکی از بزرگ‌ترین پلتفرم‌های آموزشی آنلاین است که به میلیون‌ها کاربر در سراسر جهان امکان دسترسی به دوره‌های متنوع و کاربردی را فراهم می‌کند. این پلتفرم امکان آموزش در زمینه‌های مختلف از فناوری اطلاعات و برنامه‌نویسی گرفته تا زبان‌های خارجی، مدیریت، و هنر را به کاربران ارائه می‌دهد. با استفاده از یودمی، کاربران می‌توانند به صورت انعطاف‌پذیر و بهینه، مهارت‌های جدیدی را یاد بگیرند و خود را برای بازار کار آماده کنند.

یکی از ویژگی‌های برجسته یودمی، کیفیت بالای دوره‌ها و حضور استادان مجرب و با تجربه در هر حوزه است. این امر به کاربران اعتماد می‌دهد که در حال دریافت آموزش از منابع قابل اعتماد و معتبر هستند و می‌توانند به بهترین شکل ممکن از آموزش‌ها بهره ببرند. به طور خلاصه، یودمی به عنوان یکی از معتبرترین و موثرترین پلتفرم‌های آموزشی آنلاین، به افراد امکان می‌دهد تا به راحتی و با کیفیت، مهارت‌های مورد نیاز خود را ارتقا دهند و به دنبال رشد و پیشرفت شغلی خود باشند.