Ít nhất-ràng buộc-giá trị là gì?


11

Trong các vấn đề thỏa mãn ràng buộc, heuristic có thể được sử dụng để cải thiện hiệu suất của bộ giải bactracking. Ba phương pháp chẩn đoán thường được đưa ra cho người giải quyết quay lui đơn giản là:

  • Giá trị tối thiểu còn lại (có bao nhiêu giá trị vẫn hợp lệ cho biến này)
  • Độ heuristic (có bao nhiêu biến số khác bị ảnh hưởng bởi biến này)
  • Ít ràng buộc-giá trị (giá trị nào sẽ để lại hầu hết các giá trị khác cho các biến khác)

Hai cái đầu tiên khá rõ ràng và đơn giản để thực hiện. Đầu tiên, chọn biến có ít giá trị nhất còn lại trong miền của nó và nếu có quan hệ, hãy chọn biến có ảnh hưởng đến hầu hết các biến khác. Bằng cách này, nếu một bước cha mẹ trong bộ giải chọn một bài tập xấu, bạn có khả năng tìm ra sớm hơn và do đó tiết kiệm thời gian nếu bạn chọn biến có ít giá trị còn lại ảnh hưởng đến hầu hết các thứ khác.

Đó là những đơn giản, được xác định rõ ràng, và dễ thực hiện.

Giá trị hạn chế tối thiểu không được xác định rõ ràng, bất cứ nơi nào tôi nhìn. Trí tuệ nhân tạo: Cách tiếp cận hiện đại (Russel & Norvig) chỉ nói:

Nó thích giá trị loại trừ các lựa chọn ít nhất cho các biến lân cận trong biểu đồ ràng buộc.

Tìm kiếm "giá trị ràng buộc nhỏ nhất" chỉ xuất hiện rất nhiều chương trình trình chiếu đại học dựa trên sách giáo khoa này, không có thêm thông tin về cách thực hiện theo thuật toán.

Ví dụ duy nhất được đưa ra cho heuristic này là trường hợp một lựa chọn giá trị loại bỏ tất cả các lựa chọn cho một biến lân cận, còn lựa chọn khác thì không. Vấn đề với ví dụ này là đây là một trường hợp tầm thường, sẽ được loại bỏ ngay lập tức khi phân công tiềm năng được kiểm tra tính nhất quán với các ràng buộc của vấn đề. Vì vậy, trong tất cả các ví dụ tôi có thể tìm thấy, heuristic có giá trị ràng buộc thấp nhất thực sự không có lợi cho hiệu suất của bộ giải theo bất kỳ cách nào, ngoại trừ một hiệu ứng tiêu cực nhỏ từ việc thêm một kiểm tra dự phòng.

Điều khác duy nhất tôi có thể nghĩ đến là kiểm tra các phép gán có thể có của các biến lân cận cho mỗi phép gán và đếm số lần gán có thể có của các lân cận tồn tại cho mỗi phép gán của biến này, sau đó sắp xếp các giá trị cho biến này dựa trên số lượng bài tập lân cận có sẵn nếu giá trị đó được chọn. Tuy nhiên, tôi không thấy cách này sẽ mang lại sự cải thiện cho một thứ tự ngẫu nhiên, vì điều này đòi hỏi cả việc kiểm tra nhiều kết hợp biến và sắp xếp dựa trên kết quả từ việc đếm.

Bất cứ ai cũng có thể đưa ra một mô tả hữu ích hơn về giá trị ràng buộc tối thiểu và giải thích làm thế nào phiên bản của giá trị ràng buộc nhỏ nhất đó thực sự mang lại sự cải thiện?


AI: AMA (trang 228) đề cập rằng heuristic giá trị ràng buộc ít nhất được đề xuất bởi Haralick và Elliot (1980). Bài báo ( được tìm thấy ở đây ) sử dụng một ngôn ngữ khác nhiều so với được sử dụng trong AI: AMA và tôi gặp khó khăn trong việc xác định phần nào đề cập đến heuristic LCV.
ryan

Câu trả lời:


3

xem liên kết này:

https://people.cs.pitt.edu/~wiebe/cifts/CS2710/lectures/constraintSat.example.txt

Đầu tiên, nó chọn biến "O" và sau đó kiểm tra "O" với tất cả các giá trị hợp pháp của nó "i" để xem số lần giảm trên "hàng xóm" của "O". Nó thêm tất cả chúng. và chọn một "i" gây giảm ít hơn:

   sums = {0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0}
   For i from 0 to 9:  
     plug "o=i" into the constraint formulas
     For each neighbor "N" of "o" in the constraint graph:
       sums[i] += the number of values remaining for "N"

Nó chọn "i" để:

sums[i] = MAX{sums[i] | for all "i" that is a member of "O",s valid values}

Tôi hy vọng điều này có thể giúp bạn tìm thấy câu trả lời của bạn!


1
Điều này không trả lờiexplain how that version of least-constraining-value would actually yield an improvement?
skrtbhtngr

1

Tôi nghĩ rằng điều chính ở đây là các heuristic này được áp dụng tùy thuộc vào nhiệm vụ mà người giải được viết. Và nếu có khả năng là nếu giá trị được chọn của một biến không để lại một giá trị trong miền của một biến khác (giả sử rằng chúng ta có vấn đề bị ràng buộc nặng nề chỉ với một giải pháp), thì giải pháp sẽ đi vào bế tắc . Và một tìm kiếm ngẫu nhiên có thể đi theo con đường đúng dẫn đến quyết định và sai. Và nếu nó sai, bạn sẽ phải thực hiện quay lui (xem phần khởi động lại theo hướng xung đột) và phải mất thời gian tính toán. Nhưng thuật toán sử dụng các heuristic LCV có nhiều khả năng đi theo một con đường chính xác hơn và không yêu cầu trả về. Nhưng nếu có vấn đề chưa được kiểm chứng, tôi nghĩ nó sẽ giống như tìm kiếm ngẫu nhiên.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.