Zum Inhalt springen

Informatik · Klasse 9–13 · aktualisiert

Breitensuche (BFS): Ablauf und kürzeste Wege

Du führst die Breitensuche mit einer Warteschlange aus, bestimmst Abstände und Vorgänger und beurteilst, wann sie kürzeste Wege findet.

0 von 13 Aufgaben gelöst

Breitensuche (BFS): Ablauf und kürzeste Wege

Kurz gesagt

Die Breitensuche (BFS) durchsucht einen Graphen Ebene für Ebene. Dafür nutzt sie eine Warteschlange, die nach dem FIFO-Prinzip arbeitet. Haben alle Kanten das gleiche Gewicht, ist jede so gefundene Lösung optimal.

Wie kommst du in einem Irrgarten oder in einem Netz von Städten am schnellsten von A nach B? Die Breitensuche prüft zuerst alle Nachbarn des Starts, dann deren Nachbarn und so weiter. So geht sie Schicht für Schicht nach außen. Du lernst, wie du sie von Hand ausführst und wann sie einen kürzesten Weg liefert.

Deine Lernziele

Hake ab, was du schon kannst. Löst du alle Aufgaben eines Abschnitts, hakt Mela das Ziel für dich ab.

4 Abschnitte

Ein Graph besteht aus Knoten (den Punkten) und Kanten (den Verbindungen zwischen den Knoten). Die Breitensuche (englisch breadth-first search, kurz BFS) durchläuft die Knoten eines Graphen. Sie bearbeitet immer zuerst alle Knoten der gleichen Ebene. Anders als die Tiefensuche folgt sie nicht einem Pfad in die Tiefe.

Dafür braucht sie eine Warteschlange. Mit enqueue legst du ein Objekt hinein, mit dequeue holst du eines zurück und entfernst es. Die Warteschlange arbeitet nach dem FIFO-Prinzip: Das Objekt, das zuerst hineingelegt wurde, kommt zuerst wieder heraus. Das ist wie an einer Kasse: Wer sich zuerst anstellt, wird zuerst bedient.

Der Ablauf: Im ersten Schritt wählst du den Startknoten, markierst ihn als gesehen und speicherst ihn in der Warteschlange. Im zweiten Schritt nimmst du einen Knoten vom Beginn der Warteschlange. Alle bisher unmarkierten Nachfolger dieses Knotens hängst du ans Ende der Warteschlange an und markierst sie dabei als gesehen. In einem ungerichteten Graphen sind die Nachfolger die Nachbarn. Dann wiederholst du den zweiten Schritt. Findest du das gesuchte Element, brichst du ab. Ist die Warteschlange leer, endet die Suche mit „nicht gefunden“.

Unser Beispielgraph ist ungerichtet. Die Nachbarn stehen in dieser Reihenfolge in der Eingabe: A: D, B, C; B: A, E, F; C: A, G; D: A, H; E: B; F: B, H; G: C; H: D, F. Start ist A. Diese Reihenfolge ist eine Wahl der Aufgabe, keine Regel der Breitensuche.

Definition

Warteschlange

Eine Datenstruktur, die ihre Objekte nach dem FIFO-Prinzip (First In – First Out) zurückgibt: Das Objekt, das zuerst mit enqueue hineingelegt wurde, kommt mit dequeue zuerst wieder heraus.

Beispiel: Beispielgraph mit Start A

  1. 1Start: A ist gesehen. Warteschlange: A
  2. 2A entnehmen; neu entdeckt: D, B, C. Warteschlange: D B C
  3. 3D entnehmen; neu entdeckt: H. Warteschlange: B C H
  4. 4B entnehmen; neu entdeckt: E, F. Warteschlange: C H E F
  5. 5C entnehmen; neu entdeckt: G. Warteschlange: H E F G
  6. 6H, E und F entnehmen; nichts Neues. Warteschlange: G
  7. 7G entnehmen; nichts Neues. Warteschlange: leer
  8. 8Besuchsreihenfolge: A D B C H E F G

Merke: Den nächsten Knoten nimmst du immer vom Beginn der Warteschlange. Neue Knoten hängst du am Ende an.

Teste dich

LeichtWas passiert, wenn die Warteschlange leer ist und das gesuchte Element nicht gefunden wurde?
MittelEin Nachfolger ist schon als gesehen markiert. Was geschieht mit ihm?

Alles auf einen Blick

Breitensuche

  • Warteschlange

    Sie arbeitet nach dem FIFO-Prinzip. Der zuerst hineingelegte Knoten kommt zuerst wieder heraus.

  • Ablauf

    Startknoten markieren und speichern, dann Knoten vom Beginn nehmen und unmarkierte Nachfolger ans Ende hängen.

  • Abstand

    Er zählt die Kanten vom Startknoten und bezieht sich immer auf diesen.

  • Vorgänger

    Das ist der Knoten, von dem aus ein Knoten entdeckt wurde. Seine Kette ergibt den Weg.

  • Kürzeste Wege

    Bei ungewichteten oder gleich gewichteten Kanten ist jede gefundene Lösung optimal.

  • Aufwand

    Die Laufzeit beträgt O(|V|+|E|) (Adjazenzliste). Der Speicher beträgt O(|V|) unter den genannten Bedingungen. Die Breitensuche ist meist ungeeignet, wenn Knoten erst während der Suche entstehen.

Musteraufgabe · Schritt für Schritt

Ausgedachter Graph mit Start S: Reihenfolge, Abstände, Vorgänger

  1. 1Erfundener ungerichteter Graph, Nachbarn in dieser Reihenfolge: S: P, Q; P: S, R; Q: S, R, T; R: P, Q; T: Q.
  2. 2Start: S ist gesehen. Warteschlange: S
  3. 3S entnehmen; neu entdeckt: P, Q. Warteschlange: P Q
  4. 4P entnehmen; S ist gesehen, R ist neu. Warteschlange: Q R
  5. 5Q entnehmen; S und R sind gesehen, T ist neu. Warteschlange: R T
  6. 6R entnehmen; P und Q sind gesehen, nichts Neues. Warteschlange: T
  7. 7T entnehmen; Q ist gesehen, nichts Neues. Warteschlange: leer
  8. 8Besuchsreihenfolge: S P Q R T
  9. 9Abstände von S: S 0; P und Q 1; R und T 2
  10. 10Vorgänger: P von S, Q von S, R von P, T von Q. Weg zu T: S → Q → T

Fehler finden

Prüfe die Aussagen zum Ablauf der Breitensuche In einer Zeile steckt ein Fehler. Tippe sie an.

Lückentext

Wähl in jeder Lücke das passende Wort und prüf dann deine Antworten.

Weil die Warteschlange nach dem FIFO-Prinzip arbeitet, nimmt die Breitensuche den nächsten Knoten vom der Warteschlange. Für Verfahren, bei denen die Knoten erst während der Suche erzeugt werden, ist sie meist ungeeignet, weil sie viel braucht. Sind alle Kantengewichte , so ist jede durch Breitensuche gefundene Lösung optimal.

Karteikasten

Erst selbst überlegen, dann umdrehen.

Übung mit Feedback

Abschluss-Check: Breitensuche

LeichtIm Städtebeispiel mit Start Hannover: Welchen Knotenabstand haben München und Dresden?
MittelDie Warteschlange ist X Y Z. X wird entnommen. X hat die neuen, unmarkierten Nachfolger U und V (in dieser Reihenfolge). Wie sieht die Warteschlange danach aus? (ausgedachtes Beispiel)
SchwerWie erhältst du in einem Irrgarten nach der Breitensuche den kürzesten Weg?

Weiterlesen in Informatik