Algorithmique pour l'algèbre linéaire Cours 2. Multiplication de polynômes et diviser pour régner



Documents pareils
Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

21 mars Simulations et Méthodes de Monte Carlo. DADI Charles-Abner. Objectifs et intérêt de ce T.E.R. Générer l'aléatoire.

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Programmation C++ (débutant)/instructions for, while et do...while

Bases de programmation. Cours 5. Structurer les données

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Partie 1 - Séquence 3 Original d une fonction

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

Chapitre 7. Récurrences

Continuité en un point

Algorithmes de recherche

Initiation à l algorithmique

L ALGORITHMIQUE. Algorithme

Comparaison de fonctions Développements limités. Chapitre 10

Structures algébriques

Recherche dans un tableau

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Calcul de développements de Puiseux et application au calcul du groupe de monodromie d'une courbe algébrique plane

Chapitre 1 Le routage statique

Calculabilité Cours 3 : Problèmes non-calculables.

Logiciel Libre Cours 3 Fondements: Génie Logiciel

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

CORRECTION EXERCICES ALGORITHME 1

Une forme générale de la conjecture abc

Développements limités. Notion de développement limité

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Raisonnement par récurrence Suites numériques

4. Les structures de données statiques

Erreur statique. Chapitre Définition

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

Ordonnancement. N: nains de jardin. X: peinture extérieure. E: électricité T: toit. M: murs. F: fondations CHAPTER 1

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Vers l'orchestration de grilles de PC par les mécanismes de publicationsouscription

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Notes du cours MTH1101 Calcul I Partie II: fonctions de plusieurs variables

Limites finies en un point

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.


Cours d algorithmique pour la classe de 2nde

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Optimisation Discrète

Nombres premiers. Comment reconnaître un nombre premier? Mais...

Algorithmique avec Algobox

Continuité et dérivabilité d une fonction

Programmation Objet - Cours II

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

BACCALAURÉAT PROFESSIONNEL EPREUVE DE TRAVAUX PRATIQUES DE SCIENCES PHYSIQUES SUJET A.1

CHAPITRE V SELECTION DES CONSULTANTS ET D AUTRES PRESTATAIRES DE SERVICES

Quelques tests de primalité

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Perl Orienté Objet BioPerl There is more than one way to do it

Définitions. Numéro à préciser. (Durée : )

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Représentation d un entier en base b

Chapitre 5. Le ressort. F ext. F ressort

Plus courts chemins, programmation dynamique

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Cours 7 : Utilisation de modules sous python

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Peut-on tout programmer?

alg - Classes, instances, objets [oo] Exercices résolus

LES NOMBRES DECIMAUX. I. Les programmes

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Algorithmique avec Algobox

Propriétés des options sur actions

DÉRIVÉES. I Nombre dérivé - Tangente. Exercice 01 (voir réponses et correction) ( voir animation )

Revenu net 2,509, , , , ,401

INF 4420: Sécurité Informatique Cryptographie II

INFO-F-425 Modèles mathématiques et algorithmes pour l ordonnancement. Bernard Fortz

Géométrie Algorithmique Plan du cours

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

Journées Nationales de Calcul Formel

Algorithmique, Structures de données et langage C

Algorithmique I. Algorithmique I p.1/??

MÉTHODES NUMERIQUES. Cours. Licence de Physique Année Universitaire : Licence Chimie, parcours Physique. Semestre S3

Algorithmique et Programmation, IMA

C f tracée ci- contre est la représentation graphique d une

Baccalauréat L spécialité, Métropole et Réunion, 19 juin 2009 Corrigé.

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Les formations de remise à niveau(!) l'entrée des licences scientifiques. Patrick Frétigné CIIU

IFT3245. Simulation et modèles

Cours d initiation à la programmation en C++ Johann Cuenin

Mise en place d'un Réseau Privé Virtuel

UNIVERSITE IBN ZOHR Faculté des sciences Agadir. Filière SMA & SMI. Semestre 1. Module : Algèbre 1

TP 1. Prise en main du langage Python

Notes du cours MTH1101N Calcul I Partie II: fonctions de plusieurs variables

Définition : On obtient les nombres entiers en ajoutant ou retranchant des unités à zéro.

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Les différents types de données et leurs opérations de base

Projet de programmation (IK3) : TP n 1 Correction

Cours de Master Recherche

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Séquencer une application

Algorithmes récursifs

STAGE IREM 0- Premiers pas en Python

Environnements et Outils de Développement Cours 1 Introduction

Transcription:

Algorithmique pour l'algèbre linéaire Cours 2. Multiplication de polynômes et diviser pour régner Mario Valencia e-mail : valencia@lipn.univ-paris13.fr 18/03/2016 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License.

survol du cours Rappels : complexité algorithmique et "Diviser pour Régner" Multiplication classique de polynômes Algorithme naïf de multiplication de polynômes Algorithme de Karatsuba

survol du cours CM1 : Diviser pour régner et multiplication rapide de matrices CM2 : Diviser pour régner et multiplication rapide de polynômes. Évaluation : 2 TPs notés : TP2 et TP4 Cours, Tds et TPs : http ://www-lipn.univ-paris13.fr/ valencia/algo-algebre.html

Rappel Complexité algorithmique (1) : Ordres de grandeur des fonctions On s'intéressera que à borner supérieurement une fonction par une autre : Notation "grand O". On dit qu'une fonction f est un "grand O d'une fonction g " ssi c, n 0 > 0 : n n 0, f (n) c.g(n). Exemple 1 : f (n) = n 3 /2 est un O(n 3 ), avec c = 1 et n 0 = 1. Exemple 2 : f (n) = 5n 2 + 3n est un O(n 2 ), avec c = 8 et n 0 = 1.

Rappel Complexité algorithmique (2) : Propriétés de O O(c.f ) = O(f ) si c est une constante. O(f + g) = O(f ) + O(g) = O(max{f, g}) d i=0 a in i = O(n d+1 ), où les a i sont des coecients d'un polynome de degré d. log a n = O(log 2 n), pour n'importe quelle base a > 0.

Rappel Complexité algorithmique (3) : algorithmes itératifs Les instructions élémentaires (aectation, comparaison) sont en temps constant : O(1). Séquence de blocs : I 1 ; I 2 est de complexité O(max{f 1 (n), f 2 (n)}), où O(f j (n)) est la complexité de I j, avec j {1, 2}. "if (C ) I 1 else I 2 " est de complexité O(max{f (n), f 1 (n), f 2 (n)}), où f (n) est la complexité de C. "for (i=0 ; i<n ; i++) I ;" est de complexité O(nf (n)), où f (n) est la complexité de I. Si la complexité de I dépend de i, alors n 1 la complexité est en O(f (i)). i=0 "while (C ) I ;" est de complexité O(g(n). max{f 1 (n), f 2 (n)}), où f 1 (n) est la complexité de C, f 2 (n) est la complexité de I et g(n) est le nombre de fois que la boucle "while" est exécutée.

Rappel Diviser pour régner (1) De l'adage politique divide ut imperes à une stratégie fondamentale de l'algorithmique. Résoudre le problème P par un algorithme A qui, pour chaque instance I de taille n : 1. coupe l'instance I en 2 (ou plus!) instances I 1 et I 2 2. résout le problème P pour I 1 et I 2 avec l'algorithme A (récursivement!) 3. compose les solutions P(I 1 ) et P(I 2 ) pour produire la solution P(I )

Rappel Diviser pour régner (2) Un algorithme récursif (paradigme "diviser pour régner") a un temps d'exécution : T (n) = at (n/b) + f (n) où n est la taille des entrées, a est le nombre de sous-problèmes, n/b (= n/b ou n/b ) est la taille de sous-problèmes, et f (n) est le temps requis pour diviser et combiner.

Introduction Le produit de polynômes et d'entiers est une opération élémentaire, qui intervient dans un nombre impressionnant d'algorithmes de calcul formel. Exemples d'applications de la multiplication de polynômes : Algorithmes de calcul de pgcd Algorithmes de factorisation en une ou plusieurs variables Algorithmes de composition de séries formelles Algorithmes d'évaluation multipoint et d'interpolation, etc. Certains problèmes, en cryptologie ou en théorie des nombres, nécessitent de manipuler des polynômes de degré de l'ordre de 100000, tailles auxquelles les algorithmes rapides sont indispensables.

Introduction Dans ce cours, on s'intéresse a la complexité arithmétique de la multiplication de polynômes à une variable où les coecients appartient à un anneau commutatif et unitaire. Un anneau (A, +, x) est un ensemble A muni de deux opérations : + et x, appelées usuellement "addition" et "multiplication" resp., vériant : (A, +) est un groupe Abélien ; la multiplication est associative, distributive par rapport à l'addition, et elle possède un élément neutre. Si la multiplication est aussi commutative, alors (A, +, x) est appelé un anneau commutatif. Ex. (Z, +, x), (R, +, x), etc.

Multiplication de polynômes et multiplication d'entiers Considerons les deux exemples suivants : Polynômes : Soient à multiplier 3X 2 + 2X + 1 et 6X 2 + 5X + 4 dans Z[X ]. (3X 2 + 2X + 1) (6X 2 + 5X + 4) = (3.6)X 4 + (3.5 + 2.6)X 3 + (3.4 + 2.5 + 1.6)X 2 + (2.4 + 1.5)X + (1.4) = 18X 4 + 27X 3 + 28X 2 + 13X + 4 Nombres entiers : Soient a multiplier 321 et 654 en base 10. (3.10 2 + 2.10 + 1) (6.10 2 + 5.10 + 4) = (3.6)10 4 + (3.5 + 2.6)10 3 + (3.4 + 2.5 + 1.6)10 2 + (2.4 + 1.5)10 + (1.4) = 18.10 4 + 27.10 3 + 28.10 2 + 13.10 + 4 = 2.10 5 + 9.10 3 + 9.10 2 + 3.10 + 4 = 209934. Dans le deux cas, nous avons retranscrit l'algorithme naïf, et la suite de calculs est essentiellement la même, sauf que pour les entiers, il faut en outre gérer les retenues.

Multiplication de polynômes : algorithme naïf (1) À partir d'ici, on travaillera avec des polynomes F et G à coecients dans un anneau A, ayant un degré au plus n 1. Formellement, F = f 0 + f 1 X +... + f n 1 X n 1 et G = g 0 + g 1 X +... + g n 1 X n 1 ; le probleme est alors de calculer (les coecients de) H = F.G = h 0 + h 1 X +... + h 2n 2X 2n 2.

Multiplication de polynômes : algorithme naïf (2) Ex. H = FG = (1 + 2X + 3X 2 ) (4 + 5X + 6X 2 ) = 4+ 5X + 6X 2 + 8X + 10X 2 + 12X 3 + 12X 2 + 15X 3 + 18X 4 = 4+ 13X + 28X 2 + 27X 3 + 18X 4 L'algorithme : H = FG = 2n 2 i=0 h i X i avec h i = j+k=i f j g k. Complexité : calculer les h i demande O(n 2 ) opérations dans A.

Algorithme de Karatsuba (1) Il est possible de gagner "une" multiplication pour le produit de polynômes de degré 1. Soient les polynomes F = f 0 + f 1 X et G = g 0 + g 1 X. Le produit H = FG s'écrit H = f 0 g 0 + (f 0 g 1 + f 1 g 0 )X + f 1 g 1 X 2. Eectuer les 4 produits f 0 g 0, f 0 g 1, f 1 g 0, f 1 g 1 correspond à l'algo. naïf. Mais, Karatsuba a remarqué que le coecient de X s'écrit f 0 g 1 + f 1 g 0 = (f 0 + f 1 )(g 0 + g 1 ) f 0 g 0 f 1 g 1. Cette écriture mène à un algorithme qui eectue 3 multiplications et 4 additions.

Algorithme de Karatsuba (2) Cas général : On suppose que F et G sont de degré au plus n 1, et que n = 2k (pour l'instant). On pose alors F = F (0) + F (1) X k, G = G (0) + G (1) X k, F (0), F (1), G (0), G (1) ayant de degrés au plus k 1. Le produit H = FG s'écrit H = F (0) G (0) + (F (0) G (1) + F (1) G (0) )X k + F (1) G (1) X 2k

Algorithme de Karatsuba (3) Supposons que n est une puissance de 2. L'algorithme est le suivant Entrée : F, G de degré au plus n 1, n puissance de 2. Sortie : H = FG. 1. Si n = 1, renvoyer FG. 2. Calculer A 1 = F (0) G (0) et A 2 = F (1) G (1) récursivement. 3. Calculer A 3 = F (0) + F (1) et A 4 = G (0) + G (1). 4. Calculer A 5 = A 3.A 4 récursivement. 5. Calculer A 6 = A 5 A 1 et A 7 = A 6 A 2. 6. Renvoyer A 1 + A 7 X n 2 + A 2 X n.

Algorithme de Karatsuba (4) Complexité : T (n) le nombre de multiplications dans A. T (1) = 1. T (n) = 3T (n/2) + 4n. T (n) 9n log 2 3. Donc, T (n) = O(n 1,59 )