핵심 개념
본 논문은 기존의 O*(2n/2) 시간 복잡도를 가진 피그먼홀 등가 합 문제를 O*(20.4n) 시간 복잡도로 해결하는 개선된 알고리즘을 제안한다. 또한 다항식 공간 복잡도의 O*(20.75n) 시간 복잡도 알고리즘도 제시한다.
초록
본 논문은 피그먼홀 등가 합 문제에 대한 개선된 알고리즘을 제안한다. 피그먼홀 등가 합 문제는 n개의 양의 정수 w1, w2, ..., wn이 주어졌을 때, 이들의 합 Σwi가 2n-1 미만이라는 조건 하에서 두 개의 서로 다른 부분집합 A, B의 합이 같도록 찾는 문제이다.
기존에는 O*(2n/2) 시간 복잡도의 알고리즘이 알려져 있었다. 본 논문에서는 다음과 같은 개선된 알고리즘을 제시한다:
- 부분 합의 빈도수 ft와 매개변수 d를 정의하여, d가 작은 경우와 큰 경우를 나누어 접근한다.
- d가 작은 경우, 입력 숫자들의 구조적 특성을 이용하여 O*(√d) 시간 복잡도의 알고리즘을 제안한다.
- d가 큰 경우, 부분집합 샘플링과 동적 프로그래밍 기법을 활용하여 O*(22n/d1/3) 시간 복잡도의 알고리즘을 제안한다.
- 이 두 알고리즘을 적절히 조합하여 최종적으로 O*(20.4n) 시간 복잡도의 알고리즘을 얻는다.
- 또한 다항식 공간 복잡도의 O*(20.75n) 시간 복잡도 알고리즘도 제시한다.
통계
Σwi < 2n - 1
d = Σmax{0, ft - 1} = #{0 ≤ t < 2n : ft = 0}