Tôi muốn ghi lại một số tiến bộ một phần - dường như có triển vọng cho đến nay - hướng tới một thuật toán thời gian đa thức. CẬP NHẬT : Đã thêm một số chi tiết vào tài khoản cho một trục trặc được chỉ ra bởi @David (cảm ơn!).
Cách tiếp cận là giảm điều này thành một ví dụ của MIN-ONES EVEN-3 CSP (MOEC), đây là một vấn đề có thể giải quyết được trong thời gian đa thức. Bằng chứng về việc giảm là một chút mờ nhạt, nhưng tôi hy vọng rằng nó tồn tại!
Một ví dụ của MOEC là một gia đình tập hợp con có kích thước 3 của một vũ trụ các biến và một số nguyên k . Câu hỏi đặt ra là liệu có sự phân công trọng lượng thỏa mãn tối đa k hay không , trong đó một phép gán là một hàm từ vũ trụ đến { 0 , 1 } , trọng số của một phép gán là số lượng biến mà nó gán một, và một phép gán là thỏa mãn nếu, với mọi tập hợp con của các biến { x , y , z } , phép gán (giả sử f ) có thuộc tính:3kk{0,1}{x,y,z}f
.f(x)+f(y)+f(z)=0(mod 2)
Bạn có thể hình dung đây là 3-SAT với một khái niệm khác về sự thỏa mãn - chọn không hoặc chọn hai. Tôi sẽ có một chút lỏng lẻo về trường hợp của MOEC ở chỗ tôi sẽ cho phép, ngoài -ubets thông thường , hàm ý, sự khác biệt về độ dài hai và ràng buộc ( x = 1 ) . Tôi tin rằng những bổ sung đơn giản này sẽ giữ cho vấn đề thời gian đa thức.3(x=1)
Giả sử chúng ta đang giảm vấn đề chuỗi bổ sung cho số . Biến được đặt cho mức giảm này là như sau:n
Với mỗi , biến N i . Tôi sẽ viết lại biến N n là N . Đối với mỗi cặp i ,1≤i≤nNiNnN sao cho 1 ≤ i , j ≤ k , giới thiệu các biến P i j và Q i j . i,j1≤i,j≤kPijQij
Giới thiệu các tập con sau, với mọi sao cho k = i + j :i,j,kk=i+j
{Pij,Qij,Nk}
và những hàm ý sau:
và
P i j ⇒ N jPij⇒NiPij⇒Nj
và các ràng buộc sau:
.(N1=1),(N=1)
Cuối cùng, chúng ta cần thêm các ràng buộc để đảm bảo rằng ít nhất một trong các được chọn khi N -variable"tương ứng"(tha thứ cho việc lạm dụng ký hiệu) được gán một. Điều này có thể được thực hiện bằng cách thêm các ràng buộc OR thông thường trên tất cả P i j sao cho i + j tổng hợp cho N -variable trong câu hỏi. Tuy nhiên, chúng ta phải tìm cách mã hóa lại điều này trong khung MOEC.PNPiji+jN
Vì vậy, hãy để tôi phác thảo một cách nói chung, đưa ra một tập hợp các biến:
,(X,l1,l2,…,lt)
cách hạn chế "nếu chuyển nhượng được đáp ứng và bộ một, sau đó chính xác là một trong những l i 's phải được thiết lập để từng sự phân công", có thể được mã hóa với cú pháp Moec. Lưu ý rằng điều này đủ cho các yêu cầu của chúng tôi, chúng tôi chỉ cần giới thiệu các ràng buộc:Xli
.(Nk,{Pij | i+j=k})
Việc mã hóa được thực hiện như sau. Đặt là cây nhị phân hoàn chỉnh gốc trên lá t . Giới thiệu một mới biến T d i cho tất cả 1 ≤ d ≤ log t và 1 ≤ i ≤ L ( d ) , nơi L ( d ) biểu thị số nút của T X ở độ sâu d .TXtTdi1≤d≤logt1≤i≤L(d)L(d)TXd
Với mỗi nút , nếu p và q là con của nó trong cây, hãy đưa ra ràng buộc EVEN-3:Tdipq
{Tdi,p,q}
Điều này có nghĩa là nếu một biến tương ứng với một nút được đặt thành true, thì chính xác một trong các con của nó cũng phải được đặt thành true. Bây giờ thêm ý nghĩa:
và
( d log t , j ) ⇒ l j (dấu phẩy cho rõ ràng).(X⇒T11)(dlogt,j)⇒lj
Sự kết hợp giữa các ràng buộc và hàm ý EVEN-3 này tương đương với các ràng buộc mà chúng tôi muốn mã hóa.
Theo trực giác, những gì đang xảy ra là hai ràng buộc cuối cùng kích hoạt chính xác các phản ứng cần thiết để xây dựng chuỗi bổ sung. Cụ thể, chúng ta hãy xem được chỉ định một bởi một nhiệm vụ thỏa mãn - yêu cầu là chúng sẽ tạo thành một chuỗi bổ sung cho N : vì nhiệm vụ buộc phải đặt N thành một, nên ít nhất phải có N một P i j được đặt thành một, và hàm ý bắt buộc N i và N jNiNNPijNiNjđược chỉ định một, và điều này hoàn toàn đi xuống (tôi chắc chắn điều này có thể được chính thức hóa bằng cảm ứng, mặc dù tôi chưa tìm ra mức độ chi tiết đó). Lưu ý rằng một phép gán quy định tối ưu về số lượng được gán sẽ không đặt đúng cho hai cặp ( r , s , vì lý do các biến P đi kèm với bổ sung hành lý của các hàm ý và các biến Q không (chúng ở đó để đảm bảo EVEN-3 thỏa mãn - theo một điều khoản trong đó N i là đúng và PPij Và ( r ' , s ' )(r,s)(r′,s′)PQNi không đúng, chúng ta vẫn cần chọn một cái gì đó để thỏa mãn mệnh đề đó và vì những lý do dễ thấy, đây không thể là một biến phổ quát trong các mệnh đề).Pij
Vì vậy, tôi tin rằng một chuỗi bổ sung tương ứng với một nhiệm vụ thỏa mãn và ngược lại. Hãy để tôi mô tả một phần của điều này một cách chính thức: đưa ra một chuỗi bổ sung, chúng tôi xây dựng một nhiệm vụ thỏa mãn. Để bắt đầu, f bộ tất cả N i 's rằng tính năng trong chuỗi để một, và người kia N i là không. Hơn nữa, nếu k tính năng trong chuỗi bổ sung, thì với mỗi N k , hãy để i k , j k là các phần tử trong chuỗi sao cho i k + j k = j . Sau đó f đặtffNiNikNkik,jkik+jk=jf thành một (và Q i k jPikjk to zero), và tất cả(i,j)sao choi≠ikvàj≠jkvài+j=k,fđặtQ i j thành một (vàP i j về 0). Đối với tất cả cáckkhông có trong chuỗi bổ sung, với tất cải,jsao chotôiQikjk(i,j)i≠ikj≠jki+j=kfQijPijki,j , đặt tất cả Q i j và P i j về 0 (lưu ý rằng tính nhất quán xuất phát từ thực tế là hai số chỉ cộng lại theo một cách). Mọi mệnh đề liên quan đến N i trong chuỗi đều được thỏa mãn vì biến P hoặc biến Q tương ứng với nó được đặt thành một (và lưu ý rằng chính xác một trong số chúng được đặt thành một cho bất kỳ cặp nào ( i , j ) ). Đối với mọi mệnh đề khác, mọi thứ được đặt thành không. Rằng các hàm ý là dễ dàng để kiểm tra.i+j=kQijPijNi(i,j)
Phần không rõ ràng là như sau: bởi vì với mọi phần tử được chọn trong chuỗi bổ sung, phép gán phải chịu trọng số t (vì tất cả các biến Q được đặt thành một). Vì vậy, có khả năng một chuỗi bổ sung dài hơn sẽ tương ứng với một nhiệm vụ rẻ hơn, nhưng tôi khá chắc chắn điều này không xảy ra vì một bằng chứng dọc theo các dòng sau: xem xét một chuỗi bổ sung tối ưu và giả sử có một chuỗi dài hơn có một nhiệm vụ thỏa mãn trọng lượng nhỏ hơn tương ứng với nó. Rõ ràng, các phần tử của chuỗi dài loại trừ ít nhất một phần tử từ phần ngắn hơn - hãy để phần tử đó là x . Tôi muốn nói rằng chi phí phát sinh với xttQxxDù sao cũng phải chịu trong chuỗi dài hơn và phần còn lại so sánh thuận lợi. Tuy nhiên, tôi phải viết nó ra một cách cẩn thận, và tôi có thể thấy những điều từ hội chứng sau nửa đêm!