آموزش Recursion، Backtracking و Dynamic Programming در جاوا

Recursion, Backtracking and Dynamic Programming in Java

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

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

بخش 1 - بازگشت

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

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

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

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

  • تابع عاملی

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

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

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

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

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

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

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

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

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

  • مشکل منشی

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

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

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

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

  • مشکل طول بیت

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

بخش 5 - رهگیری

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

  • مشکل n-queens

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

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

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

  • بازی سودوکو

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

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

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

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

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

  • الگوریتم کادان (حداکثر زیرآرایه)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • مشکل افتادن تخم مرغ

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

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

در نهایت، شما می توانید در مورد رایج ترین سؤالات مصاحبه (گوگل، مایکروسافت، آمازون و غیره) بیاموزید

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


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

معرفی Introduction

  • معرفی Introduction

بازگشت Recursion

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

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

  • آزمون حافظه Memory Quiz

  • معرفی بازگشت Recursion introduction

  • اضافه کردن اعداد: تکرار در مقابل بازگشت Adding numbers: iteration vs recursion

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

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

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

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

  • تابع فاکتوریل - بازگشت سر Factorial function - head recursion

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

  • تابع فاکتوریال - بازگشت دم Factorial function - tail recursion

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

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

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

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

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

  • اجرای مشکل برج هانوی Tower of Hanoi problem implementation

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

  • تمرین - حل بازگشت با تکرار Exercise - solving recursion with iteration

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

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

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

  • تکرار و بازگشت دوباره بازبینی شد Iteration and recursion revisited

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

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

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

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

  • تمرین - جستجوی خطی با بازگشت Exercise - linear search with recursion

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

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

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

  • امتحان جستجو Search Quiz

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

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

  • مقدمه انتخاب سریع - الگوریتم Hoare Quickselect introduction - Hoare 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 algorithm

  • ترکیب الگوریتم ها - الگوریتم انتخاب درونی Combining algorithms - introselect algorithm

  • انتخاب آنلاین - مشکل منشی 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

  • مقدمه عقبگرد Backtracking introduction

  • جستجوی بی رحمانه و عقب نشینی 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 cycle implementation I

  • اجرای چرخه هامیلتونی II Hamiltonian cycle implementation II

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

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

  • اجرای مسئله رنگ آمیزی I Coloring problem implementation I

  • اجرای مسئله رنگ آمیزی II Coloring problem implementation II

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

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

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

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

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

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

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

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

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

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

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

  • مشکل NP-complete چیست؟ What is the issue with NP-complete problems?

  • امتحان مشکلات عقبگرد 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 implementation

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

  • تمرین - اجرای بازگشتی Exercise - recursive implementation

  • راه حل - پیاده سازی بازگشتی Solution - recursive implementation

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

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

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

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

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

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

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

  • معرفی مشکل طولانی ترین دنباله متداول (LCS). Longest common subsequence (LCS) problem introduction

  • پیاده سازی طولانی ترین دنباله متداول (LCS). Longest common subsequence (LCS) implementation

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

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

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

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

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

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

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

روشهای تفرقه بینداز و غلبه کن Divide and Conquer Methods

  • رویکردهای تفرقه بیانداز و حکومت کن چیست؟ 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

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

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

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

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

  • نزدیکترین جفت اجرای نقاط Closest pair of points implementation

  • بسته های جفت امتیاز - مقاله مفید Closes pair of points - useful article

  • مسابقه زوج امتیاز را می بندد Closes Pair of Points Quiz

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

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

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

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

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

  • بررسی اجمالی مشکل دو تخم مرغ The two eggs problem overview

  • حل مشکل دو تخم مرغ I Two eggs problem solution I

  • راه حل مشکل دو تخم مرغ II Two eggs problem solution II

  • موارد تکراری در نمای کلی مشکل آرایه Duplicates in an array problem overview

  • تکرار در راه حل مشکل آرایه Duplicates in an array problem solution

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

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

  • بررسی اجمالی مشکل زیرآرایه بزرگترین جمع Largest sum subarray problem overview

  • راه حل مشکل زیرآرایه بزرگ ترین مجموع Largest sum subarray 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

  • مطالعه موردی - O(1) Case study - O(1)

  • مطالعه موردی - O(logN) Case study - O(logN)

  • مطالعه موردی - O(N) Case study - O(N)

  • مطالعه موردی - O(N*N) Case study - O(N*N)

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

  • الگوریم چیست؟ What is Algorhyme?

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

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

  • مواد درسی Course materials

نمایش نظرات

آموزش Recursion، Backtracking و Dynamic Programming در جاوا
جزییات دوره
14.5 hours
142
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
14,809
4.8 از 5
دارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Holczer Balazs Holczer Balazs

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