Constraint Propagation có thể được thực hiện như một bước tiền xử lý hoặc kết hợp với các thuật toán tìm kiếm để tăng hiệu suất và chính xác trong giải quyết bài toán.Trong đề tài này, c
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCMKHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO ĐỀ TÀI CUỐI KÌTRÍ TUỆ NHÂN TẠO
ĐỀ TÀI: CONSTRAINT PROPAGATION
Trang 2DANH SÁCH NHÓM THỰC HIỆN ĐỀ TÀI CUỐI KÌ
Trang 3Lời cảm ơn
Chúng em xin gửi lời cảm ơn chân trọng nhất đến với thầy Lê Minh Tân – giảng viên bộ môn Trí tuệ nhân tạo trong khoa Công nghệ thông tin của trường Đại học Sư phạm Kỹ thuật TP Hồ Chí Minh Thầy là người đã trang bị cho tất cả cho chúng em những kiến thức, kỹ năng cần có để chúng em có thể hoàn thành tốt bài cuối kỳ này.
Trong quá trình học tập và nghiên cứu nếu nhóm em có những sai sót gì, kính mong thầy bỏ qua cho nhóm em!
Nhóm em xin chúc thầy luôn luôn mạnh khoẻ và ngày một thành công hơn trên con đường giảng dạy của mình.
Chúng em xin trân trọng cảm ơn.
Trang 4Lời mở đầu
Trên thế giới ngày nay, ngành Công nghệ thông tin đang đối mặt với sự gia tăng về quy mô và sự phức tạp của các vấn đề đòi hỏi giải pháp tối ưu và hiệu quả Trong lĩnh vực này, Constraint Satisfaction là một lĩnh vực nghiên cứu vô cùng quan trọng, tập trung vào việc giải quyết các bài toán có ràng buộc về các biến và quy tắc liên quan đến chúng.
Một phương pháp quan trọng trong giải quyết các bài toán Ràng buộc là Constraint Propagation (truyền thông ràng buộc) Đây là quá trình kết hợp giữa tìm kiếm và suy luận để giải quyết các ràng buộc và hạn chế các giá trị hợp lệ cho các biến trong bài toán Constraint Propagation có thể được thực hiện như một bước tiền xử lý hoặc kết hợp với các thuật toán tìm kiếm để tăng hiệu suất và chính xác trong giải quyết bài toán.
Trong đề tài này, chúng ta sẽ tìm hiểu về quá trình Constraint Propagation và sự ảnh hưởng của nó đến việc suy luận trong các bài toán về vấn đề thoả mãn ràng buộc (CSPs – Constraint Satisfaction Problems) Chúng ta sẽ khám phá các phương pháp và thuật toán để áp dụng Constraint Propagation cũng như hiểu rõ về các loại Local Consistency (tính nhất quán cục bộ) và cách chúng tăng cường trong quá trình giải quyết các vấn đề.
Áp dụng các khái niệm về Constraint Propagation và suy luận trong CSPs để giải quyết một trong những bài toán phổ biến và thú vị nhất của lý thuyết đồ thị, đó là bài toán Sudoku Sudoku là một trò chơi giải đố đơn giản nhưng đầy thử thách, có thể được mô hình hóa như là một CSP, trong đó các biến là các ô trống trong bảng và các ràng buộc là các quy tắc để mỗi ô phải chứa một số từ 1 đến 9 và không được trùng lặp trong hàng, cột và ô vuông nhỏ Chúng ta sẽ thử áp dụng các phương pháp Constraint Propagation để giải quyết bài toán Sudoku và tìm ra lời giải cho các câu đố Sudoku khó nhất.
Bằng cách tìm hiểu và ứng dụng các khái niệm về Constraint Propagation và suy luận trong CSPs, chúng ta sẽ có một cách tiếp cận mạnh mẽ để giải quyết các vấn đề phức tạp trong lĩnh vực Công nghệ thông tin.
Trang 62.3.1 Giới thiệu về Arc Consistency 4
2.3.2 Giới thiệu về thuật toán AC-3 5
2.3.3 Cách thức hoạt động của thuật toán AC-3 6
2.4 Path Consistency 7
2.5 K – Consistency 8
3 Global constraints 10
4 Sudoku 15
4.1 Giới thiệu về game Sudoku 15
4.2 Áp dụng CSP để giải game Sudoku 16
4.3 Demo code 18
5 Kết luận 18
6 Tài liệu tham khảo 20
Trang 71 Constraint Propagation
1.1 Lịch sử về Constraint Propagation
Constraint Propagation (CP) là một kỹ thuật quan trọng trong lĩnh vực trí tuệ nhân tạo và tối ưu hóa ràng buộc Constraint Propagation ra đời từ những năm 1960 và đã được phát triển liên tục trong nhiều thập kỷ sau đó.
Những năm 1960, các nhà nghiên cứu như J.C Shaw và H.A Simon đề xuất một kỹ thuật được gọi là "việc thực hiện ràng buộc" (constraint satisfaction), đây được xem là tiền thân của Constraint Propagation Ý tưởng của kỹ thuật này là giải quyết các vấn đề bằng cách tìm các giá trị có thể cho các biến trong khi đảm bảo các ràng buộc giữa chúng.
Những năm 1970, J.P Marthi và A.K Mackworth đã đề xuất một phương pháp để giải quyết các vấn đề ràng buộc bằng cách sử dụng một phương pháp lan truyền (propagation) để đưa ra các kết luận về các giá trị của các biến Tuy nhiên, kỹ thuật này chỉ áp dụng được cho một số vấn đề đơn giản.
Trong những năm 1980, kỹ thuật Constraint Propagation đã được phát triển mạnh mẽ bởi một số nhà nghiên cứu, trong đó có Eugene C Freuder Ông đã đề xuất một phương pháp lan truyền ràng buộc được gọi là Forward Checking, là một trong những kỹ thuật Constraint Propagation phổ biến nhất hiện nay Ông cũng đã đề xuất một phương pháp hợp nhất các ràng buộc để tăng tính hiệu quả của Constraint Propagation.
Trong những năm 1990, các nhà nghiên cứu tiếp tục phát triển và cải tiến kỹ thuật Constraint Propagation, bao gồm sự phát triển của các kỹ thuật lan truyền ràng buộc mới như Arc Consistency và kỹ thuật tiên tiến hơn như Dynamic Backtracking Các kỹ thuật này giúp tăng tính hiệu quả và độ chính xác của Constraint Propagation.
Hiện nay, Constraint Propagation là một lĩnh vực nghiên cứu rộng lớn và có nhiều ứng dụng trong các lĩnh vực như lập lịch, tối ưu hóa và thiết kế hệ thống.
Trang 8Nhiều phần mềm và thư viện cũng đã được phát triển để hỗ trợ việc sử dụng CP trong các ứng dụng thực tế.
1.2 Constraint Propagation là gì?
Một thuật toán tìm kiếm trạng thái nguyên tử chỉ tiến triển theo một cách duy nhất: bằng cách mở rộng một nút để thăm các nút kế tiếp Một thuật toán CSP (Constraint Satisfaction Problem) có sự lựa chọn Nó có thể tạo ra các nút kế tiếp bằng cách chọn một phân bổ biến mới, hoặc có thể thực hiện một loại suy luận cụ thể được gọi là Constraint Propagation (truyền thông ràng buộc): sử dụng các ràng buộc để giảm số lượng giá trị hợp lệ cho một biến, từ đó có thể giảm số lượng giá trị hợp lệ cho biến khác, và tiếp tục như vậy Ý tưởng là điều này sẽ giúp giảm số lượng lựa chọn cần xem xét khi chọn phân bổ biến tiếp theo Constraint Propagation có thể liên kết với tìm kiếm hoặc có thể được thực hiện như một bước tiền xử lý trước khi tìm kiếm bắt đầu Đôi khi việc tiền xử lý này có thể giải quyết toàn bộ vấn đề, vì vậy không cần tìm kiếm nữa.
2 Local Consistency2.1 Giới thiệu
Ý tưởng chính là Local Consistency (tính nhất quán cục bộ) Nếu chúng ta xem mỗi biến là một nút trong đồ thị và mỗi biến buộc phải có hai biến như một cạnh, thì quá trình áp dụng tính thống nhất thống kê bộ trong mỗi phần của đồ thị sẽ loại bỏ các giá trị không thống nhất của toàn đồ thị Có các loại tính nhất quán cục bộ khác nhau, chúng ta sẽ đi qua từng loại sau đây.
2.2 Node Consistency
2
Trang 9Node Consistency (tính nhất quán của nút) đòi hỏi mọi ràng buộc đơn nhất trên một biến phải được thỏa mãn bởi tất cả các giá trị trong miền của biến và ngược lại Điều kiện này có thể được thực thi một cách tầm thường bằng cách giảm miền của mỗi biến thành các giá trị thỏa mãn tất cả các ràng buộc đơn nhất đối với biến đó Kết quả là, các ràng buộc đơn nhất có thể được bỏ qua và giả định được tích hợp vào các miền Ví dụ, cho một biến V với tên miền là {1, 2, 3, 4} và một ràng buộc V <= 3, tính nhất quán của nút sẽ hạn chế miền {1, 2, 3} và ràng buộc sau đó có thể bị loại bỏ Bước tiền xử lý này giúp đơn giản hoá các giai đoạn sau Và ví dụ khác, trong biến thể của bài toán tô bản đồ Úc khi người dân SA không thích màu lục, biến SA bắt đầu bằng miền {đỏ, lục, lam} và chúng ta có thể đặt nó thành nút nhất quán bằng cách loại bỏ màu lục để miền giá trị của SA thành {đỏ, lam} Chúng ta nói rằng một đồ thị nhất quán với nút nếu mọi biến trong đồ thị đều nhất quán với nút Có thể dễ dàng loại bỏ tất cả các ràng buộc một ngôi trong CSP bằng cách giảm miền của các biến có các ràng buộc một ngôi khi bắt đầu quá trình giải Như đã đề cập trước đó, cũng có thể chuyển đổi tất cả các ràng buộc n – ary thành các ràng buộc nhị phân, mong muốn người dùng loại bỏ các ràng buộc khác trước thời hạn Nói chung, khi các biến trong một biểu đồ CSP đều nhất quán nút thì tức
Trang 10là các biến đó có miền giá trị thỏa mãn các ràng buộc, ta nói rằng biểu đồ đó là nhất quán với nút Tuy nhiên, để giải quyết bài toán CSP thường cần phải áp dụng các thuật toán giải quyết bài toán ràng buộc (CSP solving algorithms) để tìm ra lời giải chính xác nhất.
2.3 Arc Consistency
2.3.1 Giới thiệu về Arc Consistency
Arc Consistency (AC - tính nhất quán của cung) là một kỹ thuật được sử dụng trong lĩnh vực ràng buộc (constraint programming) để giải quyết các bài toán ràng buộc trên các biến Khi giải một bài toán ràng buộc, một số giá trị có thể bị loại bỏ khỏi miền giá trị của một biến do các ràng buộc giới hạn giá trị của nó Tuy nhiên, việc loại bỏ giá trị này có thể ảnh hưởng đến các biến khác và dẫn đến việc loại bỏ thêm giá trị khỏi miền giá trị của các biến đó Điều này gọi là hiện tượng lan truyền ràng buộc (constraint propagation).
Arc Consistency là một phương pháp để kiểm tra tính khả thi của các giá trị trong các miền giá trị của các biến bằng cách loại bỏ các giá trị không khả thi Cụ thể, AC kiểm tra tính khả thi bằng cách xác định xem nếu một biến có giá trị cụ thể, thì các ràng buộc giới hạn giá trị của các biến khác có thể được thoả mãn hay không Nếu không, giá trị đó sẽ bị loại bỏ khỏi miền giá trị của biến đó và AC sẽ tiếp tục lan truyền ràng buộc để kiểm tra tính khả thi của các giá trị khác.
Bên cạnh đó Arc Consistency còn có những ứng dụng thực tế như:
+ Tổ chức và quản lý dịch vụ: Arc Consistency có thể được sử dụng để giải quyết các bài toán tổ chức và quản lý dịch vụ, giúp tối ưu hóa phân bổ tài nguyên và giảm thời gian thực hiện các dịch vụ.
+ Phân tích tài chính: Arc Consistency có thể được sử dụng để giải quyết các bài toán định lượng và phân tích tài chính, giúp tối ưu hóa quyết định đầu tư và quản lý tài chính.
+ Lập lịch sản xuất: Arc Consistency cũng có thể được sử dụng để giải quyết các bài toán lập lịch sản xuất, giúp tối ưu hóa việc phân bổ nguồn lực và giảm thời gian sản xuất.
4
Trang 11Tổng quát về Arc Consistency, Arc Consistency là một phương pháp tiền xử lý để cải thiện hiệu quả của các thuật toán giải quyết bài toán ràng buộc và giảm thời gian tính toán.
2.3.2 Giới thiệu về thuật toán AC-3
AC-3 là một thuật toán cơ bản trong lĩnh vực ràng buộc (constraint programming) và được sử dụng để giải quyết các bài toán ràng buộc trên các biến Thuật toán này là một phương pháp tiền xử lý để cải thiện hiệu quả của các thuật toán giải quyết bài toán ràng buộc và giảm thời gian tính toán.
AC-3 hoạt động bằng cách loại bỏ các giá trị không khả thi từ các miền giá trị của các biến trong bài toán Cụ thể, thuật toán duyệt qua các ràng buộc trong bài toán và thực hiện lan truyền ràng buộc trên các cặp biến liên quan Nếu giá trị của một biến không thỏa mãn các ràng buộc với giá trị của một biến khác, thì giá trị đó sẽ bị loại bỏ khỏi AC-3 là một thuật toán rất đơn giản và hiệu quả để kiểm tra tính khả thi của các giá trị trong các miền giá trị của các biến và loại bỏ các giá trị không khả thi Tuy nhiên, nó không đảm bảo tìm ra tất cả các giá trị khả thi của các biến.
Trang 12Độ phức tạp thời gian của thuật toán AC-3 là O(nd), độ phức tạp của thuật toán AC-3 phụ thuộc vào số lượng biến và kích thước lớn nhất của các miền giá trị trong bài toán.
Độ phức tạp này có thể tăng lên đáng kể nếu số lượng ràng buộc trong bài toán tăng lên Tuy nhiên, trong thực tế, thuật toán AC-3 vẫn được sử dụng rộng rãi trong các bài toán ràng buộc nhỏ và trung bình kích thước vì nó có độ phức tạp thời gian tương đối nhỏ so với các thuật toán khác trong lĩnh vực ràng buộc.
2.3.3 Cách thức hoạt động của thuật toán AC-3
Thuật toán AC-3 có thể được mô tả bằng các bước sau:
Bước 1: Khởi tạo hàng đợi (queue) ban đầu: tạo một hàng đợi ban đầu chứa tất cả các cặp biến và ràng buộc trong CSP.
Bước 2: Lặp qua hàng đợi: lặp qua hàng đợi và lấy ra một cặp biến và ràng buộc từ đầu hàng đợi.
Bước 3: Kiểm tra Arc Consistency: Kiểm tra tính Arc Consistency của cặp biến và ràng buộc bằng cách loại bỏ các giá trị không hợp lệ cho biến thứ nhất trong ràng
6
Trang 13buộc Nếu tất cả các giá trị của biến đó đều không hợp lệ, ta coi ràng buộc là không thỏa mãn (vi phạm) Sau đó, kiểm tra tính Arc Consistency của các cặp biến và ràng buộc khác mà có biến đầu tiên giống với biến đã xét.
Bước 4: Cập nhật hàng đợi: Nếu ràng buộc đã bị vi phạm, ta loại bỏ cặp biến và ràng buộc đó khỏi hàng đợi Nếu ràng buộc không bị vi phạm, ta cập nhật hàng đợi bằng cách thêm các cặp biến và ràng buộc khác mà có biến thứ hai giống với biến đã xét.
Bước 5: Kết thúc thuật toán: Nếu hàng đợi trở thành rỗng, tức là không còn cặp biến và ràng buộc nào để kiểm tra, ta kết thúc thuật toán.
2.4 Path Consistency
Giả sử chúng ta tô màu bản đồ Úc chỉ với hai màu đỏ và lam Arc consistency (tính nhất quán của cung) không làm gì cả vì mọi ràng buộc có thể được thoả mãn riêng lẻ với màu đỏ ở một đầu và màu lam ở đầu kia Nhưng rõ ràng là không có giải pháp nào cho vấn đề này: bởi vì WA (Tây Úc), lãnh thổ phía Bắc và SA (Nam Úc) tất cả đều chạm nhau, nên chúng ta cần ít nhất có ba màu riêng dành cho chúng.
Trang 14Tính nhất quán của cung thắt chặt các miền (ràng buộc đơn nguyên) bằng cách sử dụng các cung (ràng buộc nhị phân) Để đạt được tiến bộ trong các vấn đề như tô màu bản đồ, chúng ta cần có một khái niệm nhất quán mạnh mẽ hơn Đó là path consistency (tính nhất quán đường dẫn) thắt chặt các ràng buộc nhị phân bằng cách sử dụng các ràng buộc ngầm được suy ra bằng cách xem xét bộ ba biến.
Tập hợp hai biến {Xi, Xj} nhất quán về đường dẫn đối với biến thứ ba Xm nếu mọi phép gán {X = a, X = b} nhất quán với các ràng buộc (nếu có) trên {X ,iji
Xj} có một phép gán cho Xm thỏa mãn các ràng buộc trên {X , X } và {X , Ximmj} Tên đề cập đến tính nhất quán tổng thể của đường dẫn từ X đến X với X ở giữa.ijm
Hãy xem tính nhất quán của đường dẫn đi như thế nào khi tô bản đồ Úc bằng hai màu Chúng ta sẽ làm cho tập {WA, SA} nhất quán đường dẫn với NT Chúng ta bắt đầu bằng cách liệt kê các phép gán nhất quán cho tập hợp Trong trường hợp này, chỉ có hai phép gán {WA = đỏ, SA = lam} và {WA = lam, SA = đỏ} Chúng ta có thể thấy rằng với hai phép gán này, NT không thể có màu đỏ cũng như màu xanh (vì nó sẽ bị xung đột với WA hoặc SA) Vì không có lựa chọn hợp lệ nào cho NT, chúng ta loại bỏ cả hai phép gán và cuối cùng chúng ta không có phép gán hợp lệ nào cho {WA, SA} Do đó, chúng ta biết rằng không thể có giải pháp nào để tô màu cho bản đồ này chỉ bằng hai màu.
2.5 K – Consistency
K – consistency (Tính nhất quán K) là một khái niệm trong lĩnh vực Ràng buộc (Constraint Satisfaction) để đánh giá mức độ nhất quán của ràng buộc giữa một tập hợp gồm k biến Mục tiêu của k – consistency là đảm bảo rằng mọi giá trị trong miền giá trị của mỗi biến trong tập hợp đều phù hợp với ít nhất một giá trị trong miền giá trị của các biến còn lại trong tập hợp Điều này đảm bảo rằng không có giá trị nào trong miền giá trị của các biến trong tập hợp gây ra xung đột hoặc không thỏa mãn các ràng buộc với các biến khác trong tập hợp.
Một CSP là k – consistent nếu với bất kỳ tập hợp k – 1 biến nào và với bất kỳ phân bổ nhất quán nào cho các biến đó, luôn có thể gán một giá trị nhất quán cho biến thứ k Ví dụ, 1 – consistency được gọi là node consistency tức là với một biến
8
Trang 15duy nhất, ta có thể gán giá trị sao cho không là vi phạm bất kỳ ràng buộc nào 2 – consistency thì giống với arc consistency và đảm bảo rằng mọi giá trị được gán cho một biến không làm vi phạm ràng buộc cho tất cả các cặp biến 3 – consistency thì giống với path consistency và bảo đảm được rằng mỗi giá trị được gán cho một biến không làm vi phạm ràng buộc của tất cả các cặp biến trên một đường đi giữa hai biến Áp dụng K-consistency trong giải quyết bài toán Ràng buộc giúp cải thiện tính nhất quán và hiệu suất của thuật toán, đồng thời giảm số lượng lựa chọn và tạo điều kiện tốt hơn cho quá trình tìm kiếm và suy luận ràng buộc.
Một CSP là strongly k – consistent nếu nó là k – consistent và cũng là (k – 1) – consistent, (k – 2) – consistent, … cho đến tận 1 – consistent Bây giờ giả sử chúng ta có một CSP với n nút và làm cho nó trở thành strongly n – consistent (nghĩa là strongly k – consistent với k = n) Khi đó chúng ta có thể giải bài toán như sau: Đầu tiên, chúng ta có thể chọn một giá trị nhất quán cho X Sau đó chúng ta1
được đảm bảo để có thể chọn giá trị cho X bởi vì đồ thị là 2 – consistent, cho X vì23
nó là 3 – consistent, … Với mỗi biến X, ta chỉ cần tìm qua các giá trị d trong tập xác định để tìm được giá trị phù hợp với X , …, X Tổng thời gian chạy chỉ là O(n1i-1 2d).
Tất nhiên, không có gì là miễn phí: sự hài lòng ràng buộc nói chung là NP – complete và bất kỳ thuật toán nào để thiết lập n – consistency đều phải mất thời gian theo cấp số nhân trong n Trong thực tế, việc xác định mức độ kiểm tra tính nhất quán phù hợp chủ yếu là một khoa học thực nghiệm 2 – consistency thì phổ biến còn 3 – consistency thì ít phổ biến hơn.
3 Global constraints
Hãy nhớ rằng một global constraint (ràng buộc toàn cục) là một ràng buộc liên quan đến một số biến tùy ý nhưng không nhất thiết là tất cả các biến Các ràng buộc toàn cục xảy ra thường xuyên trong các bài toán thực tế và có thể được xử lý bằng các thuật toán chuyên dụng hiệu quả hơn các phương pháp đa năng đã mô tả cho đến nay.
Global constraints bao gồm: