ÉPREUVE FACULTATIVE D INFORMATIQUE. Codage cyclique



Documents pareils
Représentation des Nombres

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

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

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

Groupe symétrique. Chapitre II. 1 Définitions et généralités

Corrigé des TD 1 à 5

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

V- Manipulations de nombres en binaire

Primaire. analyse a priori. Lucie Passaplan et Sébastien Toninato 1

STAGE IREM 0- Premiers pas en Python

Licence Sciences et Technologies Examen janvier 2010

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

Conversion d un entier. Méthode par soustraction

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

Algorithmique et Programmation, IMA

Introduction à l étude des Corps Finis

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

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

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

Algorithme. Table des matières

UE Programmation Impérative Licence 2ème Année

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Méthode du commentaire de document en Histoire

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)

ÉPREUVE COMMUNE DE TIPE Partie D

ASR1 TD7 : Un microprocesseur RISC 16 bits

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

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


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

Chapitre 11. Séries de Fourier. Nous supposons connues les formules donnant les coefficients de Fourier d une fonction 2 - périodique :

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

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

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

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

Algorithmique des Systèmes Répartis Protocoles de Communications

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

Représentation d un entier en base b

Algorithmes récursifs

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

La persistance des nombres

VIII- Circuits séquentiels. Mémoires

Cours d Informatique

Complément d information concernant la fiche de concordance

Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

I. TRANSMISSION DE DONNEES

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

I. Polynômes de Tchebychev

Temps forts départementaux. Le calcul au cycle 2 Technique opératoire La soustraction

L ESCALIER UNE ACTIVITÉ SUR LES MULTIPLES ET DIVISEURS EN FIN DE PRIMAIRE EN SUISSE ROMANDE

Spécialité auxiliaire en prothèse dentaire du brevet d études professionnelles. ANNEXE IIb DEFINITION DES EPREUVES

Informatique Générale

Fibonacci et les paquerettes

a) b)

Les devoirs en Première STMG

CCP PSI Mathématiques 1 : un corrigé

Programmes des classes préparatoires aux Grandes Ecoles

Raisonnement par récurrence Suites numériques

Algorithmique et structures de données I

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

Première partie. Préliminaires : noyaux itérés. MPSI B 6 juin 2015

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

Introduction à MATLAB R

Rappels sur les suites - Algorithme

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

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

Logiciel de Base. I. Représentation des nombres

Cours d algorithmique pour la classe de 2nde

La fonction exponentielle

Tp 1 correction. Structures de données (IF2)

TP 1. Prise en main du langage Python

Initiation à la programmation en Python

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

J AUVRAY Systèmes Electroniques TRANSMISSION DES SIGNAUX NUMERIQUES : SIGNAUX EN BANDE DE BASE

6. Hachage. Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses

Baccalauréat ES/L Métropole La Réunion 13 septembre 2013 Corrigé

La conversion de données : Convertisseur Analogique Numérique (CAN) Convertisseur Numérique Analogique (CNA)

THEME : CLES DE CONTROLE. Division euclidienne

Correction du baccalauréat STMG Polynésie 17 juin 2014

Traduction des Langages : Le Compilateur Micro Java

Nombres, mesures et incertitudes en sciences physiques et chimiques. Groupe des Sciences physiques et chimiques de l IGEN

Évaluation et implémentation des langages

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Recherche dans un tableau

OCL - Object Constraint Language

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Guide du mémoire de fin d études


CONCOURS D ENTREE A L ECOLE DE 2007 CONCOURS EXTERNE. Cinquième épreuve d admissibilité STATISTIQUE. (durée : cinq heures)

Initiation. àl algorithmique et à la programmation. en C

DM 1 : Montre Autoquartz ETA

Cours 1 : Qu est-ce que la programmation?

Synthèse «Le Plus Grand Produit»

Compter à Babylone. L écriture des nombres

Quelques algorithmes simples dont l analyse n est pas si simple

Programme détaillé BTS INFORMATIQUE DE GESTION DIPLÔME D ETAT. Objectifs de la formation. Les métiers. Durée de la formation

Transcription:

ÉCOLE POLYTECHNIQUE CONCOURS D ADMISSION 2003 FILIÈRES PSI ET PT ÉPREUVE FACULTATIVE D INFORMATIQUE (Durée : 2 heures) L utilisation des calculatrices n est pas autorisée pour cette épreuve. Avertissements : Le langage de programmation choisi par le candidat doit être spécifié en tête de la copie. On attachera une grande importance à la concision, à la clarté, et à la précision de la rédaction. Codage cyclique On se propose d implanter plusieurs techniques de détection d erreurs dans la transmission de données sur des moyens de communication non fiables. Les données transitant sur le réseau sont des séquences de bits que l on notera 0 et 1. Cesséquences de bits sont découpées en mots b 0,b 1...,b n 1 de longueur n (n >0) oùn est une constante globale, fixée une fois pour toutes. Ces mots sont représentés par des tableaux d entiers b de longueur n dont l élément b i à l indice i vaut 0 ou 1 (0 i<n). Le nombre d erreurs de transmission du mot b est le nombre debits ayant changé de valeur après la transmission. Le temps d exécution T (f) d une fonction f de la variable b est le nombre d opérations élémentaires (addition, soustraction, multiplication, division, affectation) nécessaire au calcul de f(b). Lorsquecetempsd exécution dépend d un paramètre p, ilseranotét p (f). Demême l espace mémoire E(f) est la somme des tailles des données intermédiaires nécessaires pour le calcul de f(b). OndiraqueT p (f) est d ordre O(g(p)) pour signifier qu il existe K>0 tel qu on a T p (f) Kg(p) pour tout p. Partie I Bit deparité Le ou-exclusif x y de deux bits x et y est défini par la table des valeurs suivante : x y 0 1 0 0 1 1 1 0 1 200

On remarque qu on a 0 x = x 0=x et x x =0pour toute valeur de x. Doncx est son propre opposé pour. Question 1 Ecrire la fonction ou_exclusif qui calcule le ou-exclusif x y des deux bits x et y pris comme arguments. La technique du bit de parité consiste à rajouter un bit b n (le bit de parité) aux données utiles b 0,b 1...,b n 1 de façon à ce que b 0,b 1,...,b n 1,b n ait un nombre pair de bits à 1. Ainsi, pour n =7,lebitdeparité du tableau 1, 1, 0, 1, 1, 1, 0 est 1. Lemottransmis sur le réseau est 1, 1, 0, 1, 1, 1, 0, 1. Schématiquement, on aura : b 0 b 1... b n 2 b n 1 b n } {{ } } {{ } donnée utile bit de parité Question 2 Ecrire la fonction bit_parite qui calcule le bit de parité du tableau b, contenant la suite de bits b 0,b 1,...,b n 1. Question 3 Combien d erreurs de transmission, la technique du bit de parité permet-elle de détecter dans un mot b de longueur n?justifier le. Partie II Codage CRC On peut considérer le tableau b de n bits b 0,b 1,...b n 1 comme les coefficients du polynôme P (X) =b 0 X n 1 + b 1 X n 2 + + b n 2 X + b n 1 Soit B[X] l ensemble des polynômes dont les coefficients sont des bits. Le degré du polynôme P (X) =b 0 X n 1 + b 1 X n 2 + b n 1 de B[X] est la valeur maximale de k tel que b n 1 k ne soit pas nul. Question 4 Ecrire la fonction degre prenant en argument un tableau b de coefficients représentant le polynôme P (X) de B[X], etretournant le degré de P (Par convention, le degré du polynôme nul vaudra 1). La somme exclusive des deux polynômes P (X) et Q(X) de B[X] dont les coefficients sont les tableaux b 0,b 1,...b n 1 et c 0,c 1,...c n 1 est définie par : P (X) Q(X) =(b 0 c 0 )X n 1 +(b 1 c 1 )X n 2 + +(b n 1 c n 1 ) Remarque : P (X) est son propre opposé, puisque P (X) P (X) =0pour tout polynôme P (X) de B[X]. 2 201

Question 5 Ecrire la fonction plus prenant comme arguments deux tableaux b et c représentant deux polynômes P (X) et Q(X) de B[X], deuxindices i et j dans b et c, etune longueur l, etquimodifie le tableau b pour remplacer ses coefficients b i, b i+1,... b i+l 1 par b i c j, b i+1 c j+1,... b i+l 1 c j+l 1. La technique, dite CRC (Cyclic Redundancy Check), ajoute plus de bits de contrôle à chaque mot transmis que la méthode du bitdeparité. Elle considère un polynôme générateur G(X), bien choisi dans B[X], dedegrék (0 <k n), donné une fois pour toutes ; et elle construit pour tout mot b, correspondant au polynôme P (X), lerester(x) de la division euclidienne de P (X) X k par G(X). R(X) =P (X) X k mod G(X) où mod est l opération modulo. Si r 0,r 1,...r k 1 sont les coefficients de R(X), ladonnée transmise b 0,b 1,...b n 1,r 0,r 1,...r k 1 correspondra à un polynôme multiple de G(X). Graphiquement, on a : b 0 b 1... b n 2 b n 1 } {{ } donnée utile r 0... r k 1 } {{ } contrôle CRC Pour calculer le reste R(X) de la division de P (X) X k par G(X), onutilise l algorithme classique de la division. On aligne les bits valant 1 les plus à gauche du dividende et du diviseur, puis on retranche le diviseur au dividende (grâce à l opération ). Le degré du résultat est strictement inférieur à celui du dividende. Et on recommence la division en prenant le résultat comme nouveau dividende, jusqu à ce que son degré soit strictement inférieur à k. Ainsi, par exemple, pour les tableaux b = 0, 1, 1, 1, 0, 1 et g = 0, 1, 0, 1 (et donc k =2), les étapes successives de la division donnent : 0, 1, 1, 1, 0, 1, 0, 0 0, 0, 1, 0, 0, 1, 0, 0 0, 0, 0, 0, 1, 1, 0, 0 0, 0, 0, 0, 0, 1, 1, 0 0, 0, 0, 0, 0, 0, 1, 1 D où la valeur 1, 1 pour le CRC. Question 6 Ecrire la fonction crc prenant en argument deux tableaux b et g et qui retourne le tableau de bits correspondant aux coefficients du CRC du mot représenté par b par rapport au polynôme générateur représenté par le tableau g. (Lavaleur de l argument b ne doit pas être modifiée). Donner un ordre de grandeur du temps et de l espace mémoire pris par crc en fonction de la longueur n de b et du degré k de g. Pour réduire l espace mémoire utilisé, on peut ranger les résultats partiels du reste (dans le calcul de la division) dans un registre circulaire de k +1 bits. Ce registre est représenté par 3 202

un tableau r de bits de taille k +1et une variable d indique l emplacement de son bit le plus significatif. Plus exactement le registre est organisé comme suit : 0 d k r 5 r 6 r k 1 r k r 0 r 1 r 2 r 3 r 4 Question 7 Ecrire une nouvelle version crc1 de la fonction crc, quine prend qu un espace mémoire en O(k). (Lavaleur de l argument b doit toujours être inchangée) Les polynômes générateurs habituels utilisés pour le CRC sont X 16 + X 15 + X 2 +1(CRC-16), X 32 + X 26 + X 23 + X 22 + X 16 + X 12 + X 11 + X 10 + X 8 + X 7 + X 5 + X 4 + X 2 + X +1 (CRC-Ethernet), etc. On réalise des circuits pour calculer rapidement les valeurs du CRC. Question 8 Expliquer le circuit suivant de calcul du CRC avec G(X) =X 5 + X 4 + X 2 +1 comme polynôme générateur (Initialement, tous les r i sont nuls ; les bits du mot b d entrée arrivent sur la droite, suivis de 4 bits valant 0 ; le circuit est synchronisé par une horloge globale qui à chaque tranche de temps décale tous les r i d un cran vers la gauche ; le résultat est le tableau de bits r 0,r 1,r 2,r 3,r 4 une fois que tous les bits d entrée ont été lus). r 0 r 1 r 2 r 3 r 4 entrée On peut montrer quelatechnique du bit de parité est un cas particulier de la méthode de détection d erreurs par CRC. Question 9 Quel est le polynôme générateur correspondant à la méthode du bit de parité? 4 203

Épreuve facultative d Informatique, filières PSI et PT Rapport de M. Marc Pouzet, correcteur. C était la deuxième édition de cette épreuve spécifique à l École Polytechnique et commune aux filières PT et PSI. L épreuve était facultative et seules les copies des candidats admissibles ont été corrigées. Le nombre de copies était faible (12 pour la filière PT, et 36 pour la filière PSI). Résultats La moyenne des candidats de la filière PSI est de 13.6 avec un écart-type de 3.2. La moyenne de la filière PT et de 11.4 avec un écart-type de 3.8. La répartition est la suivante : 0 N<4 4 N<8 8 N<12 12 N<16 16 N<20 PSI 0% 0% 22% 47% 30% PT 0% 0% 41% 41% 17% Cette année les copies étaient bonnes, voire très bonnes (44% de copies entre 12 et 16 et 10% de copies entre 18 et 20 sur l ensemble des deux filières). L absence de notes entre 0 et 8 montre que tous les candidats savent écrire des programmes. De plus, tous les candidats ont su répondre aux premières questions. Les coefficients des questions, identiques pour les filières PT et PSI sont les suivants : Question 1 2 3 4 5 6 7 8 9 Coef. 2 4 2 5 5 7+3 10 4 3 Le langage Maple a été choisi par la majorité des candidats. Les autres langages utilisés étaient Java, Pascal, C et Mathematica. Évaluation Cette épreuve était composée de deux parties. La première partie présentait la technique du bit de parité et consistait à écrire des fonctions simples de parcours de tableaux. La seconde présentait la technique des CRC et aboutissait à l écriture de fonctions de codage basées sur la division euclidienne de polynômes. Les structures de données et de contrôle nécessaires se résumaient aux tableaux d entiers, boucles for, conditionnelles, séquence, définition et utilisation de fonctions. L utilisation de la récursivité n était pas indispensable dans cette épreuve. 204 204

Dans ce type d épreuve, il est fortement conseillé d utiliser des structures de données et de contrôle élémentaires (boucles for, tableaux) plutôt que des primitives spécifiques de Maple (opérateur seq). L utilisation de ces primitives nécessite une bonne connaissance de Maple et elles sont utilisées le plus souvent de manière approximative (problèmes de type, de bornes) ce qui fait perdre des points. De plus, les structures algorithmiques élémentaires se prêtent mieux à un calcul de complexité. Toutes les questions (sauf les questions 3, 8 et 9) demandaient d écrire du code. Le code de chaque question étant court, la correction commence par la lecture du code. Il est donc essentiel que ce code soit bien présenté et les noms des variables choisis de manière judicieuse (un commentaire décrivant succintement le rôle de chaque variable peut être une aide précieuse et il faut veiller à conserver les noms des fonctions données dans l énoncé). Si le code est juste, je ne tiens pas trop compte des explications (souvent approximatives). Sinon, je les lis attentivement pour comprendre l idée du candidat. Toutefois, le candidat a déjà perdu une bonne partie de ses points. La situation peut être sauvée partiellement lorsque le candidat à eu l idée de formuler un invariant de boucle (sous forme de suites récurrentes par exemple). Lors de la lecture des programmes, les petites erreurs de syntaxe (oubli d un end, d une marque de fin de boucle) ne sont pas trop prises en compte dès lors qu il n y a pas d ambiguïté possible et qu il semble qu elles seraient immédiatement corrigées lors d une programmation sur machine. En revanche, les erreurs de type et une absence d initialisation des variables sont systématiquement sanctionnées. Pour chaque question, j indique la moyenne obtenue (en ramenant la note de la question sur 5). Question 1 [4.1] Presque tous les candidats ont répondu correctement à cette question. S agissant d une question facile, la solution devait être parfaite. Un programme compliqué (e.g, non fonctionnel) ou faisant intervenir des variables intermédiaires inutiles a été sanctionné. Question 2 [3] Cette question a également été traitée par la majorité des candidats. Il fallait clairement privilégier ici une solution modulaire effectuant un appel à la fonction ou_exclusif définie précédemment. Une solution non modulaire ou trop compliquée (e.g, calcul de la somme puis du reste modulo 2) ou ne correspondant pas exactement à l énoncé (e.g, retournant un booléen) n a pas reçu tous les points. Question 3 [4.5] Cette question ne demandait pas d écrire du code. Elle a été traitée par tous les candidats. Une réponse partielle (e.g, indiquant que le 205 205

bit de parité permet de détecter une seule erreur de transmission plutôt qu un nombre impair d erreurs) ou l absence de justification ont été sanctionnées. Question 4 [3.7] La solution attendue consistait à effectuer une boucle (d indice i, pour0 i<n)parcourant le tableau b dans l ordre des indices croissants jusqu à ce que b i soit non nul. Les raisons principales pour ne pas obtenir tous les points ont été une mauvaise initialisation des variables (ou plus souvent un oubli) ou une erreur dans les bornes de la boucle. Certains candidats ont suivi fidèlement la définition mathématique du degré donnée dans l énoncé et qui conduisait à un algorithme un peu moins naturel car parcourant tout le tableau même dans le cas d un polynôme de fort degré. Question 5 [4.6] Cette question a été bien traitée par l ensemble des candidats et il suffisait ici de suivre la définition donnée dans l énoncé. Cette question étant facile, une absence d initialisation ou une solution ne suivant pas fidèlement l énoncé (e.g, retournant un nouveau tableau contenant la somme) ont été sanctionnées. Question 6 [2.1+1.4] Cette question s est révélée difficile. Elle demandait d écrire le code du crc basé sur le calcul du reste de la division euclidienne puis de donner un ordre de grandeur de sa complexité. L énoncé suggérait d écrire une seule boucle calculant itérativement le reste de la division euclidienne. Le reste partiel rp (à l itération j) peut être calculé en fonction du reste partiel (à l itération j 1) et du diviseur g. Eninitialisant le reste partiel à un tableau de longeur n + k contenant b 0,...,b n 1, 0,...,0, lecrc se retrouve dans les k derniers éléments du reste partiel après n itérations. Le reste partiel rp à l itération j (noté rp 0,...,rp n+k 1 j est défini par la récurrence suivante : dg = degre(g) rp 0,..., rp n+k 1 j = plus( rp 0,..., rp n+k 1 j 1,g,n dg 1,dg+1) si rp j 1 =1 rp 0,..., rp n+k 1 j = rp 0,..., rp n+k j 1 sinon rp 0,..., rp n+k 1 0 = b 0,..., b n 1, 0,..., 0 Cette solution ne nécessitait pas de recalcul du degré du reste partiel à chaque itération. Celui-ci peut être calculé itérativement à partir de la valeur courante de rp j. Il fallait privilégier ici une solution modulaire faisant intervenir la fonction plus. Unesolutionsuivant fidèlement l énoncé mais allouant un nouveau tableau pour stocker le résultat du reste partiel était sanctionnée. Une solution partielle définissant seulement la division euclidienne était fortement 206 206

sanctionnée. Enfin, une solution correcte mais recalculant le degré du reste partiel ne recueillait pas tous les points. La solution attendue était de complexité O(n.k) en temps et O(n + k) en mémoire. Cependant, une réponse donnant une complexité différente, bien justifiée et en accord avec l algorithme proposé a été peu sanctionnée. Question 7 [0.4] Cette question faisait suite à la question précédente. Elle s est révélée relativement difficile et très peu de candidats y ont répondu. La solution attendue consistait à remarquer que le reste partiel peut être stocké dans un tableau de longeur k +1seulement et à réécrire la fonction plus en conséquence. Question 8 [0.19] Cette question ne demandait pas d écrire du code. Peu de candidats l ont abordée. Certains candidats se sont lancés dans des explications compliquées sans penser à donner un exemple montrant le déroulement du calcul et le contenu des registres r 0,...,r 4 au cours du temps. Question 9 [2] Il s agissait dans cette question de remarquer que le calcul du bit de parité est un cas particulier de CRC en prenant (X +1)comme polynôme générateur. Certains candidats ont répondu à cette question en donnant le circuit correspondant au calcul du bit de parité(plutôtquelepolynôme générateur). Cette réponse recueillait tous les points. 207 207