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:kuerzeste_pfade:kpfad_kantenzahl:start [02.07.2024 09:29] – Frank Schiebel | faecher:informatik:oberstufe:graphen:zpg:kuerzeste_pfade:kpfad_kantenzahl:start [29.08.2024 14:32] (aktuell) – Marco Kuemmel | ||
---|---|---|---|
Zeile 25: | Zeile 25: | ||
++++ | ++++ | ||
+ | ----- | ||
<callout type=" | <callout type=" | ||
Problem: Kürzeste Entfernung in ungewichteten Graphen\\ | Problem: Kürzeste Entfernung in ungewichteten Graphen\\ | ||
Zeile 33: | Zeile 34: | ||
</ | </ | ||
- | ----- | + | |
{{: | {{: | ||
=== (A2) Angepasste Breitensuche === | === (A2) Angepasste Breitensuche === | ||
- | Das Problem kann man mit einer angepassten Breitensuche lösen. Wie? | + | Das Problem kann man mit einer "angepassten Breitensuche" |
* Schreibe den Algorithmus für die Breitensuche als Pseudocode auf.((Du kannst [[faecher: | * Schreibe den Algorithmus für die Breitensuche als Pseudocode auf.((Du kannst [[faecher: | ||
Zeile 49: | Zeile 50: | ||
++++ | ++++ | ||
- | <btn type=" | + | |
---- | ---- | ||
Zeile 56: | Zeile 57: | ||
Implementiere den Algorithmus der erweiterten Breitensuche (Algorithmus von Mooore) im Graphentester. | Implementiere den Algorithmus der erweiterten Breitensuche (Algorithmus von Mooore) im Graphentester. | ||
+ | <btn type=" | ||
+ | |||
+ | ++++ Lösungsvorschlag | | ||
+ | <code java> | ||
+ | public void fuehreAlgorithmusAus() { | ||
+ | gr = getGraph(); | ||
+ | for(Knoten k : gr.getAlleKnoten()) { | ||
+ | k.setWert(Double.POSITIVE_INFINITY); | ||
+ | } | ||
+ | info(" | ||
+ | | ||
+ | Queue< | ||
+ | q.add(getStartKnoten()); | ||
+ | getStartKnoten().setMarkiert(true); | ||
+ | getStartKnoten().setWert(0); | ||
+ | info(" | ||
+ | | ||
+ | step(); | ||
+ | | ||
+ | while(!q.isEmpty()) { | ||
+ | Knoten v = q.remove(); | ||
+ | v.setFarbe(3); | ||
+ | v.setBesucht(true); | ||
+ | info(" | ||
+ | step(); | ||
+ | for(Knoten w: gr.getNachbarknoten(v)) { | ||
+ | if(!w.isMarkiert()) { | ||
+ | info(" | ||
+ | w.setMarkiert(true); | ||
+ | w.setWert(v.getIntWert()+1); | ||
+ | q.add(w); | ||
+ | |||
+ | step(); | ||
+ | |||
+ | info(" | ||
+ | gr.getKante(v, | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | ++++ | ||
---- | ---- | ||
+ | {{ : | ||
+ | |||
{{: | {{: | ||
=== (A4) === | === (A4) === | ||
Zeile 65: | Zeile 110: | ||
Stadtplan mit Einbahnstraßen). Die Kanten dürfen dann nur | Stadtplan mit Einbahnstraßen). Die Kanten dürfen dann nur | ||
in der vorgegebenen Richtung durchlaufen werden. | in der vorgegebenen Richtung durchlaufen werden. | ||
+ | |||
+ | |||
* Bestimme die Entfernungen in nebenstehendem Graphen vom markierten Knoten aus. | * Bestimme die Entfernungen in nebenstehendem Graphen vom markierten Knoten aus. |