Tiefensuche: Unterschied zwischen den Versionen
Sn (Diskussion | Beiträge) (Breitensuche geladen) |
Sn (Diskussion | Beiträge) (... und jetzt steht hier auch was über Tiefensuche.) |
||
Zeile 1: | Zeile 1: | ||
{{Thumbnailbox|INHALT={{Beispielgraph}}|CAPTION=Ein Beispielgraph}} | {{Thumbnailbox|INHALT={{Beispielgraph}}|CAPTION=Ein Beispielgraph}} | ||
Die [[ | Die [[Tiefensuche]] ist ein [[Algorithmus]], um ein Element in einem [[Graph]]en zu suchen, ohne irgendwelche Informationen über dessen Verbindungen zu anderen Knoten zu haben. | ||
Der Algorithmus beginnt bei einem Startknoten, besucht zunächst | Der Algorithmus beginnt bei einem Startknoten, besucht zunächst einen seiner noch nicht besuchten Nachbarn, dann einen von dessen noch nicht besuchten Nachbarn, dann einen von ''dessen'' noch nicht besuchten Nachbarn usw., bis er an einen Knoten gerät, dessen Nachbarn alle schon besucht worden sind. Falls dies geschieht, wird die Kette von besuchten Knoten rückwärts abgearbeitet, bis ein Knoten mit noch unbesuchten Nachbarn gefunden wird. Über diesen wird wieder eine Tiefensuche durchgeführt, bis der ganze Graph abgearbeitet ist. | ||
Die Liste der noch zu besuchenden Knoten kann bei der Breitensuche als [[ | Die Liste der noch zu besuchenden Knoten kann bei der Breitensuche als [[Stack]] modelliert werden. | ||
Die betrachteten Knoten und Kanten bilden nach dem Ende einer Tiefensuche einen [[Baum (Datenstruktur)|Spannbaum]] mit dem Startknoten als Wurzel, allerdings nicht zwingend einen minimalen. | |||
Die betrachteten Knoten und Kanten | |||
== Beispiel == | == Beispiel == | ||
Zeile 17: | Zeile 15: | ||
|INHALT= | |INHALT= | ||
{{Thumbnailbox| | {{Thumbnailbox| | ||
INHALT={{Beispielgraph|link=lightgray|A=#00B169|AB= | INHALT={{Beispielgraph|link=lightgray|A=#00B169|AB=lightgreen|AC=lightgreen}} | ||
|CAPTION= | |CAPTION=Stack mit den noch nicht besuchten bekannten Nachbarn: B, C. | ||
|ALIGN=left | |ALIGN=left | ||
|CLASS=noclear}} | |CLASS=noclear}} | ||
{{Thumbnailbox| | {{Thumbnailbox| | ||
INHALT={{Beispielgraph|link=lightgray|A=#00B169|AB=#00B169|AC= | INHALT={{Beispielgraph|link=lightgray|A=#00B169|AB=#00B169|AC=lightgreen|B=#00B169|BC=lightgreen|BD=lightgreen|BE=lightgreen}} | ||
|CAPTION= | |CAPTION=Stack mit den noch nicht besuchten bekannten Nachbarn: C, D, E, C. | ||
|ALIGN=left | |ALIGN=left | ||
|CLASS=noclear}} | |CLASS=noclear}} | ||
{{Thumbnailbox| | {{Thumbnailbox| | ||
INHALT={{Beispielgraph|link=lightgray|A=#00B169|AB=#00B169|AC=#00B169| | INHALT={{Beispielgraph|link=lightgray|A=#00B169|AB=#00B169|AC=lightgreen|B=#00B169|BC=#00B169|BD=lightgreen|BE=lightgreen|C=#00B169|CD=lightgreen}} | ||
|CAPTION= | |CAPTION=Stack mit den noch nicht besuchten bekannten Nachbarn: D, D, E, C. | ||
|ALIGN=left | |ALIGN=left | ||
|CLASS=noclear}} | |CLASS=noclear}} | ||
{{Thumbnailbox| | {{Thumbnailbox| | ||
INHALT={{Beispielgraph|link=lightgray|A=#00B169|AB=#00B169|AC=#00B169| | INHALT={{Beispielgraph|link=lightgray|A=#00B169|AB=#00B169|AC=lightgreen|B=#00B169|BC=#00B169|BD=lightgreen|BE=lightgreen|C=#00B169|CD=#00B169|D=#00B169|DE=lightgreen}} | ||
|CAPTION= | |CAPTION=Stack mit den noch nicht besuchten bekannten Nachbarn: E, D, E, C. | ||
|ALIGN=left | |ALIGN=left | ||
|CLASS=noclear}} | |CLASS=noclear}} | ||
{{Thumbnailbox| | {{Thumbnailbox| | ||
INHALT={{Beispielgraph|link=lightgray|A=#00B169|AB=#00B169|AC=#00B169| | INHALT={{Beispielgraph|link=lightgray|A=#00B169|AB=#00B169|AC=lightgreen|B=#00B169|BC=#00B169|BD=lightgreen|BE=lightgreen|C=#00B169|CD=#00B169|D=#00B169|DE=#00B169|E=#00B169}} | ||
|CAPTION=E wurde gefunden. | |CAPTION=E wurde gefunden. | ||
|ALIGN=left | |ALIGN=left | ||
|CLASS=noclear}} | |CLASS=noclear}} | ||
}} | }} | ||
{{Navigationsleiste Graphalgorithmen}} | {{Navigationsleiste Graphalgorithmen}} |
Version vom 4. Dezember 2023, 18:47 Uhr
Die Tiefensuche ist ein Algorithmus, um ein Element in einem Graphen zu suchen, ohne irgendwelche Informationen über dessen Verbindungen zu anderen Knoten zu haben.
Der Algorithmus beginnt bei einem Startknoten, besucht zunächst einen seiner noch nicht besuchten Nachbarn, dann einen von dessen noch nicht besuchten Nachbarn, dann einen von dessen noch nicht besuchten Nachbarn usw., bis er an einen Knoten gerät, dessen Nachbarn alle schon besucht worden sind. Falls dies geschieht, wird die Kette von besuchten Knoten rückwärts abgearbeitet, bis ein Knoten mit noch unbesuchten Nachbarn gefunden wird. Über diesen wird wieder eine Tiefensuche durchgeführt, bis der ganze Graph abgearbeitet ist.
Die Liste der noch zu besuchenden Knoten kann bei der Breitensuche als Stack modelliert werden.
Die betrachteten Knoten und Kanten bilden nach dem Ende einer Tiefensuche einen Spannbaum mit dem Startknoten als Wurzel, allerdings nicht zwingend einen minimalen.
Beispiel
Das Objekt E soll vom Startknoten aus gefunden werden.