12
votes

Comment déterminer la hauteur d'un arbre de récursivité d'une relation de récurrence?

Comment va-t-on déterminer la hauteur d'un arbre de récursivité, construite lorsqu'il s'agit de temps de course de récurrence? Comment va-t-il différer de déterminer la hauteur d'un arbre régulier?

text alt http: //homepages.ius. EDU / RWISMAN / C455 / HTML / NOTES / CHAPITRE4 / CH4-9.GIF

Edit: Désolé, je voulais ajouter comment obtenir la hauteur de l'arborescence de la récursion de la relation récurrence . .


2 commentaires

Tir de ma bum ici, mais je ne vois pas une différence. Pourquoi penseriez-vous qu'il y a une différence? Dans l'abstrait, ils sont les deux arbres ...


voir ma réponse ici: olog n moyenne stackoverflow .Com / Questions / 2307283 / ...


5 Réponses :


1
votes

La hauteur de l'arbre de récursion dépend de l'algorithme récursif en question. Tous les algorithmes de division et de conquérir n'ont pas d'arbres de hauteur en uniforme, tout comme toutes les structures d'arbres n'ont pas de hauteurs uniformes. Si vous ne pouvez pas déterminer la hauteur maximale possible de l'algorithme ou si vous devez calculer la hauteur réelle de l'arborescence au moment de l'exécution, vous pouvez utiliser une variable globale à la fonction récursive, l'incrémentation de l'entrée de la fonction et de la décrémentation. sur la sortie de la fonction. Cette variable indiquera le niveau actuel de la procédure récursive. Si nécessaire, vous pouvez maintenir la valeur maximale de cette variable dans une deuxième variable.


0 commentaires

2
votes

Premièrement, s'il s'agit d'une question de devoirs, veuillez la marquer comme tel. Les images que vous connaissez pour impliquer que vous êtes au CS 455, le professeur Wisman. :)

L'indice principal que je vais donner est ceci: la hauteur de l'arbre est évidemment déterminée par lorsque vous arrivez aux "feuilles". Les feuilles d'un arbre de modélisation de la relation récurrence d'une fonction sont le boîtier de base. Ainsi, je regarderais à voir comment "rapidement" N peut rétrécir à la base de base.


2 commentaires

Ce ne sont pas des devoirs :) étude personnelle. L'image que j'ai liée était la plus pertinente sur Google Images. Aurait dû éclaircir cela à l'avance, désolé!


Désolé, a ajouté le commentaire trop tôt. Votre réponse a définitivement un sens. Cependant, ce n'est généralement pas le cas que vous pouvez suivre toutes les feuilles. La création des premières branches est triviale. C'est à partir de là que ça m'a un peu confus :)



8
votes

Si la récurrence est sous la forme de t (n) = à (n / b) + f (n), la profondeur de l'arborescence est la base de la base B de n.

Par exemple, la récurrence 2T (N / 2) + N aurait arboré de profondeur LG (N) (base de journal 2 de N).


1 commentaires

Supposons que j'ai une récurrence avec t (n) = t (n-2) + n ^ 2, comment dois-je appliquer la profondeur = la base de journal B de N puisque B n'est pas définie?



2
votes

La profondeur de tout arbre est le plus petit nombre d'arêtes du nœud au nœud racine de l'arbre. La profondeur du nœud racine est 0.

Considérez la récursion t (n) = à (n / b) il entraîne l'arborescence de récursions suivante

Entrez la description de l'image ici

Il est clair que la profondeur de l'arborescence est $ \ log_b N $ La profondeur est identique à la hauteur d'un arbre.


0 commentaires

1
votes

Quoi, ce n'est pas clairement évident em> à vous? ;) C'est une excellente question si, sans autre raison que des personnes qui aiment agiter les mains. Il devient clairement clair avec la pratique, cependant.

Voici une explication basée sur un exemple de l'introduction aux algorithmes de Cormen, et al., Section 4.4. P>

considère t (n) = 3T (n / 4) + cn ^ 2 code>. La relation raconte la complexité temporelle d'un problème (par exemple un tableau) de taille n code>. Il est important de rappeler ce que n code> représente. Étant donné que la complexité t est définie en termes de t, c'est une relation de récurrence. P>

Si la hauteur n'est pas apparente, nous pouvons suivre les conseils de Polya et essayez d'utiliser le raisonnement direct, dessinez une image ou résoudre un problème connexe. Nous pouvons utiliser le raisonnement direct en branchant simplement l'expression droite pour T dans l'endroit où T apparaît, P>

                n/4^i = 1
         log_4(n/4^i) = log_4(1)
log_4(n) - log_4(4^i) = 0
             log_4(n) = log_4(4^i)
             log_4(n) = i


1 commentaires

Je reçois un peu confus, j'ai un problème dans lequel T (n) = 2T (N / 2) + NC. La récursion s'arrêtera si (n == 0). Si (n == 0), il retournera 1. J'ai une confusion que quand elle ira de N .... N / 2 ..... N / 4 ..... N / 8 .... ..n / 16 Puis comme si ceci ne deviendra que 0 à l'infini, puis comment trouver TC? Est-ce qu'il est lié à ce 1/2 donnera une valeur de plancher?