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?