주어 하여 이진 행렬 (항목이 또는 개의 이진 벡터가 존재하면), 문제가 결정하는 되도록 (모든 작업에 걸쳐 수행 ). 이 문제가 NP-hard입니까?
두 벡터를 증인으로 줄 수 있으므로 NP에 분명히 있습니다.
등가 : 주어 , 비 - 제로 벡터가 되도록는 ?
등가 : 주어 벡터 위에 있다 개의 상이한 서브 세트 , B ⊆ X 되도록 Σ X ∈ X = Σ (X) ∈ B X ?
주어 하여 이진 행렬 (항목이 또는 개의 이진 벡터가 존재하면), 문제가 결정하는 되도록 (모든 작업에 걸쳐 수행 ). 이 문제가 NP-hard입니까?
두 벡터를 증인으로 줄 수 있으므로 NP에 분명히 있습니다.
등가 : 주어 , 비 - 제로 벡터가 되도록는 ?
등가 : 주어 벡터 위에 있다 개의 상이한 서브 세트 , B ⊆ X 되도록 Σ X ∈ X = Σ (X) ∈ B X ?
답변:
나는 user17410에 해당하는 공식을 사용합니다.
입력 : 벡터 X = { X 1 , ... , X의 m } 위에 { 0 , 1 } N , N 개의 입력의 일부
질의 :가 두 개의 다른 서브 세트 , B ⊆ X 되도록
Σ X ∈ X = Σ x ∈ B x
경도 증명에는 표준 EQUAL SUBSET SUM 문제의 경도를 증명하는 데 사용 된 동일한 "체인"을 따르는 많은 중간 감소가 포함됩니다.
X3C SUBSET SUM ≤ PARTITION ≤ EVEN-ODD PARTITION ≤ EQUAL SUBSET SUM
(아직도 확인 중이므로 잘못되었을 수 있습니다.)
1 단계
다음 문제 ( 0-1 VECTOR SUBSET SUM )는 NP-complete입니다. 주어진 , { 0 , 1 } n을 초과하는 x i 벡터 및 목표 합계 벡터 t 가 있는지 확인하십시오. ∑ x ∈ A x = t 증명 과 같은 A ⊆ X : 3 세트 (X3C)에 의한 정확한 표지에서 직접 축소 : n 개의 요소 세트가 주어짐 Y = { y
예를 들어 벡터 집합 :
x1 2 1 0 1
x2 1 2 3 1
0-1 벡터와 같습니다.
x1 1 1 0 1 1 0 0 0 0
1 0 0 0 0 1 0 0 0
0 0 0 0 1 1 0 0 0
^ ^
+-- 0 elsewhere
x2 1 1 1 1 0 0 1 0 0
0 1 1 0 0 0 0 1 0
0 0 1 0 0 0 0 0 1
0 0 0 0 0 0 1 1 1
^ ^ ^
+-- 0 elsewhere
따라서 다음 문제는 NP-complete입니다.
3 단계
( ) 와 같은 가 있다고 가정하자 . 우리가 설정 및 ; 우리는
( ) 과 합이 같다고 가정합니다 . 는 모두 같은 집합에 속할 수 없습니다 (그렇지 않으면 그 합은 이며 다른 집합의 요소에 의해 "균형을 수 없습니다"). 한다고 가정 ; 우리는 :
따라서 우리는 가 있어야 하고 는 0-1 VECTOR SUM에 유효한 솔루션입니다.
세트 에 0-1 개의 벡터 만 허용 하므로 벡터 2 는 STEP 2에 표시된대로 "단항으로 표시"되어야합니다.
3 단계
벡터가 으로 번호가 매겨 지고 두 하위 집합 크기가 같아야하고 에 중 하나가 정확히 포함되어 있으면 문제는 여전히 NP- 완료 입니다. 대 (따라서, 동일한 크기의 제약에 의해, 한 쌍의 다른 요소가 포함되어 있어야 ) ( 0-1 VECTOR EVEN-ODD PARTITION ).
증명 : : 축소는 0-1 VECTOR PARTITION이며 PARTITION에서 EVEN-ODD PARTITION으로 감소하는 것과 유사합니다. 만약 이다 벡터 위에 위에 두 벡터의 각 벡터를 대체 :
1 2 n
--------------------
x_i b_1 b_2 ... b_n
becomes:
1 2 ... 2i ... 2m
--------------------------
x'_2i-1 0 0 ... 1 ... 0 b_1 b_2 ... b_n 0 0 ... 0
x'_2i 0 0 ... 1 ... 0 0 0 ... 0 b_1 b_2 ... b_n
요소 로 인해 벡터 및 는 동일한 부분 집합에 포함될 수 없습니다. 0-1 VECTOR EVEN-ODD PARTITION에 대한 유효한 솔루션은 원래 0-1 VECTOR PARTITION의 유효한 솔루션에 해당합니다. 해당 위치의 0).
4 단계
0-1 VECTOR EQUAL SUBSET SUM (문제의 문제)은 NP-complete입니다. Gerard J. Woeginger 에서 입증 된 것처럼 EVEN-ODD PARTITION에서 EQUAL SUM SUBSET로 축소 한 것과 유사한 0-1 VECTOR EVEN-ODD PARTITION 감소 , Zhongliang Yu, 동일 부분 집합 문제에서 : 에 대해 벡터 의 순서 집합 가 주어지면 에 대해 벡터의 를 설정 합니다.
모든 벡터 대해 다음 과 같이 위에 벡터 을 만듭니다 .
1 2 ... i i+1 ... m m+1 m+2 ... m+i ... 2m 2m+1 ... 2m+n
------------------------------------------------------
0 0 ... 2 0 ... 0 0 0 1 0 x_{2i-1}
모든 벡터 대해 다음 과 같이 위에 벡터 를 만듭니다 .
1 2 ... i i+1 ... m m+1 m+2 ... m+i ... 2m 2m+1 ... 2m+n
------------------------------------------------------
0 0 ... 0 2 ... 0 0 0 1 0 x_{2i}
요소 를
1 2 ... ... m m+1 m+2 ... . 2m 2m+1 ... 2m+n
------------------------------------------------------
2 0 ... ... 0 0 0 1 x_{2m}
마지막으로 더미 요소를 추가 합니다.
1 2 ... ... m m+1 m+2 ... ... 2m 2m+1 ... 2m+n
------------------------------------------------------
4 0 ... ... 0 0 0 0 0 ... 0
0 4 ... ... 0 0 0 0 0 ... 0
...
0 0 ... ... 4 0 0 0 0 ... 0
값을 포함하는 벡터 는 STEP 2에 표시된 것과 같은 0-1 개의 벡터 그룹을 사용하여 "단항"으로 표현 될 수 있습니다.
에 짝수 홀수 파티션이있는 경우에만 에 두 개의 분리 된 서브 세트의 합계가 동일 합니다.
편집 : 내 원래 증거는 버그가 있었다. 나는 그것이 고정되어 있다고 생각합니다.
이 문제로 EQUAL SUM SUBSETS 문제를 줄입니다. EQUM SUM SUBSETS는 다음과 같은 문제입니다. 개의 정수 세트가 주어지면 같은 합을 갖는 두 개의 분리 된 서브 세트를 찾으십시오. EQUAL SUM SUBSETS는 NP-complete 인 것으로 알려져 있습니다 .
이 비트 문자열이 벡터가 아니라 이진수 로 비트 숫자의 표현이라고 가정합니다 . 그런 다음 EQUAL SUM SUBSETS를 줄이면 문제가 NP 완료됩니다. 이 벡터를 이진수처럼 동작하게 만드는 방법을 보여 드리겠습니다. 우리가 필요로하는 것은 운반을 할 수있는 것입니다. 즉, 모든 인접 좌표 쌍마다 벡터 ..02 ..를 ..10 ..으로 대체 할 수 있어야합니다.
우리는 어떻게 할 수 있습니까? 그렇게 할 수 있는 가젯 이 필요합니다. 특히, 합이 ..02 .. x 및 ..10 .. x 인 두 개의 하위 집합이 필요합니다. 여기서 x는 새로운 좌표 (즉, 이진을 구성하는 좌표 가 아닌 좌표)를 사용하는 비트 열입니다. x에 해당하는 새로운 비트 위치에서 같은 합으로 두 개의 부분 집합을 생성 할 수있는 방법이 하나 뿐인 경우.
이것은 매우 쉽습니다. 인접한 비트 위치 쌍마다 다음 형식의 벡터 3 개를 추가하십시오. 여기서 마지막 두 비트는이 세 벡터에서만 0이 아닌 좌표이며 아래에 명시 적으로 지정되지 않은 모든 비트는 0입니다.
..10 .. 11
..01 .. 10
..01 .. 01
예를 들어 보겠습니다. 5 + 3 = 8의 작동 방식을 보여 드리고자합니다.
다음은 이진수 8 = 5 + 3입니다.
1000
=
0101
0011
이 비트 문자열은 이진수로 같은 합을 주지만 벡터 추가에서는 아닙니다.
이제 1, 2, 4 자리에 캐리가 있으므로이 캐리를 수행하기 위해 3 개의 벡터 세트 3 개를 방정식에 추가해야합니다.
1000 00 00 00
0001 00 00 01
0001 00 00 10
0010 00 01 00
0010 00 10 00
0100 01 00 00
0100 10 00 00
=
0101 00 00 00
0011 00 00 00
000010 00 00 11
0100 00 11 00
1000 11 00 00
이 세트는 이제 벡터 합의 합계가 동일합니다. 합계는 다음과 같습니다.
1222 11 11 11
두 경우 모두.
이 구조는 위치 당 하나의 캐리가있는 경우 잘 작동하지만, 잠재적 거기 수 위치에 따라 전달, 당신은 당신의 건설에 처리 할 수 있는지 확인해야합니다 전달하고, 다른 방해하지 않는 나른다 것을 서로 서로 함께. 예를 들어, 동일한 한 쌍의 인접한 위치에 대해 두 개의 서로 다른 세 벡터 세트를 추가 한 경우 (원래 증명에서 제안한 것) :
..01 .. 01 00
..01 .. 10 00
..10 .. 11 00
..01 .. 00 01
.... 00 10
.. 10 .. 00 11
같은 합을주는 두 개의 다른 벡터 집합을 얻는다는 문제가 있습니다.
..01 .. 01 00
..01 .. 10 00
..10 .. 00 11
=
..01 .. 00 01
..01 .. 00 10
..10 .. 11 00
이 문제를 해결하는 방법? 1을 운반 할 수있는 벡터 세트 1 개, 2를 운반 할 수있는 세트 1 개, 4, 8, , 2 대해 한 세트를 추가하십시오 . 나는 지금이 구성의 세부 사항을 해결하지는 않겠지 만, 그것은 매우 간단해야합니다. 각 숫자에는 고유 한 이진 표현이 있으므로 최대 까지의 숫자를 사용할 수 있습니다. 예를 들어, 4를 운반하려면 두 벡터와 같은 합을 가지며 두 세트 간의 유일한 선형 관계인 네 개의 벡터를 찾아야합니다. 예를 들어
..01 .. 11000
..01 .. 00100
..01 .. 00010
..01 .. 00001
..10 .. 10001
..10 .. 01110
공장. 관계를 쉽게 확인할 수 있습니다
11000
00100
00010
00001
=
10001
01110
이 6 개의 행으로 형성된 행렬의 순위가 5이므로이 6 개의 벡터 중 유일한 가능한 관계입니다.
이것은 질문에 대한 답은 아니지만 유용한 관찰 결과를 포함 할 수 있습니다. 길고 조각난 주석을 읽는 것이 귀찮기 때문에 주석으로 쓰고 싶지 않았습니다.
질문에 대한 나의 의견에 명시된 문제의 재구성 :
입력 : 벡터 , , 은 입력의 일부입니다
질문 : 와 같이 두 개의 다른 하위 집합 가 있습니까?
어쩌면 나는 를 다중 집합으로 간주 해야하며 (벡터는 고유하지 않아야 함) 합은 입니다.
이진 벡터의 두 가지 하위 집합을 찾고 있기 때문에이 문제를 2SUBSET-BINARY-VECTOR-SUM이라고 제안합니다.
일부 관찰 :
에 하나의 벡터가 여러 번 포함되어 있으면 답이 간단 해집니다. 및 이라고합시다 . 그런 다음 는 증인으로 작동합니다.
의 벡터 중 하나가 0 만 포함하면 사소합니다. 하자 . 그런 다음 모든 대해 따릅니다 .
와 같은 감시가 있다고 가정합니다 . 이것은 있지만 있지 않은 모든 벡터 는 0으로 만 구성되어야 함을 의미합니다 .
위의 두 점을 가정하기 위해 : 가진 감시 는 의 벡터 중 적어도 하나가 0 만 포함 하는 경우 존재합니다
와 같은 감시 가 있다고 가정하십시오 . 두 세트에서 공통 요소를 제거하고 여전히 올바른 감시를 할 수 있습니다.
이 점은 본질적으로 를 두 세트 ( ) 또는 세 세트 로 파티션을 찾고 있음을 의미 합니다. 세 번째 세트는 또는 대해 선택되지 않은 벡터를 나타냅니다 . 하자 제 2 종의 스털링 번호 일 - 방식의 수의 집합으로 분할하는 물체를 비어 파티션. 그런 다음 가능한 솔루션이 있으므로 무차별 대입은 불가능합니다.
벡터가 (2SUBSET-VECTOR-SUM) 이상이되도록 허용 하면이 문제 에 대한 고유 한 PAQUETION을 줄일 수 있습니다 . 하자 (은 0을 포함하는 경우, 사소한 해결책을 피하기 위해 먼저 제거) 단순히 UNIQUE 파티션의 인스턴스를 전달한다. 그러나 가능한 솔루션 가 반드시 모든 입력 요소를 포함 하지는 않으므로 작동하지 않습니다 .
고려하십시오 . 이것은 UNIQUE-PARTITION에 있지 않지만 2SUBSET-VECTOR-SUM에서 입니다. 아마 사용 우리가 강제로 추가 벡터 엔트리를 사용할 수 입력을 분할.