Jika maka kita tahu bahwa himpunan itu bukan antikimia oleh lemma Sperner, dan versi keputusan dari masalah menjadi sepele. Tetapi mungkin menarik untuk mempertimbangkan kasus di manann>(dd/2)≈2dπd/2√n dekat dengan nilai itu.
Pekerjaan Friedgut ini pada Erdös-Ko-Rado teorema menunjukkan bahwa mengingat karakteristik vektor dari keluarga himpunan bagian dari [ m ] , satu dapat menemukan di waktu O ( m 2 m ) apakah f adalah keluarga berpotongan (setiap dua unsur f memotong). Lebih umum, metodenya memungkinkan kita untuk menghitung
Σ = Σ x , y ∈ f S ( x , y ) ,
dimana S ( x , y )f[m]O(m2m)ff
Σ=∑x,y∈fS(x,y),
S(x,y)≥0adalah beberapa fungsi (spesifik) yang diketahui yang bukan nol hanya jika
terpisah.
S ( x , y ) hanya bergantung pada histogram
{ ( x i , y i ) : i ∈ [ d ] } , di mana
x i adalah indikator untuk
i ∈ x .
x,yS(x,y){(xi,yi):i∈[d]}xii ∈ x
(Sebagai tambahan, kami berkomentar bahwa metodenya juga berfungsi jika kita diberikan dua keluarga , dan tertarik pada Σ = ∑ x ∈ f , y ∈ g S ( x , y ) . Dalam kedua kasus, kita perlu menghitung p -skewed Fourier-Walsh transformasi dari f , g untuk sewenang-wenang p ∈ ( 0 , 1 / 2 ) , dan kemudian Σ = Σ x T (f, gΣ = ∑x ∈ f, y∈ gS( x , y)half, gp ∈ ( 0 , 1 / 2 ).), di manaT(x)hanya bergantung pada berat Hamming darixΣ = ∑xT( x ) f^( x ) g^( x )T( x )x
Bagaimana semua ini berhubungan dengan masalah yang dihadapi? Pertimbangkan keluarga
Setiap S i ∪ { x } terpisah dari setiap ¯ S i ∪ { y } . Sejak S ( x ,
F= { Ssaya∪{x}:i∈[n]}∪{Si¯¯¯¯¯∪{y}:i∈[n]}.
Si∪{x}Si¯¯¯¯¯∪{y}S(x,y) diberikan secara eksplisit, kita dapat menghitung kontribusi pasangan ini untuk
. Apakah ada pasangan yang saling terpisah? Jika
S i ∪ { x } terpisah dari
¯ S j ∪ { y } maka
S i ∩ ¯ S j = ∅ dan begitu juga
S i ⊆ S j . Jadi
S 1 , ... , S n adalah antichain iff
Σ = n ∑ i =ΣSi∪{x}Sj¯¯¯¯¯∪{y}Si∩Sj¯¯¯¯¯=∅Si⊆SjS1,…,SnΣ=∑i=1nS(Si∪{x},Si¯¯¯¯¯∪{y}).
Algoritma ini berjalan dalam waktu , mengabaikan faktor polinomial dalam d . Ketika n mendekati 2 d , ini jauh lebih baik daripada ˜ O ( n 2 ) . Secara umum, kami mendapatkan peningkatan selama n = ω ( 2 d / 2 ) .O~(n+2d)dn2dO~(n2)n=ω(2d/2)
Mengingat kita tahu bahwa ada pasangan yang memuaskan , bagaimana kita menemukannya? Misalkan kita membagi semua set S 1 , ... , S n menjadi dua kelompok G 1 , G 2 secara acak. Dengan probabilitas kira-kira 1 / 2 , set S i dan S j akan menemukan diri mereka dalam kelompok yang sama. Jika kami sangat beruntung, kami dapat menjalankan algoritme kami di G 1 dan G 2Si⊆SjS1,…,SnG1,G21/2SiSjG1G2, temukan di mana milik siapa ini, dan jadi separuh jumlah set yang perlu kita pertimbangkan. Jika tidak, kita bisa coba lagi. Ini menunjukkan bahwa dengan perkiraan jumlah panggilan oracle ke versi keputusan, kita benar-benar dapat menemukan pasangan yang memuaskan S i ⊆ S j .O(logn)Si⊆Sj
Kami juga dapat derandomisasi algoritme. Tanpa kehilangan sifat umum, misalkan . Dalam setiap langkah, kita mempartisi sesuai dengan masing-masing bit k . Salah satu dari partisi ini akan selalu menempatkan x dan y di bagian yang sama, kecuali mereka memiliki polaritas yang berlawanan; kita dapat menguji untuk ini secara eksplisit hanya menggunakan operasi O ( n d ) . Ini memberikan algoritma deterministik menggunakan O ( log 2 n ) panggilan oracle ke versi keputusan.n=2kkxyO(nd)O(log2n)