You are not logged in.

Sunday, July 4th 2010, 2:24pm

Content

Tags

breitensuche, breitensuche algorithmus, breitensuche java, tiefensuche

Abstract

Die Breitensuche ist eine uninformierte Suche, welche durch Expansion der einzelnen Level der Graphen ausgehend vom Startknoten den Graph in die Breite nach einem Element durchsucht.
Die Seite enthält einen Java Code als Beispiel

Article

  1. Bestimme den Knoten, an dem die Suche beginnen soll, und speichere ihn in einer Warteschlange ab.
  2. Entnimm einen Knoten vom Beginn der Warteschlange und markiere ihn.
    • Falls das gesuchte Element gefunden wurde, brich die Suche ab und liefere "gefunden" zurück.
    • Anderenfalls hänge alle bisher unmarkierten Nachfolger dieses Knotens ans Ende der Warteschlange an.

  3. Wenn die Warteschlange leer ist, dann wurde jeder Knoten bereits untersucht. Beende die Suche und liefere "nicht gefunden" zurück.
  4. Wiederhole ab Schritt 2.


1. Beispiel


Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void breitensuche(Graph g, String node) {
	Map<String, Integer> abstand = new HashMap<String, Integer>();
	Queue<String> queue = new LinkedList<String>();
	abstand.put(node, 0);
	queue.add(node);
	while (!queue.isEmpty()) {
		String s = queue.poll();
		int d = abstand.get(s); // muss enthalten sein
		for (Iterator<String> it = g.edgeIterator(s); it.hasNext();) {
			String expanded = it.next();
			if (!abstand.containsKey(expanded)) {
				abstand.put(expanded, d+1);
				queue.add(expanded);
			}
		}
		action(s); // zum Beispiel Ausgabe
	}
}

Lexikon 4.1.5, developed by www.viecode.com