🔬 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