Có khó để tìm chuỗi bổ sung tối ưu?


20

Một chuỗi Ngoài ra là một chuỗi các số nguyên dương (x1,x2,,xn) nơi x1=1 và mỗi chỉ số i2 , chúng ta có xi=xj+xk đối với một số chỉ số . Độ dài của chuỗi bổ sung là ; các mục tiêu của chuỗi Ngoài ra là .n x n1j,k<inxn

Điều gì đã biết về độ phức tạp của vấn đề sau: Cho một số nguyên , độ dài của chuỗi bổ sung ngắn nhất có mục tiêu là là bao nhiêu? Có khó NP không?NNN

Wikipedia chỉ ra một bài báo năm 1981 của Downey, Leong và Sethi chứng minh vấn đề liên quan sau đây là NP-hard: Cho một tập hợp các số nguyên có độ dài tối thiểu của chuỗi bổ sung bao gồm toàn bộ tập hợp là bao nhiêu? Một số tác giả dường như tuyên bố rằng bài báo này chứng minh vấn đề đơn mục tiêu là NP-hard, nhưng nó không.


2
Hai câu hỏi: N được đưa ra ở dạng nhị phân mà tôi giả sử, và jk có thể giống hệt nhau không (nếu vậy, luôn có một chuỗi log dài thông qua mở rộng nhị phân)
Suresh Venkat

Giả sử N được đưa ra dưới dạng nhị phân, mặc dù tôi không biết về thuật toán đa thời gian ngay cả khi N là đơn nhất. Và vâng, thêm vào bản thân bạn được cho phép - trên thực tế, bắt buộc phải lên khỏi mặt đất. Chuỗi ngắn nhất cho 128 là (1, 2, 4, 8, 16, 32, 64, 128).
Jeffε

Câu trả lời:


11

Vấn đề được đề cập là mở trong luận án tiến sĩ của Eric Lehman "Các thuật toán gần đúng để nén dữ liệu dựa trên ngữ pháp" vào năm 2002. Từ trang 35 của luận án:

"Tuy nhiên, một giải pháp chính xác cho vấn đề chuỗi bổ sung vẫn khó nắm bắt một cách kỳ lạ. Phương pháp M-ary chạy theo thời gian polylog (n) và đưa ra xấp xỉ 1 + o (1). Tuy nhiên, ngay cả khi thời gian được cho phép theo cấp số nhân, poly ( n), không có thuật toán chính xác nào được biết đến. "


2

Và trên bài viết chính của luận án của Lehman, có một cái nhìn tổng quan về vấn đề (phần VB) với các tài liệu tham khảo.


1

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 nN . Đối với mỗi cặp i ,1inNiNnN sao cho 1 i , j k , giới thiệu các biến P i j Q i j . i,j1i,jkPijQij

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:

P i jN jPijNiPijNj

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 t1 i L ( d ) , nơi L ( d ) biểu thị số nút của T X ở độ sâu d .TXtTdi1dlogt1iL(d)L(d)TXd

Với mỗi nút , nếu pq 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:

( d log t , j ) l j (dấu phẩy cho rõ ràng).(XT11)(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 iN 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 ( 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 choiikjjki+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)iikjjki+j=kfQijPijki,j , đặt tất cả Q i j 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!


1
Nếu điều này không hoạt động, có vẻ như đó vẫn là thời gian theo cấp số nhân (khi N được biểu thị dưới dạng nhị phân) vì số lượng biến tỷ lệ với N ^ 2 thay vì polylog (N).
David Eppstein

À vâng, tôi nên nhấn mạnh điều đó. Tôi đã nghĩ về trong unary sau nhận xét của @ JeffE rằng thậm chí điều đó không rõ ràng. Tôi có kế hoạch suy nghĩ về việc cắt giảm kích thước cá thể hơn nữa, nhưng hiện tại tôi quan tâm hơn đến việc đảm bảo điều này là ổn. Nếu có, tôi nghĩ có rất nhiều thứ để cải thiện. Ngẫu nhiên, bạn sẽ tìm thấy cách tiếp cận đầy hứa hẹn? N
Neeldhara

Tôi không thấy các ràng buộc mà bạn mô tả buộc một giải pháp là hợp lệ. Điều gì ngăn bạn đặt P_ij = 0 và Q_ij = 1 cho tất cả i + j = n và P_ij = Q_ij = 0 cho tất cả các i, j khác?
David Eppstein

Cảm ơn đã lội qua đó! Và vâng, bạn hoàn toàn đúng; Tôi có nghĩa là để thêm một hạn chế mà nói bất kỳ 's ngụ ý một trong những liên quan P i j ' s, nhưng nhận ra nó thổi lên sự phức tạp của các ví dụ vào Set miền Hitting, và trong khi tôi có nghĩa là để sửa chữa nó, Tôi nghĩ rằng tôi đã quên nó thay vào đó. Tôi đã cập nhật câu trả lời với một sửa chữa có thể, đó chỉ là một công trình hơi tẻ nhạt (nhưng đơn giản). NiPij
Neeldhara
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.