2014-12-14 6 views
3

아래에 설명 된 알고리즘 문제에 대한 해결 방법에 문제가 있습니다.정수 나누기

우리는 정수의 집합 (예 : 배열)을 가지고 있습니다. 우리의 임무는 합계가 서로 같다는 것을 그룹들로 나누는 것입니다 (그들은 같은 양의 요소를 가질 필요가 없습니다). 나는 원초적인 세트가 나눌 수없는 경우 우리는 "나누기 불가능한"대답을 주어야만한다.

예 : 집합 A[-7 3 3 1 2 5 14]입니다. 대답은 [-7 14], [3 3 1], [2 5]입니다.

확실히 불가능할 때 말할 수있는 것처럼 보입니다. 원시 집합의 합이 3 : sum(A) % 3 != 0으로 나눌 수없는 경우.

이 문제를 해결하는 방법에 대해 알고 계십니까?

+0

주어진 배열을 3 개로 분할해야합니까? 또한, 당신은 어떤 솔루션의 복잡성을 찾고 있습니까? – Pradhan

+0

사소한 해결책은 원래 세트를 단순히 반환하는 것입니다! – Rafe

+0

3 세트로 나눌 수없는 경우에도 해결책은 없습니다. 예를 들어, {1000, 1001, 1002, 3}은 3으로 나눌 수있는 합계를가집니다.하지만 동일한 합계를 갖는 부분 집합으로 나누는 것은 불가능합니다. – user1952500

답변

3

이것은 partition problem의 변형이며, 기본 파티션 문제는 세트가 서로가 같은 두 세트 (세 개가 아님)로 분할된다는 점입니다. 이 문제는 NP로 완성되어 있으므로 다항식 시간 솔루션을 찾을 수 없을 것입니다. 2 파티션 문제는 의사 다항식 시간 솔루션을 갖지만 3 파티션 문제는 발생하지 않습니다.

2 파티션 알고리즘을 3 파티션 알고리즘에 적용하는 방법에 대한 개요는 this answer을 참조하십시오. 병렬 솔루션에 대해서는 this paper을 참조하십시오.

+0

@ Zim-Zam O'Pootertoot에 감사드립니다! 나는 분할 문제를 알지 못해서 내가 무엇을 물어봐야할지 몰랐다.) 둘 다 연결되어 있고, 대답하고 종이 다. 나는 매우 유용하고 흥미 롭다. –