3SUM

3SUM
컴퓨터 과학의 미해결 문제:

일부 > n^{ 에 대해 시간 O( - ) O^{2-\epsilon에 3SUM 문제를 해결하기 위한 알고리즘이 있는가

계산 복잡성 이론에서, 3SUM 문제는 n{\ 실수의 집합이 0에 합한 세 가지 요소를 포함하고 있는지 묻는다.A generalized version, k-SUM, asks the same question on k numbers. 3SUM can be easily solved in time, and matching lower bounds are known in some specialized models of computation (Erickson 1999).

3SUM에 대한 결정론적 알고리즘에는 ( ) 시간이 필요하다고 추측했다.2014년, 원래의 3SUM 추측은 ( / n/ ) / 3)에서 3SUM을 하는 결정론적 을 부여한 Allan 와 Seth 에 의해 [1]또한, Grønlund와 Pettie는 3SUM의 4-선형 의사결정 트리 복잡성이 O( 3/ 2 라는 것을 보여주었다.이 한계들은 이후에 개선되었다.[2][3][4]현재 가장 잘 알려진 3SUM 알고리즘은 2( ) O( 1)/ ) n 시간 단위로 실행된다.[4]케인, 러브트, 모란은 3SUM의 6-선형 의사결정 트리 복잡성이 O {\log2}라는 것을 보여주었다[5]후자의 바운드는 단단하다(로그인자까지).3SUM은 -( ) 예상 시간에서 여전히 확인할 수 없는 것으로 추측된다.[6]

When the elements are integers in the range , 3SUM can be solved in time by representing the input set as a bit vector, computing the set of all pairwise sums as a discrete convoFast Fourier 변환을 사용한 lution을 마지막으로 이 집합을 [7]와) 비교.

2차 알고리즘

배열이 S[ 이라고 가정합시다.. In integer (word RAM) models of computing, 3SUM can be solved in time on average by inserting each number into a hash table, and then, for each index and , checking whether 해시 테이블에는 정수-( [ + [ ) 가 포함되어 있음

해싱이 허용되지 않는 비교 기반 컴퓨팅 모델이나 실제 RAM에서도 동시에 문제를 해결할 수 있다.아래 알고리즘은 먼저 입력 어레이를 정렬하고 나서 정렬된 목록에서 쌍을 이진 검색할 필요가 없도록 가능한 모든 쌍을 세심한 순서로 테스트하여 의 경우 O 시간을 다음과 같이 달성한다.[8]

Sort(S), 나는 정도 0으로 n- 하는 것은 2a=S[나는], 시작하)나는 + 1;엔드 탭 n-1,(<, 끝 시작하) 하는 b)S[시작하]c)S[끝];만약(a+b+c== 0) 다음 출력 a, b, c;// 계속 검색에 모든 세 쌍둥이 조합 총 망라시키도록 0.//우리는으로 업데이트 하여 두 최종 시작과 함께 이후 array 값은 구별됨. 시작 = 시작 + 1; 끝 = 끝 - 1; 그렇지 않으면(a + b + c > 0)  = 끝 - 1; 다른 시작 = 시작 + 1; 끝

다음 예제는 정렬된 작은 배열에서 이 알고리즘의 실행을 보여준다.a의 전류 값은 빨간색으로 표시되고 bc 값은 자홍색으로 표시된다.

-25 -10 -7 -3 2 4 8 10  (a+b+c==-25)  -25 -10 -7 -3 2 4 8 10  (a+b+c==-22)  . . .  -25 -10 -7 -3 2 4 8 10  (a+b+c==-7)  -25 -10 -7 -3 2 4 8 10  (a+b+c==-7)  -25 -10 -7 -3 2 4 8 10  (a+b+c==-3)  -25 -10 -7 -3 2 4 8 10  (a+b+c==2)  -25 -10 -7 -3 2 4 8 10  (a+b+c==0)

알고리즘의 정확성은 다음과 같이 볼 수 있다.솔루션 a + b + c = 0이 있다고 가정합시다. 포인터는 한 방향으로만 이동하기 때문에 가장 왼쪽 포인터가 a를 가리킬 때까지 알고리즘을 실행할 수 있다.나머지 포인터 중 하나가 b 또는 c 중 하나를 가리킬 때까지 알고리즘을 실행한다.그런 다음 알고리즘은 마지막 포인터가 나머지 항을 가리킬 때까지 실행되며, 긍정 솔루션을 제공한다.

변형

0이 아닌 합

합이 0인 숫자를 찾는 대신, 다음과 같은 방법으로 합이 상수 C인 숫자를 찾을 수 있다.

  • 입력 배열의 모든 요소에서 C/3을 빼십시오.
  • 수정된 배열에서 합이 0인 3개의 요소를 찾으십시오.

For e.g., if A=[1,2,3,4] and if you are asked to find 3sum for C=4, then subtract all the elements of A by 4/3 and solve it in the usual 3sum way, i.e.,

또는 해시 테이블에서 정수-( [ + S[ )를 검색하도록 원래의 알고리즘을 간단히 수정할 수도 있다..

3개의 배열

단일 배열에서 숫자 3개를 검색하는 대신 3개의 배열에서 검색할 수 있다.즉, X, Y, Z 배열 3개를 지정하면 ++ = 0 과 같이 X, bY, cZ의 세 숫자를 찾으십시오 1 어레이 변형 3SUM×1과 3 어레이 변형 3SUM×3을 호출하십시오.

3SUM×1에 대한 해결사가 주어질 경우, 3SUM×3 문제는 다음과 같은 방법으로 해결될 수 있다(모든 요소가 정수라고 가정).

  • For every element in X, Y and Z, set: , , .
  • S를 배열 X, Y, Z의 결합으로 한다.
  • 3SUM× 을 사용하여 S,b S c 의 세 찾으십시오. find + b+ = a
  • - )/ , - 2)/ , ( + )/ 을 반환한다

우리가 배열을 변환한 방식에 따르면, aX, bY, cZ가 보장된다.[9]

콘볼루션 합계

다음과 같은 어레이의 임의 요소를 찾는 대신:

콘볼루션 3섬 문제(Conv3SUM)는 특정 위치에서 요소를 찾는다.[10]

Conv3에서 감소SUM to 3SUM

3SUM을 위한 해결사 제공, 컨벤트3SUM 문제는 다음과 같은 방법으로 해결할 수 있다.[10]

  • 모든 인덱스 i T[ = S[ + i 여기서 n은 배열의 요소 수이고 인덱스는 0에서 n-1까지 실행됨)로 새 어레이 T를 정의하십시오.
  • 어레이 T에서 3SUM을 해결하십시오.

정확성 증명:

  • 배열에서 S[ i+ = [ + [ 가 있는 트리플이 있는 경우 T [i+ = S [ i+ + = ( S [ + )+ ( S[ +) = [ ]+ [\T 그러므로 이 솔루션은 T의 3SUM에 의해 발견될 것이다
  • 반대로, 새로운 배열에서 [ = T[ + T[ 가 있는 트리플이 있다. 그 다음 [ + k= ([ + [ + (+ ) i]]+)++++++++++++++++++++++++++++++++++++++++++++++++++.+ < 때문에 반드시 [ = [ + [ 가 필요하다. k= + 따라서 이것은 Conv3에 유효한 솔루션이다.SUM on S.

3SUM에서 Conv3으로 감소SUM

Conv3SUM에 대한 해결사가 주어지면, 3SUM 문제는 다음과 같은 방법으로 해결할 수 있다.[6][10]

감소는 해시함수를 사용한다.첫 번째 근사치로, 다음과 같은 선형 해시함수를 가지고 있다고 가정한다.

모든 요소가 0... 범위의 정수라고 가정합시다.N-1, 그리고 함수 h가 각 요소를 더 작은 범위의 인덱스에 있는 요소에 매핑하는 것: 0...n-1. 새 어레이 T를 생성하고 S의 각 요소를 T의 해시 값으로 보내십시오. 즉, S( x S S

처음에는 매핑이 고유하다고 가정하십시오(, T의 각 셀은 S의 단일 요소만 허용).컨벤3 해결SUM on T.지금:

  • 3SUM에 대한 경우 = x + y {\ zx+ () = () + () 따라서 이 용액은 Conv3에 의해 발견될 것이다.SUM 해결사 T.
  • 반대로, 만약 콘벤트3가 있다면SUM은 T에서 발견되며, TS의 순열일 뿐이기 때문에 S의 3SUM 솔루션에 해당된다.

해시함수는 S의 몇 가지 구별되는 요소들을 T의 동일한 셀에 매핑할 수 있기 때문에 이 이상적인 솔루션은 작동하지 않는다.T의 각 셀에서 하나의 임의 원소를 선택하여 배열 를 만들어 Conv3을 실행하는 것이 요령이다.SUM on 솔루션이 발견되면 S에 3SUM에 맞는 솔루션이다.용액이 발견되지 않으면 다른 랜덤 를 생성하고 다시 시도하십시오.T의 각 셀에는 최대 R 요소가 있다고 가정합시다.그러면 솔루션을 찾을 확률(솔루션이 존재하는 경우)은 무작위 선택이 각 셀로부터 정확한 요소를 선택할 확률로, 즉( ) Conv3SUM R 실행하면 높은 확률로 솔루션을 찾을 수 있을 것이다.

불행히도 우리는 선형 완벽한 해싱이 없기 때문에 거의 선형 해시함수, 즉 다음과 같은 함수 h를 사용해야 한다.

( + y)= ( x)+ () 또는

This requires to duplicate the elements of S when copying them into T, i.e., put every element both in (as before) and in . So each cell will have 2R elements, and we will have to run Conv3SUM .

3SUM 강직성

문제는 3SUM-hard라고 불리는데, 만약 그것을 2차 시간 내에 푸는 것이 3SUM에 대한 하위 시간 알고리즘을 의미한다면 말이다.3SUM-hardeness의 개념은 Gajenta & Overmars(1995)에 의해 도입되었다.그들은 연산 기하학에서 많은 종류의 문제가 다음의 문제들을 포함하여 3SUM-힘드다는 것을 증명했다.(저자들은 이러한 문제들 중 많은 것들이 다른 연구자들에 의해 기여된다는 것을 인정한다.)

  • 비행기에서 일련의 선을 볼 때, 한 점에서 만나는 세 가지가 있는가?
  • 교차되지 않는 축-병렬 선 세그먼트의 세트가 주어진 경우, 비어 있지 않은 두 개의 하위 집합으로 구분되는 선이 있는가?
  • 평면에 무한 스트립 세트가 주어진 경우, 주어진 직사각형을 완전히 덮는가?
  • 비행기에 삼각형 한 세트를 주어, 그들의 치수를 계산하라.
  • 비행기에 삼각형 세트가 있으면, 그들의 조합에 구멍이 있는가?
  • 예를 들어, 가시성 및 모션 계획 문제.
    • 공간의 수평 삼각형 세트를 지정하면 특정 지점에서 특정 삼각형을 볼 수 있는가?
    • 평면 내에 일련의 비절연 축 평행선 세그먼트 장애물이 있을 경우, 장애물과 충돌하지 않고 출발 위치와 결승 위치 사이의 변환과 회전으로 주어진 로드를 이동할 수 있는가?

지금쯤 이 범주에 속하는 수많은 다른 문제들이 있다.를 들어 X + Y 정렬의 결정 버전이 있다. 주어진 숫자 XY의 집합은 각각 로 구분되는 X Y이며, xX, y ∈ Y가 있는가?[11]

참고 항목

메모들

  1. ^ 그뢰른드 & 페티 2014.
  2. ^ Freund 2017.
  3. ^ 골드 & 샤리르 2017.
  4. ^ a b Chan 2018.
  5. ^ 케인, 러브트 & 모란 2018.
  6. ^ a b Kopelowitz, Tsvi; Pettie, Seth; Porat, Ely (2014). "3SUM Hardness in (Dynamic) Data Structures". arXiv:1407.6756 [cs.DS].
  7. ^ Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2009) [1990]. Introduction to Algorithms (3rd ed.). MIT Press and McGraw-Hill. ISBN 0-262-03384-4. 30.1–7페이지, 906페이지.
  8. ^ 가시성 그래프3-Michael Hoffmann 기준
  9. ^ 다른 방향의 축소는 3-섬 문제의 변형을 참조하십시오.
  10. ^ a b c Patrascu, M. (2010). Towards polynomial lower bounds for dynamic problems. Proceedings of the 42nd ACM symposium on Theory of computing - STOC '10. p. 603. doi:10.1145/1806689.1806772. ISBN 9781450300506.
  11. ^ Demaine, Erik; Erickson, Jeff; O'Rourke, Joseph (20 August 2006). "Problem 41: Sorting X + Y (Pairwise Sums)". The Open Problems Project. Retrieved 23 September 2014.

참조