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 [21.11.2022 18:51] – [Quacki der Frosch] 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 | + | Das Problem kann man mit einer "angepassten |
* 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 48: | Zeile 49: | ||
mit Knoten und Kanten. | mit Knoten und Kanten. | ||
++++ | ++++ | ||
+ | |||
Zeile 55: | 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 64: | 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. | ||
* Entscheide, ob der Algorithmus verändert werden muss, um auf gerichtete Graphen angewendet werden zu können. | * Entscheide, ob der Algorithmus verändert werden muss, um auf gerichtete Graphen angewendet werden zu können. | ||
+ | |||
+ | Du kannst deine Ergebnisse im Graphentester nachvollziehen, | ||