세트 포함을 확인하는 가장 빠른 방법은 무엇입니까?


24

감안 서브 세트 의 .nS1,,Sn{1,,d}

와 함께 세트가 있는지 확인하십시오 . (그렇다면 예를 찾으십시오. 그렇지 않다면 간단히 "아니오"라고 말하십시오)Si,SjSiSj

이 문제에 대한 사소한 해결책은 모든 세트의 쌍을 거치고 시간 O (d) 의 쌍에 대한 포함을 확인 O(d)하므로 전체 런타임은 O(n2d) 입니다. 이 문제를 더 빨리 해결할 수 있습니까? 문헌에 그 이름이 있습니까?

답변:


27

Strong Exponential Time Hypothesis 가 false가 아닌 한 상수 \ epsilon> 0에 대해 O(n2ϵ) 시간에 풀 수 없습니다 .ϵ>0

즉, 우리는 알고리즘이 있다면, 우리는 해결할 수 n 에 -variable CNF Satisfiability O((2ϵ)n) 일부 시간 ϵ>0 . 그 이유는 n / 2 변수 의 두 개의 동일한 부분 P1P2 로 변수를 나눌 수 있기 때문입니다 . 각 부분 에 대해 다음과 같은 방식으로 각 절의 하위 집합으로 F_1F_2 패밀리를 구성합니다 . 각 과제에 대해 과제가 만족하지 않는 조항으로 구성된 하위 집합을 추가합니다. 이 구성은 poly (n) 2 ^ {n / 2} 시간에 실행됩니다.n/2F1F2poly(n)2n/2

구성을 마치기 위해 원래 CNF 인스턴스는 F1F_2의 일부 하위 세트와 분리 된 하위 세트가있는 경우 솔루션을 제공 F2합니다.

각 절에 대한 것 외에도 그라운드 세트에 몇 가지 추가 요소를 추가하면 세트 포함의 문제 로이 분리 문제를 포함시키는 것이 어렵지 않습니다. 기본적으로 의 하위 집합을 합니다. 두 세트 가 포함으로 계산되지 않도록하려면 추가 요소에 안티 체인 코드를 추가하십시오. 의 서브 세트에서 의 서브 세트 쌍이 포함 되지 않도록 다른 체인 방지 코드 (접지 세트의 다른 추가 요소에 있음)가 사용됩니다 . 마지막으로, 구성된 모든 세트 에는 의 안티 체인 코드의 모든 요소가 포함됩니다 .F1F1F2F2F1F2

이것은 접지 세트의 부분 집합에 대한 포함 포함 질문 입니다. 논쟁은 기본적으로 Ryan Williams의 초기 논문으로 돌아갑니다 (어떤 것을 기억하지 못합니다).2n/2+1d=poly(n)


빠른 답변 감사합니다. Sparsification Lemma를 먼저 사용하면 도 있습니다 . d=O(n)
Karl

9

인 세트 패밀리에 관심이 있다면 Yuval의 답변에 요약 된 것과 개념적으로 매우 유사한 또 다른 솔루션은 제타 변환 을 계산하는 것입니다n=ω(2d/2)

fζ(T)=STf(S),

여기서 은 입력 패밀리 의 표시기 함수입니다 . 즉, 이면 이고 , 그렇지 않으면 입니다. 일부 대해 경우에만 가 되도록 세트가 있습니다 .f:2[d]RF={S1,S2,,Sn}f(S)=1SFf(S)=0SiSjSiSjfζ(S)>1SF

제타 변환은 예이츠의 알고리즘을 사용하여 시간 에서 계산 될 수있다 예를 들어, Knuth의 TAOCP, vol. 2, §4.6.4. 알고리즘 자체는 매우 간단한 동적 프로그래밍이며, 포함 된 세트가있는 경우 예제를 제공하도록 쉽게 수정할 수 있습니다.O(d2d)


이것은 내 대답보다 훨씬 간단합니다!
Yuval Filmus

8

이 문제는 빠른 행렬 곱셈을위한 알고리즘을 사용하여 해결할 수 있으며, 계산이 행렬 곱셈과 동일하다고 생각합니다 (물론 이것을 증명할 방법을 모르지만 이것을 증명하는 기술이 없다고 생각합니다) ). 이 솔루션은 n = d 일 때 O (n ^ {2.373})의 실행 시간과 d와 n 간의 다른 관계에 대한 다른 실행 시간을 갖습니다.

행렬 곱셈을 사용하여이 문제를 해결하는 방법은 다음과 같습니다. n x d 행렬 A의 행에 집합의 특성 벡터와 n 행렬 B에 의해 ad 열에있는 집합의 보수에 대한 특성 벡터를 씁니다. 교차하는 세트 쌍은 정확히 제품 A * B의 위치가 0과 같습니다.

이 문제로 알려진 최고의 실행 시간은 해당 주제에 대한 Huang and Pan의 논문을 참조하십시오. 내가 정확하게 기억한다면, d가 충분히 커지면 러닝 타임은 분명히 최적의 O (nd)가 될 것입니다. n = d의 실행 시간은 O (n ^ {2.373})입니다. n과 d의 다른 관계에 대해서는 다른 값을 얻게됩니다. 직교 행렬 곱셈에 대한 최적의 알고리즘이 존재하면 문제에 대한 실행 시간 O (n ^ 2 + nd)의 알고리즘을 얻게됩니다. 귀하의 문제를 해결하기 위해 이것보다 더 좋은 방법은 없다고 생각하지만 확실하지 않습니다.

이 알고리즘의 상수가 너무 커서이 솔루션은 실용적이지 않을 수 있습니다. Strassen의 알고리즘은 합리적인 값의 n 및 d에 대해 순 솔루션에 비해 개선을 제공 할 수도 있지만 확실하지 않습니다. 그러나 행렬 곱셈과 관련이있는 문제는 순진 알고리즘보다 폴리 알고리즘보다 나은 조합 알고리즘이 거의없는 것처럼 보이므로 추측해야한다면 문제에 대한 좋은 알고리즘이 없을 것입니다. 오늘날의 기술을 사용하여 순진한 것보다 훨씬 낫습니다.


6

만약 이면, Sperner의 명예에 의한 반 체인이 아니라는 것을 알 수 있습니다. 문제의 결정 버전은 사소한 것이됩니다. 그러나 이 그 값에 가까운 경우를 고려하는 것이 흥미로울 수 있습니다 .n>(dd/2)2dπd/2n

특징 벡터 부여하는 에르 되시 코 -라도 정리 프로그램에 Friedgut의 일 의 서브 세트의 가족 , 하나의 시간에서 찾을 수 여부 교차 가정 (모든 두 요소이고 교차). 더 일반적으로, 그의 방법은 를 계산할 수있게하는데 여기서 은 가 분리 된 경우에만 0 입니다. 는 의 히스토그램에만 의존합니다. 여기서 는 의 지표입니다 .f[m]O(m2m)ff

Σ=x,yfS(x,y),
S(x,y)0x,yS(x,y){(xi,yi):i[d]}xiix

(제외로, 우리는 두 가지 패밀리가 주어지고 관심 이 있다면 그의 방법도 효과적이라고 언급합니다 . 두 경우, 우리는를 계산하기 위해 필요한 푸리에 - 월시 변환 -skewed 임의 대해 하고 (여기서 는 해밍 중량 에만 의존합니다 .)f,gΣ=xf,ygS(x,y)pf,gp(0,1/2)Σ=xT(x)f^(x)g^(x)T(x)x

이 모든 것이 당면한 문제와 어떤 관련이 있습니까? 패밀리를 고려하십시오 모든 은 모든 됩니다. 이후 명시 적으로 부여하고, 우리는 이러한 쌍 기여 계산할 수 . 더 이상 분리 된 쌍이 있습니까? 경우 이산의 출처 다음 등 . 그래서 반 사슬 IFF이다

F={Si{x}:i[n]}{Si¯{y}:i[n]}.
Si{x}Si¯{y}S(x,y)ΣSi{x}Sj¯{y}SiSj¯=SiSjS1,,Sn
Σ=i=1nS(Si{x},Si¯{y}).

이 알고리즘은 시간 에서 실행되며 다항식을 무시 합니다. 경우 확대이다 ,이보다 훨씬 더 좋다 . 일반적으로 이면 개선됩니다 .O~(n+2d)dn2dO~(n2)n=ω(2d/2)

만족하는 쌍이 존재 한다는 것을 알고 있다면 어떻게 찾을 수 있습니까? 모든 세트 을 무작위 로 두 그룹 로 . 확률이 대략 이면 및 세트 는 동일한 그룹에서 자신을 찾습니다. 운이 좋으면 및 에서 알고리즘을 실행하고 어느 알고리즘 이 속하는지 찾아서 고려해야 할 세트 수를 절반으로 줄일 수 있습니다. 그렇지 않은 경우 다시 시도 할 수 있습니다. 이것은 의사 결정 버전에 대한 예상 oracle 호출 수를 통해 실제로 만족시키는 쌍을 찾을 수 있음을 .SiSjS1,,SnG1,G21/2SiSjG1G2O(logn)SiSj

알고리즘을 무작위화할 수도 있습니다. 일반성을 잃지 않으면 서 라고 가정하십시오 . 각 단계에서, 우리는 각각의 비트 에 따라 분할합니다 . 이 파티션 중 하나 는 반대 극성이없는 한 항상 와 를 같은 부분에 넣습니다. 연산 만 사용하여이를 명시 적으로 테스트 할 수 있습니다 . 이것은 의사 결정 버전에 대한 oracle 호출을 사용하여 결정적인 알고리즘을 제공합니다 .n=2kkxyO(nd)O(log2n)


흥미 롭군 이에 대해 더 배우려면 무엇을 읽어야합니까?
Janne H. Korhonen 2012 년

2
Friedgut의 논문 "교차 가족, 독창성 및 안정성의 척도"를 확인하십시오.
Yuval Filmus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.