Je donnerai une réponse différente, car c'est trop pour un commentaire et cela traite d'une approche plus générale.
Ainsi, en ESL, ils décrivent en effet le temps de calcul pour une branche-et-borne (plus précisément cela ressemble à une division et une conquête pour moi).
On note avec le nombre d'observations et avec le nombre de nœuds enfants, quand on fait pousser un arbre. Je suppose que nous ne perdons pas en général si nous considérons comme fixe. De plus, nous pouvons indiquer avec le temps de traitement pour calculer les points de partage à un nœud donné.NKKf(N)
Ainsi, nous pouvons écrire récursivement la formule du temps d'exécution comme:
nous avons considéré ici que les nœuds enfants divisent l'ensemble de données d'entrée de taille en sous-ensembles de même taille . Nous savons que c'est le meilleur cas.
T(N)=f(N)+K∗T(N/K)
NKN/K
Cependant, nous pouvons voir qu'il s'agit d'une application bien connue du théorème maître. Ceci est bien documenté dans le livre CLRS . J'ai la 3ème édition et les détails sont à la section 4.5 et la preuve est à la section suivante. Je ne me souviens pas bien des détails, mais je me souviens que ce n'est pas trop compliqué si l'on élargit la récursivité et regroupe quelques termes ensemble.
Cependant, ce qui est important dans ce cas, c'est que lorsque - temps linéaire, le temps résultant de l'algorithme est . Ce temps est calculé pour une seule variable d'entrée, donc notre temps total pour les variables seraitf(N)=O(N)T(N)=O(NlogN)PO(PNlogN)
Ce temps est réalisable pour la croissance des arbres, si toutes les entrées sont initialement triées en , et la recherche de la valeur de fractionnement prend un temps linéaire sur ces entrées triées. Ici, nous pouvons appliquer l'algorithme de variance en ligne, comme je l'ai mentionné dans ma réponse précédente pour . Pourest encore plus facile de trouver la médiane. J'avoue que je n'ai jamais essayé une autre fonction de perte pour les arbres.O(PNlogN)L2=1N(y−y^)2L1=1N|y−y^|
Notez cependant que le théorème maître s'applique dans le meilleur des cas si les divisions sont de taille égale. Le pire des cas est celui où la division est très déséquilibrée. Là, on peut appliquer un cas différent de théorème maître et le temps deviendra .O(PN2)
En conclusion, je suppose que les auteurs d'ESL utilisent généralement le terme d'une manière qui est utilisée pour décrire l'algorithme de tri rapide. Le tri rapide donne généralement , avec le pire des cas , pour certaines configurations de données spécifiques.O(NlogN)O(N2)
J'espère que ça aide.