Một vấn đề phân vùng trong đó một số số có thể bị cắt


8

Trong bài toán phân vùng tiêu chuẩn , chúng tôi được cung cấp một số số có tổng là 2 s2s và phải quyết định xem chúng có thể được phân chia thành hai tập con có tổng là s khôngs . Nó được biết đến là NP-cứng.

Tuy nhiên, giả sử rằng chúng ta được phép chỉ định một trong các số là "số mềm" có thể cắt nó thành một số phần tùy ý, trong đó các phần khác nhau có thể được đặt vào các tập con khác nhau. Sau đó, vấn đề trở nên dễ dàng: chỉ cần sắp xếp tất cả các số trên một dòng theo thứ tự tùy ý và cắt dòng thành hai dòng phụ có cùng một tổng.

CÂU HỎI: Giả sử chúng ta được cung cấp một số số có tổng bằng 3 s3s và phải quyết định xem chúng có thể được phân chia thành ba tập con có tổng là s hay khôngs , trong khi sử dụng tối đa một số mềm. Sự phức tạp của vấn đề này là gì?

  • Nếu chúng ta được phép sử dụng hai số mềm, thì vấn đề lại trở nên dễ dàng - chúng ta có thể giải quyết nó bằng cách sắp xếp các số trên một dòng như trên.
  • Nếu chúng ta được phép sử dụng các số mềm bằng 0 , thì vấn đề rõ ràng là khó khăn - ít nhất cũng khó như vấn đề phân vùng thành hai tập con.
  • Nếu chúng tôi được phép sử dụng một số mềm, tôi đoán là vấn đề vẫn còn khó khăn và bằng cách nào đó chúng tôi có thể giảm bớt nó khỏi vấn đề phân vùng tiêu chuẩn, nhưng tôi không thể tìm ra mức giảm phù hợp. Vì vậy, nó là dễ hay khó?

Một câu hỏi khác: trong trường hợp vấn đề thực sự là NP-hard, nó có thể được giải quyết trong thời gian giả đa thức như bài toán phân vùng hai tập hợp không?


1
Một phần của vấn đề này là tìm một tập hợp con có tổng bằng một phần ba tổng của tập hợp. Tuy nhiên, tôi không thể tìm thấy các tài liệu tham khảo phù hợp cho biết vấn đề tổng hợp con bị hạn chế này là NP-hard.
John Dvorak

Thật ra, nó tương đương với điều đó, vì phần còn lại là chia hai phần ba với một lần cắt.
John Dvorak

@JohnDvorak nếu chúng ta có thể giải bài toán tổng con thì chúng ta có thể giải bài toán trong câu hỏi, nhưng điều ngược lại là không đúng: chúng ta có thể có một giải pháp cho vấn đề trong đó một số được cắt thành ba phân số và mỗi số tập hợp con chứa một phần. Giải pháp này không giải quyết được vấn đề tổng hợp con.
Erel Segal-Halevi

đó là lý do tại sao tôi không đăng câu trả lời. Tôi tin rằng vấn đề phân vùng 1: 2 vẫn chưa hoàn tất (và nói chung là vấn đề phân vùng cho bất kỳ tỷ lệ cố định nào), nhưng tôi không có bất kỳ bằng chứng nào cho vấn đề này. Nhưng nếu nó thực sự là NP-hard, thì phân vùng 3 chiều cũng có vấn đề một lần cắt.
John Dvorak

1
Tôi đã cập nhật công thức vấn đề để rõ ràng rằng một số có thể cắt được có thể được cắt thành nhiều phần. (Khi tôi lần đầu tiên đọc vấn đề, tôi đã nghĩ rằng bạn chỉ được phép cắt một số một lần.)
Gamow

Câu trả lời:


5

Số lớn nhất là số mềm

Tôi khẳng định rằng đối với bất kỳ trường hợp nào của vấn đề của bạn, nếu trường hợp đó có thể giải quyết được (có thể phân vùng các số bằng một số mềm) thì có thể giải quyết trường hợp sử dụng số lớn nhất làm số mềm duy nhất. Điều này rất dễ chứng minh: mọi giải pháp đều có thể được sửa đổi thành một giải pháp với số lớn nhất là số mềm; chỉ cần đặt số hiện tại là số mềm vào phân vùng chứa số lớn nhất và chia số lớn nhất cho các phần của phân vùng thay thế.

Vấn đề đóng gói

Đây là một vấn đề mà tôi sẽ gọi là vấn đề đóng gói:

Các đầu vào bao gồm một danh sách các số dương một 1 , một 2 , ... , một ka1,a2,,ak và một số thức một iai cho tất cả ii . Xác định s = 13 (+Σ k i = 1 mộti)s=13(+ki=1ai). Sau đó, vấn đề là phân vùng danh sách củamộtiaithành ba phần sao cho mỗi phần có tổng nhiều nhấtlà ss.

Tôi cho rằng vấn đề đóng gói với các đầu vào một 1 , ... , một ka1,,ak là tương đương với vấn đề của bạn với danh sách đầu vào một 1 , ... , một k , a1,,ak, . Nếu nó có thể để đóng gói các con số một 1 , ... , một ka1,,ak thành ba nhóm mỗi sum tại hầu hết các ss sau đó bạn có thể sử dụng như một số phần mềm để vòng ra mỗi số tiền chính xác ss ; do đó bạn có một phân vùng của một 1 , ... , mộtk , a1,,ak, thành ba nhóm sum ss sử dụng một số phần mềm. Nếu mặt khác một 1 , ... , một k , a1,,ak, có thể được phân chia thành ba nhóm sum ss sử dụng một số phần mềm sau đó danh sách này có thể được phân chia thành ba nhóm sum ss sử dụng như số mềm (do kết quả từ phần trước). Trong trường hợp này, việc phân nhóm a imộtTôi thành ba phần thỏa mãn điều kiện là mỗi phần có tổng tối đa là sS .

Vấn đề đóng gói không có số lượng nhỏ

Nói rằng một thể hiện của vấn đề bao bì "không có số lượng nhỏ" nếu với mọi iTôi , một i > 2mộtTôi> 2 . Tôi khẳng định rằng bạn có thể giảm vấn đề đóng gói thành vấn đề đóng gói với số lượng không nhỏ.

Giả sử rằng trong bao bì vấn đề ví dụ ( một 1 , ... , một k ) , ( một1, ... , mộtk) , số một tôimộtTôimột i2mộtTôi2 . Wlog giả sửmộtkmộtklà nàymộtimộtTôi. Sau đó, tôi khẳng định ví dụ về vấn đề đóng gói(a1,Gabriel,ak-1),+ak( một1, ... , mộtk - 1) , + aktương đương với thể hiện ban đầu. Lưu ý rằng giá trịsSvẫn giữ nguyên trong cả hai trường hợp.

Chắc chắn nếu bạn có thể đóng gói các con số một 1 , ... , một kmột1, ... , mộtk thành ba nhóm với mỗi nhóm có tổng tại hầu hết các sS sau đó bạn có thể đóng gói các con số một 1 , ... , một k - 1một1, ... , mộtk - 1 thành ba nhóm với mỗi nhóm có tổng nhiều nhất sS .

Mặt khác, giả sử bạn có thể đóng gói các con số một 1 , ... , một k - 1một1, ... , mộtk - 1 thành ba nhóm với mỗi nhóm có tổng tại hầu hết các sS . Đối với mỗi nhóm trong ba nhóm, hãy xem xét giá trị sS trừ tổng của các phần tử trong nhóm. Gọi các giá trị này là e 1 , e 2 , e 3e1, e2, e3 ; ở đây e ieTôi là lượng "khoảng trống" trong nhóm iTôi . Chúng ta biết rằng e 1 + e 2 + e 3e1+ e2+ e3 , tổng không gian trống, bằng 3s - Σ k - 1 i = 1 một i3sk1i=1ai (tổng diện tích 3 s3s không gian trừ sử dụng Σ k - 1 i = 1 một ik1i=1ai ). Nhưng 3 s - Σ k - 1 i = 1 một i = một k + 3sk1i=1ai=ak+ theo định nghĩa của ss . Như vậy, ba nhóm có một k + ak+ khoảng trống trong tổng số. Sau đó kể từ khi một k< 2ak<2 , chúng ta biết rằng tổng không gian trống là hơn3ak3ak. Bởi nguyên tắc lỗ pigeon, ít nhất là một trong những nhóm cómộtkakhoặc không gian trống hơn trong đó. Do đó, chúng ta có thể thêm phần tửakakvào một trong các nhóm và kết thúc bằng việc đóng gói các sốa1,Vượt,mộtka1,,akthành ba nhóm với mỗi nhóm có tổng số nhiều nhấtlà ss.

Vì vậy, để giải quyết vấn đề của bạn, chỉ cần giải quyết vấn đề đóng gói với số lượng không nhỏ.

Bổ đề 1

Tuyên bố bổ đề:

Giả sử chúng ta có thể phân vùng một 1 , ... , một ka1,,ak vào nhóm 1 và 2 như vậy mà nhóm 2 có một số chẵn các yếu tố và tổng của các yếu tố trong nhóm 1 là trong khoảng [ s - 2 ,s][s2,s]. Sau đó, có thể phân vùng nhóm 2 thành hai nhóm nhỏ 2a và 2b, mỗi nhóm có tổng tối đalà ss. Lưu ý rằng các nhóm 1, 2a và 2b là một giải pháp của trường hợp đóng gói.

Đây là một bằng chứng.

Dự kiến ​​chỉ định một nửa các yếu tố của nhóm 2 cho nhóm 2a và nửa còn lại cho nhóm 2b. Tạo sự phù hợp giữa các yếu tố của hai nhóm nhỏ. Hoán đổi các cặp này giữa hai nhóm, mỗi lần một cặp. Nếu có 2 n2n phần tử trong nhóm 2 thì quá trình này đi qua chính xác n + 1n+1 phân vùng có thể của nhóm 2 thành các nhóm con 2a và 2b. Tôi khẳng định rằng ít nhất một trong những phân vùng đó có cả hai nhóm con với tổng nhỏ hơn ss .

Đặt S 2 aS2aS 2 bS2b là tổng của hai nhóm con (chúng tôi cho phép các giá trị này thay đổi khi các nhóm thay đổi).

Ở mỗi bước của quy trình trên, nhóm 2a được một yếu tố và mất đi một yếu tố khác. Vì mỗi phần tử có giá trị giữa 22, chúng ta có thể kết luận rằng tại mỗi bước của quá trình trên,S2mộtS2athay đổi bởi ít nhất22 .

Ngoài ra, giá trị cuối cùng của S 2 aS2a bằng với giá trị ban đầu của S 2 bS2b kể từ khi kết thúc quá trình, các nhóm đã hoán đổi hoàn toàn.

Gọi AA là giá trị trung bình của S 2 aS2aS 2 bS2b . Lưu ý rằng điều này là không đổi khi các nhóm thay đổi. Chúng ta biết rằng các giá trị ban đầu và cuối cùng của S 2 mộtS2a trung bình MộtA (kể từ khi giá trị ban đầu và cuối cùng của S 2 mộtS2a bằng với giá trị ban đầu của S 2 mộtS2aS 2 bS2b ). Do đó, AA phải nằm giữa giá trị ban đầu và giá trị cuối của S 2 aS2a . Khi chúng ta thay đổi các nhóm, giá trị của S 2 aS2atiến hành các bước kích thước tối đa là 22 từ một bên củaAAsang bên kia. Từ đó, chúng ta có thể kết luận rằng tại một số điểm, giá trị củaS2mộtS2aphải nằm trong một nửa kích thước bước tối đa (44 ) củaMộtA. Kể từS2bS2bluôn có cùng một khoảng cách từAAnhưS2mộtS2a, chúng ta có thể kết luận rằng tại một số điểm, cả hai khoản tiềnS2mộtS2aS2bS2bnằm trong44 củaMộtA.

3 s - - ( S 2 a + S 2 b )3s(S2a+S2b) là tổng các phần tử của nhóm 1; do đó, 3 s - - ( S 2 một + S 2 b ) s - 23s(S2a+S2b)s2 (theo điều kiện trên tổng của nhóm 1). Sắp xếp lại, chúng tôi có mà(S2một+S2b)2s-2(S2a+S2b)2s2 . Do đó, tỷ lệ trung bình củaS2mộtS2aS2bS2blà tại hầu hết cács-4s4 . Sau đó, vào thời điểm đó rằng cả haiS2mộtS2aS2bS2bnằm trong44 củaAA, chúng ta thấy rằng cả hai đều ở hầu hết cácssnhư mong muốn.

Trường hợp 1: k = 3 nk=3n

Tính tổng nn nhỏ nhất a iai s và cũng là nn lớn nhất a iai s.

Nếu nn nhỏ nhất a iai s tổng lớn hơn ss , thì không nhóm nào có thể có nn hoặc nhiều phần tử (vì bất kỳ lựa chọn nào của nn phần tử sẽ dẫn đến tổng là quá lớn). Nhưng nguyên lý lỗ chim bồ câu cho chúng ta biết rằng ít nhất một nhóm có ít nhất nn yếu tố. Vì vậy, trong trường hợp này không có giải pháp cho trường hợp đóng gói vấn đề.

Nếu nn lớn nhất a iai s tổng với tối đa ss , thì mọi lựa chọn của nn phần tử có tổng tối đa ss . Trong trường hợp này, chỉ cần phân vùng các phần tử thành ba nhóm có kích thước bằng nhau sẽ giải quyết trường hợp đóng gói.

Trường hợp duy nhất còn lại là nn phần tử nhỏ nhất tổng hợp tối đa ss và phần tử nn lớn nhất tổng hợp nhiều hơn ss . Như trong bổ đề, chúng ta có thể chuyển đổi từ từ giữa hai tập hợp này: bắt đầu với một nhóm được khởi tạo với nn phần tử nhỏ nhất và phần tử hoán đổi cho đến khi nhóm có nn phần tử lớn nhất . Mỗi bước di chuyển tổng của nhóm bởi ít nhất 22 (theo logic tương tự như trong chứng minh bổ đề) và tổng vượt qua giá trịsstại một số điểm trong quy trình này. Do đó, một trong hai ngay trước hoặc ngay sau khi vượt qua giá trịss, tổng nhỏ hơnssnhưng ít bởi ít nhất22 . Nói cách khác, tại một số điểm trong quá trình này, nhóm có một số tiền trong khoảng[s-2 ,s][s2,s]. Lấy nhóm đó làm nhóm 1 và2n2nphần tửcòn lạilàm nhóm 2. Bổ đề được áp dụng, cho phép chúng tôi tìm giải pháp cho trường hợp đóng gói vấn đề.

Trường hợp 2: k = 3 n + 1k=3n+1

Tính tổng n + 1n+1 nhỏ nhất a iai s và cũng là n + 1n+1 lớn nhất a iai s.

Nếu n + 1n+1 nhỏ nhất a iai s tổng bằng nhiều hơn ss , thì không nhóm nào có thể có n + 1n+1 hoặc nhiều phần tử (vì bất kỳ lựa chọn nào của n + 1n+1 phần tử sẽ dẫn đến tổng quá lớn). Nhưng nguyên tắc lỗ chim bồ câu cho chúng ta biết rằng ít nhất một nhóm có ít nhất n + 1n+1 nguyên tố. Vì vậy, trong trường hợp này không có giải pháp cho trường hợp đóng gói vấn đề.

Nếu n + 1n+1 lớn nhất a iai s sum tối đa ss , thì mọi lựa chọn của n + 1n+1 phần tử có tổng tối đa ss . Trong trường hợp này, chỉ cần phân vùng các phần tử thành ba nhóm có kích thước nn , nnn + 1 đển+1 giải quyết trường hợp đóng gói.

Trường hợp duy nhất còn lại là các phần tử n + 1n+1 nhỏ nhất tổng hợp tối đa ss và các phần tử n + 1n+1 lớn nhất tổng hợp nhiều hơn ss . Như trong trường hợp trước, chúng ta có thể chuyển đổi từ từ giữa hai bộ này: bắt đầu với một nhóm được khởi tạo với các phần tử n + 1n+1 nhỏ nhất và các phần tử hoán đổi cho đến khi nhóm có các phần tử n + 1n+1 lớn nhất . Mỗi bước di chuyển tổng của nhóm bởi ít nhất 22 (theo logic tương tự như trong chứng minh bổ đề) và tổng vượt qua giá trịsstại một số điểm trong quy trình này. Do đó, một trong hai ngay trước hoặc ngay sau khi vượt qua giá trịss, tổng nhỏ hơnssnhưng ít bởi ít nhất22 . Nói cách khác, tại một số điểm trong quá trình này, nhóm có một số tiền trong khoảng[s-2 ,s][s2,s]. Lấy nhóm đó làm nhóm 1 và2n2nphần tửcòn lạilàm nhóm 2. Bổ đề được áp dụng, cho phép chúng tôi tìm giải pháp cho trường hợp đóng gói vấn đề.

Trường hợp 3: k = 3 n + 2k=3n+2 subcase dễ dàng đầu tiên

Tổng nn nhỏ nhất a iai s và nn lớn nhất a iai s.

Nếu một trong hai giá trị trong khoảng [ s - 2 ,s][s2,s], ngay lập tức áp dụng bổ đề với lựa chọnnnphần tử là nhóm 1 và phần tử2n+22n+2còn lạilà nhóm 2. Điều này cho phép chúng tôi tìm ra giải pháp cho trường hợp đóng gói.

Nếu nn nhỏ nhất một iai s sum đến dưới s - 2s2nnlớn nhấtaiais tổng lớn hơnssthì chúng ta có thể bắt đầu vớinnphần tửaiaisnhỏ nhấtvà hoán đổi cho đến khi chúng ta kết thúc vớinnlớn nhấtaiais. Tại mỗi bước di chuyển tổng tối đa là22 , vì vậy tại một số điểm trong quá trình này, chúng tôi có một nhómnnyếu tố có tổng số trong khoảng[s-2 ,s][s2,s]. Lấy nhóm đó làm nhóm 1 và cácyếu tố2n+22n+2còn lạilàm nhóm 2. Bổ đề được áp dụng, cho phép chúng tôi tìm giải pháp cho trường hợp đóng gói vấn đề.

Nếu nn nhỏ nhất a iai s tổng lớn hơn ss , thì không nhóm nào có thể có nn hoặc nhiều phần tử (vì bất kỳ lựa chọn nào của nn phần tử sẽ dẫn đến tổng là quá lớn). Nhưng nguyên tắc lỗ chim bồ câu cho chúng ta biết rằng ít nhất một nhóm có ít nhất n + 1n+1 nguyên tố. Vì vậy, trong trường hợp này không có giải pháp cho trường hợp đóng gói vấn đề.

Trường hợp duy nhất còn lại là cả nn nhỏ nhất và nn lớn nhất một iai s add đến dưới s - 2s2 .

Trường hợp 3: k = 3 n + 2k=3n+2 giây

Tính tổng n + 2n+2 nhỏ nhất a iai s và n + 2n+2 lớn nhất a iai s.

Nếu một trong hai giá trị trong khoảng [ s - 2 ,s][s2,s], ngay lập tức áp dụng bổ đề với lựa chọnn+2n+2phần tử đó là nhóm 1 và2n2nphần tửcòn lạilà nhóm 2. Điều này cho phép chúng tôi tìm ra giải pháp cho trường hợp đóng gói vấn đề.

Nếu n + 2n+2 nhỏ nhất một iai s sum đến dưới s - 2s2n+2n+2lớn nhấtaiais tổng bằng nhiều hơnssthì chúng ta có thể bắt đầu vớin+2n+2nhỏ nhấtaiais và các phần tử hoán đổi cho đến khi chúng ta kết thúc vớin+2n+2lớn nhấtaiais. Tại mỗi bước di chuyển tổng tối đa là22 , vì vậy tại một số điểm trong quá trình này, chúng tôi có một nhómn+2n+2yếu tố có tổng số trong khoảng[s-2 ,s][s2,s]. Lấy nhóm đó làm nhóm 1 và2n2nphần tửcòn lạilàm nhóm 2. Bổ đề được áp dụng, cho phép chúng tôi tìm giải pháp cho trường hợp đóng gói vấn đề.

Nếu n + 2n+2 lớn nhất a iai s sum tối đa ss , thì mọi lựa chọn của n + 2n+2 phần tử có tổng tối đa ss . Trong trường hợp này, chỉ cần phân vùng các phần tử thành ba nhóm có kích thước nn , n + 1n+1n + 1 đển+1 giải quyết trường hợp đóng gói.

Trường hợp duy nhất còn lại là cả n + 2n+2 nhỏ nhất và n + 2n+2 lớn nhất a iai s cộng vào nhiều hơn ss .

Trường hợp 3: k = 3 n + 2k=3n+2 subcase cứng

Giả sử không có hai trường hợp trên xử lý cá thể. Sau đó, chúng tôi biết như sau:

  • cả nn nhỏ nhất và nn lớn nhất một iai s add đến dưới s - 2s2 .
  • cả n + 2n+2 nhỏ nhất và n + 2n+2 lớn nhất a iai s thêm vào nhiều hơn ss .

n + 2n+2 nhỏ nhất a iai s thêm vào nhiều hơn ss , không nhóm nào có thể có n + 2n+2 hoặc nhiều phần tử. Cách duy nhất có thể thực hiện được là nếu các nhóm có kích thước nn , n + 1n+1n + 1n+1 .

Lưu ý rằng kể từ khi nn lớn nhất một iai s add đến dưới s - 2s2 , không có vấn đề gì trong các phần tử có kích thướcnn: nhóm đó sẽ có tổng nhỏ hơnss. Rõ ràng, chúng ta có thể sửa đổi bất kỳ giải pháp bằng cách trao đổi cácnnlớn nhấtmộtiais vào nhóm các kích thướcnn. Những giao dịch hoán đổi chỉ giảm số tiền của hai nhóm khác, do đó tồn tại một giải pháp cho vấn đề ví dụ đóng gói khi và chỉ khi tồn tại một giải pháp trong đónnlớn nhấtmộtiais một hình thức của nhóm.

Do đó, nhiệm vụ trong tay chỉ đơn giản là: có thể phân vùng 2 n + 22n+2 nhỏ nhất a iai s thành hai nhóm có kích thước n + 1n+1 sao cho mỗi nhóm trong hai nhóm đó có tổng bằng tối đa ss . Wlog giả sử rằng một iai s là thứ tự tăng dần sao cho 2 n + 22n+2 nhỏ nhất một iai s là một 1 , ... , một 2 n + 2a1,,a2n+2

Gọi vv là trung bình của nn lớn nhất a iai s. Đặt x i = v - a ixi=vai cho mỗi ii . Khi đó 3 s = + 3 n + 2 i = 1 a i = + 2 n + 2 i = 1 a i + 3 n + 2 i = 2 n + 2 mộti=+Σ 2 n + 2 i = 1 (v-xi)+nv=+(3n+2)v- 2 n + 2 i = 1 (xi)=(-v)+(3n+3)v-2 n + 2 i = 1 ( x i )3s=+3n+2i=1ai=+2n+2i=1ai+3n+2i=2n+2ai=+2n+2i=1(vxi)+nv=+(3n+2)v2n+2i=1(xi)=(v)+(3n+3)v2n+2i=1(xi) .

Khi đó s = ( n + 1 ) v + - v3 -13 2 n + 2 i = 1 (xi)s=(n+1)v+v3132n+2i=1(xi).

Nếu chúng ta chọn một số thiết lập tôiI của n + 1n+1 chỉ số, sau đó tổng các một iai s với i IiI bằng Σ i tôi một i = Σ i I v - x i = ( n + 1 ) v - Σ i I x iiIai=iIvxi=(n+1)viIxi . Một tập hợp các chỉ số II là một lựa chọn hợp lệ cho một trong các nhóm với điều kiện số tiền này nhiều nhất là ss. Nói cách khác, bằng cách sử dụng định nghĩa thay thế của ss có nguồn gốc ở trên, với điều kiện chúng ta đang quan tâm là Σ i I x i13 2 n + 2 i = 1 (xi)--v3iIxi132n+2i=1(xi)v3 . Rõ ràng, còn lạin+1n+1chỉ sốI'={1,...,2n+2}tôiI={1,,2n+2}Icũng phải đáp ứng điều kiện này:ΣiI'xi13 2 n + 2 i = 1 (xi)--v3iIxi132n+2i=1(xi)v3 . Từ Σ i I ' x i = Σ 2 n + 2 i = 1 x i - Σ i I x iiIxi=2n+2i=1xiiIxi , chúng ta có thể viết lại điều kiện thứ hai là Σ i I x i23 2 n + 2 i = 1 (xi)+-v3iIxi232n+2i=1(xi)+v3 .

Do đó, chúng tôi đã điều chỉnh lại bài toán con này bằng cách sử dụng một thay thế tương đương: chúng tôi đang cố gắng chọn một tập hợp II gồm n + 1n+1 trong số { 1 , Lỗi , 2 n + 2 }{1,,2n+2} sao cho 23 2 n + 2 i = 1 (xi)+-v3ΣiIxi13 2 n + 2 i = 1 (xi)--v3232n+2i=1(xi)+v3iIxi132n+2i=1(xi)v3 .

Lưu ý rằng vv (và do đó - v 0v0 ) kể từ khi vv là mức trung bình của một số một iai s và là một trên ràng buộc trên tất cả một iai s. Hãy để X = Σ 2 n + 2 i = 1 ( x i )X=2n+2i=1(xi) . Điều kiện của chúng tôi ở trên có thể được viết lại như sau: chọn một bộ II gồm n + 1n+1 chỉ số trong số { 1 , , 2 n+ 2 }{1,,2n+2} sao choi I x iiIxi nằm trong khoảng [ c X , ( 1 - c ) X ][cX,(1c)X] trong đó c = 13 --v3 X13c=13v3X13 .

Giả sử với một số jj , x jxj có giá trị ít nhất X3X3 . Trong trường hợp này, hãy đểtôiIbao gồm chỉ sốjjvà cả cácchỉ sốn-1tương ứng vớixisnhỏ nhất. Nếu cácxis add cho ít nhất(1-c)Xsau đó lựa chọn này củatôiđáp ứng các hạn chế trên: tổngΣiIxilà ít nhấtxjX3 =13 XcXvà nhiều nhất(1-c)X. Do đó, bộ chỉ số nàytôicó thể được sử dụng để chọn một trong các nhóm có kích thướcn+1trong một giải pháp cho trường hợp đóng gói vấn đề. Mặt khác, nếu cácxi nàythêm vào nhiều hơn(1-c)Xthì trường hợp không thể được giải quyết: một trong hai nửa sẽ bao gồmxjvà tổng của nửa đó sẽ luôn nhiều hơn(1-c)X(vì nó còn hơn thế ngay cả khi chúng ta đặt các phần tử nhỏ nhất với x j ).

Vì vậy, chúng tôi đã xử lý trường hợp một số x j có giá trị ít nhất là X3 . Trường hợp còn lại là mọixiđều có giá trị tối đaX3 . Sau đó gánxis cho hai nhóm, 1 và 2, tùy ý. Tạo sự phù hợp của các yếu tố của hai nhóm và hoán đổi các cặp đó từng cặp một. Trong suốt quá trình này, tổng các phần tử của nhóm 1 sẽ chuyển từ tổng ban đầu của nó sang tổng ban đầu của các phần tử của nhóm 2. Nói cách khác, tổng của nhóm 1 sẽ vượt qua giá trị trung bìnhX2 . Mỗi bước trong quy trình này bao gồm nhóm 1 mất mộtxivà đạt được một; vìxis có giá trị nhiều nhất làX3 , một cặpxis khác nhau nhiều nhất làX3 và do đó, mỗi bước di chuyển tổng của nhóm 1 nhiều nhất làX3 . Do đó, sẽ có một số điểm trong quy trình khi tổng của nhóm 1 nằm trong một nửa kích thước bước tối đa của mức trung bình. Do đó, đến một lúc nào đó, tổng của nhóm 1 sẽ nằm trongX2 ±X6 . Nhưng đây là khoảng[13 X,23 X], là một khoảng phụ của[cX,(1-c)X]. Do đó, tại một số thời điểm trong quá trình này, nhóm 1 tại thời điểm đó sẽ đáp ứng điều kiện mong muốn của chúng tôi. Chúng ta có thể sử dụng nhómxis này để chọn một nhóm tương ứng củamộtis; nhữngmộtis một hình thức của hai nhóm kích thướcn+1cần thiết để giải quyết các trường hợp đóng gói vấn đề.

Phần kết luận

Các casework đầy đủ ở trên có thể được sử dụng như một thuật toán để phân chia danh sách thành ba nhóm của cùng một tổng bằng một số mềm. Casework cũng sẽ xác định khi điều này là không thể. Thời gian chạy của thuật toán này là đa thức.


Cảm ơn! Có thể rút ngắn bằng chứng bổ đề 1: các phần tử của nhóm 2 bằng cách tăng thứ tự. Đặt nhóm 2a là các phần tử được lập chỉ mục lẻ và nhóm 2b là các phần tử được lập chỉ mục chẵn. Mỗi phần tử trong 2a nhỏ hơn phần tử tiếp theo nằm trong 2b, do đó S 2 bS 2 a . Mặt khác, nếu chúng ta loại bỏ phần tử nhỏ nhất khỏi 2a và phần tử lớn nhất từ ​​2b, thì tổng các phần tử còn lại trong 2a ít nhất là tổng các phần tử còn lại trong 2b. Vậy S 2 b - S 2 a phần tử lớn nhất trừ đi phần tử nhỏ nhất = l / 2 . Theo giả định, S 2 b + S2 a2s-l / 2. Cách tổng hợp các bất bình đẳng cho S 2 bs.
Erel Segal-Halevi

Câu hỏi: bạn đề cập đến một vấn đề phụ: "là nó có thể để phân vùng 2 n + 2 nhỏ nhất một i -s thành hai nhóm kích thước n + 1 ví dụ rằng mỗi người trong hai nhóm có tổng tại hầu hết các s ?". Tại sao vấn đề này không khó như vấn đề THAM GIA?
Erel Segal-Halevi

Bạn nói đúng, bằng chứng Bổ đề 1 của tôi không phải là đơn giản nhất có thể. Mặc dù vậy, tôi hơi lười biếng trong việc chỉnh sửa (đặc biệt là vì các phần khác của tài liệu tham khảo bằng chứng các kỹ thuật được sử dụng trong bằng chứng). Đối với vấn đề phụ, lý do không khó như PHẦN THAM GIA là bạn thực sự không phải giải quyết vấn đề con đó một cách tổng quát: giá trị của s không phải là tùy ý. Để rơi vào trường hợp đó, có những khó khăn thêm cụ thể về s và trên một i s mà phải giữ. Nếu những ràng buộc này bị thiếu, bạn sẽ đúng: vấn đề sẽ khó như PHẦN THAM GIA.
Mikhail Rudoy

Cảm ơn rất nhiều cho các giải pháp rõ ràng và chi tiết.
Erel Segal-Halevi

Xin chào Mikhail, chúng tôi đang nghiên cứu một bài báo trong đó kết quả này hữu ích. Bạn muốn tham gia không? Nếu vậy thì xin vui lòng viết cho tôi một email.
Erel Segal-Halevi

3

Câu trả lời này không giải quyết được câu hỏi. Nó chỉ giải quyết vấn đề phụ trợ sau được @JohnDvorak đưa ra trong các nhận xét (phân vùng một bộ theo tỷ lệ 1: 2):

Vấn đề phụ:
Instance: rationals Positive một 1 , ... , một m với Σ m i = 1 một i = 3 Một .
Câu hỏi: Liệu có tồn tại một chỉ số set tôi { 1 , ... , n } với Σ i tôi một i = A ?

  • Lấy một ví dụ của PHẦN THAM GIA cổ điển (hợp lý b 1 , Mạnh , b n với tổng 2 B , bạn có thể chia chúng thành hai nhóm với tổng B ).
  • Lấy b 1 , Lọ , b n cùng với bốn số 5 B , 5 B , 5 B , 7 B để tạo một thể hiện của bài toán phụ. Tổng của tất cả n + 4 số sau đó là 24 B , do đó A = 8 B .
  • Việc chia số n + 4 thành một nhóm có tổng A = 8 B và một nhóm có tổng 2 A = 16 B là có thể nếu và chỉ khi thể hiện PHẦN THAM GIA có câu trả lời CÓ.

Do đó, vấn đề phụ của @ JohnDvorak là NP-Complete


Xin chào Gamow, chúng tôi đang nghiên cứu một bài báo trong đó kết quả này có thể hữu ích. Bạn muốn tham gia không? Nếu vậy thì xin vui lòng viết cho tôi một email.
Erel Segal-Halevi

3

Chỉnh sửa: Kết quả không chính xác, xem phần thảo luận ở cuối.

Lấy cảm hứng từ câu trả lời của Mikhail Rudoy, ​​chúng ta có thể khái quát hóa việc phân vùng thành k phần với tổng bằng nhau. Vấn đề là thời gian đa thức có thể giải được cho mỗi hằng số k .

Đầu vào là một 1 , ... , một n như vậy mà một n là số lượng lớn nhất. Quan sát của Mikhail là, wlog,

  • số mềm là một n
  • a i > a nk - 1 cho mỗii

wlog, assume that the sum of a1,,an1 is 1 (that is, 1=ksan). Note that an1n1, so ai>1(k1)(n1)>1k n cho mỗii. Vấn đề là tương đương với phân vùng sốmột1,...,mộtn-1thànhktập con như vậy mà tổng của mỗi tập hợp con được ở hầu hết cács:=1+mộtnk .

Chúng tôi xem xét một hạn chế của vấn đề nhiều ba lô . Xác định bài toán k -knapsack là một ví dụ của bài toán nhiều ba lô với k ba lô có cùng công suất, trong đó giá trị của mỗi vật phẩm bằng trọng lượng của vật phẩm.

Let the input for the k-knapsack problem be a1,,an1, and each knapsack has capacity s. The following claim is clear.

Claim: A (11kn)-approximation algorithm for the k-knapsack problem returns 1, if and only if all the numbers a1,,an1 can be packed into the k knapsacks.

By the above claim, we just have to find a (11kn)-approximation algorithm for the k-knapsack problem.

Claim: There is a pseudopolynomial time algorithm for knapsack generalizes for k-knapsack for each constant k.

Proof: Define D[b1,,bk,i] to be the maximum value using elements a1,,ai, where the knapsack has capacity b1,,bk. The recurrence relation is D[b1,,bk,i+1]=max(maxj(D[b1,,bjai+1,bk,i])+ai+1,D[b1,,bk,i]). The base case are simple. The running times is O(skkn).

It is standard to obtain an FPTAS by scaling all numbers and round to integers, see section 5 of this. This means we can find a (11kn)-approximation to k-knapsack problem in polynomial time. Therefore for each constant k, the original problem can be decided in polynomial time.

The above is incorrect, due to the pseudopolynomial time algorithm does not transform into an FPTAS. However, the approach might still give us some insight because we have a very special case of k-knapsack problem.


I found this paper: epubs.siam.org/doi/abs/10.1137/S0097539700382820 which shows a PTAS for multple-knapsack. How do you obtain an FPTAS from it? (did you mean that there is an FPTAS for the special case in which the values are equal to the weights?)
Erel Segal-Halevi

I have made an update. The FPTAS is for the case when k is a constant. If the number of knapsacks is part of the input, there is no FPTAS.
Chao Xu

Hi Chao, we are working on a paper in which this result is useful. Would you like to join? If so then please write me an email.
Erel Segal-Halevi
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.