Suche…


Einführung

Alle Algorithmen für Graph-Traversierungen. Ihre Komplexität, sowohl Laufzeit als auch Platz

Tiefe erste Suche

Tiefes Durchqueren (oder Suchen) für ein Diagramm ähnelt dem Tiefsten Durchlauf eines Baums. Der einzige Haken ist hier, dass Diagramme im Gegensatz zu Bäumen Zyklen enthalten können, sodass wir möglicherweise wieder zu demselben Knoten kommen. Um zu vermeiden, dass ein Knoten mehr als einmal verarbeitet wird, verwenden wir ein boolesches besuchtes Array.

Der folgende Algorithmus zeigt die Schritte für die Diagrammdurchquerung mit DFS:

Algorithmus DFS (v);

Eingabe : Ein Scheitelpunkt v in einem Diagramm

Ausgabe : Eine Beschriftung der Kanten als "Discovery" -Kanten und "Backedges".

for each edge e incident on v do

    if edge e is unexplored then

    let w be the other endpoint of e
    if vertex w is unexplored then
        label e as a discovery edge
        recursively call DFS(w)
    else
    label e as a backedge

DFS-Abbildung

Geben Sie hier die Bildbeschreibung ein

Breite erste Suche

Algorithmus BFS (G)

Eingabegraph G

Ausgang Beschriftung der Kanten und Teilung der Ecken von G

    for all u ∈ G.vertices()
        setLabel(u, UNEXPLORED)
    for all e ∈ G.edges()
    setLabel
    (e, UNEXPLORED)
    for all v ∈ G.vertices()
        if getLabel(v) = UNEXPLORED
            BFS(G, v)

Demonstration

Demo fortgesetzt

Demo fortgesetzt



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow