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:30] – [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 125: | Zeile 125: | ||
Übersetze die Beschreibung aus Aufgabe 1 in Pseudocode. | Übersetze die Beschreibung aus Aufgabe 1 in Pseudocode. | ||
- | ++++ Pseudocode | + | ++++ Pseudocode |
< | < | ||
Minimal spanning tree: | Minimal spanning tree: | ||
- | Setze farbnummer auf 1 | ||
Hole eine Liste aller Kanten und sortiere sie aufsteigend | Hole eine Liste aller Kanten und sortiere sie aufsteigend | ||
- | Wiederhole für jede Kante | + | Setze einen beliebigen Knoten auf markiert |
- | | + | Wiederhole |
- | | + | |
- | Setze Farbe beider Knoten auf farbnummer | + | |
- | Markiere die Kante | + | * Vergleiche deine Beschreibung mit den Musterlösung (unten) |
- | Erhöhe die Farbnummer um 1 | + | |
- | Sonst | + | Falls Markierung des Startknotens != Markierung |
- | Falls Farbe eines Knotens==0 | + | |
- | Setze Farbe dieses Knotens auf die des anderen | + | |
- | | + | |
- | Sonst | + | |
- | | + | |
- | Wiederhole für jeden Knoten k im Graph | + | |
- | Falls Farbe von k die Farbe von k2 hat | + | |
- | Setze Farbe von k auf die Farbe von k1 | + | |
- | Ende-Falls | + | |
- | Ende-Wiederhole | + | |
- | Markiere die Kante | + | |
- | Sonst | + | |
- | Lösche Kante | + | |
- | Ende-Falls | + | |
Ende-Falls | Ende-Falls | ||
+ | Ende-Wiederhole | ||
+ | Markiere naechsteKante und lösche sie aus der Liste | ||
+ | Markiere Start- und Zielknoten | ||
+ | Ende Wiederhole | ||
</ | </ | ||
++++ | ++++ | ||
Zeile 161: | Zeile 152: | ||
=== (A3) === | === (A3) === | ||
- | Implementiere eine eigene Version des Kruskal-Algorithmus im Graphentester. | + | Implementiere eine eigene Version des Prim-Algorithmus im Graphentester. |
++++ Lösungsvorschlag | | ++++ Lösungsvorschlag | | ||
<code java> | <code java> | ||
- | int farbe = 1; | ||
- | List< | ||
List< | List< | ||
+ | List< | ||
Collections.sort(kanten); | Collections.sort(kanten); | ||
+ | knoten.get(0).setMarkiert(true); | ||
- | for (Kante k: kanten) { | + | for(int |
- | | + | |
- | | + | |
- | | + | if(ka2.getStart().isMarkiert() != ka2.getZiel().isMarkiert()) { |
- | | + | |
- | k.getZiel().setFarbe(farbe); | + | |
- | k.setMarkiert(true); | + | |
- | farbe++; | + | |
- | } else | + | |
- | | + | |
- | k.getStart().setFarbe(f2); | + | |
- | k.setMarkiert(true); | + | |
- | } else | + | |
- | if(f2 == 0) { | + | |
- | k.getZiel().setFarbe(f1); | + | |
- | k.setMarkiert(true); | + | |
- | } else | + | |
- | if(f1 == f2) { | + | |
- | k.setGeloescht(true); | + | |
- | } else | + | |
- | { | + | |
- | for(Knoten k1 : knoten) { | + | |
- | | + | |
} | } | ||
- | k.setMarkiert(true); | ||
} | } | ||
+ | |||
+ | ka.setMarkiert(true); | ||
+ | kanten.remove(ka); | ||
+ | ka.getStart().setMarkiert(true); | ||
+ | ka.getZiel().setMarkiert(true); | ||
} | } | ||
</ | </ | ||
++++ | ++++ |