Jak szybko możemy obliczyć zbiór poetów w zestawie rodziny zestawów?


20

Biorąc pod uwagę określoną rodzinę podzbiorów uniwersum . Niech a my chcemy odpowiedzieć to .FUS1,S2FS1S2

Szukam struktury danych, która pozwoli mi szybko odpowiedzieć na to pytanie. Moja aplikacja pochodzi z teorii grafów, w której chcę sprawdzić, czy usunięcie wierzchołka i jego sąsiedztwa pozostawia izolowane wierzchołki, a dla każdej listy wierzchołków pozostawia wszystkie izolowane wierzchołki.

Chcę utworzyć kompletny zestaw pojęć lub ostatecznie tabelę przechowującą prawdziwe fałszywe powiedzenie, które zestawy są wzajemnie podzbiórami.|F|2

Niech,i, zakładamy,m=SF|S|u=|U|n=|F|u,nm

Możemy wygenerować macierz (dwuczęściowy) w czasie a następnie stworzyć tabelę wszystkich porównań w czasie dla każdego zestawu , pętli wszystkich składników innych pakietów i oznaczyć jako zestaw nie podzbiór wtedy, gdy element nie jest w . Całkowity czas .n×uO(un)n2O(nm)SFSSO(nm)

Czy możemy zrobić coś szybciej? W szczególności, czy czas możliwy, czy nie?O((n+u)2)

Znalazłem kilka powiązanych artykułów:

Prosty algorytm subkwadratowy do obliczania podzbioru częściowej kolejności (1995), który daje algorytm .O(m2/log(m))

Podzbiór częściowej kolejności: Obliczenia i kombinatoryka nieznacznie poprawia powyższe, ale również twierdzi, że powyższy artykuł rozwiązuje problem w czasie gdzie jest maksymalną liczbą zbiorów dzielących wspólny element, ale nie mogłem zrozumieć tego wyniku.O(md)d

W artykule Pomiędzy iO(nm)O(nα) autorzy pokazują, jak na wykresie znaleźć połączone komponenty po usunięciu zamkniętego sąsiedztwa wierzchołka za pomocą mnożenia macierzy. Można tego użyć do obliczenia zestawu punktów włączenia przez znalezienie wszystkich składników, które są singletonami, w środowisku wykonawczym .O((n+u)2.79)

Powiązana jest także ta dyskusja na forum: Jaki jest najszybszy sposób sprawdzenia włączenia zestawu? co implikuje dolną granicę .O(n2ϵ)


Tylko sugestia: czy możesz uprościć pytanie, ustawiając ? Czy oba parametry są ważne w twojej aplikacji? u=n
Colin McQuillan

W mojej aplikacji mam gdzie oznacza asymptotycznie mniejsze. < <u<<n<<2u<<
Martin Vatshelle

Odpowiedzi:


2

Jeśli losowość jest w granicach, jednym z grubszych pomysłów byłoby wygenerowanie szeregu funkcji „losowej sygnatury monotonicznej” i wykorzystanie ich do przybliżenia relacji podzbioru (filtry la Blooma). Niestety nie wiem, jak zrobić z tego praktyczny algorytm, ale oto kilka szacunków, które nie od razu dowodzą, że pomysł jest niemożliwy. Jest to bardzo dalekie od użytecznego rozwiązania, ale napiszę to na wypadek, gdyby to pomogło.

Załóżmy dla uproszczenia, że ​​wszystkie zestawy są prawie tego samego rozmiaru, powiedzmy , a to . Możemy założyć , w przeciwnym razie skończymy. Zdefiniuj Pamiętaj, że .s = o ( u ) 1 s q|S|=s±O(1)s=o(u)1sp1

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

Oto bardzo niepraktyczna część. Losowo wybierz podzestawy z zamiennikiem, każdy o rozmiarze , i zdefiniuj funkcję przez iff dla niektórych . Przy stałej i zmieniających się losowo, mamy Ponieważ jest monotoniczny, implikacjaA 1 , , A pU q f : 2 U{ 0 , 1 } f ( S ) = 1 A iS i S A i , f Pr ( f ( S ) = 0 )pA1,,ApUqf:2U{0,1}f(S)=1AiSiSAi,f f(S)STf(S)f(T)TStT-SfTS Pr ( f ( S ) = 0 < 1 = f ( T ) )

Pr(f(S)=0)=Pr(i.AiS)=Pr(A1S)p=(1(sq)/(uq))p=eΘ(1)
f(S)STf(S)f(T) . Jeśli , napraw niektóre . Prawdopodobieństwo, że wykryje to TStTSfTS ff(S) ˜ O (n+u) ˜ O (n2+
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)
Niektóre z tych kroków są dość wątłe, ale nie mam czasu, aby je dziś poprawić. W każdym razie, jeśli wszystkie one zachowują, to przynajmniej nie jest wyraźnie niemożliwe losowe wygenerowanie funkcji podpisu, które mają rozsądne prawdopodobieństwo odróżnienia podzbiorów od nieoznaczonych. Logarytmiczna liczba takich funkcji prawidłowo rozróżniałaby wszystkie pary. Jeśli wygenerowanie funkcji podpisu i obliczenie można zredukować do czasu , wynikiem byłby ogólny algorytm .ff(S)O~(n+u)O~(n2+u2)

Nawet jeśli powyższe obliczenia są prawidłowe, nie mam pojęcia, jak szybko wygenerować monotoniczne funkcje podpisu o pożądanych cechach. Jest również prawdopodobne, że ta technika nie rozciąga się na znacząco różne rozmiary zestawu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.