Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:graphen:zpg:minimalspanningtree:prim:start [07.12.2022 12:22] – [Beispiel] Frank Schiebel | faecher:informatik:oberstufe:graphen:zpg:minimalspanningtree:prim:start [18.03.2025 07:12] (aktuell) – [Beispiel] Svenja Müller | ||
---|---|---|---|
Zeile 7: | Zeile 7: | ||
* Versuche herauszufinden, | * Versuche herauszufinden, | ||
- | * Welche Situation muss vermieden werden? Fällt dir dafür eine einfache Lösung ein. | + | * Welche Situation muss vermieden werden? Fällt dir dafür eine einfache Lösung ein? |
* Beschreibe deinen so gefundenen Algorithmus in einem kurzen Text. | * Beschreibe deinen so gefundenen Algorithmus in einem kurzen Text. | ||
* Vergleiche deine Beschreibung mit den Musterlösung (unten) und bewerte, ob du das Vorgehen richtig nachvollzogen hast. | * Vergleiche deine Beschreibung mit den Musterlösung (unten) und bewerte, ob du das Vorgehen richtig nachvollzogen hast. | ||
Zeile 80: | Zeile 80: | ||
</ | </ | ||
<col sm=" | <col sm=" | ||
+ | Mit dem bestehenden Graphen T kann der Knoten C durch die Kante BC, der Knoten E durch die Kanten | ||
</ | </ | ||
</ | </ | ||
Zeile 91: | Zeile 91: | ||
</ | </ | ||
<col sm=" | <col sm=" | ||
+ | Mit dem bestehenden Graphen T kann der Knoten C durch die Kanten BC oder EC und der Knoten | ||
</ | </ | ||
</ | </ | ||
Zeile 102: | Zeile 102: | ||
</ | </ | ||
<col sm=" | <col sm=" | ||
+ | Der verbliebene Knoten G kann durch die Kanten EG oder FG mit dem Graphen | ||
</ | </ | ||
</ | </ | ||
Zeile 114: | Zeile 114: | ||
</ | </ | ||
<col sm=" | <col sm=" | ||
+ | Der Graph T enthält jetzt alle Knoten des Ausgangsgraphen und ist ein minimaler Spannbaum dieses Ausgangsgraphen. | ||
</ | </ | ||
</ | </ | ||
</ | </ | ||
+ | ---- | ||
+ | {{: | ||
+ | === (A2) === | ||
+ | Übersetze die Beschreibung aus Aufgabe 1 in Pseudocode. | ||
+ | |||
+ | ++++ Pseudocode Prim | | ||
+ | |||
+ | < | ||
+ | Minimal spanning tree: | ||
+ | Hole eine Liste aller Kanten und sortiere sie aufsteigend | ||
+ | Setze einen beliebigen Knoten auf markiert | ||
+ | Wiederhole n-1 mal * Versuche herauszufinden, | ||
+ | * Welche Situation muss vermieden werden? Fällt dir dafür eine einfache Lösung ein. | ||
+ | * Beschreibe deinen so gefundenen Algorithmus in einem kurzen Text. | ||
+ | * Vergleiche deine Beschreibung mit den Musterlösung (unten) und bewerte, ob du das Vorgehen richtig nachvollzogen hast. | ||
+ | Wiederhole für jede Kante ka der Liste | ||
+ | Falls Markierung des Startknotens != Markierung des Zielknotens | ||
+ | naechsteKante = ka | ||
+ | brich Schleife ab | ||
+ | Ende-Falls | ||
+ | Ende-Wiederhole | ||
+ | Markiere naechsteKante und lösche sie aus der Liste | ||
+ | Markiere Start- und Zielknoten | ||
+ | Ende Wiederhole | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A3) === | ||
+ | |||
+ | Implementiere eine eigene Version des Prim-Algorithmus im Graphentester. | ||
+ | |||
+ | ++++ Lösungsvorschlag | | ||
+ | <code java> | ||
+ | List< | ||
+ | List< | ||
+ | Collections.sort(kanten); | ||
+ | knoten.get(0).setMarkiert(true); | ||
+ | |||
+ | for(int i = 1; i< | ||
+ | Kante ka=null; | ||
+ | for(Kante ka2 : kanten) { | ||
+ | if(ka2.getStart().isMarkiert() != ka2.getZiel().isMarkiert()) { | ||
+ | ka = ka2; | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ka.setMarkiert(true); | ||
+ | kanten.remove(ka); | ||
+ | ka.getStart().setMarkiert(true); | ||
+ | ka.getZiel().setMarkiert(true); | ||
+ | } | ||
+ | </ | ||
+ | ++++ |