Polynômes Creux Chapitre 7
Polynômes Creux
Et si on faisait encore de l’informatique?
En informatique, nous avons deux problèmes que nous rencontrons chaque jour : l’algorithmique, la méthode de calcul, et les
structures de données, la formalisation de notre problème. Par exemple, nous voulons enregistrer dans un ordinateur un graphe,
ou un dessin.
Mettons que vous avez fait ceci sur un bout de papier, et que vous voulez le mettre dans un ordi :
A B
Lien
Faut-il enregistrer"Deux ronds avec respectivement A et B à l’intérieur reliés par des pointillés"? Ou une image qui contient
les informations de couleurs pour chaque zone?
Ce sont des décisions que doit prendre un informaticien et nous allons voir un exemple sur les polynômes.
1 Représentation d’un polynôme
Quels informations sont importantes dans un polynômes? La liste de ses coefcients bien sûr. Par exemple quand nous
sommes dans RN[X], on est en clair dans un espace qui ressemble à RN+1.
Donc pour enregistrer un polynôme, la première manière de penser est, une case correspondant à chaque coefcient. Ainsi
on aura :
P=X3+63X2+4X+2= 1 63 4 2
Jusque là tout va bien, mais supposons que nous avons, ce que l’on appelle un polynôme creux :
P=X321 +63X9+4X+2= 1 0...0 63 0...0 4 2
Résultat : Nous avons alloué au total 322 cases mémoires pour stocker très peu d’information.
Pour éviter ce genre de problème, nous n’avons pas d’autres choix que de remettre en cause notre structure de donnée. Quel
est le problème ici? Nous avons des trous dans notre polynôme assez conséquents.
Nous avons à ce moment deux possibilités de structures :
Créer une syntaxe permettant de spécier la taille du trou. Par exemple : 63 Trou de taille 7 4 2
Enregistrer avec le coefcient, la puissance à laquelle elle correspond. (1, 321) (63, 9) (4,1) (2,0)
Pour des raisons de facilité d’implantation, la deuxième solution est la meilleure. Nous rappelons donc :
Chaque coefcient est stocké dans une liste par un couple (coefcient , puissance) par ordre décroissant de puissance
L’ordre est important pour des questions de structuration claire et compréhensible, mais surtout pour l’évaluation que nous
verrons plus tard.
2 Implantation
L’implantation est l’ensemble des procédures de bases permettant la manipulation de la structure de donnée. Le tout réside
dans le concept de boite noire.
Ce concept est très simple, quelqu’un qui va récupérer votre ensemble de fonction. Il ne voudra pas savoir (sauf s’il est
curieux) comment vous avez stocké votre polynôme. Par contre il voudra savoir ce que fait chaque fonction, mais ça n’ira pas
plus loin!
Voici la liste des procédures à créer :
Ex 1:
convertPoly(p, x) : Cette fonction prend en paramètre P, le polynôme, et x la variable sur laquelle le polynôme est construit (en général
X) et rend le polynôme sous forme cité (sous forme creuse).
deg(L) : Fonction qui a partir de la forme creuse, détermine le degré (une seule ligne!)
somme(L1, L2) : Fait l’addition de deux formes creuses
produitMonome(L, M) : Fait la multiplication d’une forme creuse par un monome (donc un couple).
produit(L1, L2) : Fait le produit de deux formes creuses
1 Loïc Frère TEXPetit
Polynômes Creux Chapitre 7
3 Evaluation - Forme de Hörner
Pour évaluer un polynôme de façon efcace en informatique, on ne le fait pas naïvement (à y rééchir ça arrive très peu
souvent ce genre de cas). L’évaluation simple entraînerait une redondance de calcul importante.
Par exemple : pour évaluer 1+X+X2+X3+X4. La logique voudrait que l’on calcule dans l’ordre, le 1, ensuite le X,
ensuite le X2, ensuite le X3et ennleX4. On remarque que si on rééchit bien, on a X4=(X2)2par exemple. Il y a donc
quelque part quelque chose qui fait accélérer les choses.
La solution est de factoriser le plus simplement sans calcul, dans notre exemple on a :
1+2X+3X2+4X5+5X6= (((5X+4)X3+3)X+2)X+1
Ainsi, on a au total, pour nle degré, nmultiplications. Au lieu d’environ n(n+1)/2si on avait fait le calcul naïvement.
Cette forme du polynôme s’appelle la forme de Hörner, qui a connu son succès pour l’accès à l’évaluation polynomiale de
façon linéaire (en O(n)).
Ex 2: A partir de la forme de Hörner, créer la procédure eval(L, x) qui à partir de la forme creuse fournit une évaluation en x. Faites
attention : il faut de l’evalf de partout !
Essayer de tracer quelques exemples pour bien vérier que votre fonction marche bien.
4 Plus loin...
Pour les fous qui sont arrivés là....
L’évaluation de Hörner n’est pas la meilleure dans le cas général car il faut la coupler à une autre. Pourquoi? Car l’évaluation
naïve de X100 (utile dans un polynôme du genre X101 +X), prendra 100 opérations. En réalité, on peut amener ce résultat à 7
opérations.
La technique s’appelle "Diviser pour régner" (non Sébastien n’a rien à voir avec ça). Elle consiste à toujours découper en
deux pour répartir le calcul. En effet, on se rend compte que Xn=Xn/2Xn/2. Or si on divise à chaque fois par 2, on arrive à
log2nopérations.
Ex 3: Implantez l’algorithme récursif d’exponentiation rapide.
Rajoutez le à votre calcul de l’évaluation.
On peut remarquerque cet algorithme est exactement du même type que le tri fusion que nous avons vu dans le dernier cours.
C’est ultime et très couramment utilisé même sur des applications bien plus dures (transformés de Fourier, recherche de plus
court-chemin, imagerie, intelligence articielle), car on peut arriver .
2 Loïc Frère TEXPetit
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !