n>(dd/2)≈2dπd/2√n
Nghiên cứu của Friedgut về định lý Erdős-Ko-Rado cho thấy rằng với vectơ đặc trưng của một họ các tập con của , người ta có thể tìm thấy trong thời gian xem có phải là một gia đình giao nhau không (mỗi hai phần tử của giao nhau). Tổng quát hơn, phương thức của anh ấy cho phép chúng tôi tính toán
trong đó là một số hàm (cụ thể) không phải là không chỉ khi rời rạc. chỉ phụ thuộc vào biểu đồ của , trong đó là chỉ báo cho .f[m]O(m2m)ff
Σ=∑x,y∈fS(x,y),
S(x,y)≥0x,yS(x,y){(xi,yi):i∈[d]}xii∈x
(Bên cạnh đó, chúng tôi nhận xét rằng phương pháp của anh ấy cũng hoạt động nếu chúng tôi được cung cấp hai họ và quan tâm đến . cả hai trường hợp, chúng ta cần tính toán các biến đổi Fourier-Walsh -skewed của cho tùy ý , sau đó , trong đó chỉ phụ thuộc vào trọng lượng Hamming của .)f,gΣ=∑x∈f,y∈gS(x,y)pf,gp∈(0,1/2)Σ=∑xT(x)f^(x)g^(x)T(x)x
Làm thế nào để tất cả những điều này liên quan đến vấn đề trong tay? Hãy xem xét gia đình
Mọi đều tách rời khỏi mọi . Vì được cung cấp rõ ràng, chúng tôi có thể tính toán sự đóng góp của các cặp này cho . Có cặp đôi nào khác không? Nếu tách rời khỏi thì và vì vậy . Vì vậy, là một 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}).
Thuật toán này chạy trong thời gian , bỏ qua các yếu tố đa thức trong . Khi gần với , điều này tốt hơn đáng kể so với . Nói chung, chúng tôi nhận được một cải tiến miễn là .O~(n+2d)dn2dO~(n2)n=ω(2d/2)
Cho rằng chúng ta biết rằng một cặp thỏa mãn tồn tại, làm thế nào để chúng ta tìm thấy nó? Giả sử chúng ta chia tất cả các bộ thành hai nhóm một cách ngẫu nhiên. Với xác suất xấp xỉ , các bộ và sẽ thấy mình trong cùng một nhóm. Nếu chúng ta rất may mắn, chúng ta có thể chạy thuật toán của mình trên và , tìm xem chúng thuộc về cái nào và chúng giảm một nửa số lượng bộ chúng ta cần xem xét. Nếu không, chúng ta có thể thử lại. Điều này cho thấy rằng với số lượng cuộc gọi tiên tri dự kiến đến phiên bản quyết định, chúng ta thực sự có thể tìm thấy một cặp thỏa mãn .Si⊆SjS1,…,SnG1,G21/2SiSjG1G2O(logn)Si⊆Sj
Chúng tôi cũng có thể giải mã thuật toán. Không mất tính tổng quát, giả sử . Trong mỗi bước, chúng tôi phân vùng theo từng bit . Một trong những phân vùng này sẽ luôn đặt và trong cùng một phần, trừ khi chúng có cực tính ngược nhau; chúng ta có thể kiểm tra điều này một cách rõ ràng bằng cách chỉ sử dụng các hoạt động . Điều này đưa ra một thuật toán xác định bằng cách sử dụng các lệnh gọi cho phiên bản quyết định. k x y O ( n d ) O ( log 2 n )n=2kkxyO(nd)O(log2n)