Ich versuche herauszufinden, was die Komplexität von Kruskals disjunktionsbestimmenden Schleifen ist.Komplexität des Kruskal-Algorithmus
In Kruskal's
, fügen wir Scheitelpunkte in disjoint sets
und erstellen Vereinigungen dieser Mengen, wenn wir eine Kante, die beide Ecken in verschiedenen Sätzen hat, soweit es mich betrifft. So bestimmen wir Schleifen - wenn zwei Ecken bereits in einer Menge sind, fügen wir diese Kante nicht hinzu.
Wie überprüfen wir, ob ein Vertex in der Menge ist? Meiner Meinung nach ist es in O(n)
so Kruskal
wäre mindestens in O(n^2)
+ Sortierzeit der Kanten O(nlogn)
.
Zum Beispiel hier SO Answer, das ist mein Problem auch, sie sagen, dass es möglich ist, Kruskal in O(V+E)
zu laufen, wenn Sie nur zwei Arten von Kanten haben. Ich verstehe es, aber ich bekomme das Ding nicht mit disjunkten Sätzen, ich denke, dass es eine schlechtere Komplexität schafft.
Haben Sie http://google.com/?#q=kruskal versucht? – Gassa
Ja, natürlich. Ich habe ein Problem mit disjunkten Mengen. –
Wenn Sie den Google-Link zu Wikipedia verfolgen, gibt es im Artikel eine Verknüpfung zur Disjoint-Set-Datenstruktur. Bitte lesen Sie diesen Artikel. – Gassa