Ergeben die Algorithmen von Kruskal und Prim den gleichen minimalen Spannbaum?


9

Angenommen, die Kanten sind ungerichtet, haben ein eindeutiges Gewicht und keine negativen Pfade. Erzeugen diese Algorithmen die gleichen minimalen Spannbäume?


3
Ja, und sie scheinen das gleiche MST zu produzieren. Das ist aber nicht endgültig.
Death_by_Ch0colate

2
Ok, das stimmt, ich überprüfe nur.
Böse

Die Antwort bleibt positiv, auch wenn wir die Bedingung "kein negativer Pfad" entfernen
John L.

Antworten:


13

Gefunden dies die besagt , dass , wenn alle Bedingungen , die ich oben erwähnt erfüllt sind, eine grafische Darstellung notwendigerweise eine einzigartige MST hat. In Bezug auf meine Frage führen die Algorithmen von Kruskal und Prim daher notwendigerweise zum gleichen Ergebnis.


7

Wenn der MST eindeutig ist, wird er zwangsläufig von allen Algorithmen erzeugt.

Wenn der MST nicht eindeutig ist, können sich die Ausgaben aufgrund unterschiedlicher Knotenverarbeitungsreihenfolgen unterscheiden (sogar zwei unterschiedliche Implementierungen desselben Algorithmus können dies), aber die Gesamtgewichte sind identisch. In diesem Fall ist der MST eine Fehlbezeichnung.


Sie könnten es sicherlich, aber tun sie es?
Raphael

4
@ Raphael: Das habe ich beantwortet.
Yves Daoust

1
@ Yves Nein, hast du nicht. Sie sagten vielleicht, " vielleicht " ist keine Garantie. Zum Beispiel, wenn Sie Sortieralgorithmen, und sie sind stabil, sie haben produzieren die gleiche Leistung, unabhängig von dem verwendeten Algorithmus. Wenn sie nicht stabil sind , sie könnten gleiche Ergebnisse erzielen. Die Frage ist also, ob diese Algorithmen ein Gefühl der Stabilität für das Thema haben und es zeigen.
luk32

@ luk32: hast du gelesen "sogar zwei unterschiedliche Implementierungen desselben Algorithmus können"? Übrigens, ein stabiler Sortieralgorithmus erzeugt dieselbe Ausgabe, da er eindeutig definiert ist, sodass sie keine Wahl haben. Wenn keine Stabilität erforderlich ist, ist die Lösung nicht eindeutig und unterschiedliche Implementierungen können sich unterschiedlich verhalten.
Yves Daoust

Fair genug, aber diese Aussage ist nicht offensichtlich. Was macht es möglich, dass die Implementierung nicht stabil ist? Handelt es sich um eine Art Sortierung, von der die Stabilität abhängt?
luk32

2

Um die Antwort von Yves Daoust zu ergänzen , das folgende Diagramm

Dreieck

In diesem Diagramm haben wir 3 Knoten und 3 Kanten, die jeweils das gleiche Gewicht haben. Offensichtlich bilden 2 beliebige Kanten eine MST für dieses Diagramm. Welche zwei Kanten ausgewählt werden, hängt jedoch nicht nur vom Algorithmus ab, sondern auch von der Implementierung des Algorithmus. Wenn ich beispielsweise die Knoten in einer Liste speichere, kann ich sie in einer anderen Reihenfolge besuchen als wenn ich die Knoten in einer Menge gespeichert habe, selbst wenn ich ab diesem Zeitpunkt denselben MST-Algorithmus verwende.

Wenn meine Implementierung auf Zeigerarithmetik basiert (was einige Container in einigen Sprachen tun), kann ich sogar jedes Mal, wenn ich den Algorithmus ausführe, einen anderen MST auswählen!


1
Beachten Sie, dass der ursprüngliche Beitrag besagt, dass Kanten ein eindeutiges Gewicht haben. Dies garantiert natürlich eine einzigartige MST.
Wchargin

Dieser letzte Punkt gilt auch für die Verwendung von z. B. setoder dictin Python 3.3+: Hashes werden mit einem Wert gesalzen, der für jeden Lauf unterschiedlich ist, um Denial-of-Service-Angriffe zu erschweren.
Jasmijn

@YvesDaoust Schrecklich leid!
Cort Ammon

@CortAmmon: Keine Sorge, das passiert.
Yves Daoust
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.