Pourquoi DFS est-il considéré comme ayant une complexité d'espace

11

Selon ces notes , DFS est considéré comme ayant une complexité d'espace , où b est le facteur de ramification de l'arbre et m est la longueur maximale de tout chemin dans l'espace d'état.O(bm)bm

La même chose est dite dans cette page Wikibook sur la recherche non informée .

Maintenant, l '"infobox" de l'article de Wikipedia sur DFS présente ce qui suit pour la complexité spatiale de l'algorithme:

, si le graphe entier est parcouru sans répétition, O (la plus longue longueur de chemin recherchée ) pour les graphes implicites sans élimination des nœuds en doubleO(|V|)O()

ce qui est plus similaire à ce que je pensais être la complexité spatiale de DFS, c'est-à-dire , où m est la longueur maximale atteinte par l'algorithme.O(m)m

Pourquoi est-ce que je pense que c'est le cas?

Eh bien, fondamentalement, nous n'avons pas besoin de stocker d'autres nœuds que les nœuds du chemin que nous examinons actuellement, il n'y a donc aucun intérêt à multiplier par dans l'analyse fournie à la fois par le Wikibook et les notes que je vous renvoie à.b

De plus, selon cet article sur IDA * de Richard Korf , la complexité spatiale de DFS est , où d est considéré comme le "seuil de profondeur".O(d)d

Alors, quelle est la complexité spatiale correcte de DFS?

Je pense que cela peut dépendre de l'implémentation, donc j'apprécierais une explication de la complexité de l'espace pour les différentes implémentations connues.

nbro
la source
DFS is considered to […] of the treepas tous graphique traversé en profondeur d' abord est un arbre .
greybeard
Il y a une différence entre dire "ceci ici l'implémentation DFS a coûté X" et "DFS peut être implémenté pour qu'il ait coûté X". Il semble donc que l'on discute de différentes déclarations du second type, qui n'ont pas du tout besoin d'être contradictoires. (Notez qu'il n'y a aucune contradiction du tout depuis , si O ( b m ) veut dire quelque chose du tout.)O(bm)O(m)O(bm)
Raphael
@greybeard Pouvez-vous me donner un exemple où une traversée en profondeur d'abord sur un graphique ne donnerait pas lieu à un arbre?
nbro
example where a depth-first traversal on a graph would not result in a treesans trop y penser: l'analyse. (Attendez: que voulez-vous dire result in a tree
:?
1
@greybeard Selon toutes les définitions que j'ai trouvées jusqu'à présent. Trouvez-moi une définition où il revisite les nœuds, puis nous pourrons en discuter.
nbro

Réponses:

7

bm[b]m

  1. 1,2,,b

  2. 111,12,,1b

  3. 11111,112,,11b

  4. 1m11m,1m12,,1m1b

À ce stade, la pile contient

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

(b1)m+1

Yuval Filmus
la source
2
Une pinte à temps éloigne le médecin.
greybeard
3

Il y a deux points à souligner ici:

  1. O(bd)bddbbO(d)

  2. O(d)db

O(bd)O(d)

J'espère que cela t'aides,

Carlos Linares López
la source