Độ phức tạp của một biến thể tổng con


9

Là biến thể của vấn đề tổng tập hợp con dễ dàng / được biết đến?

Cho một số nguyên và một tập hợp các số nguyên dương sao cho mỗi có tối đa bit được đặt thành ( ); có tập con sao cho tổng các phần tử của nó bằng ?A = { x 1 , x 2 , . . . , x n } x i k = 2 1 x i = 2 b i 1 + 2 b i 2 ,mA={x1,x2,...,xn}xik=21Một 'A mxi=2bi1+2bi2,bi1,bi20AAm

Có phải trong không? Nó vẫn còn -complete?N PPNP

Và nếu mọi có tối đa bit được đặt thành ? Với thì vấn đề là tầm thường. k = 3 1 k = 1xik=31k=1

Câu trả lời:


8

Nó vẫn là -complete, ngay cả với . Đưa ra một ví dụ về tổng tập hợp con, chúng ta có thể chuyển đổi nó thành biến thể này bằng cách tách các số và thêm một số bit bổ sung. k = 2NPk=2

Đầu tiên, tổng của tất cả các số trong bài toán sẽ nhỏ hơn đối với một số giá trị của . m2mm

Bây giờ, hãy lấy một số từ bài toán ban đầu có bit được đặt. Chúng ta sẽ chia số này thành số với chính xác 2 bit được đặt sao cho tổng của các số đó là . Chúng ta có thể thực hiện điều này một cách đệ quy, bằng cách tìm số có tổng bằng bit cộng với và số tổng cộng đến các cùng cộng với .k k n + 2 k + mkk2 k + m - 1kk2 k + m - 1nkkn+2k+mkk2k+m1kk2k+m1

Ngoài số đó, chúng tôi cũng sẽ thêm số vào vấn đề. Một giải pháp phải chứa số này hoặc tất cả các số xây dựng trước đó. Nếu giá trị mục tiêu ban đầu là , giá trị mục tiêu mới sẽ là . k t t + 2 k + m2k+mktt+2k+m

Nếu vấn đề ban đầu có nhiều hơn một số, chúng ta có thể lặp lại quá trình này lấy cho giá trị mới của .mk+m+1m

Chỉ có hai cách để bit ở vị trí có thể được đặt: câu trả lời có thể chứa số hoặc tất cả các số có tổng bằng . Vì vậy, chúng tôi đã giảm tổng tập hợp con cho biến thể tổng tập hợp con của bạn.2 k + m k n + 2 k + mk+m2k+mkn+2k+m

Ví dụ: hãy lấy với giá trị đích . Vấn đề này có thể được mã hóa dưới dạng biến thể tổng con được trình bày ở đây bằng cách lấy các số nhị phân sau: 7{2,3,5}7

2 được ánh xạ tới và . (Sử dụng bit thừa không thực sự cần thiết ở đây.)0000 10100 10000 1

3 được ánh xạ tới và0000 00 011000 00 1,0100 00 10000 00 01

5 được ánh xạ tới và .0000 00 000 011000 00 000 1,0010 00 000 10000 00 000 01

Giá trị mục tiêu mới sẽ trở thành .1110 10 010 01

Nếu vấn đề ban đầu được biểu diễn bằng bit, thì vấn đề được chuyển đổi có nhiều nhất là các bit . Bài toán ban đầu sẽ có nhiều nhất là số với mỗi bit có nhiều nhất là , do đó tổng của tất cả chúng cũng là O (n). Bài toán được chuyển đổi sẽ có các số (vì mỗi số -bit được chia thành bit, với độ dài của chúng nhiều nhất là vì chúng tôi sử dụng bit bổ sung cho mỗi số. Vì vậy, tổng kích thước của bài toán được chuyển đổi là các bit .O ( n 4 ) O ( n ) O ( n ) O ( n 2 ) n n + 1 2 O ( n 2 ) n O ( n 4 )nÔi(n4)Ôi(n)Ôi(n)Ôi(n2)nn+1 2Ôi(n2)nÔi(n4)


bạn có chắc chắn rằng mã hóa không dẫn đến kích thước theo cấp số nhân của băng làm việc không?
Vor

Không, tôi nghĩ rằng vấn đề được chuyển đổi là kích thước quartic. Nếu đầu vào có n bit, thì có tối đa n số với mỗi bit n được đặt. Vì vậy, sẽ có các số O (n ^ 2) trong bài toán được chuyển đổi (vì một số k-bit được chia thành các số k + 1). Mỗi số dài (2n) bit để chứa tổng tối đa cộng n bit cho mỗi số n trong bài toán ban đầu. Vì vậy, mỗi số sẽ có các bit O (2n + n ^ 2), với tổng số bit O (n ^ 4).
Tom van der Zanden

@TomvaderZanden: Tôi đã thêm một hình ảnh về sự giảm bớt của bạn trong câu hỏi; xem tôi có giải thích chính xác không
Vor

@TomvaderZanden: hôm nay tôi xem xét mức giảm của bạn một lần nữa, nhưng không rõ làm thế nào từ một số tùy ý với bit được đặt, bạn có thể chia nó thành các số 2 bit trong đó phần "cao nhất" tổng hợp thành . Giả sử bạn có một số với bit được đặt; bạn cần 13 số 2 bit, nhưng 13 là 1101 và bạn không thể "che" nó bằng số hai bit (ví dụ của bạn hoạt động vì với 3 và 5 k = 2). Tôi nghĩ rằng điều này có thể dễ dàng sửa nếu bạn sử dụng một bit cao khác nhau cho mỗi số 2 bit; họ sẽ tổng hợp thành 01111 ... 1, sau đó bạn thêm một giả 0000 ... 1 sẽ cho phép tổng là . k k 2 k n k = 13 k 2 knkk2knk=13k2k
Vor

Nó hơi mơ hồ, nhưng chắc chắn có thể sử dụng thủ tục "quy nạp". Bạn thực sự không cần bit, bạn chỉ cần . Nếu bạn muốn tìm 13 số 1 bit có tổng bằng , thì bạn cần tìm 6 số có tổng bằng và 7 cũng có tổng bằng . Chúng ta có thể mất mà thực sự tính tổng lên tới . c đ i l ( log k ) 2 4 2 3 2 3 10 * 2 0 + 3 * 2 1 2 4kceTôitôi(đăng nhậpk)24232310*20+3*2124
Tom van der Zanden

0

Đây là thông tin trích từ câu hỏi của Vor.

Đối với vấn đề vẫn còn NP-đầy đủ. Tôi đã tìm thấy sự giảm nhanh từ X-SAT đơn điệu ( xem sơ đồ giảm ở đây ).k3

Vấn đề vẫn là NP-đầy đủ ngay cả khi , xem câu trả lời của Tom để biết chi tiết. Đây là một đại diện nhỏ cho sự giảm bớt của anh ấy từ SUBSET SUM:k= =2

nhập mô tả hình ảnh ở đây

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.