Chuyển tới nội dung chính

28 tài liệu đã gắn thẻ được gắn thẻ "thuat-toan"

Xem tất cả thẻ

Bellman-Ford & Floyd-Warshall

Bellman-Ford xử lý cạnh âm và phát hiện chu trình âm O(VE); Floyd-Warshall tìm đường ngắn nhất mọi cặp O(V^3) bằng quy hoạch động.

Chia để trị sâu hơn

Mẫu chia - giải - gộp; đếm nghịch thế, max-subarray, lũy thừa nhanh, liên hệ merge sort.

DP 1 chiều (One-dimensional DP)

Dạng DP đơn giản nhất với bảng dp một chiều — leo cầu thang, House Robber, và dãy con tăng dài nhất (LIS).

DP 2 chiều (Two-dimensional DP)

Khi trạng thái cần hai chỉ số — dãy con chung dài nhất (LCS), khoảng cách chỉnh sửa (edit distance) và bài toán cái túi 0/1.

Duyệt theo chiều rộng (BFS)

BFS duyệt đồ thị theo từng lớp bằng queue, tìm đường ngắn nhất theo số cạnh trên đồ thị không trọng số.

Duyệt theo chiều sâu (DFS)

DFS lao sâu theo một nhánh rồi quay lui, dùng đệ quy hoặc stack; ứng dụng thành phần liên thông và phát hiện chu trình.

Heap sort (Sắp xếp vun đống)

Heap sort dùng max-heap để liên tục lấy phần tử lớn nhất — O(n log n), sắp tại chỗ O(1) bộ nhớ, nhưng không ổn định.

Merge sort (Sắp xếp trộn)

Merge sort dùng chia để trị — cắt đôi, sắp từng nửa rồi trộn lại — đạt O(n log n) ổn định, đánh đổi bằng O(n) bộ nhớ.

Quay lui (Backtracking)

Khung tổng quát thử - đệ quy - hoàn tác; sinh hoán vị, tổ hợp, subsets, N-Queens và cắt tỉa (pruning).

Quick sort (Sắp xếp nhanh)

Quick sort phân hoạch quanh một pivot — trung bình O(n log n), xấu nhất O(n^2) — và mẹo chọn pivot để né trường hợp xấu.

Tham lam (Greedy)

Tham lam chọn tối ưu cục bộ ở mỗi bước; khi nào đúng (lựa chọn tham lam + cấu trúc con tối ưu) và khi nào sai.

Thao tác bit (Bit Manipulation)

AND, OR, XOR, NOT, dịch bit và những mẹo kinh điển — kiểm tra chẵn lẻ, bật/tắt/đảo bit thứ k, đếm bit 1, dùng bitmask.

Thuật toán là gì?

Định nghĩa thuật toán, năm tính chất bắt buộc, mô tả bằng pseudocode và sơ đồ khối, chạy debug từng bước qua ví dụ tìm số lớn nhất.

Tìm chuỗi con (KMP, Rabin-Karp)

So khớp mẫu trong văn bản — từ cách ngây thơ O(nm) tới KMP với mảng prefix-function O(n+m) và Rabin-Karp với rolling hash.

Union-Find (Disjoint Set Union)

Union-Find quản lý các nhóm rời nhau với find và union; nén đường và hợp theo hạng cho gần O(1) khấu hao.