🔬 1. Kiến thức cơ sở
1.1. Khái niệm cơ bản
-
Dữ liệu, kiểu dữ liệu (Data type, Abstract Data Type – ADT)
-
Cấu trúc dữ liệu (Data Structure)
-
Giải thuật (Algorithm)
-
Mối quan hệ giữa dữ liệu và giải thuật
1.2. Độ phức tạp tính toán
-
Độ phức tạp thời gian (Time Complexity)
-
Độ phức tạp không gian (Space Complexity)
-
Ký hiệu: O, Ω, Θ
-
Phân tích: best, average, worst case
-
Đệ quy và độ phức tạp đệ quy
🏭2. Cấu trúc dữ liệu cơ bản
2.1. Cấu trúc dữ liệu tuyến tính
-
Mảng (Array)
-
Danh sách liên kết:
-
Singly Linked List
-
Doubly Linked List
-
Circular Linked List
-
-
Ngăn xếp (Stack)
-
Hàng đợi (Queue)
-
Circular Queue
-
Priority Queue
-
Deque
-
2.2. Cấu trúc dữ liệu phi tuyến
-
Cây (Tree)
-
Binary Tree
-
Binary Search Tree (BST)
-
AVL Tree, Red-Black Tree
-
Heap (Min-Heap, Max-Heap)
-
B-Tree, B+Tree
-
-
Đồ thị (Graph)
-
Biểu diễn đồ thị (Adjacency list, matrix)
-
Đồ thị có hướng / vô hướng
-
Đồ thị có trọng số
-
2.3. Cấu trúc dữ liệu băm
-
Hash table
-
Hàm băm (Hash function)
-
Xử lý xung đột:
-
Chaining
-
Open addressing
-
⚙️3. Giải thuật cơ bản
3.1. Giải thuật tìm kiếm
-
Linear Search
-
Binary Search
-
Hashing-based search
3.2. Giải thuật sắp xếp
-
Bubble Sort
-
Selection Sort
-
Insertion Sort
-
Merge Sort
-
Quick Sort
-
Heap Sort
-
Counting Sort, Radix Sort
⚙️4. Giải thuật nâng cao
4.1. Chiến lược thiết kế giải thuật
-
Brute Force
-
Divide & Conquer
-
Greedy
-
Dynamic Programming
-
Backtracking
-
Branch and Bound
4.2. Giải thuật trên đồ thị
-
BFS, DFS
-
Dijkstra
-
Bellman-Ford
-
Floyd–Warshall
-
Kruskal, Prim (Minimum Spanning Tree)
-
Topological Sort
5. Giải thuật tối ưu & ứng dụng
-
String Matching (KMP, Boyer–Moore)
-
Computational Geometry (Convex Hull, Line Sweep)
-
NP-Complete, NP-Hard
-
Approximation Algorithms
-
Randomized Algorithms