Các bộ giải SAT dựa trên DPLL hiệu quả như thế nào trên các phiên bản PHP thỏa đáng?


15

Chúng tôi biết rằng các bộ giải SAT dựa trên DPLL không trả lời đúng trong các trường hợp không thỏa mãn của (nguyên tắc lỗ chim bồ câu), ví dụ: "có ánh xạ tiêm từ n + 1 đến n ":PHPn+1n

PHPnn+1: =(Tôi[n+1] j[n] pTôi,j)(TôiTôi'[n+1] j[n] (¬pTôi,j¬pTôi',j))

Tôi đang tìm kiếm kết quả về cách họ thực hiện trên các trường hợp thỏa đáng , ví dụ: "có một ánh xạ tiêm từ n đến n ".PHPnn

Họ có tìm thấy một nhiệm vụ thỏa mãn nhanh chóng trong các trường hợp như vậy?


1
Bởi "không trả lời đúng", bạn có nghĩa là "hết tài nguyên trên các giá trị đủ lớn của n"?
Vijay D

@Kaveh Bạn có cho phép lặp lại các mệnh đề và / hoặc lặp lại các biến trong cùng một mệnh đề không? Cảm ơn
Tayfun Trả tiền vào

@VijayD, ý tôi là thuật toán không trả về câu trả lời đúng trong thời gian đa thức cho đủ lớn . Tôi hy vọng rằng người ta có thể chứng minh một cách có thể chứng minh rằng thuật toán dựa trên DPLL sẽ hoạt động trong thời gian đa thức đối với gia đình này. n
Kaveh

@Geekster, tôi không chắc ý của bạn là gì. Tôi có một gia đình đặc biệt của công thức. Bạn đang hỏi nếu có sự lặp lại trong công thức đó?
Kaveh

Câu trả lời:


14

Trong các trường hợp thỏa đáng của , bộ giải SAT dựa trên DPLL sẽ cung cấp một bài tập thỏa mãn trong thời gian tuyến tính.PHP

Để biết lý do tại sao, hãy quan sát cách mã hóa CNF của một trường hợp không thỏa mãn với n lỗ và n + 1 chim bồ câu giống hệt với một thể hiện của k = n Biểu đồ màu, trong đó biểu đồ đầu vào là một cụm của n + 1 đỉnh .PHPnn+1k= =nn+1

Tương tự, mã hóa CNF của một thể hiện thỏa đáng của với n lỗ và n chim bồ câu giống hệt nhau về mặt thể hiện của k = n Vẽ màu đồ thị, trong đó đồ thị đầu vào là một cụm của n đỉnh.PHPnnk= =nn

Bây giờ, tô màu một phe nhóm đỉnh với n màu sắc rất đơn giản: quét các đỉnh, và gán cho mỗi trong số họ là một trong những màu sắc còn lại (màu sắc đã được gán sẽ được tự động loại trừ khả năng do bè lũ-Ness của đồ thị, sử dụng đơn vị tuyên truyền) . Bất cứ màu nào còn lại bạn chọn, nó sẽ tốt và sẽ dẫn bạn đến một nhiệm vụ thỏa mãn.nn

Từ quan điểm của người giải quyết DPLL: mỗi lần nó sẽ cố đoán giá trị boolean của một biến , giá trị đó sẽ đúng (dù đó là gì), bởi vì chắc chắn sẽ có một phép gán thỏa mãn trong đó biến v i có giá trị đoán. Tuyên truyền đơn vị sẽ thực hiện phần còn lại của công việc, bằng cách hướng dẫn người giải quyết theo con đường thỏa mãn (nói cách khác: bằng cách ngăn chặn nó đoán các giá trị sai).vTôivTôi

Việc tìm kiếm sau đó tiến hành một biến sau một biến khác, theo tuyến tính, mỗi lần đưa ra dự đoán chính xác.


Cảm ơn bạn, đây là những gì tôi đã mong đợi. Nhân tiện, bạn có biết một tài liệu tham khảo nêu rõ điều này không (tức là "thuật toán DPLL giải quyết các trường hợp thỏa đáng của PHP / GC trong thời gian tuyến tính")?
Kaveh

1
Không có gì. Tôi không biết bất kỳ tài liệu tham khảo nào nói lên điều này, tôi chỉ tự mình lấy nó thông qua một số lý do thô thiển. Không khó để chính thức chứng minh điều đó, bằng cách dựa vào thực tế là mọi người giải SAT đều sử dụng một số heuristic hợp lý cả trong việc chọn biến tiếp theo và đoán giá trị boolean của nó. Trên thực tế, phải quan sát thấy rằng có tồn tại ít nhất một heuristic vô lý ngăn cản chúng ta đạt được một giải pháp trong thời gian tuyến tính (một heuristic vô lý như vậy sẽ được đặt thành sai mọi biến, cho đến khi có thể). Trong khi với một heuristic hợp lý, thời gian tuyến tính được đảm bảo.
Giorgio Camerani

Tôi đồng ý. Tôi hy vọng rằng ai đó có thể đã tuyên bố điều này ở đâu đó để tôi có thể trích dẫn khi tôi cần. Tôi muốn đợi thêm một vài ngày nữa và nếu không ai đưa ra một tài liệu tham khảo, tôi sẽ chấp nhận câu trả lời này. Cảm ơn một lần nữa. :)
Kaveh

Niềm vui của tôi ;-) Chúc mừng!
Giorgio Camerani
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.