Cách nhanh nhất để kiểm tra bao gồm thiết lập là gì?


24

Với tập con S 1 , ... , S n của { 1 , ... , d } .nS1,,Sn{1,,d}

Kiểm tra xem có bộ với S iS j không . (Nếu vậy, hãy tìm một ví dụ, nếu không, chỉ cần nói "không")Si,SjSiSj

Giải pháp tầm thường cho vấn đề này trải qua tất cả các cặp tập hợp và kiểm tra bao gồm một cặp trong thời gian , vì vậy thời gian chạy tổng thể là O ( n 2 d ) . Vấn đề này có thể được giải quyết nhanh hơn? Có một tên cho nó trong văn học?O(d)O(n2d)

Câu trả lời:


27

Bạn không thể giải quyết nó trong thời gian cho bất cứ liên tục ε > 0 trừ khi Mạnh Exponential Time Giả thuyết là sai.O(n2ϵ)ϵ>0

Đó là, nếu chúng ta có một thuật toán như vậy, chúng ta có thể giải quyết -variable CNF Satisfiability trong O ( ( 2 - ε ' ) n ) thời gian cho một số ε ' > 0 . Lý do là chúng ta có thể chia các biến thành hai phần bằng nhau P 1P 2 của n / 2 biến. Đối với mỗi phần, chúng tôi xây dựng một gia đình F 1F 2nO((2ϵ)n)ϵ>0P1P2n/2F1F2tương ứng các tập con của mệnh đề theo cách sau. Đối với mỗi bài tập, chúng ta thêm một tập hợp con bao gồm các mệnh đề không được thỏa mãn bởi bài tập. Cấu trúc này chạy trong lần.poly(n)2n/2

Để hoàn thành việc xây dựng, chúng tôi lưu ý rằng phiên bản CNF ban đầu có một giải pháp nếu có một tập hợp con trong , nó khác với một tập hợp con trong F 2 .F1F2

Thêm một số yếu tố bổ sung vào tập hợp mặt đất của bạn ngoài các yếu tố cho mỗi mệnh đề, không quá khó để đặt vấn đề rời rạc này như một câu hỏi về bao gồm tập hợp. Về cơ bản, bạn lấy phần bổ sung của các tập con trong . Để đảm bảo hai bộ trong F 1 không được tính là bao gồm, bạn thêm mã từ chuỗi chống vào các phần tử bổ sung. Một mã chống chuỗi khác (trên các yếu tố bổ sung khác của bộ mặt đất) được sử dụng trên các tập hợp con của F 2 để đảm bảo không có cặp tập hợp con nào từ F 2 tạo thành một sự bao gồm. Cuối cùng, tất cả các bộ được hình thành từ F 1 bao gồm tất cả các yếu tố của mã chống chuỗi của F 2 .F1F1F2F2F1F2

Đây là một câu hỏi bao gồm tập hợp trên các tập con trên tập mặt đất d = p o l y ( n ) . Cuộc tranh luận về cơ bản quay trở lại một số bài báo ban đầu của Ryan Williams (không thể nhớ đó).2n/2+1d=poly(n)


Cảm ơn bạn rất nhiều vì câu trả lời nhanh chóng. Chúng ta thậm chí có , nếu chúng ta sử dụng Bổ đề Sparsifying trước, phải không? d=O(n)
Karl

9

Nếu bạn quan tâm đến việc đặt các họ với , thì một giải pháp khác về mặt khái niệm rất giống với giải pháp được nêu trong câu trả lời của Yuval là tính toán biến đổi zetan=ω(2d/2)

fζ(T)=STf(S),

Trong đó là hàm chỉ thị của họ đầu vào F = { S 1 , S 2 , Vượt , S n } . Nghĩa là, f ( S ) = 1 nếu S Ff ( S ) = 0 nếu không. Rõ ràng có bộ S iS j sao cho S iSf:2[d]RF={S1,S2,,Sn}f(S)=1SFf(S)=0SiSj khi và chỉ khi f ζ ( S ) > 1 đối với một số S F .SiSjfζ(S)>1SF

Biến đổi zeta có thể được tính toán trong thời gian bằng thuật toán của Yates, xem ví dụ TAOCP của Knuth, tập. 2, §4.6.4. Thuật toán tự nó là một chương trình động khá đơn giản và thật dễ dàng sửa đổi nó để đưa ra một ví dụ về tập hợp được bao gồm nếu có.O(d2d)


Điều này đơn giản hơn nhiều so với câu trả lời của tôi!
Yuval Filmus

8

Vấn đề này có thể được giải quyết bằng cách sử dụng thuật toán để nhân ma trận nhanh và tôi cũng nghi ngờ nó tương đương với phép tính ma trận (mặc dù tôi không biết cách nào để chứng minh điều này và tôi không nghĩ các kỹ thuật để chứng minh điều này tồn tại ). Giải pháp này sẽ có thời gian chạy là O (n ^ {2.373}) khi n = d và thời gian chạy khác cho các mối quan hệ khác giữa d và n.

Dưới đây là cách bạn giải quyết nó bằng cách nhân ma trận: Bạn viết các vectơ đặc trưng của các tập hợp trong các hàng của n theo d ma trận A và các vectơ đặc trưng của phần bổ sung của các tập hợp trong các cột của quảng cáo theo n ma trận B. sau đó nhân A với B. Các cặp tập hợp giao nhau chính xác là vị trí của sản phẩm A * B bằng 0.

Để biết thời gian chạy tốt nhất được biết cho vấn đề này, hãy xem bài viết của Huang và Pan về chủ đề này. Nếu tôi nhớ chính xác, khi d trở nên đủ lớn, thời gian chạy sẽ trở thành O (nd) tối ưu rõ ràng. Với n = d, bạn sẽ có thời gian chạy là O (n ^ {2.373}). Đối với các mối quan hệ khác của n và d, bạn sẽ nhận được các giá trị khác. Nếu tồn tại một thuật toán tối ưu cho phép nhân ma trận hình chữ nhật, bạn sẽ nhận được một thuật toán có thời gian chạy O (n ^ 2 + nd) cho vấn đề của bạn. Tôi nghi ngờ không có cách nào tốt hơn điều này để giải quyết vấn đề của bạn, nhưng tôi không chắc chắn lắm.

Giải pháp này có lẽ không được sử dụng thực tế, vì hằng số của các thuật toán này quá lớn. Thuật toán của Strassen có thể cải thiện giải pháp ngây thơ cho các giá trị hợp lý của n và d, nhưng tôi thậm chí không chắc chắn về điều đó. Tuy nhiên, các vấn đề dường như liên quan đến nhân ma trận dường như hiếm khi có thuật toán tổ hợp tốt hơn thuật toán ngây thơ (hơn các yếu tố đa bội), vì vậy nếu tôi phải đoán, tôi sẽ đoán rằng không có thuật toán nào tốt cho vấn đề của bạn tốt hơn đáng kể so với người ngây thơ, sử dụng các kỹ thuật ngày nay.


6

n>(dd/2)2dπd/2n

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,yfS(x,y),
S(x,y)0x,yS(x,y){(xi,yi):i[d]}xiix

(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Σ=xf,ygS(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}SiSj¯=SiSjS1,,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 .SiSjS1,,SnG1,G21/2SiSjG1G2O(logn)SiSj

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)


Hấp dẫn. Tôi nên đọc gì nếu tôi muốn tìm hiểu thêm về điều này?
Janne H. Korhonen

2
Kiểm tra bài viết của Friedgut "Về thước đo các gia đình giao nhau, tính độc đáo và ổn định".
Yuval Filmus
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.