Giới thiệu
Thuật toán BFS 0-1, đúng như tên gọi của nó, là một cải tiến của thuật toán BFS. Tuy không quá khó để cài đặt, BFS 0-1 lại có thể giúp ta tối ưu hiệu quả trong một số bài toán lập trình thi đấu nhất định.
Đặt vấn đề
Trước khi tìm hiểu thêm về thuật toán BFS 0-1, mời bạn đọc xem qua bài toán sau đây.
Bài toán: https://www.spoj.com/problems/KATHTHI/
Tóm tắt:
Cho ma trận có kích thước $R \times C$. Ta cần đi từ vị trí $(0, 0)$ đến vị trí $(R - 1, C - 1)$. Ta có thể di chuyển theo 4 hướng sang các ô kề cạnh. Gọi $(x, y)$ là toạ độ của ô hiện tại và $(u, v)$ là toạ độ của ô đi tới. Nếu kí tự tại ô $(x, y)$ giống kí tự tại ô $(u, v)$ thì bước di chuyển đó tốn chi phí là $0$, ngược lại thì chi phí là $1$.