Come posso ricordare che le strutture dati utilizzate da DFS e BFS?
-
30-09-2019 - |
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?
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
-
Stack (Last In First Out, LIFO). Per DFS, si recupera dalla radice al nodo più lontano per quanto possibile, questa è la stessa idea LIFO.
-
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, ? ?????? ???? ? ??? ? ??