Perché si ritiene che DFS abbia complessità spaziale


11

Secondo queste note , si ritiene che DFS abbia una complessità spaziale , dove b è il fattore di ramificazione dell'albero e m è la lunghezza massima di qualsiasi percorso nello spazio degli stati.O(bm)bm

Lo stesso si dice in questa pagina Wikibook sulla ricerca non informata .

Ora la "infobox" dell'articolo di Wikipedia su DFS presenta quanto segue per la complessità spaziale dell'algoritmo:

, se l'intero grafico viene attraversato senza ripetizioni, O ( lunghezza del percorso più lunga cercata ) per grafici impliciti senza eliminazione di nodi duplicatiO(|V|)O()

che è più simile a quella che pensavo fosse la complessità spaziale di DFS, ovvero , dove m è la lunghezza massima raggiunta dall'algoritmo.O(m)m

Perché penso che sia così?

Bene, fondamentalmente non abbiamo bisogno di memorizzare altri nodi oltre ai nodi del percorso che stiamo attualmente guardando, quindi non c'è motivo di moltiplicare per nell'analisi fornita sia da Wikibook sia dalle note che ti ho indicato per.b

Inoltre, secondo questo articolo su IDA * di Richard Korf , la complessità spaziale di DFS è , dove d è considerato il "limite di profondità".O(d)d

Quindi, qual è la complessità spaziale corretta di DFS?

Penso che possa dipendere dall'implementazione, quindi apprezzerei una spiegazione della complessità dello spazio per le diverse implementazioni conosciute.


DFS is considered to […] of the treenon tutti i grafici attraversati per primi sono un albero .
Greybeard

C'è una differenza tra dire "questo qui l'implementazione DFS ha un costo X" e "DFS può essere implementato in modo che abbia un costo X". Quindi sembra discutere delle diverse affermazioni del secondo tipo, che non devono essere affatto contraddittorie. (Nota che non c'è alcuna contraddizione da quando , se O ( b m ) significa qualcosa.)O(bm)O(m)O(bm)
Raffaello

@greybeard Puoi dirmi un esempio in cui un attraversamento in profondità su un grafico non si tradurrebbe in un albero?
nbro,

example where a depth-first traversal on a graph would not result in a treesenza pensarci troppo: analisi. (Aspetta: cosa vuoi dire result in a tree:? La domanda riguarda la ricerca / attraversamento di un grafico.)
greybeard

1
@greybeard Secondo tutte le definizioni che ho trovato finora. Trovami una definizione in cui rivisita i nodi, quindi possiamo discuterne.
nbro,

Risposte:


7

bm[b]m

  1. 1,2,,b

  2. 111,12,,1b

  3. 11111,112,,11b

  4. 1m11m,1m12,,1m1b

A questo punto, lo stack contiene

1m,1m12,,1m1b,,112,,11b,12,,1b,2,,b,

(b1)m+1


2
Una pinta in tempo toglie il medico di torno.
Greybeard

3

Ci sono due punti qui da sottolineare:

  1. O(bd)bddbbO(d)

  2. O(d)db

O(bd)O(d)

Spero che sia di aiuto,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.