3-PARTITION problem

后端 未结 6 2015
醉酒成梦
醉酒成梦 2020-12-05 05:56

here is another dynamic programming question (Vazirani ch6)

Consider the following 3-PARTITION problem. Given integers a1...an, we want to determine whet

6条回答
  •  佛祖请我去吃肉
    2020-12-05 06:11

    It's easy to generalize 2-sets solution for 3-sets case.

    In original version, you create array of boolean sums where sums[i] tells whether sum i can be reached with numbers from the set, or not. Then, once array is created, you just see if sums[TOTAL/2] is true or not.

    Since you said you know old version already, I'll describe only difference between them.

    In 3-partition case, you keep array of boolean sums, where sums[i][j] tells whether first set can have sum i and second - sum j. Then, once array is created, you just see if sums[TOTAL/3][TOTAL/3] is true or not.

    If original complexity is O(TOTAL*n), here it's O(TOTAL^2*n).
    It may not be polynomial in the strictest sense of the word, but then original version isn't strictly polynomial too :)

提交回复
热议问题