Comme vous le mentionnez, le théorème d'Akra – Bazzi montre que la solution à la récurrence est pour tout . Cependant, cela ne révèle pas la nature de la dépendance à l'égard de . Pour déterminer ce dernier, nous pouvons utiliser une approche d'arbre de récursivité.T ( n , p ) O ( n log n ) p ∈ ( 0 , 1 ) pT(n,p)O(nlogn)p∈(0,1)p
À la racine de l'arbre de récursivité se trouve l'intervalle . Ses deux enfants sont les intervalles et , dont la longueur totale est à nouveau . Chacun de ces nœuds a deux enfants (en supposant que est suffisamment grand), et ainsi de suite. Pour simplifier, nous ignorons les erreurs d'arrondi, c'est-à-dire que nous supposons que est un entier; c'est juste une technicité, et je ne m'en inquiéterais pas. Nous arrêtons le processus chaque fois qu'un nœud a une longueur maximale de . La complexité de l'algorithme est proportionnelle à la longueur totale des intervalles dans l'arbre. Lorsque , les feuilles{ 1 , … n } { 1 , … , p n } { p n + 1 , … , n }{1,…n}{1,…,pn}{pn+1,…,n} n n p n 1 p ≠ 1 / 2nnpn1p≠1/2 (nœuds où nous arrêtons le processus) ont une profondeur différente, ce qui rend plus difficile la détermination de la complexité globale.
On peut obtenir une borne supérieure simple en notant que l'arbre a au plus des niveaux : chaque nœud est au moins un facteur plus petit que son parent. Tout comme dans l'analyse pour , la longueur totale des intervalles à n'importe quel niveau est au plus , et nous obtenons une limite supérieure de sur la temps de course. Puisque et pour les petits , nous pouvons écrire ceci comme .log 1 - p ( 1 / n ) 1 - p p = 1 / deux n O ( n log 1 - p ( 1 / n ) ) log 1 - p ( 1 / n ) = log n / log ( 1 - p ) - 1 journal ( 1 - p ) - 1log1−p(1/n)1−pp=1/2nO(nlog1−p(1/n))log1−p(1/n)=logn/log(1−p)−1= - log ( 1 - p ) = p ± O ( p 2 ) p O ( n log n / p )log(1−p)−1=−log(1−p)=p±O(p2)pO(nlogn/p)
Voici un calcul plus précis. Considérez le niveau . Supposons que nous n'arrêtons pas le processus en atteignant un petit intervalle. Nous pouvons générer un sommet aléatoire en prenant étapes, dans chacune desquelles nous allons à gauche (disons) avec la probabilité et à droite (disons) avec la probabilité . Chaque fois que nous faisons un pas à gauche, le log de la longueur de l'intervalle diminue de , et chaque fois que nous faisons un pas à droite, il diminue de . Un sommet se trouve dans l'arborescence réelle du log de la longueur diminuée d'au plus . Le poids total des intervalles au niveaut t p 1 - p - log p - log ( 1 - p ) log n t log n D - log p p - log ( 1 - p ) 1 - p X 1 , … , X t ∼ D t Pr [ X 1 + ⋯ + X t ≤ log n ] tttp1−p−logp−log(1−p)logntde l'arbre est exactement la probabilité qu'un sommet généré selon ce processus corresponde à une diminution d'au plus . Autrement dit, si est la distribution qui est égale à avec la probabilité et à avec la probabilité , et sont indépendants, alors le le poids total du niveau est . Pour super-constante , la variable aléatoire est à peu près normale de moyenne et la variance linéairelognré- journalpp- journal( 1 - p )1 - pX1, … , Xt∼ DtPr [ X1+ ⋯ + Xt≤ logn ]t X 1 + ⋯ + X t [ - p log p - (X1+ ⋯ + Xt 1 - p ) log ( 1 - p ) ] t t t [ - p log p - ( 1 - p ) log ( 1 - p ) ] t ≤ ( log n ) / 2 1 t [ - p log[ - p logp - ( 1 - p ) log(1−p)]tt, donc pour satisfaisant , disons, la probabilité sera très proche de , tandis que pour satisfaisant , par exemple, il sera très proche de zéro. En définissant (connu sous le nom de fonction d'entropie binaire), nous concluons que le temps d'exécution est (uniforme en , comme ). Comme nous avons , et donc notre estimation précédente n'était pas serrée.t[−plogp−(1−p)log(1−p)]t≤(logn)/21tp - ( 1 - p ) log ( 1 - p ) ] t ≥ 2 log n h ( p ) = - p log p - ( 1 - p ) log ( 1 - p ) Θ ( n log n / h ( p ) ) p n → ∞ p → 0 h ([−plogp−(1−p)log(1−p)]t≥2lognh(p)=−plogp−(1−p)log(1−p)Θ(nlogn/h(p))pn→∞p→0p ) ≈ - p log ph(p)≈−plogp
Une autre façon de voir la même analyse consiste à avoir une séquence infinie de variables aléatoires indépendantes comme précédemment, et à définir un temps d'arrêt comme étant la première fois tel que . Le temps d'exécution est alors proportionnel à . Le théorème de renouvellement élémentaire déclare alors que , ce qui implique que le la taille totale des intervalles est égale à . Plus précisément, pour chaque constante la taille totale des intervalles est , oùX 1 , X 2 , … T t X 1 + ⋯ + X t ≥ log n n E [ T ]X1,X2,…TtX1+⋯+Xt≥lognnE[T]lim n → ∞ E [ T ] / log n = 1 / E [ D ] = 1 / h ( p ) ( 1 + o ( 1 ) ) n log n / h ( p ) p ( 1 + α p ( n ) ) n log n / h ( p ) αlimn→∞E[T]/logn=1/E[D]=1/h(p)(1+o(1))nlogn/h(p)p(1+αp(n))nlogn/h(p)p ( n ) = o ( n )αp(n)=o(n) . La convergence dans le théorème de renouvellement élémentaire est exponentielle dans le paramètre de temps - dans notre cas - devrait donc être polynomiale dans , c'est-à-dire . La convergence est également probablement uniforme pour pour tout .log n n α p ( n ) = O ( n - C p ) p ∈ ( δ , 1 - δ ) δ > 0lognnαp(n)=O(n−Cp)p∈(δ,1−δ)δ>0
En résumé, la longueur totale des intervalles dans l'arbre de récursivité, qui est proportionnelle au temps d'exécution, est de la forme suivante pour chaque : où et sont pris à la même base et est une fonction dépendant de et tendant vers avec .p T ( n , p ) = ( 1 + o ( 1 ) ) n log nph ( p ) ,lognh(p)=-plogp-(1-p)log(1-p)o(1)p0n
T(n,p)=(1+o(1))nlognh(p),
lognh(p)=−plogp−(1−p)log(1−p)o(1)p0n
De plus, il est probablement vrai que pour tout et tout il est vrai que la longueur totale des intervalles est de la forme où et la grande constante O cachée ne dépendent que de . En particulier, il devrait être le cas pour toutes les constantes ,
et la convergence est polynomialement rapide.δ>0δ>0p∈(δ,1−δ)p∈(δ,1−δ)T(n,p)=(1+O(n−Cδ))nlognh(p),
T(n,p)=(1+O(n−Cδ))nlognh(p),
Cδ>0Cδ>0δδp1,p2p1,p2limn→∞T(n,p1)T(n,p2)=h(p2)h(p1),limn→∞T(n,p1)T(n,p2)=h(p2)h(p1),