Bài học cho học sinh chuyên tin
Duyệt đồ thị:
DFS và BFS
Hai thuật toán, một ý tưởng. Cả hai đều đi thăm mọi đỉnh đến được từ một đỉnh cho trước. Chúng chỉ khác nhau ở một câu hỏi duy nhất: đỉnh nào được lấy ra xử lý tiếp theo?
Trang này dạy các em bằng hình vẽ và trình mô phỏng bấm từng bước, không phải bằng cách đọc code rồi tin. Cuối mỗi bài có 3 bài LeetCode kèm đáp án ẩn.
Cùng một đồ thị, hai thứ tự thăm
Đây là toàn bộ sự khác biệt, gói trong một hình. Số nhỏ màu đen cạnh mỗi đỉnh là thứ tự đỉnh đó được thăm.
DFS — đi sâu trước
BFS — đi rộng trước
Lộ trình
- Cơ bản — đồ thị là gì, danh sách kề, vì sao bắt buộc phải có mảng
daTham, và lưới cũng là đồ thị. - DFS — bản đệ quy, bản ngăn xếp, các lỗi thường gặp, 3 bài LeetCode: đếm đảo, đếm tỉnh, phát hiện chu trình.
- BFS — hàng đợi, khái niệm tầng, vì sao BFS cho đường đi ngắn nhất, 3 bài LeetCode: duyệt theo tầng, đường ngắn nhất trong lưới, BFS đa nguồn.
- So sánh — chạy song song hai thuật toán trên cùng đồ thị, và bảng quyết định "bài này nên dùng cái nào".