Seberapa cepat kita bisa menghitung poset set inklusi dari set keluarga?

20

Mengingat satu set keluarga himpunan bagian dari alam semesta . Biarkan dan kami ingin menjawab adalah .FUS1,S2FS1S2

Saya mencari struktur data yang memungkinkan saya untuk dengan cepat menjawab ini. Aplikasi saya adalah dari teori grafik di mana saya ingin melihat apakah menghapus sebuah simpul dan lingkungannya meninggalkan semua simpul yang terisolasi, dan untuk setiap daftar simpul semua simpul terisolasi yang ditinggalkannya.

Saya ingin membuat poset lengkap atau akhirnya tabel menyimpan false false dengan tepat set mana yang merupakan subset dari eachother.|F|2

Biarkan,dan, asumsikanm=SF|S|u=|U|n=|F|u,nm

Kita dapat menghasilkan matriks kontainmen (grafik bipartit) dalam waktu dan kemudian dapat membuat tabel semua perbandingan dalam waktu dengan untuk setiap set , loop melalui semua elemen dari semua kelompok lain dan menandai ditetapkan sebagai bukan bagian dari jika mereka elemen tidak di . Total waktu .n×uO(un)n2O(nm)SFSSO(nm)

Bisakah kita melakukan sesuatu dengan lebih cepat? Secara khusus, apakah waktu mungkin atau tidak?O((n+u)2)

Saya menemukan beberapa artikel terkait:

Algoritma Sub-Quadratic Sederhana untuk Komputasi Subset Partial Order (1995) yang memberikan algoritma .O(m2/log(m))

Urutan Parsial Bagian: Komputasi dan Kombinatorik sedikit meningkatkan hal di atas tetapi juga mengklaim bahwa kertas di atas memecahkan masalah dalam waktu mana adalah jumlah maksimum set yang berbagi elemen yang sama, tetapi saya tidak dapat memahami hasil ini.dO(md)d

Dalam artikel Antara danO ( n α )O(nm)O(nα) O ( ( n + u ) 2.79 ) penulis menunjukkan bagaimana dalam grafik menemukan komponen yang terhubung setelah menghapus lingkungan tertutup dari sebuah simpul dengan menggunakan perkalian matriks. Ini dapat digunakan untuk menghitung set inklusi poset dengan menemukan semua komponen yang merupakan lajang dengan runtime .O((n+u)2.79)

Juga diskusi forum ini terkait: Apa cara tercepat untuk memeriksa set inklusi? yang menyiratkan batas bawah .O(n2ϵ)

Martin Vatshelle
sumber
Hanya saran: dapatkah Anda menyederhanakan pertanyaan dengan mengatur ? Atau apakah kedua parameter penting dalam aplikasi Anda? u=n
Colin McQuillan
Dalam aplikasi saya, saya punya mana berarti lebih kecil secara asimptot. < <u<<n<<2u<<
Martin Vatshelle

Jawaban:

2

Jika keacakan dibatasi, satu gagasan kasar adalah menghasilkan banyak fungsi "tanda tangan monoton acak" dan menggunakannya untuk memperkirakan hubungan subset (ala filter Bloom). Sayangnya, saya tidak tahu bagaimana membuatnya menjadi algoritma yang praktis, tetapi berikut adalah beberapa perkiraan yang tidak segera membuktikan bahwa ide itu tidak mungkin. Ini sangat jauh dari solusi yang berguna, tetapi saya akan menuliskannya jika itu membantu.

Asumsikan untuk kesederhanaan bahwa set semua ukurannya hampir sama, katakan , dan itu . Kita dapat mengasumsikan , jika tidak kita selesai. Tentukan Catat bahwa .s = o ( u ) 1 s q|S|=s±O(1)s=o(u)1sp1

q=[s/2]p=[(uq)(sq)]
p1

Inilah bagian yang sangat tidak praktis. Pilih secara acak subset dengan penggantian, masing-masing ukuran , dan tentukan fungsi oleh iff untuk beberapa . Dengan diperbaiki dan bervariasi secara acak, kami telah Karena adalah monoton, menyiratkanpA1,,ApUqf:2U{0,1}f(S)=1AiSiSAi,f

Pr(f(S)=0)=Pr(i.AiS)=Pr(A1S)p=(1(sq)/(uq))p=eΘ(1)
f(S)STf(S)f(T) . Jika , perbaiki beberapa . Probabilitas bahwa mendeteksi adalah TStTSfTS
Pr(f(S)=0<1=f(T))=Pr(f(S)=0)Pr(f(T)=1|f(S)=0)=eΘ(1)Pr(i.AiT,AiTS0|f(S)=0)=eΘ(1)Pr(i.tAiT|f(S)=0)eΘ(1)Pr(i.tAiT)eΘ(1)pPr(tA1T)eΘ(1)p(sq1)/(uq)eΘ(1)pqsq(sq)/(uq)=eΘ(1)
Beberapa dari langkah-langkah itu cukup renggang, tetapi saya tidak punya waktu untuk memperbaikinya malam ini. Bagaimanapun, jika mereka semua memegang, maka setidaknya itu tidak jelas tidak mungkin untuk secara acak menghasilkan fungsi tanda tangan yang memiliki kemungkinan masuk akal untuk membedakan subset dari non-subset. Sejumlah fungsi seperti itu kemudian akan membedakan semua pasangan dengan benar. Jika menghasilkan fungsi tanda tangan dan komputasi dapat dikurangi menjadi waktu, hasilnya akan menjadi keseluruhan algoritma .ff(S)O~(n+u)O~(n2+u2)

Bahkan jika perhitungan di atas benar, saya tidak tahu bagaimana cara menghasilkan fungsi tanda tangan monoton dengan fitur yang diinginkan dengan cepat. Kemungkinan juga teknik ini tidak mencakup ukuran set yang sangat berbeda.

Geoffrey Irving
sumber