Ricerca…


introduzione

Tutti gli algoritmi relativi agli attraversamenti grafici. Le loro complessità, sia runtime che spazio

Profondità prima ricerca

Profondità Primo attraversamento (o ricerca) per un grafico è simile alla profondità Prima traversa di un albero. L'unica presa qui è, a differenza degli alberi, i grafici possono contenere cicli, quindi possiamo tornare allo stesso nodo. Per evitare l'elaborazione di un nodo più di una volta, usiamo un array visitato booleano.

Al di sotto dell'algoritmo vengono illustrati i passaggi per attraversare il grafico utilizzando DFS:

Algorithm DFS (v);

Input : un vertice v in un grafico

Uscita : un'etichetta dei bordi come bordi di "scoperta" e "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

Illustrazione DFS

inserisci la descrizione dell'immagine qui

Larghezza Prima ricerca

Algoritmo BFS (G)

Grafico di immissione G

Etichetta di uscita dei bordi e partizione dei vertici di 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)

Dimostrazione

Continua la demo

Continua la demo



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow