Biorąc pod uwagę określoną rodzinę podzbiorów uniwersum . Niech a my chcemy odpowiedzieć to .
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.
Niech,i, zakładamy,
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 .
Czy możemy zrobić coś szybciej? W szczególności, czy czas możliwy, czy nie?
Znalazłem kilka powiązanych artykułów:
Prosty algorytm subkwadratowy do obliczania podzbioru częściowej kolejności (1995), który daje algorytm .
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.
W artykule Pomiędzy i 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 .
Powiązana jest także ta dyskusja na forum: Jaki jest najszybszy sposób sprawdzenia włączenia zestawu? co implikuje dolną granicę .