مرورگر شما از این ویدیو پشتیبانی نمی کند.
نکته:
ممکن هست محتوای این صفحه بروز نباشد ولی دانلود دوره آخرین آپدیت می باشد.
نمونه ویدیوها:
(صرفا برای مشاهده نمونه ویدیو، ممکن هست نیاز به شکن داشته باشید.)
بارگزاری مجدد
توضیحات دوره:
به دوره جامع ساختار دادهها و الگوریتمها خوش آمدید! در این دوره، به بررسی اصول و تکنیکهای حیاتی میپردازیم که ستون فقرات علوم کامپیوتر و توسعه نرمافزار را تشکیل میدهند. این دوره جامع، سازماندهی، ذخیرهسازی و مدیریت بهینه دادهها را با استفاده از ساختارهای مختلفی مانند آرایهها، لیستهای پیوندی، پشتهها، صفها، جداول هش، درختها و گرافها بررسی میکند. شما خواهید آموخت که چگونه این ساختارها را در کدنویسی پیادهسازی کنید، عملکرد آنها را بهینه نمایید و مسائل پیچیده محاسباتی را از طریق طراحی و تحلیل الگوریتم حل کنید.
مفاهیم کلیدی از جمله الگوریتمهای مرتبسازی مانند کوییکسورت (Quick Sort)، مرتبسازی ادغامی (Merge Sort) و مرتبسازی درجاتی (Insertion Sort)، الگوریتمهای گراف شامل BFS و DFS برای پیمایش، و محاسبات کوتاهترین مسیر را به طور کامل فرا خواهید گرفت. همچنین پیچیدگیهای ساختارهای درختی مانند درختهای باینری و درختهای AVL و قدرت جداول هش برای دسترسی سریع به دادهها را درک خواهید کرد. این دوره بر کاربردهای واقعی، مدیریت حافظه و بهینهسازی عملکرد تأکید دارد و شما را به مهارتهای حل مسئله مجهز میکند که برای نقشهای علوم داده، توسعه نرمافزار و IT ضروری است.
این دوره برای افرادی که با ساختار دادهها آشنا نیستند یا به دنبال ارتقای مهارتهای محاسباتی خود هستند طراحی شده و پایهای مستحکم برای مباحث پیشرفته علوم کامپیوتر فراهم میکند. در پایان این دوره، تفکر انتقادی، توانایی حل مسئله الگوریتمیک و درک عمیقتری از مدیریت دادهها به دست خواهید آورد که شما را قادر میسازد مسائل پیچیده محاسباتی را به راهکارهای الگوریتمیک بهینه تبدیل کنید.
سرفصل ها و درس ها
کارایی الگوریتم و تحلیل مجانبی
Algorithmic Efficiency and Asymptotic Analysis
آشنایی با مدرس: دکتر جاگات سش چالا
Meet Your Instructor: Dr. Jagat Sesh Challa
آشنایی با مدرس: دکتر ساندارساند رامن
Meet Your Instructor: Dr. Sundaresan Raman
معرفی بخش: کارایی الگوریتم و تحلیل مجانبی
Module Introduction: Algorithmic Efficiency and Asymptotic Analysis
الگوریتمها و ساختاردهی دادهها
Algorithms and Data Structuring
کارایی الگوریتم: اندازهگیری تجربی
Algorithmic Efficiency: Experimental Measurement
کارایی الگوریتم: اندازهگیری در زمان طراحی
Algorithmic Efficiency: Design Time Measurement
شمارش عملیاتهای ابتدایی
Counting Primitive Operations
تحلیل مجانبی و نماد Big Oh
Asymptotic Analysis and Big-Oh Notation
مشتقات و موارد مشابه Big Oh
Relatives of Big-Oh
تحلیل مجانبی مجموع پیشوندی (Prefix Sum)
Asymptotic Analysis of Prefix Sum
اهمیت تحلیلهای مجانبی
Importance of Asymptotics
برنامه پایه C با حلقهها
Basic C Program with Loops
توابع و آرایهها
Functions and Arrays
ساختارها و آرایهای از ساختارها
Structures and Array of Structures
اشارهگرها
Pointers
ارسال با مقدار در مقابل ارسال با ارجاع
Pass by Value vs. Pass by Reference
تخصیص حافظه پویا: آرایههای تکبعدی
Dynamic Memory Allocation: 1D Arrays
نشت حافظه (Memory Leak)
Memory Leak
تخصیص حافظه پویا: آرایهای از ساختارها
Dynamic Memory Allocation: Array of Structures
برنامه پایه C با مدیریت فایل: لیست اعداد
Basic C Program with File Handling: List of Numbers
برنامه پایه C با مدیریت فایل: دادههای تاپل
Basic C Program with File Handling: Tuple Data
جمعبندی بخش: کارایی الگوریتم و تحلیل مجانبی
Module Wrap-Up: Algorithmic Efficiency and Asymptotic Analysis
ساختاردهی دادهها برای کارایی الگوریتم و ADTها
Data Structuring for Algorithm Efficiency and ADTs
معرفی بخش: ساختاردهی دادهها برای کارایی الگوریتم و ADTها
Module Introduction: Data Structuring for Algorithm Efficiency and ADTs
ساختاردهی و مدلسازی دادهها
Data Structuring and Modelling
آرایهها در حافظه
Arrays in Memory
لیستهای پیوندی
Linked Lists
لیستهای پیوندی: عملیات (بخش اول)
Linked Lists: Operations I
لیستهای پیوندی: عملیات (بخش دوم)
Linked Lists: Operations II
پیادهسازی لیستهای پیوندی: قسمت اول
Linked Lists: Implementation—Part I
پیادهسازی لیستهای پیوندی: قسمت دوم
Linked Lists: Implementation—Part II
پیادهسازی لیستهای پیوندی: قسمت سوم
Linked Lists: Implementation—Part III
پیادهسازی لیستهای پیوندی: قسمت چهارم
Linked Lists: Implementation—Part IV
پیادهسازی لیستهای پیوندی: قسمت پنجم
Linked Lists: Implementation—Part V
لیستهای پیوندی حلقوی و دوطرفه
Circular and Doubly Linked Lists
تشخیص چرخه در لیستهای پیوندی
Cycle Detection in Linked Lists
انواع دادههای انتزاعی (ADT)
Abstract Data Types
ADT پشته (Stack)
ADT Stack
ADT پشته: کاربردها
ADT Stack: Applications
پشته مبتنی بر آرایه
Array-Based Stack
پیادهسازی پشته مبتنی بر آرایه: قسمت اول
Array-Based Stack: Implementation—Part I
پیادهسازی پشته مبتنی بر آرایه: قسمت دوم
Array-Based Stack: Implementation—Part II
پشته مبتنی بر لیست پیوندی
Linked-List-Based Stack
پیادهسازی پشته مبتنی بر لیست پیوندی: قسمت اول
Linked-List-Based Stack: Implementation—Part I
پیادهسازی پشته مبتنی بر لیست پیوندی: قسمت دوم
Linked-List-Based Stack: Implementation—Part II
خلاصه اصول ADTها
Principles of ADTs Summarized
ADT صف (Queue) و کاربردهای آن
ADT Queue and its Applications
صف مبتنی بر آرایه
Array-Based Queue
صف مبتنی بر لیست پیوندی
Linked-List-Based Queue
جمعبندی بخش: ساختاردهی دادهها برای کارایی الگوریتم و ADTها
Module Wrap-Up: Data Structuring for Algorithm Efficiency and ADTs
مرتبسازی و جستجو
Sorting and Searching
معرفی بخش: مرتبسازی و جستجو
Module Introduction: Sorting and Searching
تقسیم و conquer و بازگشتی (Recursion)
Divide and Conquer, and Recursion
بیشینه آرایه به صورت بازگشتی (recursive arrayMax)
Recursive arrayMax
پیچیدگی زمانی بیشینه آرایه بازگشتی
Recursive arrayMax: Time Complexity
مرتبسازی درجاتی: نسخه بازگشتی (بخش اول)
Insertion Sort: Recursive Version—Part I
مرتبسازی درجاتی: نسخه بازگشتی (بخش دوم)
Insertion Sort: Recursive Version—Part II
پیچیدگی زمانی مرتبسازی درجاتی بازگشتی: بخش اول
Recursive Insertion Sort: Time Complexity—Part I
پیچیدگی زمانی مرتبسازی درجاتی بازگشتی: بخش دوم
Recursive Insertion Sort: Time Complexity—Part II
پیادهسازی مرتبسازی درجاتی بازگشتی در C و زمان اجرای آن: بخش اول
Implementing Recursive Insertion Sort in C and Its Running Time: Part I
پیادهسازی مرتبسازی درجاتی بازگشتی در C و زمان اجرای آن: بخش دوم
Implementing Recursive Insertion Sort in C and Its Running Time: Part II
مرتبسازی درجاتی: نسخه تکراری (Iterative)
Insertion Sort: Iterative Version
مرتبسازی ادغامی: مفهوم
Merge Sort: Intuition
عملیات ادغام در مرتبسازی ادغامی: بخش اول
Merge Operation in Merge Sort: Part I
عملیات ادغام در مرتبسازی ادغامی: بخش دوم
Merge Operation in Merge Sort: Part II
مرتبسازی ادغامی: پیچیدگی زمانی
Merge Sort: Time Complexity
پیچیدگی فضای مرتبسازی ادغامی و درجاتی: بخش اول
Space Complexities of Merge and Insertion Sort: Part I
پیچیدگی فضای مرتبسازی ادغامی و درجاتی: بخش دوم
Space Complexities of Merge and Insertion Sort: Part II
مقایسه مرتبسازی ادغامی و درجاتی
Merge vs. Insertion Sort
پیادهسازی مرتبسازی ادغامی و زمان اجرای آن
Merge Sort Implementation and Its Running Time
جستجوی خطی
Linear Search
جستجوی باینری (دوتایی)
Binary Search
مقایسه بازگشت در مقابل تکرار
Recursion vs. Iteration
جمعبندی بخش: مرتبسازی و جستجو
Module Wrap-Up: Sorting and Searching
مرتبسازیهای پیشرفته
More Sorting
معرفی بخش: مرتبسازیهای پیشرفته
Module Introduction: More Sorting
کوییک سورت (Quick Sort): مفهوم
Quick Sort: Intuition
کوییک سورت: الگوریتم
Quick Sort: Algorithm
کوییک سورت: پیچیدگی زمانی (بخش اول)
Quick Sort: Time Complexity—Part I
کوییک سورت: پیچیدگی زمانی (بخش دوم)
Quick Sort: Time Complexity—Part II
تکنیکهای انتخاب نقطه اتکای (Pivot)
Pivot Selection Techniques
پیادهسازی کوییک سورت
Quick Sort Implementation
مرتبسازی لیستهای کوچک
Sorting Smaller Lists
مقایسه الگوریتمهای مرتبسازی مبتنی بر مقایسه
Comparing Comparison-Based Sorting Algorithms
حد پایین مرتبسازیهای مبتنی بر مقایسه
Lower Bound on Comparison-Based Sorting
مرتبسازی سطل (Bucket Sort)
Bucket Sort
پایداری در مرتبسازی
Stability of Sorting
مرتبسازی رادیکسی (Radix Sort)
Radix Sort
جمعبندی بخش: مرتبسازیهای پیشرفته
Module Wrap-Up: More Sorting
دیکشنریها، جداول هش و درختهای باینری
Dictionaries, Hash Tables, and Binary Trees
معرفی بخش: دیکشنریها، جداول هش و درختهای باینری
Module Introduction: Dictionaries, Hash Tables, and Binary Trees
ADT دیکشنری
Dictionary ADT
یک مورد کاربردی از دیکشنری
A Dictionary Case
جداول هش با زنجیرهسازی خطی
Hash Tables with Linear Chaining
تحلیل هشینگ با زنجیرهسازی خطی
Analysis of Hashing with Linear Chaining
توابع هش: نقشههای کد هش
Hash Functions: Hash-Code Maps
توابع هش: نقشههای فشردهسازی
Hash Functions: Compression Maps
آدرسدهی باز با کاوش خطی
Open Addressing with Linear Probing
هشینگ دوگانه
Double Hashing
درختها: تعاریف و مثالها
Trees: Definitions and Examples
درخت باینری همراه با مثال
Binary Tree with Examples
انواع و ویژگیهای درختهای باینری
Types and Properties of Binary Trees
ADT درخت
Tree ADT
پیمایش درختها
Tree Traversals
ساخت درختهای باینری از طریق پیمایش
Building Binary Trees from Tree Traversals
جمعبندی بخش: دیکشنریها، جداول هش و درختهای باینری
Module Wrap-Up: Dictionaries, Hash Tables, and Binary Trees
درختهای جستجوی باینری و درختهای AVL
Binary Search Trees and AVL Trees
معرفی بخش: درختهای جستجوی باینری و درختهای AVL
Module Introduction: Binary Search Trees and AVL Trees
درختهای جستجوی باینری (BST): مفهوم و جستجو
Binary Search Trees: Intuition and Search
مقادیر مینیمم، ماکزیمم، جانشین و پیشراند در BSTها
Min, Max, Successor and Predecessor in BSTs
درج در BST
BST Insertion
حذف در BST
BST Deletion
مرتبسازی BST
BST Sort
BST: خلاصه پیچیدگیهای زمانی
BST: Summary of Time Complexities
پیادهسازی BST: بخش اول
BST Implementation: Part I
پیادهسازی BST: بخش دوم
BST Implementation: Part II
پیادهسازی BST: بخش سوم
BST Implementation: Part III
درختهای AVL: انگیزه، مفهوم و مثالها
AVL Trees: Motivation, Intuition, and Examples
درخت AVL: ساختار
AVL Tree: Structure
درج در درخت AVL: بخش اول
AVL Tree: Insertion—Part I
درج در درخت AVL: بخش دوم
AVL Tree: Insertion—Part II
درج در درخت AVL: بخش سوم
AVL Tree: Insertion—Part III
درج در درخت AVL: بخش چهارم
AVL Tree: Insertion—Part IV
حذف در درخت AVL: بخش اول
AVL Tree: Deletion—Part I
حذف در درخت AVL: بخش دوم
AVL Tree: Deletion—Part II
حذف در درخت AVL: بخش سوم
AVL Tree: Deletion—Part III
پیچیدگیهای زمانی درخت AVL
Time Complexities of AVL Tree
مزایای درخت AVL: خلاصه
Benefits of AVL Tree: Summary
جمعبندی بخش: درختهای جستجوی باینری و درختهای AVL
Module Wrap-Up: Binary Search Trees and AVL Trees
صفهای اولویتدار و تریها (Tries)
Priority Queues and Tries
معرفی بخش: صفهای اولویتدار و تریها
Module Introduction: Priority Queues and Tries
صفهای اولویتدار: انگیزه
Priority Queues: Motivation
هیپ (Heap) به عنوان صف اولویتدار
Heap as a Priority Queue
پیادهسازی یک هیپ
Implementing a Heap
درج در هیپ
Insertion in a Heap
حذف مینیمم و Heapify در هیپ
Delete Min, Heapify in a Heap
ساخت هیپ و پیچیدگی زمانی عملیاتهای هیپ
Building Heap and Time Complexity of Heap Operations
مرتبسازی هیپ (Heap Sort)
Heap Sort
پیادهسازی هیپها: بخش اول
Implementing Heaps: Part I
پیادهسازی هیپها: بخش دوم
Implementing Heaps: Part II
پیادهسازی هیپها: بخش سوم
Implementing Heaps: Part III
تریهای استاندارد (Standard Tries)
Standard Tries
تریهای فشرده (Compressed Tries)
Compressed Tries
کاربردهای تریها
Applications of Tries
درختهای پسوند (Suffix Trees)
Suffix Trees
کاربردهای درختهای پسوند
Suffix Trees Applications
فشردهسازی فایل با تری کدگذاری
File Compression with an Encoding Trie
فشردهسازی بهینه با تری کدگذاری هافمن
Optimal Compression with Huffman Encoding Trie
استفاده از صفهای اولویتدار برای پیادهسازی تریهای هافمن
Using Priority Queues to Implement Huffman Encoding Tries
جمعبندی بخش: صفهای اولویتدار و تریها
Module Wrap-Up: Priority Queues and Tries
گرافها و پیمایش گراف
Graphs and Graph Traversals
معرفی بخش: گرافها و پیمایش گراف
Module Introduction: Graphs and Graph Traversals
گرافها و کاربردها
Graphs and Applications
اصطلاحات گراف: بخش اول
Graph Terminologies: Part I
اصطلاحات گراف: بخش دوم
Graph Terminologies: Part II
ADT گراف
Graph ADT
ساختارهای داده برای گراف، لیست یالها
Data Structures for Graph, Edge List
لیست مجاورت و ماتریس مجاورت
Adjacency List and Adjacency Matrix
مقایسه نمایشهای گراف
Comparing Graph Representations
جستجوی اول سطح (BFS): مفهوم همراه با مثال
Breadth-First Search: Intuition with an Example
الگوریتم BFS و زمان اجرا
BFS Algorithm and Running Time
درخت BFS
BFS Tree
کاربردهای BFS: مؤلفههای متصل
BFS Applications: Connected Components
بررسی گراف دوپارتی: بخش اول
Checking for a Bipartite Graph: Part I
بررسی گراف دوپارتی: بخش دوم
Checking for a Bipartite Graph: Part II
پیادهسازی BFS با استفاده از لیست مجاورت: بخش اول
BFS Implementation Using Adjacency List: Part I
پیادهسازی BFS با استفاده از لیست مجاورت: بخش دوم
BFS Implementation using Adjacency List: Part II
جمعبندی بخش: گرافها و پیمایش گراف
Module Wrap-Up: Graphs and Graph Traversals
جستجوی اول عمق و MST در گرافهای وزندار
Depth-First Search and MST in Weighted Graphs
معرفی بخش: جستجوی اول عمق و MST در گرافهای وزندار
Module Introduction: Depth-First Search and MST in Weighted Graphs
جستجوی اول عمق (DFS): مفهوم و کاربردها
Depth First Search: Intuition and Applications
مثالهای DFS و زیرگراف پیشراند
DFS Examples and Predecessor Subgraph
الگوریتم DFS و پیچیدگی
DFS Algorithm and Complexity
اتصال دوگانه (Biconnectivity)
Biconnectivity
DFS در گرافهای جهتدار
DFS in a Directed Graph
تشخیص چرخه در گراف جهتدار
Detecting Cycles in a Directed Graph
ترتیب توپولوژیک
Topological Ordering
مؤلفههای شدیداً متصل در گراف جهتدار
Strongly Connected Components in a Directed Graph
پیادهسازی تکراری DFS با لیست مجاورت
Iterative DFS Implementation Using Adjacency List
پیادهسازی بازگشتی DFS با لیست مجاورت
Recursive DFS Implementation Using Adjacency List
درخت پوشای کمینه (MST): مفهوم و کاربردها
Minimum Spanning Tree: Intuition and Applications
درخت پوشای کمینه: ویژگیها
Minimum Spanning Tree: Properties
الگوریتم MST کروسکال: نمایش
Kruskal’s MST Algorithm: Illustration
الگوریتم MST کروسکال: شبهکد
Kruskal’s MST Algorithm: Pseudo-Code
الگوریتم MST کروسکال: پیچیدگی زمانی
Kruskal’s MST Algorithm: Time Complexity
ساختار داده Union Find
Union-Find Data Structure
بهبود پیچیدگی زمانی الگوریتم کروسکال
Improved Time Complexity of Kruskal’s Algorithm
جمعبندی بخش: جستجوی اول عمق و MST در گرافهای وزندار
Module Wrap-Up: Depth-First Search and MST in Weighted Graphs
الگوریتم MST پرایم و کوتاهترین مسیر از منبع واحد
Prim’s MST Algorithm and Single-Source Shortest Paths
معرفی بخش: الگوریتم MST پرایم و کوتاهترین مسیر از منبع واحد
Module Introduction: Prim’s MST Algorithm and Single Source Shortest Paths
الگوریتم MST پرایم: نمایش
Prim’s MST Algorithm: Illustration
الگوریتم MST پرایم: شبهکد و پیچیدگی زمانی
Prim’s MST Algorithm: Pseudo-Code and Time Complexity
کوتاهترین مسیرها در گراف وزندار: مفهوم و ویژگیها
Shortest Paths in a Weighted Graph: Intuition and Properties
کوتاهترین مسیر از منبع واحد: رویکرد Brute Force
Single Source Shortest Paths: Brute Force Approach
الگوریتم SSSP دایکسترا: مفهوم و نمایش
Dijkstra’s SSSP Algorithm: Intuition and Illustration
الگوریتم SSSP دایکسترا: شبهکد و پیچیدگی
Dijkstra’s SSSP Algorithm: Pseudo-Code and Complexity
پیادهسازی الگوریتم SSSP دایکسترا: بخش اول
Implementing Dijkstra’s SSSP Algorithm: Part I
پیادهسازی الگوریتم SSSP دایکسترا: بخش دوم
Implementing Dijkstra’s SSSP Algorithm: Part II
پیادهسازی الگوریتم SSSP دایکسترا: بخش سوم
Implementing Dijkstra’s SSSP Algorithm: Part III
پیادهسازی الگوریتم SSSP دایکسترا: بخش چهارم
Implementing Dijkstra’s SSSP Algorithm: Part IV
محدودیتهای الگوریتم SSSP دایکسترا
Limitations of Dijkstra’s SSSP Algorithm
الگوریتم SSSP بلمن-فورد
Bellman-Ford's SSSP Algorithm
جمعبندی بخش: الگوریتم MST پرایم و کوتاهترین مسیر از منبع واحد
Module Wrap-Up: Prim’s MST Algorithm and Single Source Shortest Paths
نمایش نظرات