Info Exercices 4. Algorithmique. Création et utilisation de fonctions sous Python.



Documents pareils
4. Les structures de données statiques

Quelques tests de primalité

Programmation avec Xcas ou Python

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

Représentation des Nombres

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

Feuille TD n 1 Exercices d algorithmique éléments de correction

Introduction à l étude des Corps Finis

1 Recherche en table par balayage

Représentation d un entier en base b

Initiation à l algorithmique

avec des nombres entiers

Chapitre VI - Méthodes de factorisation

Licence Sciences et Technologies Examen janvier 2010

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

Cours d arithmétique Première partie

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

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

Algorithmes et mathématiques. 1. Premiers pas avec Python. Exo Hello world!

Maple: premiers calculs et premières applications

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

Introduction à l algorithmique et à la programmation (Info 2)

ÉPREUVE COMMUNE DE TIPE Partie D

Algorithmes récursifs

Cryptographie. Cours 3/8 - Chiffrement asymétrique

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)

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Algorithmique, Structures de données et langage C

CORRECTION EXERCICES ALGORITHME 1

Optimisation, traitement d image et éclipse de Soleil

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Chapitre 3. Mesures stationnaires. et théorèmes de convergence

Extrait du poly de Stage de Grésillon 1, août 2010

FONDEMENTS DES MATHÉMATIQUES

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

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

Les arbres binaires de recherche

Différentiabilité ; Fonctions de plusieurs variables réelles

Calcul Scientifique et Symbolique, Logiciels Licence Mathématiques UE N1MA3003. Alain Yger

Recherche dans un tableau

L ALGORITHMIQUE. Algorithme

Structures algébriques

BACCALAURÉAT GÉNÉRAL SESSION 2012 OBLIGATOIRE MATHÉMATIQUES. Série S. Durée de l épreuve : 4 heures Coefficient : 7 ENSEIGNEMENT OBLIGATOIRE

Cours 1 : La compilation

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

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

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

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Cours d algorithmique pour la classe de 2nde

M06/5/COMSC/SP1/FRE/TZ0/XX INFORMATIQUE NIVEAU MOYEN ÉPREUVE 1. Mardi 2 mai 2006 (après-midi) 1 heure 30 minutes INSTRUCTIONS DESTINÉES AUX CANDIDATS

108y= 1 où x et y sont des entiers

Cours Fonctions de deux variables

Durée de L épreuve : 2 heures. Barème : Exercice n 4 : 1 ) 1 point 2 ) 2 points 3 ) 1 point

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

Les deux points les plus proches

L informatique en BCPST

1 I ) Une première approche de l algorithme en seconde, saison 2010 _ Antoine ROMBALDI

Cryptographie et fonctions à sens unique

Algorithme. Table des matières

Probabilités sur un univers fini

Analyse dialectométrique des parlers berbères de Kabylie

Calculer avec Sage. Revision : 417 du 1 er juillet 2010

0x700. Cryptologie Pearson France Techniques de hacking, 2e éd. Jon Erickson

Initiation à la programmation en Python

Programmation linéaire

Contexte. Pour cela, elles doivent être très compliquées, c est-à-dire elles doivent être très différentes des fonctions simples,

Master IMA - UMPC Paris 6 RDMM - Année Fiche de TP

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Synthèse «Le Plus Grand Produit»

Chapitre 10. Les interfaces Comparable et Comparator 1

315 et 495 sont dans la table de 5. 5 est un diviseur commun. Leur PGCD n est pas 1. Il ne sont pas premiers entre eux

Dérivation : Résumé de cours et méthodes

Présentation du langage et premières fonctions

Quelques algorithmes simples dont l analyse n est pas si simple

MIS 102 Initiation à l Informatique

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

Les bases de l informatique et de la programmation. École polytechnique

Commun à tous les candidats

1 Définition et premières propriétés des congruences

Introduction à l algorithmique et à la programmation avec Python. Laurent Signac

La fonction exponentielle

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

1.1 Codage de source et test d hypothèse

Problèmes arithmétiques issus de la cryptographie reposant sur les réseaux

Cours d Informatique

Découverte du tableur CellSheet

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

Master IMEA 1 Calcul Stochastique et Finance Feuille de T.D. n o 1

Master d Informatique M1 Université Paris 7 - Denis Diderot Travail de Recherche Encadré Surf Bayesien

CRYPTOGRAPHIE. Signature électronique. E. Bresson. SGDN/DCSSI Laboratoire de cryptographie

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

AC AB. A B C x 1. x + 1. d où. Avec un calcul vu au lycée, on démontre que cette solution admet deux solutions dont une seule nous intéresse : x =

Développement décimal d un réel

SDLS08 - Modes propres d'une plaque carrée calculés sur base réduite

Cours d algorithmique BTS SIO première année. Nicolas FRANCOIS nicolas.francois@free.fr

Correction TD algorithmique

Programmation Classique en langage C

Introduction à MATLAB R

Transcription:

Info Exercices 4 Algorithmique Création et utilisation de fonctions sous Python. 4 Algorithmique.......................................................................... 1 1 Complexité........................................................................ 2 2 Algorithmes de tri.................................................................. 4 3 Indications........................................................................ 6

Les difficultés sont échelonnées de la manière suivante : aucune,,, et. Certains énoncés sont tirés des annales des concours (oral et écrit) ; leur provenance est le plus souvent précisée. Les exercices notés et sont particulièrement délicats. 1. Complexité 1. [ L algorithme d Hörner ] ( ind ) Soient P un polynôme à coefficients réels et a R. On écrit P(X) = p 0 + p 1 X + + p n X n Le polynôme P sera représenté par le tableau [p0,...,pn] contenant ses coefficients. On cherche un algorithme de calcul efficace de P(a). a) Algorithme naïf d évaluation. i) Écrire sous forme d un pseudo-code un algorithme de calcul de P(a). ii) Trouver un invariant de boucle et prouver la correction de cet algorithme. iii) En déduire une fonction evaluationnaive(t,a) calculant P(a). iv) Sachant que le calcul de a k a un coût de l ordre de ln(k), quel est la complexité de cet algorithme? b) Hörner a proposé la méthode suivante : P(α) = p 0 + α (p 1 + α (p 2 + α (p 3 + α ( ) ))) Par exemple, pour calculer P(2) lorsque P = p 3 X 3 + p 2 X 2 + p 1 X + p 0, on calcule successivement : p 3, p 2 + 2p 3, p 1 + 2(p 2 + 2p 3 ) = p 1 + 2p 2 + 2 2 p 3, p 0 + 2 ( p 1 + 2p 2 + 2 2 p 3 ) = p0 + p 1 2 + p 2 2 2 + p 3 2 3 = P(2) i) Écrire cet algorithme sous la forme d un pseudo-code. ii) Trouver un invariant de boucle et prouver la correction de cet algorithme. iii) Écrire une procédure evaluationhorner(t,a) d arguments t et a un nombre réel et renvoyant la valeur P(a) par la méthode d Hörner. iv) Quelle est la complexité de cette fonction? v) Vérifier sur machine l efficacité de evaluationhorner par rapport à evaluationnaive. 2. [ Algorithmes de division euclidienne dans N ] ( ind ) On se propose d exposer, prouver puis comparer deux algorithmes de division euclidienne dans N. a) Algorithme naïf. i) Donner un algorithme naïf de division euclidienne reposant sur des soustractions successives. Prouver la terminaison et la correction de cet algorithme en déterminant un invariant de boucle. ii) Écrire une fonction divisioneuclidienne(a,b) renvoyant le couple (q, r ) en suivant l algorithme naïf. iii) Quelle est la complexité de cet algorithme? b) Algorithme binaire. On propose l amélioration suivante : LLG PCSI 2 Info Exercices 4 2

Algorithme 1 : Algorithme binaire de division euclidienne Données : Deux entiers naturels a et b tels que b 0; Résultat : Le couple quotient-reste de la division euclidienne de a par b; Initialisation : q 0, w b, r a; tant que w r faire w 2 w; fin tant que w b faire q 2 q; w quotient de w par 2; si w r alors r r-w; q q+1; fin fin Renvoyer (q,r); i) Prouver la terminaison de cet algorithme. ii) Établir que la propriété suivante est un invariant de la seconde boucle : En déduire la correction de l algorithme. { qw + r = a 0 r < w iii) Écrire une fonction divisioneuclidiennebinaire(a,b) renvoyant le couple (q, r ) en suivant cet algorithme. iv) Quelle est la complexité de cet algorithme? 3. [ Deux algorithmes d exponentiation ] ( ind ) On expose dans cet exercice deux algorithmes classiques de calcul de a n où a et n sont deux entiers naturels non nuls. a) Algorithme naïf. i) Écrire un algorithme itératif renvoyant a n. Prouver la terminaison puis la correction de cet algorithme. ii) Quelle est la complexité de cet algorithme? iii) Écrire une fonction e(a,n) renvoyant a n par cet algorithme. b) Algorithme d exponentiation rapide. On considère l algorithme suivant : Algorithme 2 : Exponentiation rapide Données : Deux entiers a et n de N ; Résultat : a n ; Initialisation : R 1, A a, N n; tant que N > 0 faire si N est impair alors R R A; A A A; N quotient dans la division euclidienne de N par 2; Renvoyer R i) Montrer la terminaison de l algorithme. ii) Montrer que a n = RA N est un invariant de boucle. LLG PCSI 2 Info Exercices 4 3

iii) En déduire la correction de cet algorithme. iv) Calculer la complexité de cet algorithme. v) Écrire une fonction er(a,n) renvoyant a n par cet algorithme. 4. [ Algorithme d Euclide du calcul du PGCD, application au PPCM ] ( ind ) a) Terminaison et correction de l algorithme d Euclide. i) Rappeler l algorithme d Euclide du calcul du PGCD deux entiers naturels a et b vérifiant la condition (a, b) (0, 0). On donnera un pseudo-code. La terminaison et la correction de cet algorithme ont été prouvées dans le cours d arithmétique. ii) Écrire une fonction pgcd(a,b) renvoyant le PGCD de deux entiers naturels a et b selon l algorithme d Euclide. iii) Écrire une fonction ppcm(a,b) renvoyant le PPCM de deux entiers naturels a et b. iv) Déterminer le PGCD et le PPCM des entiers a = 1113245 et b = 5478221 au moyen de cette fonction. b) Nombre d étapes de l algorithme d Euclide. Soient a et b deux entiers naturels tels que a b > 0. On note (f n ) la suite de Fibonacci : { f0 = 0, f 1 = 1 n N, f n+2 = f n+1 + f n 5 + 1 i) Rappeler l expression de f n en fonction du nombre d or φ =. 2 ii) Établir le théorème de Lamé : si le calcul de d = a b avec a b > 0 par l algorithme d Euclide demande n étapes, alors : a df n+2 et b df n+1 iii) Vérifier qu en particulier, si a = F n+2 et b = F n+1, il y a exactement n étapes de calcul. iv) En déduire que le nombre d étapes de l algorithme d Euclide est logarithmique en b. 2. Algorithmes de tri 5. [ Tri par sélection ] ( ind ) Notons n la longueur de la liste t. Le tri par sélection s effectue de la manière suivante : on commence par déterminer le plus petit parmi t[0],..., t[n-1] puis on échange t[0] et cet élément. On continue par déterminer le plus petit élément parmi t[1],...,t[n-1] puis on échange t[1] et cet élément, et on continue ainsi de suite jusqu à épuisement de la liste. a) Mettre en œuvre cet algorithme à la main sur t=[6,-3,7,5,1,0]. b) Écrire une procédure triselection(t) renvoyant la liste t triée selon cette méthode. c) Prouver la terminaison et la correction de cette fonction. d) Déterminer la complexité de cet algorithme. LLG PCSI 2 Info Exercices 4 4

6. [ Tri par insertion ] ( ind ) Le tri par insertion est un algorithme de tri que la plupart des personnes utilisent naturellement pour trier des cartes : prendre les cartes mélangées une à une sur la table, et former une main en insérant chaque carte à sa place. Le tableau est trié en place, ie on ne crée pas de tableau auxiliaire, on travaille directement sur le tableau initial. a) Mettre en œuvre cet algorithme à la main sur t=[6,-3,7,5,1,0]. b) Écrire une fonction triinsertion(t) renvoyant la liste t triée selon cet algorithme. c) Prouver la terminaison et la correction de cet algorithme. d) Calculer la complexité de cette fonction dans le meilleur des cas puis dans le pire des cas. 7. [ Tri-bulle ] ( ind ) Le principe du tri à bulle est le suivant : parcourir le tableau en comparant les couples d éléments successifs. Lorsque deux éléments successifs ne sont pas dans l ordre croissant, ils sont échangés : le maximum arrive en position finale en remontant comme une bulle de champagne. On recommence alors l opération jusqu à obtenir une liste entièrement triée. a) Mettre en œuvre cet algorithme à la main sur t=[6,-3,7,5,1,0]. b) Écrire une fonction tribulle(t) renvoyant la liste t triée par cette méthode. c) Prouver la terminaison et la correction de cet algorithme. d) Quelle est la complexité dans le meilleur des cas puis dans le pire des cas de cet algorithme? 8. [ Tri par dénombrement ] ( ind ) Soit N un entier naturel. On suppose, dans cette partie, que les listes sont constituées d entiers compris entre 0 et N. Écrire une fonction tripostier(t) qui trie une liste t en temps linéaire par rapport à sa longueur. On pourra utiliser une liste auxiliaire tcomptage qui compte les occurrences de chaque entier de 0,N. LLG PCSI 2 Info Exercices 4 5

3. Indications 1. [ L algorithme d Hörner ] 2. [ Algorithmes de division euclidienne dans N ] 3. [ Deux algorithmes d exponentiation ] 4. [ Algorithme d Euclide du calcul du PGCD, application au PPCM ] 5. [ Tri par sélection ] 6. [ Tri par insertion ] 7. [ Tri-bulle ] 8. [ Tri par dénombrement ] LLG PCSI 2 Info Exercices 4 6