$$\newcommand{\fonction}[5]{\begin{array}{ccccc} #1: & #2 & \longrightarrow & #3 \\ & #4 & \longmapsto & #5 \end{array}}$$

Introduction à la complexité d'un algorithme : Méthode de Horner

Nombre d'opérations nécessaires pour effectuer le calcul d'une image par la méthode classique.

DéfinitionUn polynôme est une fonction de la forme : $$\fonction{f}{\mathbb{R}}{\mathbb{R}}{x}{a_nx^n+a_{n-1}x^{n-1}+...a_1x+a_0 \qquad avec\qquad a_n \ne 0}$$ où les \(a_i\) sont des réels appelés coefficients du polynôme. n est le degré du polynôme.
Remarque

Des exemples d'utilisation de l'image d'un polygone :

On se pose la question suivante : combien faut-il de multiplications et d'additions pour calculer l'image d'un nombre par un polynôme de degré n ?

    Pour calculer la puissance n d'un nombre nous utiliserons la méthode basique :$$x^n=\underbrace{x×x×x×\ldots×x}_{n fois}$$

  1. Combien de multiplications faut il pour calculer \(x^2\) ?

  2. Combien de multiplications faut il pour calculer \(x^3\) ?

  3. Combien de multiplications faut il pour calculer \(x^4\) ?

  4. Combien de multiplications faut il pour calculer \(x^5\) ?

  5. Combien de multiplications faut il pour calculer \(x^n\) ?

    Soit :

    $$\fonction{f}{\mathbb{R}}{\mathbb{R}}{x}{2x+5}$$
  6. Combien faut-il de effectuer de multiplications puis d'additions pour déterminer \(f(2)\) ?

  7. addition : multiplication :

    Soit :

    $$\fonction{g}{\mathbb{R}}{\mathbb{R}}{x}{4x^2+2x+5}$$
  8. Combien faut-il de effectuer de multiplications puis d'additions pour déterminer \(g(3)\) ?

  9. addition : multiplication :

    Soit :

    $$\fonction{h}{\mathbb{R}}{\mathbb{R}}{x}{2x^3+4x^2+2x+5}$$
  10. Combien faut-il de effectuer de multiplications puis d'additions pour déterminer \(h(5)\) ?

  11. addition : multiplication :
  12. Émettre une conjecture sur le nombre d'addition nécessaire pour calculer un polynôme de degré n.


  13. Compléter en mettant le nombre de multiplications nécessaire au calcul :
  14. $$\underbrace{a_nx^n}_{\ldots}+\underbrace{a_{n-1}x^{n-1}}_{\ldots}+\underbrace{a_{n-2}x^{n-2}}_{\ldots}+\ldots+\underbrace{a_3x^{3}}_{\ldots}+\underbrace{a_2x^{2}}_{\ldots}+\underbrace{a_1x}_{\ldots}+\underbrace{a_0}_{\ldots}$$

    Remarque

    On montre en mathématiques que \(n+(n-1)+(n-2)+\ldots+3+2+1 = \frac{n(n+1)}{2}\)

    Vous pouvez regarder les figures suivantes pour avoir une idée pour une méthode graphique de démonstration.

    1 1+2 1+2+3
    1+2+3+4 1+2+3+4+5 1+2+3+4+5+6
  15. En deduire le nombre d'opérations (multiplications et additions confondus) nécessaire au calcul d'une image par une fonction polynôme de degré n.


  16. Méthode de Horner.

    Le mathématicien anglais William George Horner (1786-1837) a proposé une autre manière de calculer l'image d'un nombre par une fonction polynôme.

    https://xavier.hubaut.info/coursmath/bio/gphoto/horner.jpg

    Pour calculer l'image d'un nombre x par la fonction polynôme f(x)=\(a_nx^n+a_{n-1}x^{n-1}+...a_1x+a_0\) on utilise l'algorithme suivant :

    \(a_n\),\(a_{n-1}\),...,\(a_0\) et x sont donnés.
    rep=\(a_{n}\)
    Pour i allant de n-1 à 0 en reculant de 1 à chaque fois :
    rep=x×rep
    rep=rep+\(a_i\)
    On retourne rep

    L'idée dérrière l'algorithme est une écriture différente du polynôme par exemple :

  17. Ecrire la forme de horner du polynome g :
  18. $$\fonction{g}{\mathbb{R}}{\mathbb{R}}{x}{4x^2+2x+5}$$
  19. Donner le nombre d'opérations (additions + multiplications confondus) pour calculer \(g(3)\) avec cette écriture.

  20. Ecrire la forme de horner du polynome h :
  21. $$\fonction{h}{\mathbb{R}}{\mathbb{R}}{x}{2x^3+4x^2+2x+5}$$
  22. Donner le nombre d'opérations (additions + multiplications confondus) pour calculer \(h(5)\) avec cette écriture.

  23. Emettre une conjecture sur le nombre d'opérations nécessaires pour calculer un polynôme de degré n avec la méthode de Horner.

  24. On veut convertir un entier sur 32 bits (soit donc calculer l'image de 2 par un polynome de degré 32), on suppose qu'une opération (multplication ou addition prend une seconde), calculer le temps nécessaire avec la méthode classique puis avec la méthode de Horner.

  25. Horner: Basique :
  26. On veut caclculer l'image d'un entier par un polynôme de degré 64, on suppose qu'une opération (multplication ou addition prend une seconde), calculer le temps nécessaire avec la méthode classique puis avec la méthode de Horner.

  27. Horner: Basique :
Remarque

On peut utiliser un algorithme plus performant que celui naif pour effectuer une puissance mais même avec avec la méthode de Horner rest supérieure n’empêche pas la supériorité de la méthode de Horner.

La méthode utilisée en début d'année pour passer du binaire au décimal est en 3n, du même ordre que la méthode de Horner.

Algorithme

L'algorithme de Horner pour un l'image d'un nombre par un polynôme peut s'implémenter par :