L'Espace/temps de la Complexité de la Profondeur d'Abord de Recherche
J'ai regardé divers autres StackOverflow réponse et ils sont tous différents de ce que mon professeur a écrit dans son diapositives.
Profondeur de la Première Recherche a une complexité temporelle en O(b^m), où b est le
maximum facteur de branchement de l'arbre de recherche, et m est la profondeur maximale
de l'espace d'état. Terrible si m est beaucoup plus grand que d, mais si la recherche
l'arbre est "touffu", peut-être beaucoup plus rapide que la Largeur de la Première Recherche.
Il continue à dire..
L'espace de la complexité est O(bm), c'est à dire l'espace linéaire de la longueur de l'action
séquence de! Besoin seulement de stocker un seul chemin de la racine à la feuille
nœud, le long avec le reste de la non développé des nœuds frère pour chaque noeud sur
chemin d'accès.
Une autre réponse sur StackOverflow déclare qu'il est O(n + m).
OriginalL'auteur TheRapture87 | 2016-04-07
Vous devez vous connecter pour publier un commentaire.
Complexité temporelle: Si vous pouvez accéder à chaque nœud en O(1) fois, puis avec un facteur de branchement de b et la profondeur max de m, le nombre total de nœuds dans cet arbre serait = b * b * b ... m temps = bm, le total des temps de visiter chaque nœud proportionnelle à bm. D'où la complexité = O(bm).
D'autre part, si au lieu d'utiliser le facteur de branchement et la profondeur max vous avez le nombre de nœuds n, alors vous pouvez directement dire que la complexité est proportionnelle à n ou égale à O(n).
Autres réponses que vous avez lié à votre question, de la même façon en utilisant des terminologies différentes. L'idée est la même partout. Certaines solutions ont ajouté le bord comte de trop pour rendre la réponse plus précise, mais en général, les noeuds d'est suffisant pour décrire la complexité.
L'espace de la Complexité: La longueur du plus long chemin = m. Pour chaque nœud, vous devez les stocker ses frères et sœurs, de sorte que lorsque vous avez visité tous les enfants, et que vous revenez à un nœud parent, vous pouvez savoir qui, de frère, d'explorer les prochaines. Pour m nœuds sur le chemin, vous aurez à stocker b nœuds supplémentaires pour chacun des m nœuds. C'est comment vous obtenez un O(bm) de l'espace de la complexité.
C'est tout à fait correcte. Je l'aurais écrit que, dans la réponse que cette énorme amélioration est possible. Juste ne pense pas de cette façon, lorsque l'interlocuteur ne voulaient savoir comment la complexité par quelque chose comme O(bm).
OriginalL'auteur displayName
La complexité est
O(n + m)
oùn
est le nombre de nœuds dans l'arbre, etm
est le nombre d'arêtes.La raison pourquoi votre professeur représente la complexité comme
O(b ^ m)
, est probablement parce qu'il veut souligner la différence entre la Profondeur d'Abord de la Recherche et de l'Ampleur de la Première Recherche.Lors de l'utilisation de BFS, si votre arbre a une très grande quantité de propagation par rapport à la profondeur, et vous vous attendez à des résultats dans les feuilles, puis clairement DFS aurait plus de sens ici, comme il arrive à feuilles plus rapide que le BFS, même s'ils atteignent le dernier nœud dans le même laps de temps (de travail).
Lorsqu'un arbre est très profonde, et non les feuilles peuvent donner des informations sur plus profondes nœuds, BFS peut détecter des moyens d'élaguer l'arbre de recherche dans le but de réduire la quantité de nœuds nécessaires pour trouver votre but. Clairement, le plus haut de l'arbre, vous découvrez que vous pouvez tailler un sous-arbre, le plus de nœuds que vous pouvez ignorer.
C'est plus difficile lorsque vous êtes à l'aide de DFS, parce que vous êtes à la priorité de toucher une feuille sur l'exploration des nœuds qui sont plus proches de la racine.
OriginalL'auteur Glubus
Je suppose que ce DFS à l'espace/temps de la complexité qui est enseigné sur une IA classe, mais pas sur un Algorithme de classe.
Le DFS Arbre de Recherche a ici un sens différent:
Cité du livre "l'Intelligence Artificielle - Une Approche Moderne'
De sorte que le temps/l'espace de la complexité est ici concentré sur vous visitez les nœuds et vérifier que c'est le but de l'état. @displayName déjà de donner une explication claire.
Tout en O(m+n) de l'algorithme de classe, l'accent est l'algorithme lui-même, lorsque nous stockons le graphique, sous forme de liste d'adjacence et la façon dont nous découvrons les nœuds.
OriginalL'auteur XueYu