Jeśli to wiemy, że zbiór nie jest antychainem lematu Spernera, więc wersja decyzyjna problemu staje się trywialna. Interesujące może być rozważenie przypadku, w którymnjest bliskie tej wartości.n>(dd/2)≈2dπd/2√n
Praca Friedguta nad twierdzeniem Erdősa-Ko-Rado pokazuje, że biorąc pod uwagę charakterystyczny wektor rodziny podzbiorów [ m ] , w czasie O ( m 2 m ) można stwierdzić, czy f jest rodziną przecinającą się (co dwa elementy f krzyżować). Mówiąc bardziej ogólnie, jego metoda pozwala obliczyć
Σ = ∑ x , y ∈ f S ( x , y ) ,
gdzie S ( x , y ) ≥ 0f[m]O(m2m)ff
Σ=∑x,y∈fS(x,y),
S(x,y)≥0jest pewną (specyficzną) znaną funkcją, która jest niezerowa tylko wtedy
, gdy
są rozłączne.
S ( x , y ) zależy tylko od histogramu
{ ( x i , y i ) : i ∈ [ d ] } , gdzie
x i jest wskaźnikiem dla
i ∈ x .
x,yS(x,y){(xi,yi):i∈[d]}xii∈x
(Nawiasem mówiąc, komentujemy, że jego metoda działa również, jeśli otrzymamy dwie rodziny i jesteśmy zainteresowani Σ = ∑ x ∈ f , y ∈ g S ( x , y ) . W obu przypadkach musimy obliczyć P -skewed transformat Fouriera Walsha z f , g do dowolnego p ∈ ( 0 , 1 / 2 ) , a następnie Σ = Σ x T ( x )f,gΣ=∑x∈f,y∈gS(x,y)pf,gp∈(0,1/2), gdzieT(x)zależy tylko od masy Hammingax).Σ=∑xT(x)f^(x)g^(x)T(x)x
Jak to wszystko ma się do problemu? Rozważ rodzinę
Każdy S i ∪ { x } jest odłączony od każdego ¯ S ı ∪ { a } . Ponieważ S ( x ,
F={Si∪{x}:i∈[n]}∪{Si¯¯¯¯¯∪{y}:i∈[n]}.
Si∪{x}Si¯¯¯¯¯∪{y} podano wyraźnie, możemy obliczyć udział tych par w
Σ . Czy są jeszcze jakieś rozłączne pary? Jeśli
S i ∪ { x } jest rozłączny od
¯ S j ∪ { y }, to
S i ∩ ¯ S j = ∅, a więc
S i ⊆ S j . Więc
S 1 , … , S n jest antychainem iff
Σ = n ∑ i =S(x,y)ΣSi∪{x}Sj¯¯¯¯¯∪{y}Si∩Sj¯¯¯¯¯=∅Si⊆SjS1,…,SnΣ=∑i=1nS(Si∪{x},Si¯¯¯¯¯∪{y}).
Algorytm działa w czasie , ignorując czynniki wielomianowe w d . Gdy n jest bliskie 2 d , jest to znacznie lepsze niż ˜ O ( n 2 ) . Zasadniczo uzyskujemy poprawę, o ile n = ω ( 2 d / 2 ) .O~(n+2d)dn2dO~(n2)n=ω(2d/2)
Biorąc pod uwagę, że wiemy, że para spełniających istnieje, jak go znaleźć? Załóżmy, że dzielimy wszystkie zbiory S 1 , … , S n na dwie grupy G 1 , G 2 losowo. Z prawdopodobieństwem w przybliżeniu 1 / 2 , zestawy S i i S J znajdują się w tej samej grupie. Jeśli mamy szczęście, możemy uruchomić nasz algorytm na G 1 i G 2Si⊆SjS1,…,SnG1,G21/2SiSjG1G2, znajdź, do którego one należą, i zmniejsz o połowę liczbę zestawów, które musimy wziąć pod uwagę. Jeśli nie, możemy spróbować ponownie. To pokazuje, że przy oczekiwanej liczbie wywołań wyroczni do wersji decyzyjnej możemy faktycznie znaleźć parę spełniającą S i ⊆ S j .O(logn)Si⊆Sj
Możemy również derandomizować algorytm. Bez utraty ogólności załóżmy, że . Na każdym etapie dzielimy zgodnie z każdym z bitów k . Jeden z tych partycji zawsze położy X i Y w tej samej części, chyba że mają przeciwne bieguny; możemy to sprawdzić bezpośrednio, używając tylko operacji O ( n d ) . Daje to deterministyczny algorytm wykorzystujący wywołania O ( log 2 n ) do wersji decyzyjnej.n=2kkxyO(nd)O(log2n)