Giới thiệu về phƣơng pháp SBDD

Một phần của tài liệu lập trình ràng buộc với bài toán n quân hậu (Trang 48)

SBDD là phƣơng pháp có thể nhận ra đối xứng trong quá trình tìm kiếm. Tại mỗi thời điểm thuật toán tìm kiếm tạo ra một nút mới, nó sẽ kiểm tra xem nút đó có phải là một đối xứng với những nút đã đƣợc xét hay không. Nếu đúng, nhánh đó có thể bị cắt. Nếu không quá trình tìm kiếm diễn ra bình thƣờng. Mục đích của loại bỏ đối xứng là tránh khám phá phần không gian Δ mà có thể đƣợc ánh xạ từ phần đã đƣợc xét bằng một hàm đối xứng. Bởi vì nếu không chứa bất kỳ một

nghiệm nào, thì Δ cũng không chứa nghiệm. Ngƣợc lại, tất cả các nghiệm trong Δ có thể đƣợc suy ra từ phần đã xét. Trƣớc hết, chúng ta cần nêu ra một số định nghĩa.

Định nghĩa 3.8

Gọi X = {x1,…, xn} là tập biến của mô hình, D(x) là miền của biến xX. Bộ P c= (Dc(x1), …, Dc(xn)) là trạng thái đƣợc chọn hiện tại của điểm c.

Định nghĩa 3.9

Gọi P c = (Dc(x1),…, Dc(xn)), P c’= (Dc’(x1),…, Dc’(xn)) là hai trạng thái đƣợc xét.

o Nếu P c’bao gồm P c và ta ký hiệu P c  P c’ nếu và chỉ nếu: xX: Dc  Dc’

o Chúng ta đặt MDc = Dc(x1) ×…×Dc(xn)

o Một ánh xạ đối xứng φ: MDc →MDc, chúng ta nói rằng P c’ “Lấn át”

(dominate) P c (với ánh xạ đối xứng φ) nếu và chỉ nếu φ(P c )∠P c’. Khi đó chúng ta ký hiệu P c∠P c’

Hệ quả 3.10

Cho hai điểm chọn c c’, trong đó c’ là thế hệ sau của c trong cây tìm kiếm. Khi đó chúng ta có: P c’  P c

Giải pháp mà SBDD dùng để cắt bớt phần đối xứng trong không gian tìm kiếm đƣợc dựa trên sự tích hợp sau:

o Một cơ sở dữ liệu T dùng để chứa toàn bộ thông tin của không gian tìm kiếm đã đƣợc duyệt.

o Một hàm chỉ định: Φ: (PΔ, P�) → {false, true} trả giá trị true nếu và chỉ nếu PΔ bị “Lấn át” bởi P� với một số hàm đối xứng φ

o Các đối xứng sẽ sử dụng thuật toán lan truyền, với mọi biến x, việc loại bỏ mọi giá trị b từ miền x sao cho Φ(PΔ[x=b], P�) = true.

ngƣợc lại chúng ta có thể dùng hàm Φ áp dụng thuật toán lan truyền. Chúng ta hãy xem hình 3.10, minh họa cho SBDD.

(a) (b)

Hình 3.10: Minh họa cách thức hoạt động của SBDD: Nút trắng là nút đang đối được xét, nút đen là nút đã được xét hoàn toàn. Hình vuông là trạng thái trong T, hình tròn thể hiện nó không ở trong T hoặc đã ở trong T . Hình tam giác chỉ nút hiện tại đang xét. (a) Ban đầu, trạng thái Δ phải được kiểm tra thông qua toàn bộ các nút đã được xét. (b) Dùng DFS, nút hiện tại chỉ cần so sánh với các nút kề-trái (từ nút gốc tới Δ).

Chúng ta có hai cách tìm kiếm khi áp dụng phƣơng pháp này, đó là: tìm kiếm theo chiều sâu (DFS-Depth First Search) và tìm kiếm tùy ý (theo một cách thức khác). Tuy nhiên khi áp dụng tìm kiếm tùy ý, số trạng thái cần lƣu trữ trong T

sẽ tăng lên rất nhanh và rất lớn. Do vậy SBDD sẽ chỉ phù hợp nhất với DFS. Phần kế tiếp sẽ giới thiệu cách thức thực hiện SBDD.

Một phần của tài liệu lập trình ràng buộc với bài toán n quân hậu (Trang 48)