Một loại chuyển đổi đơn giản là đảo ngược của chuyển đổi k-sat-to-3-sat:
Nhớ lại, việc chuyển đổi k-sat thành "j" -sat, :j<k
→(x1∨x2...∨xj∨...∨xk)(x1∨x2...xj∨d)∧(d¯¯¯∨xj+1∨xj+2...xk)
Ở đây, là một biến giả, có nghĩa là "Điều khoản này không đúng, nhưng một điều khoản khác tôi biết là". Mệnh đề khác là mệnh đề tiếp theo được tách ra khỏi bản gốc. Trên đây là một ví dụ trong đó 2 j ≥ k , nếu không nút chia 2 sẽ vẫn được lớn hơn j , và chúng ta phải chia một mà một lần nữa, trong cùng một cách.d2j≥kj
Đảo ngược chuyển đổi
sau đó bạn có thể kết hợp các điều khoản vào:(x1∨x2...xj)∧(x¯¯¯j∨xj+1∨...xk)
(x1∨x2...xj−1∨xj+1∨xj+2∨...xk)
Lưu ý thiếu trong công thức mới này.xj
Tất nhiên, bạn không được đảm bảo tìm các mệnh đề như thế này trong một công thức tùy ý để được bảo đảm nhỏ nhất bằng n k .nk+mnk
Tuy nhiên, trên các công thức thông thường, một biến và phủ định của nó sẽ xuất hiện trong công thức; nếu không, bạn có thể thực hiện loại bỏ hoàn toàn theo nghĩa đen (mô tả ở đây ). Để đơn giản, cũng cho phép giả định rằng . Sau đó, chúng ta có thể kết hợp bất kỳ hai mệnh đề có chứa một nghĩa đen trong một và phủ định của nó trong một mệnh đề khác. Vì mỗi nghĩa đen nên có một mệnh đề khác có phủ định, người ta có thể đoán theo kinh nghiệm rằng bạn sẽ có thể giảm một nửa số mệnh đề (bạn có thể bị mắc kẹt với một số nghĩa đen và phủ định của chúng trong các mệnh đề đã tham gia, và do đó bạn sẽ bị mắc kẹt với một số mệnh đề không thể kết thúc ở cuối, các mệnh đề tham gia tối ưu như thế này có thể là một vấn đề thú vị khác).k+m≥2k−2
BIÊN TẬP:
Sau khi phản ánh, tôi nhận ra rằng phải tự do và không được sử dụng ở nơi nào khác trong công thức để thu gọn hai mệnh đề mà nó thuộc về. Do đó, các mệnh đề loại này (một mệnh đề chứa một nghĩa đen và loại khác là phủ định của nó, với nghĩa đen này không được sử dụng ở nơi khác trong công thức) hiếm hơn nhiều so với tôi nghĩ ở trên. Vì vậy, câu trả lời thực sự là, không có gì đảm bảo chúng ta có thể giảm bao nhiêu số mệnh đề trong công thức.xj