%% fichier 'info.tex' %% macros pour décrire des programmes. ref pp 420--422 du TeXbook %% \def \|{\leavevmode \hbox{\tt \char`\|}} % vertical line \def \°{\leavevmode \hbox{\tt \char23}} % ??? \newskip \ttglue \ttglue = .5em plus.25em minus .15em \outer \def \begindisplay{% \obeylines \startdisplay} {\obeylines \gdef \startdisplay#1 {\catcode`\^^M=5% $$#1 % \halign\bgroup % \indent ## \hfil && \qquad ## \hfil \cr}} \outer \def \enddisplay{% \crcr \egroup $$} \chardef \other = 12 \def \ttverbatim{% \begingroup \catcode`\\=\other \catcode`\{=\other \catcode`\}=\other \catcode`\$=\other \catcode`\&=\other \catcode`\#=\other \catcode`\%=\other \catcode`\~=\other \catcode`\_=\other \catcode`\^=\other \obeyspaces \obeylines % \tt} {\obeyspaces \gdef {\ }} % \obeyspaces now gives \ , not \space \outer \def \begintt{% $$ \let \par = \endgraf \ttverbatim % \parskip = 0pt % \catcode`\|=0 % \rightskip = -5pc % \ttfinish} {\catcode`\| = 0 \catcode`\\=\other % | is temporary escape character |obeylines % |gdef |ttfinish#1^^M#2\endtt{% #1 % |vbox{#2} % |endgroup % $$}} % ci-dessous une astuce remarquable pour permettre d'écrire '|something|' et % d'avoir la phrase 'something' en ttverbatim. \catcode`\@ = 11 \def \specialbar{% \ifmmode \def \next{|} \else \let \next = \speci@lbar \fi \next} \catcode`\|=\active \let| = \specialbar {\obeylines \gdef \speci@lbar{% \ttverbatim % \spaceskip = \ttglue % \let^^M=\ % \let|=\endgroup}} \catcode`\@ = 12 \endinput % ======================= test ================== |Sous plusieurs aspects, le problème du calcul du plus grand diviseur commun (pgcd) de deux polynômes est l'un des problèmes fondamentaux en ce qui concerne les manipulations algébriques. Les premiers systèmes de calcul formel (comme ALPAK ou PM) disposaient de routines pour les opérations sur les polynômes. La suite logique fût de développer des routines pour les manipulations de fractions rationnelles et donc des algorithmes de calcul de pgcd pour pouvoir simplifier au mieux ces fractions. | ceci dit, en maths il vient $|x| \geq 0$ \begindisplay Pourquoi pas~? \enddisplay L'algorithme d'Euclide, connu depuis des siècles, est facilement compréhensible et implémentable. Cependant, cet algorithme pose un gros problème de taille des expressions intermédiaires, notamment pour les polynômes de $\zset [X_1, \ldots, X_n]$ puisqu'il faut travailler dans $(\zset[X_1, \ldots, X_{n-1}])[X_n]$. On retrouve ce même problème avec celui des algorithmes PRS (Polynomial Remainder Sequence) qui utilise une pseudo division et qui travaille uniquement dans l'anneau de base des coefficients sans passer par son corps des fractions (cf Naudin-Quitté ou Geddes, Czapor et Labahn). Plusieurs algorithmes ont été développés dans les 25 dernières années pour calculer le pgcd de deux polynômes~: l'algorithme de Collins (1967), la méthode des sous-résultants améliorée par Brown (1978), l'algorithme modulaire de Brown (1971), l'algorithme EZ-GCD de Moses \& Yun (1973) et l'algorithme probabiliste HEUGCD de Char, Geddes \& Gonnet (1989). L'algorithme modulaire de Brown (MGCD) utilise le théorème chinois pour reconstituer le pgcd après un certain nombre d'évaluations--réductions des polynômes de départ et il est l'un des plus efficaces dans le cas des polynômes à une variable et à coefficients entiers. Pour les polynômes à plusieurs variables qui ne sont pas complètement denses, les techniques $p$-adiques pour la reconstruction du résultat peuvent être utilisées pour éviter le grand nombre d'images nécessaires à l'algorithme MGCD. Une des caractéristiques de cette technique $p$-adique est qu'elle ne nécessite qu'une seule évaluation en chacune des variables (sauf une) et une seule réduction pour pouvoir reconstruire le résultat. L'algorithme EZ-GCD développé par Moses \& Yun utilise cette technique et est particulièrement efficace pour les polynômes creux à plusieurs variables dont le coefficient dominant par rapport à l'une des variables est entier. \bye