Làm thế nào để giảm thiểu mức độ chính xác của một tập hợp và phân tách các phân vùng chịu các ràng buộc trong thời gian đa thức?


8

Vấn đề thực sự tôi đang phải đối mặt là như sau.

INSTANCE : Tôi có các bộ và và ma trận cho tất cả và j \ in N .N : = { 1 , ... , n } N:={1,,n}K : = { 1 , ... , k } K:={1,,k}một i j > 0 aij>0i K iKj NjN

CÂU HỎI : Tôi cần tìm một tập con SSNN có kích thước càng nhỏ càng tốt và phân vùng tập KK thành | S ||S|disjoint đặt K jKj có liên kết bằng KK sao cho tất cả j SjS , tôi có Σ j 'Sj 'j mộti j 'mộtij-1,

jSjjaijaij1,
cho tất cả i K jiKj .

Thí dụ:

Cho n = k = 3n=k=3 và ma trận [ 0,6 2,7 1,2 1,3 2,6 0,8 1,5 0,4 0,6 ] .

0.61.31.52.72.60.41.20.80.6.

Trong ví dụ này, SS phải bằng S = { 1 , 2 }S={1,2}K 1 = { 3 }K1={3}K 2 = { 1 , 2 }K2={1,2} .

Tôi nhận thấy hai sự thật:

  • Nếu tồn tại một số sao cho cho tất cả thì và ; vàj N a i j1 i K S = { j } K j = KjNaij1iKS={j}Kj=K
  • Nếu tồn tại một số sao cho thì .i K một i j < 1 S = iKaij<1S=

Câu hỏi của tôi : Có thể giải quyết vấn đề tối ưu hóa này trong thời gian đa thức (ít nhất là với thuật toán xấp xỉ)?

Điều đầu tiên tôi cố gắng làm là biến nó thành một vấn đề đã biết và sau đó áp dụng một thuật toán đã biết cho điều đó. Tôi đã nghĩ về việc chuyển đổi nó thành một bộ bìa hoặc thùng đóng gói nhưng tôi đã thất bại và tôi cũng không nghĩ rằng điều này là thú vị.


Vấn đề tôi đã cố gắng xây dựng.

Tôi có bộ và và ma trận cho tất cả và . Ngoài ra, tôi có disjoints đặt cho mỗi , (Tôi đã thêm làm đầu vào vì tôi không thể xây dựng nó theo cách khác.)N : = { 1 , ... , n } K : = { 1 , ... , k } một i j > 0 i K j N n K jK j N K jN:={1,,n}K:={1,,k}aij>0iKjNnKjKjNKj

Cuối cùng, tôi nhận được điều này: giảm thiểu S| S |tùy thuộc vàoΣ j 'Sj 'j mộti j 'mộtij-1,j S , i K j ,S N .

minimizeSsubject to|S|jSjjaijaij1,jS,iKj,SN.

Cảm ơn.


Bạn đã thử cải tổ thành ILP bằng cách sử dụng biến nhị phân chưa? Mục tiêu của bạn thay đổi thành min với một thay đổi tương tự int ràng buộc. Một bộ giải ILP ngoài giá có thể xử lý tốt. x jx jxjxj
Nicholas Mancuso

Nhưng tôi nghĩ rằng nó sẽ không cho tôi một thuật toán thời gian đa thức?
drzbir

Có thể trong lý thuyết, nhưng không phải trong thực tế. Những người giải quyết hiện đại như CPLEX cực kỳ giỏi trong việc tìm kiếm các giải pháp tối ưu trong một thời gian tương đối ngắn nhờ vào chi nhánh và ràng buộc và các phương pháp phỏng đoán khác.
Nicholas Mancuso

Là tất cả ? Nếu vậy, sau đó tôi nghĩ rằng việc xây dựng các "vấn đề thực sự" của bạn có một vấn đề, vì nó trivially được tối ưu hóa bằng cách cho phép có bất kỳ tập singleton : làm điều này gây ra tổng trên LHS của hàm mục tiêu của bạn là 0 .a i j1 S { j }aij1S{j}
j_random_hacker

Không phải tất cả đều lớn hơn . a i j 1aij1
drzbir

Câu trả lời:


4

Ngay cả phiên bản quyết định của vấn đề này, trong đó chúng tôi cố gắng xác định đơn giản là liệu có tồn tại bất kỳ giải pháp khả thi nào hay không, là NP-hard bằng cách giảm từ Exact Cover . (Phiên bản tối ưu hóa, nơi chúng tôi tìm kiếm một giải pháp khả thi giúp giảm thiểu , rõ ràng ít nhất là khó như thế này.)| S ||S|

Ma trận một hàng, một cột chứa giá trị 0,5 là một ví dụ về đầu vào mà không có giải pháp khả thi. Đây là một:

[ 0,2 4 3,1 3 5 0,6 ] .

0.23.15430.6.

Xây dựng tiện ích "Chọn nhiều nhất một"

Đầu tiên, lưu ý rằng nếu giá trị tối đa trong một số hàng là và hàng này chứa (ít nhất) hai bản sao của , hãy nói tại và , , sau đó không thể chứa cả và , vì nếu có thì một trong hai trường hợp sau phải phát sinh, mỗi trường hợp dẫn đến một mâu thuẫn:một tôiaix > 0 x một i j một i j ' j 'j S j j 'x>0xaijaijjjSjj

  1. i K jK j i K j Σ m S , m j a i ma i j = x = a i j Σ m S , m j a i ma i j - 1iKjKj : Giả sử wlog rằng . Nhưng sau đó , mâu thuẫn với yêu cầu .iKjΣmS,mjaimaij=x=aijΣmS,mjaimaij1
  2. i K jK j 'iKjKj : Sau đó, giả sử . Nhưng sau đó và vì là cực đại trong hàng , cao nhất là có thể rõ ràng là , vì vậy chúng ta phải vi phạm sự bất bình đẳng như trước đây.i K p , p { j , j } Σ m S , m p a i ma i j + a i j = 2 x x i a i p xiKp,p{j,j}ΣmS,mpaimaij+aij=2xxiaipx

Như vậy chúng ta có thể chọn một số giá trị lớn nhất đó là một cách an toàn cao hơn tổng của tất cả các giá trị phi tối đa trong dòng, và bản sử dụng giá trị tối đa này để thực thi mà nhiều nhất là một trong những cột được bao gồm trong .SS

Chúng ta có thể biến ràng buộc "chọn nhiều nhất một" thành ràng buộc "chọn chính xác một" bằng cách sử dụng bất kỳ giá trị dương nào nhỏ hơn 1 làm giá trị "không tối đa". Đó là bởi vì mỗi hàng thuộc một phần của phân vùng hàng và nếu thì RHS của bất đẳng thức trở thành âm đối với hàng , vì vậy không có cách nào để thỏa mãn nó: do đó, ít nhất một phải bị buộc vào sao cho .i K j a i j < 1 i j S a i j1iKjaij<1ijSaij1

Vì vậy, để đảm bảo rằng chính xác một trong các cột trong một số bộ được buộc vào , hãy tạo một hàng như sau:T N S a iTNSai

  • Set cho mỗi .a i j = n + 1 j Taij=n+1jT
  • Đặt cho mọi khác .một tôi j =0,5jaij=0.5j

Do đó, việc giảm từ Exact Cover rất đơn giản: có một hàng cho mỗi phần tử, một cột cho mỗi bộ, với bất cứ khi nào tập bao gồm phần tử và nếu không. Cả hai hướng ("Ví dụ EC đầu vào là một thể hiện CÓ trường hợp được xây dựng của vấn đề OP là một thể hiện CÓ" và "Trường hợp được xây dựng của vấn đề OP là một thể hiện CÓ trường hợp EC đầu vào là một thể hiện CÓ") đều rõ rànga i j = n + 1 jaij=n+1j i a i j =i 0,5aij=0.5


Các dụ bạn đã cho tôi nghĩ rằng có một giải pháp của . 2 × 2 S = { 2 }2×2S={2}
drzbir

Tôi có và . Vậy bất đẳng thức của tôi là cho . Bởi vì bất đẳng thức phải hợp lệ cho tất cả . S={2}S={2}K2=K={1,2}K2=K={1,2}0ai210ai21iK2={1,2}iK2={1,2}iKjiKj
drzbir

Bạn nói đúng, xin lỗi. Tôi sẽ sửa nó ngay.
j_random_hacker

Tôi đã viết vấn đề này như chương trình số nguyên và tôi đã giải quyết nó. Bây giờ, tôi cần giải quyết nó bằng một thuật toán tham lam (tốt hơn, một thuật toán có đảm bảo hiệu suất). Như bạn đề xuất, tôi đã tìm kiếm chính xác bước nhảy để tìm ý tưởng làm thế nào để thiết kế một thuật toán tốt cho việc này. Bạn có bất cứ ý tưởng?
drzbir

Đó là NP-hard, vì vậy gần như chắc chắn không có thuật toán đa thời gian tồn tại. Tôi sẽ thử kiểm tra tất cả các cột đơn, tất cả các cặp cột, tất cả các bộ ba, vv cho đến khi bạn tìm thấy một bộ thỏa mãn. Bài toán con bạn cần giải cho mỗi hàng (cụ thể là quyết định phần tử nào trong để chọn cho hàng này) thật dễ dàng. SS
j_random_hacker
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.