3.1 - Définitions. 3 LA CLASSE P

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

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Représentation d un entier en base b

Représentation des Nombres

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

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

Conversion d un entier. Méthode par soustraction

Quelques tests de primalité

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

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)

Machines virtuelles Cours 1 : Introduction

Licence Sciences et Technologies Examen janvier 2010

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

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Introduction à l étude des Corps Finis

Fibonacci et les paquerettes

Informatique Générale

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

Chapitre 1 : Évolution COURS

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Journées Télécom-UPS «Le numérique pour tous» David A. Madore. 29 mai 2015

Petit lexique de calcul à l usage des élèves de sixième et de cinquième par M. PARCABE, professeur au collège Alain FOURNIER de BORDEAUX, mars 2007

Continuité et dérivabilité d une fonction

Codage d information. Codage d information : -Définition-

Chapitre 6. Fonction réelle d une variable réelle

Chapitre 10 Arithmétique réelle

Logiciel de Base. I. Représentation des nombres

La question est : dans 450 combien de fois 23. L opération est donc la division. Le diviseur. Le quotient

Programmation linéaire

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

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

V- Manipulations de nombres en binaire

Probabilités sur un univers fini

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Logique. Plan du chapitre

Chapitre 2. Eléments pour comprendre un énoncé

Cours Fonctions de deux variables

Cours d arithmétique Première partie

Chapitre VI - Méthodes de factorisation

Algorithme. Table des matières

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

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

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

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Limites finies en un point

Maple: premiers calculs et premières applications

La Licence Mathématiques et Economie-MASS Université de Sciences Sociales de Toulouse 1

1 Recherche en table par balayage

Fonctions de plusieurs variables

I. Polynômes de Tchebychev

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1

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

Glossaire des nombres

Le produit semi-direct

Résolution de systèmes linéaires par des méthodes directes

Rappels sur les suites - Algorithme

avec des nombres entiers

Puissances d un nombre relatif

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

FONDEMENTS DES MATHÉMATIQUES

Polynômes à plusieurs variables. Résultant

ÉPREUVE COMMUNE DE TIPE Partie D

Table des matières. I Mise à niveau 11. Préface

Probabilités sur un univers fini

I- Définitions des signaux.

a et b étant deux nombres relatifs donnés, une fonction affine est une fonction qui a un nombre x associe le nombre ax + b

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre :

Objets Combinatoires élementaires

Développements limités, équivalents et calculs de limites

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

Cryptographie. Cours 3/8 - Chiffrement asymétrique

Section «Maturité fédérale» EXAMENS D'ADMISSION Session de février 2014 RÉCAPITULATIFS DES MATIÈRES EXAMINÉES. Formation visée

Le chiffre est le signe, le nombre est la valeur.

Algorithmique, Structures de données et langage C

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

ASR1 TD7 : Un microprocesseur RISC 16 bits

CORRIGE LES NOMBRES DECIMAUX RELATIFS. «Réfléchir avant d agir!»

Cours de Master Recherche

STAGE IREM 0- Premiers pas en Python

COURS EULER: PROGRAMME DE LA PREMIÈRE ANNÉE

ÉVALUATION FORMATIVE. On considère le circuit électrique RC représenté ci-dessous où R et C sont des constantes strictement positives.

Quelques algorithmes simples dont l analyse n est pas si simple

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Quantification Scalaire et Prédictive

Continuité en un point

Programmation C. Apprendre à développer des programmes simples dans le langage C

Introduction à MATLAB R

Cours Informatique 1. Monsieur SADOUNI Salheddine

Par combien de zéros se termine N!?

Cryptographie et fonctions à sens unique

Programme de la classe de première année MPSI

Architecture de l ordinateur

Raisonnement par récurrence Suites numériques

Plus courts chemins, programmation dynamique

Chapitre 3. Quelques fonctions usuelles. 1 Fonctions logarithme et exponentielle. 1.1 La fonction logarithme

Seconde Généralités sur les fonctions Exercices. Notion de fonction.

La mémoire. Un ordinateur. L'octet. Le bit

Chapitre 7. Récurrences

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

Transcription:

La classe P version du 13 octobre 2016 21 3 LA CLASSE P Nous allons étudier la classe de problèmes faciles, présentés jusqu à maintenant comme les problèmes résolubles par, au moins, un algorithme efficace. Grâce aux outils mis en place aux chapitres précédents, nous pouvons en donner une définition rigoureuse. Et nous pouvons aussi nous affranchir de cette rigueur comme on le verra dans le troisième paragraphe. 3.1 - Définitions. 3.1 Définition. Pour k IN, DT IME(n k ) désigne la classe des problèmes résolubles par une machine de Turing (déterministe) ayant une fonction de complexité en temps (dans le pire des cas) qui est O(n k ). TIME fait référence au temps et D rappelle qu il s agit de machines déterministes. exemple Le problème suivant est dans DT IME(n). IMPAIR Entrée : Un entier naturel a. Question : a est-il impair? Ici I = IN et I + = {impairs}. On a une MdT M (avec e + f, e f ) telle que L(M) = {m IF m se termine par 1} e i :,G e 0 1:1,G e + f d01:id,d 0:0,X e f Si on choisit de coder/représenter le nombre a simplement par son écriture bin(a) en base 2 ; pour ce codage, le langage L bin (IMPAIR) associé au problème est aussi l ensemble des mots binaires qui se terminent par 1. On constate alors que la machine M résout le problème IMPAIR puisque M reconnaît L bin (IMPAIR). Autrement dit pour tout a IN si on lance l exécution de M avec bin(a) sur le ruban, M accepte ssi a est impair. Évaluation du temps de calcul. Pour a IN avec lg(bin(a)) = n. La machine M part de la case 0, va jusqu à la case n + 1 (état e i ) ; revient sur la case n (état e 0 ), puis s arrête (passage à e + f ou e ). Donc, le calcul se termine après n + 3 transitions. f La fonction de complexité de M (en temps, dans le pire des cas) est donc n n + 3. Le problème IMPAIR est donc résoluble par une MdT dont la fonction de complexité est O(n). Donc IMPAIR DT IME(n). Si on souhaite utiliser le codage CB, on doit d abord se convaincre que : a est impair ssi CB(a) se termine par 0100. Puis on construit une nouvelle MdT M qui reconnaît les mots binaires se terminant par 0100 : elle déplace sa tête jusqu à la fin du mot (premier ), revient sur le dernier bit, si elle lit 1 elle s arrête et rejette, si elle lit 0 elle revient sur la case précédente, si elle lit 1 s arrête et rejette, si elle lit 0 etc. Pour un a tel que lg(cb(a)) = m, la machine M doit effectuer m + 1 transitions pour aller à la fin du mot, puis une autre pour revenir sur le dernier bit du mot, puis, au plus, 4 transitions pour tester les 4 derniers bits du mot. Sa fonction de complexité est donc m m + 6. On peut aussi exprimer la fonction de complexité de M en prenant pour référence la notion de taille usuelle, n = lg(bin(a)) (c est une longueur intuitive, on l a utilisée pour la fonction de complexité de M). Le calcul est le suivant : si a IN et n = lb(bin(a)), alors m = lb(cb(a)) = 2n et le nombre de transitions de M, dans le pire des cas, pour l entrée a, m + 6 = 2n + 6. Ceci illustre le fait que la notion de taille que l on choisit a une influence sur la fonction de complexité. Cependant, dans cet exemple, c est anecdotique puisque n 2n + 6 est aussi O(n). 3.2 Remarques On dit que DT IME(n) est la classe des problèmes résolubles en temps linéaire. Et que DT IME(n 2 ) est la classe des problèmes résolubles en temps quadratique. Si sa fonction de complexité croît strictement moins vite que n k, i.e. = o(n k ), le problème est tout de même dans DT IME(n k ).

22 Complexité Algorithmique B. Mariou Automne 2016 version du 13 octobre 2016 En particulier lorsque la complexité est d ordre log n (logarithmique) ou (log n) d (polylogarithmique), le problème est dans DT IME(log n) ou dans DT IME((log n) d ), mais aussi dans DT IME(n). De façon générale, DT IME(f(n)) est la classe des problèmes résolubles, sur nos MdT, en temps (déterministe) O(f(n)). Pour un problème particulier D, cela signifie : il existe une MdT (déterministe) qui résout D et dont la fonction de complexité (en temps, dans le pire des cas) est O(f(n)). Par exemple, si D DT IME(n k ), c est grâce à une MdT M. Mais on peut trouver des machines M résolvant D plus lentement, par exemple avec une complexité 2 n ; mais on peut peut-être aussi trouver une MdT M qui le résout plus rapidement, avec une complexité f(n), qui est o(n k ). C est une autre façon de dire que si D DT IME(n k ), on sait que D DT IME(2 n ), mais peut-être aussi que D DT IME(f(n)) où f(n) est o(n k ). On a DT IME(log n) DT IME((log n) d ) DT IME( n) DT IME(n) DT IME(n k ) DT IME(n k+1 )... En général, si f(n) est O(g(n)) alors DT IME(f(n)) DT IME(g(n)). 3.3 Définition. Classe P. C est l union de tous les DT IME(n k ) pour k dans IN : P = C est la classe des problèmes résolubles en temps déterministe polynomial. k IN DT IME(n k ). D P signifie k IN tq D DT IME(n k ) i.e. k IN M MdT résolvant D et de complexité O(n k ). i.e. M MdT résolvant D et de complexité polynomiale. Exemple. On a vu que IMP AIR DT IME(n), et donc IMP AIR P. Le temps est polynomial en la taille des entrées. On le qualifie de déterministe car la résolution s effectue sur des machines déterministes. Enfin, il ne s agit pas exactement du temps mais du nombre d opérations élémentaires à effectuer par la machine avant de fournir sa réponse. On a DT IME(n k ) DT IME(n k+1 ) donc P est la réunion croissante des DT IME(n k ). Lorsqu un problème de décision D est résoluble en temps déterministe polynomial, il se trouve dans un DT IME(n k ) pour un k IN mais aussi dans tous les DT IME(n k ) pour k k. 3.4 Problème inversé, co-dt IME et co-p Définition. Si D = (I, I + ) est un problème de décision, le problème inversé, est D = (I, I ) où I est le complémentaire de I + dans I. Autrement dit, les instances négatives de D sont exactement les instances positives de D. Exemples. On a PREM = COMP car pour a 2 déterminer si a n est pas premier, c est déterminer si a est composé. Et IMPAIR = PAIR, ou encore PAIR = IMPAIR. Deux problèmes inversés D et D sont résolus par des MdT de complexité identique. Démonstration. Il suffit d inverser les réponses. Précisément, si M est une MdT qui résout D, pour toute instance i, M répond oui si i I + M répond non si i / I + On considère alors une MdT M qui effectue les mêmes calculs que M mais qui, à la dernière étape, répond oui lorsque M répondait non, et répond non lorsque M répondait oui (cela ne coûte aucune transition supplémentaire). Alors la machine M résout le problème D puisque, pour toute instance i : i I ssi i / I + ssi M répond non ssi M répond non. De plus, pour toute instance i, les calculs coûtent exactement le même nombre de transitions pour M et pour M. Donc ces deux machines ont la même fonction de complexité. Définition. On appelle co-dt IME(n k ) l ensemble des problèmes de décision dont l inversé est dans DT IME(n k ). Autrement dit, D co-dt IME(n k ) ssi D DT IME(n k ). De même, on peut définir co-dt IME(f(n)) = {D pb de décision D DT IME(f(n))}. Exemple. PAIR co-dt IME(n), puisque PAIR est dans DT IME(n).

La classe P version du 13 octobre 2016 23 Pour toute fonction f : IN IN, DT IME(f(n))=co-DT IME(f(n)). Démonstration. Selon le résultat précédent, D et D sont résolus par des MdT ayant la même fonction de complexité. Par conséquent, D et D sont tous les deux dans DT IME(f(n)) ou bien n y sont ni l un ni l autre. Donc D DT IME(f(n)) ssi D DT IME(f(n)) (i.e. D co-dt IME(f(n))). Proposition : P = co-p i.e., pour tout pb de décision D, D et D P ou bien D et D / P. Démonstration. On a DT IME(n k ) = co-dt IME(n k ), pour tout k. De façon générale, si A est une classe quelconque de problèmes de décision, on peut définir co-a = {D pb de décision D A}. Mais pour A quelconque, il n y a pas de raison que A et co-a coïncident. 3.2 - Algorithme polynomial. 3.5 Définition. Un algorithme, éventuellement écrit en pseudo-langage, est polynomial (on dit aussi efficace) si on peut l implémenter, dans un modèle du calcul, de sorte que la machine obtenue a une fonction de complexité en temps (dans le pire des cas) bornée par un polynôme, i.e. si elle est O(n k ) pour un certain k IN. Le choix du modèle du calcul est libre, ce peut être sur MdT, ou pas. 3.6 Avec cette définition pour les algorithmes, étant donné un problème de décision donné D, il est évident que si D P (i.e. D résolu en temps polynomial sur MdT) alors D est résolu par un algorithme polynomial. Mais la réciproque n est pas immédiate : si D est résolu par un algorithme polynomial, peut-on en conclure qu il est aussi résolu pour une MdT polynomiale? voir question 2 ci-dessous 3.3 - Robustesse. Voir la seconde moitié du document extrait du livre de Garey & Johnson, traduite page 19. 3.7 Questions 1 - Le fait qu un algorithme est polynomial dépend-il des conventions de représentations des données qui ont été utilisées? Et cela dépend-il du modèle du calcul choisi pour l implémenter? 2 - Le fait qu un problème est dans P dépend-il du modèle du calcul qu on a choisi? 3.8 Réponse 1. Changement de la représentation des données pour un même algorithme, sur le même modèle du calcul. On dispose d un algorithme A, éventuellement écrit en pseudo-langage. Supposons qu on a choisi un modèle du calcul et qu en utilisant un codage fidèle c, on a obtenu une machine M qui est une implémentation de A. Si c est un autre codage fidèle, alors on peut trouver une machine M, dans le même modèle du calcul, qui est aussi une implémentation de A, mais qui utilise c ; et telle que les fonctions de complexité c M et c M sont polynomialement liées. En particulier, si l une des deux est bornée par un polynôme, alors l autre aussi (mais pas nécessairement par le même polynôme). Ce résultat répond, par la négative, à la question 1 : pour constater qu un algorithme a une implémentation «rapide» (i.e. de fonction de complexité bornée par un polynôme), le choix du codage n a pas d influence, pourvu qu il soit «raisonnable» i.e. fidèle. Exemple. Si le problème est de déterminer si un nombre a est pair, on peut penser à l algorithme consistant à regarder le dernier chiffre de la représentation de a. Sur MdT à alphabet binaire et un seul état final, il s agit simplement de regarder si le dernier chiffre est 0. Comparons les deux codages : Convention c : nombres écrits de gauche à droite (bit de poids fort à gauche).

24 Complexité Algorithmique B. Mariou Automne 2016 version du 13 octobre 2016 Convention c : nombres écrits de droite à gauche (bit de poids fort à droite). Appelons n la longueur (identique pour les deux codages) du code de a : c est le nombre de chiffre de la représentation de a en base 2, qu on a notée précédemment lg(bin(a)), et qui est une longueur intuitive de a. Avec c, la machine M parcourt la représentation du nombre et, après avoir trouvé le premier, revient sur le dernier bit du mot, passe à l état e 0 si c est un 0, à l état e 1 si c est un 1, puis efface le ruban et écrit sur la première case 0 si elle est à l état e 0, 1 si elle est à l état e 1, puis s arrête. La complexité est n 2n + 2 Avec c, la machine M se déplace sur la première case, écrit 1 si elle lit 0, écrit 0 si elle lit 1, puis efface tous les autres bits, jusqu au premier. La complexité est n n + 1. De façon générale, c M et c M ne sont pas forcément de même degré. 3.9 Réponse 2. Changement de modèle du calcul pour un même problème. Soit D un problème de décision résoluble en temps déterministe polynomial, et résolu dans deux modèles du calcul (connus de nos jours et permettant de calculer tout ce qui est calculable par MdT). Pour chacun des deux modèles, on considère la meilleure implémentation c est-à-dire celui qui a la fonction de complexité à la croissance la moins rapide, respectivement M 1 et M 2. Leurs fonctions de complexité respectives, c M1 et c M2, sont polynomialement liées (mais pas nécessairement de même degré). En particulier, dans tout modèle du calcul, il existe une machine résolvant D et de complexité bornée par un polynôme. Exemple. Modèle 1 : MdT à un seul ruban. Modèle 2 : MdT à k rubans. On a vu (extrait de Garey & Johnson, 19, dernier paragraphe) qu une MdT à k rubans qui calcule en temps T (n) peut être simulée par une MdT à un ruban en temps T (n) 2. Donc M 2, la meilleure implémentation sur MdT à k rubans peut être simulée par une MdT à un ruban de complexité au plus c M2 (n) 2. Donc c M1 (n) c M2 (n) 2. Et, bien sûr, M 1, la meilleure implémentation sur MdT à un ruban, peut être simulé par une MdT à k rubans de même complexité. Donc c M2 (n) c M1 (n). Ce résultat répond, par la négative, à la question 2 : pour constater qu un problème à une résolution efficace (i.e. de fonction de complexité bornée par un polynôme), le choix du modèle du calcul n a pas d influence, pourvu qu il soit «raisonnable». 3.10 En particulier, on a bien l équivalence : D P (i.e. D résolu par une MdT polynomiale) ssi dans n importe quel modèle du calcul (connu actuellement) D peut être résolu en temps polynomial. La notion de problème résoluble en temps polynomial est donc robuste : elle ne dépend ni du modèle du calcul choisi, ni du mode de représentation des données (et encore moins des performances de la technologie). Ceci justifie, par exemple, que la définition d algorithme polynomial ci-dessus ne précise ni le modèle du calcul, ni les conventions de codage des données. 3.11 Les DT IME(n k ), eux, ne sont pas robustes. Un problème résoluble en temps O(n k ) dans un modèle du calcul, peut ne pas l être dans un autre modèle du calcul. On ne peut donc pas juger l appartenance d un problème à DT IME(n k ) sur un autre modèle du calcul que celui qui est fixé. Pour un algorithme polynomial, si on ne considère que des implémentations efficaces, les degrés des différentes fonctions de complexité peuvent varier selon les modèles du calcul, selon les représentations des données. 3.4 - Temps polynomial. Temps exponentiel. 3.12 Algorithmes efficaces/non efficaces Un algorithme de complexité polynomiale est considérée comme efficace i.e. suffisamment rapide pour être utilisé. Tandis qu un algorithme de complexité exponentielle est considéré non efficace.

La classe P version du 13 octobre 2016 25 Pour la justification, voir la première moitié du document extrait du livre de Garey & Johnson, traduite page 10, notamment les tableau 1 Comparaison de plusieurs fonctions de complexité en temps et tableau 2 Effets des améliorations technologiques sur plusieurs algorithmes. 3.13 Problèmes faciles/difficiles Un problème résolu par, au moins, un algorithme efficace est dit facile. Et donc P est la classe des problèmes faciles. Un problème difficile n est résolu par aucun algorithme efficace, il est donc résolu uniquement par des algorithmes non efficaces. 3.14 Remarques Distinction algorithme/problème. Un algorithme est classé comme polynomial, exponentiel, linéaire, quadratique,... si sa fonction complexité est O(polynôme), O(exponentielle), O(n), O(n 2 ),... Mais pour un problème, on dit résoluble en temps polynomial (ou exponentiel ou...) s il existe un algorithme polynomial (ou exponentiel ou...) qui le résout. Un problème est facile ( P ) s il existe un algorithme efficace qui le résout. Un problème est difficile si aucun algorithme efficace ne le résout. (Mais la classe des algorithmes n est pas rigoureusement définie et on ne peut donc pas tous les passer en revue pour prouver qu un problème est difficile. Il faut donc trouver d autres méthodes.) Exemple de problème de calcul ( décision) difficiles. SOUS-ENS Entrées : n IN, E ensemble de cardinal n Question : Donner la liste des sous-ensembles de E Le cardinal de E est une longueur intuitive. Or, il y a 2 n sous-ensembles. Donc la liste réponse est de taille 2 n (il faut au moins un symbole pour chaque sous-ensemble). Par conséquent, n importe quel algorithme qui résout le problème est de complexité exponentielle. Ce problème est difficile à cause de la taille des réponses à fournir. Ceci ne se produit pas pour les problèmes de décision puisque les réponses possibles sont 0 et 1. Parmi les problèmes de décision, aucun n a encore été reconnu comme difficile. Il y en a pour lesquels on connaît un algorithme efficace (par exemple PREM, 2-SAT, 2-COL). Et il y en a pour lesquels on n a pas d algorithme efficace, mais on n a pas non plus de preuve qu il n en existe pas ; i.e. ce sont des problèmes dont on ne sait pas qu ils sont faciles et on ne sait pas qu ils sont difficiles (par exemple 3-SAT, 3-MAR, SAC À DOS, DL, 3-COL). Les problèmes de décision non encore classés sont ceux pour lesquels : - on ne connaît que des algorithmes non efficaces, - on ne connaît pas de preuve qu il n y a que des algorithmes non efficaces. Chacun de ces problèmes peut, dans l avenir, se retrouver classé comme : - facile si on trouve un algorithme efficace, - difficile, si on prouve qu il n y a pas d algorithme efficace. Exemple : PREM, étudié depuis plus de deux millénaires, est connu pour être facile seulement depuis 2002, date à laquelle a été trouvé un algorithme efficace qui le résout. 3.5 - Exercices. Problèmes résolubles en temps polynomial. Exercice 24 Montrez que le problème DIV Entrées : Deux entiers a, b, non nuls. Question : a est-il divisible par b? est résoluble en temps polynomial.

26 Complexité Algorithmique B. Mariou Automne 2016 version du 13 octobre 2016 Complexité de l algorithme d Euclide Exercice 25 1. Rappel. a mod b désigne le reste de la division euclidienne de a par b. 2. Lemme. Soient a > b > 1 deux entiers. Montrez que a mod b < a 2. [Indication : distinguez les cas a 2b et b < a < 2b.] 3. Algorithme d Euclide. Soient a > b > 1 deux entiers. L exécution de l algorithme d Euclide pour a et b produit une suite a 0 > a 1 > a 2 > > a k+1 où : - a 0 = a, - a 1 = b, - a i+2 = a i mod a i+1, - a k+1 = 0, - a k est le nombre cherché, le pgcd de a et b. a) Montrez que k est le nombre de divisions effectuées. b) Montrez que pour tout i (tq i + 2 k + 1), on a a i+2 < a i 2. c) Montrez que pour tout j (tq 2j k + 1), on a a 2j < a 0 2 j. 4. Majoration du nombre de divisions. Soit n le nombre chiffres nécessaires à l écriture de a en base 2. d) Montrez que a < 2 n. e) Montrez que si k > 2(n + 1) alors a k < 1 2. f) Déduisez-en que k 2n + 1. 5. Conclusion. Dans le cas où a b, remarquez que la première division consiste à inverser a et b car a 2 = a mod b = a dans ce cas, et l algorithme se poursuit avec a 1 = b > a 2 = a. Vous pouvez alors évaluer, dans le cas le plus général, le nombre maximum de divisions à effectuer en fonction du nombre de chiffres de l écriture en base 2 du plus grand de a et de b. 6. Algorithme d Euclide étendu. Le calcul précédent montre que l algorithme d Euclide est efficace. L algorithme étendu consiste à conserver non seulement les restes des divisions successives mais aussi les quotients, afin d écrire une relation de Bézout liant a, b et leur pgcd d, relation du type au + bv = d. On appelle q 2,..., q k+1 les quotients successifs, on a donc a i = a i+1 q i+2 + a i+2. Ou encore : a 2 = a 0 a 1 q 2 a 3 = a 1 a 2 q 3 (= a 1 (a 0 a 1 q 2 )q 3 ). a k+1 = a k 1 a k q k+1. g) Combien d opérations élémentaires (multiplications, soustractions) sont-elles nécessaires pour obtenir l équation voulue? L algorithme d Euclide étendu est-il efficace? 7. Inversion dans Z/m Z. Soient m un entier. h) La division dans ZZ/mZZ consiste à calculer, pour a, d < m, un nombre u < m tel que au = d mod m, lorsqu il existe. Montrez que la division dans ZZ/mZZ est un problème facile (les données sont m, et a, d < m). i) L inversion dans ZZ/mZZ consiste à calculer, pour a < m, son inverse dans ZZ/mZZ, lorsqu il existe. Montrez que l inversion dans ZZ/mZZ est un problème facile (les données sont m et a < m). n.b. On se contente ici d évaluer le nombre d opérations arithmétiques (divisions puis mulitplications et soustractions). Mais il ne faut pas oublier que chacune de ces opérations a un coût, dont il faudrait tenir compte pour calculer exactement la complexité.