graphen:breitensuche:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
graphen:breitensuche:start [2023/10/18 11:34] – [Kürzester Weg zwischen zwei Punkten] Martin Pabst | graphen:breitensuche:start [2023/11/05 14:11] (aktuell) – [Aufgabe 1] Martin Pabst | ||
---|---|---|---|
Zeile 26: | Zeile 26: | ||
Der oben gezeichnete Graph soll von A ausgehend mit dem Algorithmus der Breitensuche durchlaufen werden. Geben Sie eine mögliche Reihenfolge der besuchten Knoten an! | Der oben gezeichnete Graph soll von A ausgehend mit dem Algorithmus der Breitensuche durchlaufen werden. Geben Sie eine mögliche Reihenfolge der besuchten Knoten an! | ||
- | [[.aufgabe1Loesung: | + | [[.aufgabe1Loesung: |
Zeile 104: | Zeile 104: | ||
===== Aufgabe 2 ===== | ===== Aufgabe 2 ===== | ||
- | Der Algorithmus zur Breitensuche kann auf einfache Art so abgewandelt werden, dass sich damit ermitteln lässt, ob ein Graph zusammenhängend ist oder nicht. Scheibe - ausgehend vom oben gegebenen Programm - eine Methode '' | + | Der Algorithmus zur Breitensuche kann auf einfache Art so abgewandelt werden, dass sich damit ermitteln lässt, ob ein **ungerichteter** |
+ | Du kannst als Ausgangspunkt das folgende Programmfragment benutzen: | ||
+ | < | ||
+ | <img src=" | ||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | Graph g = new Graph(8); | ||
+ | g.ungerichteteKanteHinzufügen(0, | ||
+ | g.ungerichteteKanteHinzufügen(1, | ||
+ | g.ungerichteteKanteHinzufügen(1, | ||
+ | g.ungerichteteKanteHinzufügen(2, | ||
+ | g.ungerichteteKanteHinzufügen(3, | ||
+ | g.ungerichteteKanteHinzufügen(2, | ||
+ | g.ungerichteteKanteHinzufügen(4, | ||
+ | g.ungerichteteKanteHinzufügen(3, | ||
+ | g.ungerichteteKanteHinzufügen(5, | ||
+ | g.ungerichteteKanteHinzufügen(5, | ||
+ | g.ungerichteteKanteHinzufügen(1, | ||
+ | g.ungerichteteKanteHinzufügen(6, | ||
+ | g.ungerichteteKanteHinzufügen(7, | ||
+ | g.breitensuche(1); | ||
+ | |||
+ | |||
+ | public class Graph { | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | adj = new int[anzahlKnoten][anzahlKnoten]; | ||
+ | } | ||
+ | |||
+ | | ||
+ | adj[vonIndex][nachIndex] = 1; | ||
+ | adj[nachIndex][vonIndex] = 1; | ||
+ | } | ||
+ | |||
+ | | ||
+ | boolean[] besucht = new boolean[adj.length]; | ||
+ | LinkedList< | ||
+ | warteschlange.addLast(start); | ||
+ | besucht[start] = true; | ||
+ | println(" | ||
+ | |||
+ | while (!warteschlange.isEmpty()) { | ||
+ | int knoten = warteschlange.removeFirst(); | ||
+ | |||
+ | for (int i = 0; i < adj.length; i++) { | ||
+ | if(adj[knoten][i] != 0 && !besucht[i]) { | ||
+ | | ||
+ | | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | |||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | </ | ||
+ | </ | ||
[[.aufgabe2Loesung: | [[.aufgabe2Loesung: | ||
Zeile 120: | Zeile 186: | ||
===== Exkurs zu Game Development: | ===== Exkurs zu Game Development: | ||
<WRAP center round tip 80%> | <WRAP center round tip 80%> | ||
- | Haben Sie sich schon mal gefragt, wie die Gegner in Computerspielen durch ein Wirrwarr von Labyrinthen immer den kürzesten Weg zur Spielerfigur finden? Dahinter steckt meist Lee's Algorithms, eine Variante der Breitensuche. | + | Haben Sie sich schon mal gefragt, wie die Gegner in Computerspielen durch ein Wirrwarr von Labyrinthen immer den kürzesten Weg zur Spielerfigur finden? Dahinter steckt meist Lee's Algorithms, eine Variante der Breitensuche. [[.lee: |
+ | {{ : | ||
</ | </ | ||
graphen/breitensuche/start.1697628846.txt.gz · Zuletzt geändert: 2023/10/18 11:34 von Martin Pabst