Download as pdf or txt
Download as pdf or txt
You are on page 1of 10

1/22/2024

1.3.3.5. Ràng buộc 1.3.3.5. Bài toán thỏa mãn ràng buộc (Constraint Satisfaction
Problem – CSP)
 Một ràng buộc (constraint) là một quan hệ trên một tâp các biến
- Mỗi biến gắn với một tập các giá trị có thể nhận – gọi là miền  Một bài toán thỏa mãn ràng buộc bao gồm:
giá trị (domain). - Một tập hữu hạn các biến X
- Trong môn học này, chúng ta chỉ xét các miền hữu hạn các giá - Miền giá trị (một tập hữu hạn các giá trị) cho mỗi biến D
trị rời rạc. - Một tập hữu hạn các ràng buộc C
 Một ràng buộc có thể được biểu diễn bằng:  Một lời giải (solution) của bài toán thỏa mãn ràng buộc là một
- Một biểu thức toán học hoặc logic phép gán đầy đủ các giá trị của các biến sao cho thỏa mãn tất cả
- Một bảng liệt kê các phép gán giá trị phù hợp cho các biến các ràng buộc
 Ví dụ:  Một bài toán thỏa mãn ràng buộc thường được biểu diễn bằng
- Tổng các góc trong một tam giác là 180 độ
một đồ thị
- X nhỏ hơn Y
- An bận vào các buổi sáng 1 2

1/22/2024 1/22/2024

1.3.3.5. Bài toán thỏa mãn ràng buộc Ví dụ: Bài toán tô màu bản đồ
 Các biến WA, NT, NSW, V, SA, T
 Các miền giá trị Di = {red, green,
blue}
 Các ràng buộc: Các vùng liền nhau
phải có màu sắc khác nhau
 Ví dụ:
- WA ≠ NT
- (WA,NT) = {(red, green), (red, blue), (green, red), (green, blue), (blue,
red), (blue, green)

3 4

1/22/2024 1/22/2024

1
1/22/2024

Đồ thị các ràng buộc Các kiểu bài toán thỏa mãn ràng buộc
 Đối với bài toán ràng buộc nhị  Các biến rời rạc
phân thì mỗi ràng buộc chỉ liên - Các miền giá trị hữu hạn: VD các bài toán thỏa mãn ràng
quan đến 2 biến buộc nhị phân
 Đồ thị các ràng buộc có các nút - Các miền giá trị vô hạn: VD bài toán xếp lịch công việc, các
biểu diễn các biến và các cạnh biểu biến là ngày bắt đầu và ngày kết thúc đối với mỗi công việc
diễn các ràng buộc  Các biến liên tục
- Ví dụ: Các mốc thời gian bắt đầu và kết thúc đối với quan sát
kính viễn vọng trong không gian Hubble

5 6

1/22/2024 1/22/2024

Các kiểu ràng buộc Bài toán mật mã số học


 Ràng buộc đơn (unary constraint) chỉ liên quan đến 1 biến  Các biến F T U W R O X1 X2
- Ví dụ: SA ≠ green X3 (các nhớ của phép cộng)
 Ràng buộc nhị phân (binary constraint) liên quan đến 2 biến  Miền giá trị 0 đến 9

- Ví dụ: SA ≠ WA  Các ràng buộc: Giá trị của các

 Ràng buộc bậc cao (higher order constraint) liên quan đến nhiều biến F T U W R O khác nhau:
hơn 2 biến O + O = R + 10 * X1
- Ví dụ: Các ràng buộc trong bài toán mật mã số học X1 + W + W = U + 10 * X2
X2 + T + T = O + 10 * X3
X3 = F
T≠0
F≠0
7 8

1/22/2024 1/22/2024

2
1/22/2024

Các bài toán CSP thực tế Tìm kiếm bằng kiểm thử (Generate and Test)
 Phân công công việc  Là phương pháp giải quyết vấn đề tổng quát nhất
- Ví dụ: GV dạy lớp nào  Phương pháp giải quyết bằng kiểm thử (Generate and Test)
 Lập kế hoạch - Sinh ra một khả năng (candidate) của lời giải

- Ví dụ: Khi nào và nơi lớp học diễn ra - Kiểm tra xem khả năng này có thực sự là lời giải

 Thiết kế phần cứng  Áp dụng phương pháp kiểm thử đối với bài toán CSP
 Bảng tính - B1: Gán các giá trị cho tất cả các biến
 Lập kế hoạch vận chuyển - B2: Kiểm tra xem tất cả các ràng buộc được thỏa mãn hay không?
 Lập kế hoạch sản xuất - B3: Lặp lại B2 cho đến khi tìm được một phép gán thỏa mãn

9 10

1/22/2024 1/22/2024

Tìm kiếm bằng kiểm thử Tìm kiếm bằng kiểm thử
Ví dụ : Tìm số có 6 chữ số mà tổng bình phương các chữ số chia hết  Nhược điểm: Phải xét quá nhiều các khả năng gán không thỏa
cho 3. mãn các ràng buộc
Giai đoạn sinh: tạo ra số có 6 chữ số 𝑎𝑏𝑐𝑑𝑒𝑓 với 0<a<=9,  Ví dụ: Bài toán có các biến X,Y,Z nhận giá trị 1,2 với các ràng
0<=b,c,d,e,f<=9 buộc X=Y, X≠Z, Y>Z. Các khả năng gán như sau: (1,1,1); (1,1,2);
Giai đoạn thử: Nếu a*a+b*b+c*c+d*d+e*e+f*f chọn, ngược lại (1,2,1);(1,2,2); (2,1,1); (2,1,2); (2,2,1)
tạo ra số khác.  Cải thiện phương pháp kiểm thử bằng cách sinh ra các phép gán
giá trị một cách thông minh hơn
- Không theo thứ tự tuần tự
- Sử dụng các kết quả thu được từ bước kiểm tra
 Phát hiện sớm các mâu thuẫn: Các ràng buộc được kiểm tra ngay
sau khi mỗi biến được gán giá trị chứ không phải đợi đến khi tất
cả các biến được gán giá trị
11 12

1/22/2024 1/22/2024

3
1/22/2024

Tìm kiếm quay lui (Backtracking) Tìm kiếm quay lui (Backtracking)
Là giải thuật tìm kiếm được sử dụng phổ biến nhất trong CSP Các yếu tố ảnh hưởng đến phương pháp tìm kiếm quay lui
 Dựa trên giải thuật tìm kiếm theo chiều sâu (depth-first search)  Thứ tự ưu tiên của các biến?

 Mỗi lần gán chỉ gán giá trị cho một biến - Ưu tiên xét trước các biến có ít giá trị (miền giá trị nhỏ)

Phương pháp tìm kiếm quay lui đối với bài toán CSP - Ưu tiên xét trước các biến tham gia vào nhiều ràng buộc

 Gán giá trị lần lượt cho các biến: Việc gán giá trị của biến này chỉ - Ưu tiên các biến quan trọng hơn tùy vào bài toán cụ thể
được làm sau khi đã hoàn thành việc gán giá trị của biến khác  Với mỗi biến, thứ tự được xét của các giá trị
 Sau mỗi phép gán giá trị cho một biến nào đó, kiểm tra các ràng - Thứ tự ưu tiên của các giá trị với mỗi biến được định nghĩa tùy
buộc có được thỏa mãn bởi tất cả các biến đã được gán giá trị cho thuộc vào bài toán cụ thể
đến thời điểm hiện tại. Thực hiện quay lui nếu có lỗi (không thỏa
mãn các ràng buộc)

13 14

1/22/2024 1/22/2024

Tìm kiếm quay lui (Backtracking) Tìm kiếm quay lui (Backtracking)

15 16

1/22/2024 1/22/2024

4
1/22/2024

Tìm kiếm quay lui (Backtracking) Các vấn đề của tìm kiếm quay lui (Backtracking)
Lặp đi lặp lại lỗi
 Do bỏ đi không khai thác lý do của mâu thuẫn

 Ví dụ: Các biến A,B,C,D,E,F lấy các giá trị trong miền từ 1..9 với
ràng buộc A>E nhưng phương pháp tìm kiếm quay lui sẽ thử tất
cả các khả năng gán giá trị cho B,C,D cho đến khi xét đến E thì
mới phát hiện ra A ≠ 1
→ Phương pháp Backjumping (chuyển đến xét từ chỗ sinh ra
lỗi)

17 18

1/22/2024 1/22/2024

Các vấn đề của tìm kiếm quay lui (Backtracking) Các vấn đề của tìm kiếm quay lui (Backtracking)
Các thao tác kiểm tra không cần thiết Phát hiện muộn các mâu thuẫn (vi phạm ràng buộc)
 Do lặp lại các kiểm tra ràng buộc không cần thiết  Sau khi các giá trị được gán mới phát hiện ra các vi phạm ràng

 Ví dụ: Các biến A,B,C,D,E,F lấy các giá trị trong miền từ 1..10 buộc.
với ràng buộc B+8<D và C=5*E khi gán giá trị cho các biến C,E  Ví dụ: Các biến A,B,C,D,E,F lấy các giá trị trong miền từ 1..10
thì các giá trị của D được kiểm tra lặp đi lặp lại từ 1..9 với ràng buộc A=3*E khi gán giá trị cho các biến E thì mới phát
→ Phương pháp Backchecking (lưu giữ/nhớ lại các phép gán tốt hiện ra là A > 2
và không tốt) → Phương pháp Forward checking (kiểm tra trước các ràng
buộc)

19 20

1/22/2024 1/22/2024

5
1/22/2024

Các cách cải thiện hiệu quả của tìm kiếm quay lui Biến bị ràng buộc nhiều nhất
 Lựa chọn thứ tự xét các biến để gán giá trị cho mỗi biến  Quy tắc lựa chọn thứ tự xét các biến: Ưu tiên biến bị ràng buộc
 Lựa chọn thứ tự xét các giá trị đối với mỗi biến nhiều nhất (most constrained variable)
 Phát hiện sớm các lỗi sẽ xảy ra - Chọn biến có số lượng các giá trị hợp lệ ít nhất
- Ví dụ: Trong bài toán tô màu bản đồ tại bước S2 biến NT được
chọn vì nó có số lượng các giá trị hợp lệ ít nhất (2 giá trị)

→ Quy tắc ưu tiên các biến có tập giá trị hợp lệ nhỏ nhất
(Minimum Remaining Values – MRV)
21 22

1/22/2024 1/22/2024

Biến ràng buộc các biến khác nhiều nhất Giá trị ràng buộc các biến khác ít nhất
? Khi có >=2 biến có như nhau số lượng giá trị hợp lệ ít nhất thì sẽ ? Đối với một biến, các giá trị được xét (để gán) theo thứ tự nào?
chọn biến nào. VD như NT và SA có cùng số lượng giá trị hợp lệ ít  Chọn biến ràng buộc các biến khác chưa được gán giá trị ít
nhất = 2 nhất
 Chọn biến ràng buộc các biến khác chưa được gán giá trị - Giá trị này gây ra hạn chế tối thiểu đối với các khả năng gán
nhiều nhất giá trị của các biến khác
- Ví dụ: Tại bước S2 tuy cùng mức độ bị ràng buộc, nhưng biến
SA nên được xét trước biến NT vì SA ràng buộc 5 biến khác
còn NT chỉ ràng buộc 3 biến khác

23 24

1/22/2024 1/22/2024

6
1/22/2024

Kiểm tra tiến (Forward checking) Tìm kiếm kiểu tiến


 Mục đích: Tránh các thất bại bằng cách kiểm tra trước các ràng Lan truyền ràng buộc
buộc
 Kiểm tra tiến đảm bảo sự phù hợp giữa các biến đang được xét
gán giá trị và các biến khác có liên quan trực tiếp với nó
 Ý tưởng:

- Ở mỗi bước gán giá trị, theo dõi các giá trị hợp lệ đối với các
biến chưa được gán giá trị
- Dừng hướng tìm kiếm hiện tại khi có bất kỳ một biến chưa
được gán giá trị nào đó không còn giá trị hợp lệ

NT và SA không thể có cùng màu blue


→ Cách lan truyền đơn giản nhất để các phép gán trị bền vững
25 26
X → Y bền vững nếu với mỗi giá trị x của X thì có vài giá trị y của Y
1/22/2024 1/22/2024

Kiểm tra tiến Kiểm tra tiến

27 28

1/22/2024 1/22/2024

7
1/22/2024

Kiểm tra tiến Kiểm tra tiến

29 30

1/22/2024 1/22/2024

Lan truyền các ràng buộc Tìm kiếm cục bộ cho bài toán thỏa mãn ràng buộc (CSP)
 Kiểm tra tiến giúp làn truyền các ràng buộc từ các biến đã được  Mục đích: Để sử dụng các phương pháp tìm kiếm cục bộ cho bài
gán giá trị đến biến chưa được gán giá trị toán thỏa mãn ràng buộc
 Nhược điểm: Phương pháp kiểm tra tiến không thể phát hiện  Mỗi trạng thái của không gian tìm kiếm ứng với một phép gán
(ngăn chặn) được tất cả các thất bại đầy đủ giá trị cho tất cả các biến
- Ví dụ: NT và SA không thể cùng là màu xanh - Không gian tìm kiếm bao gồm cả các trạng thái trong đó các
ràng buộc bị vi phạm
- Dịch chuyển trạng thái = Gán giá trị mới cho các biến
 Trạng thái đích = Trạng thái trong đó tất cả các ràng buộc được
thỏa mãn.

 Lan truyền các ràng buộc chỉ đảm bảo tính phù hợp cục bộ
(local consistency) của các ràng buộc 31 32

1/22/2024 1/22/2024

8
1/22/2024

Tìm kiếm cục bộ cho bài toán thỏa mãn ràng buộc (CSP)
Tìm kiếm cục bộ cho bài toán thỏa mãn ràng buộc (CSP) Bài toán 4 quân hậu
 Quá trình tìm kiếm  Các trạng thái: ứng với vị trí của 4 quân hậu nằm ở 4 cột
- Lựa chọn biến để gán giá trị mới? → Chọn ngẫu nhiên một - Chỉ có duy nhất một quân hậu ở mỗi cột
biến mà giá trị của nó vi phạm các ràng buộc - Không gian trạng thái gồm tổng cộng 4x4x4x4 = 256 trạng
- Đối với một biến, lựa chọn giá trị mới? → Dựa theo chiến thái
lược min-conflicts: chọn giá trị mà nó vi phạm ít nhất các ràng  Các hành động: di chuyển của một quân hậu nào đó trong một cột
buộc. của nó
 Ví dụ: Áp dụng phương pháp tìm kiếm cụ bộ leo đồi với hàm ước  Trạng thái đích: không có quân hậu nào ăn nhau
lượng h(n) = tổng số các ràng buộc bị vi phạm
 Hàm ước lượng: h(n) tổng sổ các cặp hậu ăn nhau
- Trạng thái (lân cận) tiếp theo chuyển đến (được xét) là trạng
thái ứng với giá trị hàm h(n) tốt hơn (=ít ràng buộc bị vi phạm
hơn)

33 34

1/22/2024 1/22/2024

Tổng kết về bài toán thỏa mãn ràng buộc


Tìm kiếm cục bộ cho bài toán thỏa mãn ràng buộc (CSP)
 Trong một bài toán thỏa mãn ràng buộc  Hãy thay các chữ cái bằng các chữ số từ 0 đến 9 sao cho không có
- Mỗi trạng thái tương ứng với một cặp phép gán giá trị cho các hai chữ cái nào được thay bởi cùng 1 số và thỏa mãn ràng buộc
biến sau:
- Kiểm tra trạng thái đich = Kiểm tra tập các ràng buộc đối với
các giá trị của các biến
 Phương pháp quay lui (Backtracking) = Tìm kiếm theo chiều sâu
(Depth-first search) với mỗi nút tương ứng với một phép gán giá
trị cho một biến
 Các chiến lược chọn thứ tự xét các biến và thứ tự xét các giá trị
đối với một biến sẽ ảnh hưởng quan trọng đến hiệu quả của quá
trình tìm lời giải
 Phương pháp tìm kiếm tiến (Forward checking) cho phép ngăn
chặn các phép gán giá trị đưa đến các thất bại sau đó
 Phương pháp tìm kiếm cục bộ sử dụng chiến lược min-conflicts 35 36
thường hiệu quả trong nhiều bài toán thực tế
1/22/2024 1/22/2024

9
1/22/2024

1.3.3.3. Phương pháp thỏa mãn ràng buộc 1.3.3.3. Phương pháp thỏa mãn ràng buộc
 Quá trình tìm kiếm lời giải bao gồm 2 phần liên quan chặt chẽ với Ví dụ: Xét bài toán điền các chữ số khác nhau sao cho phép cộng
nhau: sau là đúng
- Tìm kiếm trong không gian các ràng buộc
- Tìm kiếm trong không gian các bài toán ban đầu
 Phương pháp: Thực hiện lần lượt các bước sau đến khi tìm được SEND
lời giải đầy đủ của bài toán +
- B1 Chọn một đỉnh chưa được xét trong đồ thị tìm kiếm MORE
- B2 Áp dụng các luật suy diễn trên các ràng buộc đối với đỉnh đã chọn MONEY
để tạo ra tập các ràng buộc mới
- B3 Nếu tập các ràng buộc mới có mâu thuẫn thì đưa ra thông báo
đường đi hiện thời tới nút đang xét bế tắc
- B4 Nếu tập ràng buộc mô tả lời giải đầy đủ của bài toán thì dừng và
đưa ra thông báo thành công. Ngược lại sang bước 5
- B5 Áp dụng các luật biến đổi KGTT tương ứng để tạo ra lời giải bộ
phận thích hợp với tập các ràng buộc hiện thời. Thêm các lời giải37bộ 38
phận này vào đồ thị tìm kiếm
1/22/2024 1/22/2024

10

You might also like