Khám phá thế giới thuật toán: Từ tìm kiếm, sắp xếp đến quy hoạch động
Thuật toán là nền tảng của khoa học máy tính, ảnh hưởng đến mọi mặt của cuộc sống kỹ thuật số. Bài viết này sẽ dẫn dắt bạn qua một hành trình khám phá các thuật toán thiết yếu, từ cơ bản đến nâng cao. Hãy cùng khám phá nhé!
Bạn còn có thể đọc thêm bài viết này: Top 15 thuật toán Machine Learning dành cho newbie
1. Thuật toán tìm kiếm
-
Tìm kiếm tuyến tính: Tìm kiếm lặp lại từng phần tử trong mảng. Độ phức tạp thời gian: O(n)
-
Tìm kiếm nhị phân: So sánh mục tiêu với phần tử ở giữa của một mảng được sắp xếp và thu hẹp phạm vi tìm kiếm. Độ phức tạp thời gian: O(log₂n)
2. Thuật toán sắp xếp
-
Sắp xếp bong bóng: Hoán đổi các phần tử liền kề trong các lần lặp lại. Độ phức tạp thời gian: O(n²)
-
Sắp xếp chèn: Chèn các phần tử vào đúng vị trí của chúng trong một phần được sắp xếp của mảng. Độ phức tạp thời gian: O(n²)
-
Sắp xếp lựa chọn: Chọn giá trị nhỏ nhất từ các phần tử chưa được sắp xếp trong mỗi lần duyệt. Độ phức tạp thời gian: O(n²)
-
Sắp xếp đống: Sử dụng đống để sắp xếp các phần tử. Độ phức tạp thời gian: O(n log n)
-
Merge Sort: Thuật toán chia để trị chia mảng, sắp xếp từng nửa và hợp nhất. Độ phức tạp thời gian: O(n log n)
-
Sắp xếp nhanh: Sử dụng trục để phân vùng và sắp xếp đệ quy các mảng. Độ phức tạp thời gian: O(n log n) (trung bình), O(n²) (trường hợp xấu nhất).
3. Thuật toán toán học cơ bản
- Thuật toán Euclid cho GCD: Tìm ước chung lớn nhất bằng phép chia.
- Sàng Eratosthenes: Xác định số nguyên tố bằng cách loại bỏ các bội số.
- Thao tác bit: Sử dụng toán tử bitwise cho các hoạt động cấp thấp.
4. Thuật toán đồ thị
- Tìm kiếm theo chiều rộng (BFS): Duyệt theo từng cấp độ bằng cách sử dụng hàng đợi.
- Tìm kiếm theo chiều sâu (DFS): Khám phá theo chiều sâu bằng cách sử dụng một ngăn xếp. Độ phức tạp thời gian: O(V + E)
- Thuật toán D* ijkstra: * Tìm đường đi ngắn nhất trong đồ thị có trọng số.
5. Thuật toán cây
- Duyệt theo thứ tự trung gian: Cây con trái → Gốc → Cây con phải.
- Duyệt trước thứ tự: Gốc → Cây con trái → Cây con phải.
- Duyệt theo thứ tự sau: Cây con trái → Cây con phải → Gốc. Độ phức tạp thời gian: O(n)
- Thuật toán Kruskal: Tìm cây khung nhỏ nhất bằng cách thêm các cạnh theo thứ tự trọng số.
6. Lập trình động
- Thuật toán Floyd-Warshall: Tìm đường đi ngắn nhất giữa tất cả các cặp trong đồ thị có trọng số. Sử dụng Ghi nhớ (từ trên xuống) và Bảng (từ dưới lên).
7. Thuật toán quay lui
- Giải quyết các bài toán như N-Queens, Tổng các tập hợp con, Tô màu đồ thị và Chu trình Hamilton.
8. Thuật toán nén Huffman
- Nén dữ liệu bằng cách xây dựng cây Huffman và gán mã cho các ký tự dựa trên tần suất.
Cảm ơn các bạn đã theo dõi bài viết!
All rights reserved