Chuyển đổi DNF sang CNF: Dễ hoặc khó


10

Liên quan đến luồng Chứng minh rằng việc chuyển đổi từ CNF sang DNF là NP-Hard (và một luồng toán học có liên quan ):

Làm thế nào về hướng khác, từ DNF đến CNF? Nó dễ hay khó?

Trên trang 2 của bài báo này , họ dường như gợi ý rằng cả hai hướng đều khó như nhau khi họ nói " Chúng tôi quan tâm đến việc tăng kích thước tối đa khi chuyển từ đại diện CNF sang đại diện DNF (hoặc ngược lại) ".

Nhưng DNF-SAT nằm trong P và CNF-SAT là NP -complete. Vì vậy, cho một biểu thức DNF , cần có một equisatisfiable CNF biểu có chiều dài là đa thức trong chiều dài của . Và chuyển đổi có thể được thực hiện trong nhiều thời gian. Điều này có đúng không?φ1φ2φ1φ1φ2

Chỉnh sửa: Thay đổi tương đương với mức độ thỏa mãn (nghĩa là các biến bổ sung được phép trong ).φ2


Bạn có thể chuyển từ bất kỳ công thức nào sang CNF, điều này hoàn toàn chính xác khi công thức ban đầu ở thời gian đa thức. Đây là lý do tại sao CNF-SAT hoàn thành NP. Bất kỳ trường hợp SAT nào (một vấn đề hoàn chỉnh NP) có thể được giảm xuống thành CNF-SAT trong thời gian đa thức. Tôi nghĩ chính xác dịch nó, không chỉ bảo tồn sự thỏa mãn đôi khi sẽ luôn mang lại một vụ nổ theo cấp số nhân nhưng tôi không thể nói điều này chắc chắn.
Jake

Xem en.wikipedia.org/wiki/Tseitin_transatures . Về cơ bản, nếu bạn cho phép giới thiệu các biến phụ trợ, bạn có thể thực hiện phép chuyển đổi này trong đa thời gian (tăng kích thước của công thức một cách tuyến tính nhất).
jschnei

Bạn sẽ cần phải quyết định xem bạn có muốn cho phép chuyển đổi của mình giới thiệu các biến mới hay không hoặc liệu công thức được chuyển đổi phải tham chiếu đến cùng một bộ biến số (không có biến mới). Đây là một điểm tinh tế có tác động mạnh mẽ đến câu trả lời. Vì vậy, những gì bạn muốn hỏi về?
DW

@Jake Bạn có thể đi từ bất kỳ công thức nào đến một CNF tương đương CNF-SAT hoàn thành NP. Đó không thực sự là "tại sao" CNF-SAT là NP-Complete: bằng chứng thông thường cho thấy CNF-SAT là NP-Complete không liên quan đến việc dịch các công thức tùy ý sang CNF; thay vào đó, nó chuyển các máy Turing thành các công thức CNF.
David Richerby

Đối với DW và những người khác - tôi đã có sự cân bằng trong tâm trí .. Theo nghĩa này, dường như sự không thỏa mãn chỉ là một sự giảm bớt (trong trường hợp này, đối với một công thức Boolean khác).
Martin Seymour

Câu trả lời:


14

Nếu bạn sẵn sàng giới thiệu các biến bổ sung, bạn có thể chuyển đổi từ dạng DNF sang dạng CNF trong thời gian đa thức bằng cách sử dụng biến đổi Tseitin . Công thức CNF kết quả sẽ tương xứng với công thức DNF ban đầu: công thức CNF sẽ thỏa đáng nếu và chỉ khi công thức DNF ban đầu đạt yêu cầu. Xem thêm https://en.wikipedia.org/wiki/Conjunctive_n normal_form#Conversion_into_CNF .

Nếu bạn không muốn cho phép giới thiệu các biến bổ sung, chuyển đổi từ dạng DNF sang CNF là đồng NP-hard. Cụ thể, kiểm tra xem một công thức DNF có phải là tautology hay không là NP-hard. Tuy nhiên, việc kiểm tra xem một công thức CNF có phải là tautology hay không có thể được thực hiện trong thời gian đa thức (bạn chỉ cần kiểm tra riêng xem mỗi mệnh đề có phải là một tautology hay không, điều này rất dễ vì mỗi mệnh đề là một sự phân biệt của nghĩa đen). Do đó, nếu bạn có thể chuyển đổi từ dạng DNF sang dạng CNF trong thời gian đa thức, mà không đưa ra các biến mới, thì bạn sẽ có được thuật toán thời gian đa thức để kiểm tra xem công thức DNF có phải là tautology hay không - điều mà chúng ta mong đợi P không bằng đồng NP. Hoặc, nói cách khác, chuyển đổi từ dạng DNF sang dạng CNF mà không đưa ra các biến bổ sung là co-NP-hard.

Đây là sự khác biệt giữa tương đương vs equisatisfiability . Sự tương đương đòi hỏi hai công thức phải có cùng một bộ giải pháp (và do đó không cho phép đưa ra các biến bổ sung). Tính thỏa mãn chỉ yêu cầu cả hai công thức đều thỏa mãn hoặc cả hai đều không thỏa mãn (và do đó không cho phép đưa ra các biến bổ sung).


@Mehrdad, vui lòng không sử dụng nhận xét để đặt câu hỏi mới. Chúng tôi có một 'Câu hỏi' ở phía trên bên phải nếu bạn có câu hỏi mới mà bạn muốn hỏi. Nhưng, chỉ là một mẹo nhỏ ... bạn có thể muốn đọc câu hỏi ở đầu trang này trước khi đặt câu hỏi mới ... hoặc, về vấn đề đó, đăng bình luận này. Tôi không thể không chú ý rằng bạn đã hỏi một câu hỏi trong đó câu trả lời được tìm thấy trên cùng trang với câu hỏi của bạn.
DW

@DW: Rất tiếc, tôi thực sự đã thấy bài đăng khác một chút sau đó và quên xóa bình luận của tôi ở đây, xin lỗi. Loại bỏ nó ngay bây giờ.
dùng541686
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.