Wie schnell können wir das Set-Inclusion-Poset einer Set-Familie berechnen?


20

Gegeben sei eine Menge Familie F von Teilmengen eines Universums U . Sei S1,S2F und wir wollen antworten, ist S1S2 .

Ich bin auf der Suche nach einer Datenstruktur, die es mir ermöglicht, diese schnell zu beantworten. Meine Anwendung basiert auf der Graphentheorie, bei der ich sehen möchte, ob beim Löschen eines Scheitelpunkts und seiner Umgebung isolierte Scheitelpunkte verbleiben und für jeden Scheitelpunkt alle isolierten Scheitelpunkte aufgelistet werden, die er hinterlässt.

Ich möchte das komplette Poset oder eventuell ein erstellen F | 2|F|2 Tabelle, die wahr falsch speichert und genau sagt, welche Mengen Teilmenge von einander sind.

Sei m=SF|S|, u=|U|und n=|F|nehme an, u,nm

Wir können die Erzeugung n×u Eindämmungs Matrix (die bipartite graph) in O(un) Zeit und dann die Tabelle aller schaffen n2 Vergleiche in O(nm) Zeit für jeden Satz SF , eine Schleife durch alle Elemente aller anderen Mengen und markieren Sie die Menge als keine Teilmenge von S wenn sie das Element nicht in S . Insgesamt O(nm) Zeit.

Können wir etwas schneller machen? Insbesondere ist O((n+u)2) Zeit möglich oder nicht?

Ich habe einige verwandte Artikel gefunden:

Ein einfacher subquadratischer Algorithmus zur Berechnung der Teilmengenordnung (1995), der einen O(m2/log(m)) Algorithmus ergibt .

Die Teilmengen-Teilreihenfolge: Computing and Combinatorics verbessert das oben Gesagte geringfügig, behauptet jedoch auch, dass das oben genannte Papier das Problem in -Zeit löst, O(md)wobei d die maximale Anzahl von Mengen ist, die sich ein gemeinsames Element teilen, aber ich konnte dieses Ergebnis nicht verstehen.

In dem Artikel Zwischen O(nm) und O(nα) zeigen die Autoren, wie in einem Diagramm die verbundenen Komponenten nach dem Löschen der geschlossenen Nachbarschaft eines Scheitelpunkts unter Verwendung der Matrixmultiplikation gefunden werden. Dies kann verwendet werden, um das Set Inclusion Poset zu berechnen, indem alle Komponenten gefunden werden, die Singletons mit einer Laufzeit von O((n+u)2.79) .

Auch diese Forumsdiskussion steht im Zusammenhang mit: Was ist der schnellste Weg, um die Einbeziehung von Sets zu überprüfen? was eine Untergrenze von impliziert O(n2ϵ).


Nur ein Vorschlag: Könnten Sie die Frage vereinfachen, indem Sie ? Oder sind beide Parameter für Ihre Anwendung wichtig? u=n
Colin McQuillan

In meiner Anwendung habe ich wo < < Mittel asymptotisch kleiner. u<<n<<2u<<
Martin Vatshelle

Antworten:


2

Wenn die Zufälligkeit in Grenzen liegt, besteht eine grobe Idee darin, eine Reihe von "zufälligen monotonen Signatur" -Funktionen zu generieren und diese zur Approximation der Teilmengenrelation zu verwenden (a la Bloom-Filter). Leider weiß ich nicht, wie ich daraus einen praktischen Algorithmus machen kann, aber hier sind einige Schätzungen, die die Idee nicht sofort für unmöglich halten. Dies ist sehr weit von einer nützlichen Lösung entfernt, aber ich werde es aufschreiben, falls es hilft.

Nehmen Sie der Einfachheit halber an, dass alle Mengen fast gleich groß sind, sagen wir und das s = o ( u ) . Wir können davon ausgehen 1 « s , sonst sind wir fertig. Definiere q|S|=s±O(1)s=o(u)1s Man beachte, dassp1 ist.

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

pA1,,ApUqf:2U{0,1}f(S)=1AiSiSAi,f Daf(S)monoton ist,impliziertSTf(S)f(T). WennTS,fixiereetwastT-S

Pr(f(S)=0)=Pr(i.AiS)=Pr(A1S)p=(1(sq)/(uq))p=eΘ(1)
f(S)STf(S)f(T)TStTS . Die Wahrscheinlichkeit, dass T S erkennt, ist Pr ( f ( S ) = 0 < 1 = ffTS Einige dieser Schritte sind ziemlich schwierig, aber ich habe heute Abend keine Zeit, sie zu verbessern. In jedem Fall ist es nicht eindeutig unmöglich, zufällig Signaturfunktionen zu generieren, bei denen es wahrscheinlich ist, dass Teilmengen von Nicht-Teilmengen unterschieden werden. Eine logarithmische Anzahl solcher Funktionen würde dann alle Paare korrekt unterscheiden. Wenn Erzeugen einer Signaturfunktionfund Berechnenf(S)könnte reduziert werden ~ O
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)
ff(S) Zeit, wäre das Ergebnis ein Gesamt ~ O ( n 2O~(n+u) Algorithmus.O~(n2+u2)

Selbst wenn die obigen Berechnungen korrekt sind, habe ich keine Ahnung, wie man schnell monotone Signaturfunktionen mit den gewünschten Merkmalen erzeugt. Es ist auch wahrscheinlich, dass sich diese Technik nicht auf signifikant unterschiedliche Satzgrößen erstreckt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.