ลดองค์ประกอบสูงสุดของผลรวมของเวกเตอร์


11

ฉันต้องการเรียนรู้บางอย่างเกี่ยวกับปัญหาการปรับให้เหมาะสมนี้: สำหรับตัวเลขทั้งหมดที่ไม่เป็นลบให้หาฟังก์ชันเพื่อลดนิพจน์ai,j,kf

maxkiai,f(i),k

An example using a different formulation might make it clearer: You're given a set of sets of vectors like

{
    {(3, 0, 0, 0, 0), (1, 0, 2, 0, 0)},
    {(0, 1, 0, 0, 0), (0, 0, 0, 1, 0)},
    {(0, 0, 0, 2, 0), (0, 1, 0, 1, 0)}
}

Choose one vector from each set, so that the maximum component of their sum is minimal. For example, you may choose

(1, 0, 2, 0, 0) + (0, 1, 0, 0, 0) + (0, 1, 0, 1, 0) = (1, 1, 2, 1, 0)

with the maximum component equal to 2, which is clearly optimal here.

I'm curious if this is a well-known problem and what problem-specific approximate solution methods are available. It should be fast and easy to program (no ILP solver, etc.). No exact solution is needed as it's only an approximation of the real problem.


I see that I should have added some details about the problem instances I'm interested in:

  • i{0,1,,63}, i.e., there're always 64 rows (when written as in the above example).
  • j{0,1}, i.e., there're only 2 vectors per row.
  • k{0,1,,N1} where N (the vector length) is between 10 and 1000.

Moreover, on each row the sum of the elements of all vectors is the same, i.e.,

i,j,j:kai,j,k=kai,j,k

and the sum of the elements of the sum vector is less than its length, i.e.,

kiai,f(i),k<N

4
It is not hard to reduce the 3-partition problem to your problem. This means that your problem is NP-complete even if the numbers are given in unary, and this rules out one of the common approaches for an approximation algorithm.
Tsuyoshi Ito

Thanks for the corrections and thanks to @Tsuyoshi Ito for the insight. If I understand it correctly, the restriction to two vectors per line (which I forgot to state) invalidates the reduction and may make the problem much easier.
maaartinus

You are right, the reduction from the 3-partition problem I was thinking of does not work if there are only two vectors per row.
Tsuyoshi Ito

So there are ji combinations to compare?
Jason Kleban

@uosɐſ: To be precise, there are JI=264 possible combinations, where J=2 is the number of possibilities for j and I=64 is the number of possibilities for i.
maaartinus

คำตอบ:


7

Reduction from 3SAT to the two-vector version: given a formula, let i index variables, j{0,1}, and k index clauses. Let ai,j,k be the number of times variable i appears positively (if j=0) or negatively (if j=1) in clause k. OPT is less than 3 iff the formula is satisfiable (the bijection is obvious).

How I would attack this problem: large neighborhood search. Start with any solution. Choose r rows at random. Use brute force to find the best solution where f can change only on those rows—very doable for even moderate k given that the problem size is 64 rows. Repeat.


1
This is a beautiful reduction. I am not sure why it does not have any up-votes. Anyway, here is my +1.
Tsuyoshi Ito

1
I think you should elaborate a tad more on the reduction. In particular, you have f hidden well, maybe too well, as it makes the bijection a bit hard to see.
Raphael

7

We cannot discuss the complexity of a problem when the problem size is fixed to a constant, because (most part of) the complexity theory deals with the asymptotic behavior of the complexity of the problem as the problem size tends to infinity. Here, I consider both the number of rows and the dimention of the vectors as variables.

Then the problem is NP-complete even if the numbers in the input are given in unary. This is not an answer to your question because you are asking about approximation, but it is something.

Define the problem rigorously:

Instance: n pairs of vectors ai, bi ∈ ℕm (i ∈ {1, …, n}), and K ∈ ℕ, all in unary.
Question: Can we choose either ai or bi for each i so that the sum of these n vectors has at most K in each coordinate?

The following is a known NP-complete problem called 3-partition:

3-partition
Instance: B ∈ ℕ, and 3k integers c1, …, c3k between B/4 and B/2, exclusive, such that ∑i=13k ci = kB, all in unary.
Question: Can the multiset {c1, …, c3k} be partitioned into k multisets S1, …, Sk such that the sum of each Sj is equal to B?

Given an instance (B; c1, …, c3k) of the 3-partition problem, construct an instance of the above problem as follows. For each i = 1, …, 3k and j = 1, …, k, we will construct a pair of 4k-dimensional vectors, representing the choice on whether ci belongs to Sj or not:

  • The vector representing the choice “ciSj” has only one nonzero entry, which is (k−1)ci at the jth coordinate.
  • The vector representing the choice “ciSj” also has only one nonzero entry, which is B at the (k+i)-th coordinate.

It is not hard to see that the instance (B; c1, …, c3k) of the 3-partition problem has a solution if and only if there is a way to choose a vector from each of the 3k2 constructed pairs so that all the coordinates of the sum of these vectors are at most (k−1)B. (In fact, when this happens, all the coordinates of the sum are equal to (k−1)B.) So this is a reduction from the 3-partition problem to the above problem.

So far, I ignored the two additional constraints stated at the end of the question, but both are easy to enforce by modifying this reduction slightly. The condition that the sum of the elements of each vector is equal can be enforced by appending dummy coordinates which contain only 0 or 1. The condition that this sum is less than the dimension can be enforced by appending dummy coordinates which contain only 0.


Nice answer, just some notes: 1. I don't care about the theoretical complexity here. 2. The number of rows is fixed and can stay so, as varying N suffices. That said, thanks a lot.
maaartinus
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.