Các phƣơng pháp loại bỏ đối xứng

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 33)

Có hai phƣơng pháp chính để loại bỏ đối xứng trong CSPs:

- Phƣơng pháp thứ nhất (còn gọi là phƣơng pháp tĩnh_Symmetry Breaking Statically-SBS): Các ràng buộc đƣợc thêm vào CSP để tạo sự “kiểm định” nhằm ngăn chặn việc tạo ra nghiệm đối xứng và mỗi nghiệm đƣợc sinh ra bởi một bộ gán tƣơng ứng cho lớp nghiệm đó, do vậy chỉ còn lại nghiệm không đối xứng. Phƣơng pháp này làm một công việc tƣơng tự nhƣ việc phát biểu lại CSPs trƣớc khi tìm kiếm nhằm giảm không gian tìm kiếm ban đầu cho CSP. Một ví dụ của phƣơng pháp khi bài toán liên quan đến mô hình ma trận là không thêm ràng buộc theo một trật tự từ điển nhằm loại bỏ đối xứng trong hàng và cột. Điều bất lợi cho phƣơng pháp này là việc đòi hỏi ngƣời giải toán cần có nhiều kinh nghiệm, ngay cả khi đó việc loại bỏ hoàn toàn đối xứng cũng hết sức khó khăn. Nhưng cũng cần nhấn mạnh rằng phương pháp này rất dễ dàng kết hợp với bất kỳ một loại phương pháp nào khác.

- Phƣơng pháp thứ hai là phƣơng pháp loại bỏ đối xứng động (Symmetry Breaking Dynamically_SBD). Nó đƣợc thực hiện bằng cách thêm ràng buộc trong thời gian tìm kiếm nhằm cắt bỏ những nhánh cây thừa mà nó phát hiện ra nhờ việc cập nhật những ràng buộc đƣợc thêm vào. Trong đó, có hai cách tiếp cận là loại bỏ đối xứng trong thời gian tìm kiếm (Symmetry Breaking During Search_SBDS) và loại bỏ đối xứng nhờ việc nhận ra sự ƣu thế (Symmetry Breaking via Dominance Detection_SBDD). Trƣớc khi quay lui, SBDS thêm ràng buộc loại bỏ đối xứng vào CSP nhằm loại bỏ mọi trạng thái đối xứng gây ra sự quay lui (sẽ không lặp lại với những trạng thái tƣơng tự trong tƣơng lai). Còn với SBDD, bất cứ khi nào thuật toán tìm kiếm tạo ra một trạng thái mới, nó sẽ kiểm tra xem nó có bị mất “lấn át” bởi một nút nào đó hay không (sẽ không lặp lại với những trạng thái tƣơng tự xảy ra trong quá khứ). Nhƣ vậy tất cả các hƣớng tiếp cận trên đây đều nhằm tránh những phần đối

phục hồi toàn bộ nghiệm nhờ tính đối xứng. Điều này làm tăng tính hiệu quả trong quá trình tìm kiếm nghiệm vì không gian tìm kiếm là rất lớn.

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 33)