프로그래밍/구현보다 알고리즘/증명 문제가 훨씬 더 많으므로 StackOverflow가 적합한 곳이 아니라면 사과드립니다. 이 문제에 관해서는2의 거듭 제곱에 대해 세트 분할을위한 다항식 시간 알고리즘?
:
는 우리가 숫자의 집합을 가지고 있다고 가정하고, 모든 수는 양의 정수와 2
의 전력해야합니다. 예를 들어 {1, 1, 2, 4, 8, 8, 8, 8, 128}
일 가능성이 있습니다. 집합을 A
및 B
으로 분할하려는 경우 모든 요소는 정확히 A
또는 B
이어야하며 A
의 요소 합계는 B
의 요소 합계와 같습니다. 항상 중 하나
- 더도 분할이 존재하지 않는 수를 결정, 또는
A
에 - 반환 파티션과 금액이 동일하다는
B
같은 것이 상황에 대한 다항식 시간 알고리즘이 있습니까?
물론 다항식 시간 알고리즘이 없다면 그 증명을위한 몇 가지 방향을 알고 싶습니다 (즉, 다른 NP 어려운 문제와 동등 함을 보여줌으로써).
은 내가 도울 수있는 몇 가지 문제가 있다는 것을 알고, 문맥, 나는 여기에 요약됩니다 :
- 설정 파티션은 NP-어렵다. set-partition에는 임의의 숫자 집합이 있습니다. 해결책은 파티션 A와 B입니다. 여기서 각 요소는 정확히 A 또는 B이므로
sum(A) = sum(B)
입니다. - 부분 집합 합계는 NP 하드입니다. subset-sum에는 임의의 숫자 집합이 있습니다. 해는이 집합의 부분 집합이므로 그 집합의 요소의 합은 원하는 수 x와 같습니다.
도움을 주시면 대단히 감사하겠습니다. 감사!