Si alors nous savons que l'ensemble n'est pas une antichaine par le lemme de Sperner, et donc le la version de décision du problème devient triviale. Mais il pourrait être intéressant de considérer le cas où est proche de cette valeur.n>(dd/2)≈2dπd/2√n
Les travaux de Friedgut sur le théorème d'Erdős-Ko-Rado montrent que, étant donné le vecteur caractéristique d'une famille de sous-ensembles de , on peut trouver dans le temps si est une famille qui se recoupe (tous les deux éléments de couper). Plus généralement, sa méthode nous permet de calculer
où est une fonction connue (spécifique) qui n'est pas zéro uniquement si sont disjoints. ne dépend que de l'histogramme de , où est l'indicateur de .f[m]O(m2m)ff
Σ=∑x,y∈fS(x,y),
S(x,y)≥0x,yS(x,y){(xi,yi):i∈[d]}xii∈x
(En passant, nous commentons que sa méthode fonctionne également si on nous donne deux familles et que nous sommes intéressés par . dans les deux cas, nous devons calculer les transformées de Fourier-Walsh à biais de pour un arbitraire , puis , où ne dépend que du poids de Hamming de .)f,gΣ=∑x∈f,y∈gS(x,y)pf,gp∈(0,1/2)Σ=∑xT(x)f^(x)g^(x)T(x)x
Comment tout cela est-il lié au problème actuel? Considérons la famille
Chaque est disjoint de chaque . Puisque est donné explicitement, nous pouvons calculer la contribution de ces paires à . Y a-t-il d'autres paires disjointes? Si est de alors et donc . Donc est un antichain iff
F={Si∪{x}:i∈[n]}∪{Si¯¯¯¯¯∪{y}:i∈[n]}.
Si∪{x}Si¯¯¯¯¯∪{y}S(x,y)ΣSi∪{x}Sj¯¯¯¯¯∪{y}Si∩Sj¯¯¯¯¯=∅Si⊆SjS1,…,SnΣ=∑i=1nS(Si∪{x},Si¯¯¯¯¯∪{y}).
Cet algorithme s'exécute dans le temps , en ignorant les facteurs polynomiaux en . Lorsque est proche de , c'est nettement mieux que . En général, nous obtenons une amélioration tant que .O~(n+2d)dn2dO~(n2)n=ω(2d/2)
Étant donné que nous savons qu'il existe une paire satisfaisant , comment la trouver? Supposons que nous divisions tous les ensembles en deux groupes au hasard. Avec une probabilité d'environ , les ensembles et se retrouveront dans le même groupe. Si nous sommes si chanceux, nous pouvons exécuter notre algorithme sur et , trouver à qui appartiennent-ils, et ainsi diviser par deux le nombre d'ensembles que nous devons considérer. Sinon, nous pouvons réessayer. Cela montre qu'avec un nombre attendu d' appels oracle à la version de décision, nous pouvons réellement trouver une paire satisfaisant .Si⊆SjS1,…,SnG1,G21/2SiSjG1G2O(logn)Si⊆Sj
Nous pouvons également dérandomiser l'algorithme. Sans perte de généralité, supposons . À chaque étape, nous partitionnons en fonction de chacun des bits. Une de ces partitions mettra toujours et dans la même partie, sauf si elles ont des polarités opposées; nous pouvons tester cela explicitement en utilisant uniquement des opérations . Cela donne un algorithme déterministe utilisant appels oracle à la version de décision.n=2kkxyO(nd)O(log2n)