Domanda

Ho sempre mescolare se io uso un camino o una coda per DFS e BFS. Qualcuno può fornire qualche intuizione su come ricordare usi che algoritmo che struttura dati?

È stato utile?

Soluzione

Disegnare un piccolo grafico su un pezzo di carta e pensare l'ordine in cui i nodi sono elaborati in ogni implementazione. In che modo l'ordine in cui si incontrano i nodi e l'ordine in cui si elaborano i nodi differiscono tra le ricerche?

Uno di loro utilizza uno stack (DF) e gli altri usi una coda (ampiezza) (per le implementazioni non ricorsive, almeno).

Altri suggerimenti

Coda può essere pensato generalmente come orizzontale nella struttura Per esempio, ampiezza / larghezza può essere attribuito ad esso - BFS , mentre

Stack viene visualizzato come verticale struttura e quindi ha profondità -. DFS

esplora UST / elabora i vertici più vicini e poi si sposta verso l'esterno lontano dalla sorgente. Detto questo, si desidera utilizzare una struttura dati che quando interrogato ti dà l'elemento più antico, in base all'ordine sono stati inseriti. Una coda è quello che serve in questo caso dal momento che è first-in-first-out (FIFO). Mentre un DFS esplora quanto possibile lungo ciascun ramo e poi bracktracks. Per questo, una pila funziona meglio perché è LIFO (last-in-first-out)

Mi ricordo che, mantenendo Barbecue nella mia mente. Barbecue inizia con 'B' e termina con un suono come 'q' quindi BFS -> coda e le restanti DFS -.> Pila

Prendere in ordine alfabetico ...

.... B (BFS) ..... C ...... D (DFS) ....

.... Q (coda) ... R ...... S (Pila) ...

BFS utilizza sempre coda, DFS utilizza la struttura dei dati Stack. Mentre la spiegazione detto prima su DFS sta usando backtracking. Ricordate backtracking può procedere solo con Stack.

  

Bfs; Larghezza => coda

     

Dfs; Profondità => pila

Fare riferimento alla loro struttura

La ricerca in profondità prima utilizza un Stack per ricordare dove deve andare quando raggiunge un vicolo cieco.

  

DFSS

  1. Stack (Last In First Out, LIFO). Per DFS, si recupera dalla radice al nodo più lontano per quanto possibile, questa è la stessa idea LIFO.

  2. Coda (First In First Out, FIFO). Per BFS, recuperiamo è di un livello alla volta leve, dopo visitiamo livello superiore del nodo, visitiamo il livello inferiore del nodo, questa è la stessa idea di FIFO.

Un modo più semplice da ricordare, soprattutto per i giovani studenti, è quello di utilizzare acronimo simile:

BFS => Boy amici in coda (per le signore popolari a quanto pare).

DFS è diversa (stack).

Non ricordo nulla.

Supponendo che la struttura dati utilizzata per la ricerca è X :

Larghezza Primo = I nodi entrato X in precedenza, devono essere generati sul legno della croce prima:. X è una coda

Profondità Primo = I nodi entrato X in seguito, deve essere generata sul legno della croce prima:. X è uno stack

In breve: Stack è Last-In-First-Out, che è DFS. Coda è First-In-First-Out, che è BFS.

Vorrei condividere questa risposta: https://stackoverflow.com/a/20429574/3221630

Prendendo BFS e sostituendo una coda con uno stack, riproduce lo stesso ordine di visita DFS, utilizza più spazio rispetto all'algoritmo effettivo DFS.

Si può ricordare di fare acronimo

BQDS

Bella regina ha Sins fatto.

In Hindi, ? ?????? ???? ? ??? ? ??

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top