CélestineOscarDésiréAnatoleGastonEugène 1 Introduction au codage 1.1 Les ensembles L ensemble de tout les ensembles est Dieu lui-même. Kantor Ensemble des parties d un ensemble désigne l ensemble des sous-ensembles de cet ensemble. Par exemple, pour S = {a, b, c} on a P (S) = {{}, {a}, {b}, {c}, {a, b}, {a, c}, {b, c}, {a, b, c}}. Exercice 1. Proposez un encodage en binaire pour P (S) telle qu on puisse reconstruire l ensemble a partir de son encodage. Combien de sous-ensembles y-a-t il pour un ensemble à n éléments? On peut décomposer un nombre en ces facteurs premiers. Proposez une méthode pour calculer tous les facteurs d un nombre en utilisant les facteurs premiers. abc sous-ensemble 000 {} 100 {a} Solution : 010 {b} 001 {c} On a donc 2 n sous-ensembles. 110 {a, b} 101 {a, c} 011 {b, c} 111 {a, b, c} Soit S l ensemble de facteur premier d un nombre. Tout les facteurs sont obtenu a partir de P (S). On peut munir un ensemble d une opération associative sur les éléments de l ensemble et d un élément neutre pour l opération. On appelle une telle structure un monoide. Par exemple dans l ensemble des naturels N l addition est une tel opération avec 0 comme élément neutre. On utilise la notation (N, +, 0) pour désigner ce monoide. Exercice 2. Proposez une opération associative et un élément neutre pour l ensemble S. Proposez une opération associative et un élément neutre pour l ensemble P (S). Solution : la concatenation et le mot vide ; l union des ensembles et l ensemble vide. Dans l aviation on utilise un alphabet radio qui consiste à représenter chaque lettre de l alphabet par un mot entier, choisi de manière acrophonique (ayant pour initiale la lettre représentée). Des ambiguïtés risquent en effet de se produire en raison des parasites et des interférences auxquels les transmissions radio sont fréquemment soumises. 1
1.2 Le codage Plus formellement, pour X = {x 0, x 1,..., x n } on note X l ensemble des suites finies obtenues par concatenation sur X. On appelle X un alphabet et toutes ces suites finies des mots. Le mot vide est noté ε. Soit Y = {y 0, y 1,..., y p }, appellé code. Un codage de X à Y est une fonction τ : X Y qui associe un mot de Y à chaque lettre de X. Le codage d un mot w de X est alors obtenu en concaténant les images de chacune des lettres composant ce mot. Exercice 3. Codes de longueur fixe. On pose X = {0, 1,.., 9, A, B,..E} et Y = {0, 1}. Proposez un codage de X à Y. Quel est le code de ABC? Quel mot est encodé par 00111010? Codes à longueur variable. On pose X = {a, b, c, d, e}, Y = {0, 1} et le codage suivant : τ(a) = 0 τ(b) = 10 τ(c) = 01 τ(d) = 110 τ(e) = 1011 Encodez abace et acace. Quel est le problème? Solution : Le code hexadecimale. Le même code pour ab et ac. On dit qu un code τ sur un alphabet X a la propriété du préfixe si pour tout couple de mots de code distincts (c1; c2), c2 n est pas un préfixe de c1. Exercice 4. τ(a) = 101000, τ(b) = 01, τ(c) = 1010. Est-ce que ce codage a la propriété du préfixe? Tout code qui a la propriété du préfixe est uniquement déchifrable. Est-ce que la réciproque est vraie? Comment on peut garantir que la propriété : tout code à longeur fixe a la propriété du préfixe est vraie? Solution : b n est pas un prefixe de a mais c il est. Non ; exemple : Y = {0, 01}. La fonction de codage doit etre injective. Le code Morse est un code permettant de transmettre un texte à l aide de séries d impulsions courtes et longues. Ce code est erronément attribué à Samuel Morse, alors que plusieurs personnes l attribuent à son assistant Alfred Vail. Exercice 5. L encodage en Morse de A est, de E est et de J. Ce codage est à taille variable. À votre avis, comment ont été choisis la longueur des codes? Quel est l alphabet du code? On veut coder l alphabet X = {a, b, c, d} sur Y = {0, 1}. Proposez un encodage sachant que a est le symbol le plus fréquent et que c, d sont moins fréquents que b. Solution : L idee du code morse est de coder les caractères fréquents avec peu de signaux, et de coder en revanche sur des séquences plus longues les caractères qui reviennent plus rarement. Par exemple, le e, lettre très fréquente, est codé par un simple point, le plus bref de tous les signes. Les 25 autres lettres sont toutes codées sur quatre signaux au maximum, les chiffres sur cinq signaux. Y = {,, silence }. tau4(a) = 0 tau4(b) = 10 tau4(c) = 110et tau(d) = 111 2 Utilisation du codage Pas que de l info. Le codage neuronal consiste à comprendre comment les informations sensorielle sont représentées dans le cerveau, quel est la relation entre les stimulis et les réponses neuronales. On pense que le cerveau encode des informations de façon analogue et digitale, qu il utilise des formes de compression de 2
données ainsi que la détection et correction des erreurs dans les signaux échangés entre le cerveau et le reste du systèmes neurologique. 2.1 compression des données Le codage peut diminuer la taille de l espace occupé par les données. Il existe deux grandes catégories de méthodes de compression : les techniques de compression conservatives (sans pertes ou de compactage). Elles réduisent la taille des données sans les dégrader. À partir de la forme compactée il est possible de reconstituer exactement la donnée d origine. les techniques de compression non conservatives (ou avec pertes) qui sont irréversibles. De telles techniques sont utilisées par exemple pour les images (GIF, JPEG, PNG, MPEG,...) pour les sons (MP3, MP4,...). Elles s appuient sur des propriétés anatomiques pour éliminer certaines informations non perçues par l oeil ou l oreille humaine. Exercice 6. Considérons un écran de texte noir sur fond blanc. Il sera constitué de longues séquences de pixels blancs pour le fond, et de courtes séquences de pixels noirs pour le texte. Représentons une ligne d un tel écran, avec B pour les pixels noirs et W pour les pixels blancs. Proposez un encodage. WWWWWWWWWWWWBWWWWWWWWWWWWWWBBBWWWWWWWWWWWW WBWBWBWBWB Solution : 13w1b... 1w1b1w1b1w.. 2.2 cryptographie Le codage peut rendre les données difficilement compréhensibles pour des intrus. La cryptographie vise à fournir des techniques permettant l échange d informations entre un émetteur et un destinataire dans un environnement a priori non sûr (par exemple Internet) sans que des intrus puissent s immiscer dans cet échange, que ce soit pour y lire des informations, soit pour en modifier le contenu ou générer de faux messages. 2.3 détection et correction d erreurs Le codage peut permettre de détecter d éventuelles alterations des informations, voire de les corriger. Exercice 7. Le code de correction d erreurs le plus simple est la répétition. Par exemple pour envoyer la séquence 1011 avec un codage 3-répétitions on obtient 101110111011. Proposez une méthode de décodage pour ce type de code. Solution : la majorite va donner le bon code. 3 Le codage des caractères Le code morse a été le premier codage à permettre une communication longue distance. D autres codages ont suivi... 3
Exercice 8. Le cypher de... Proposez un encodage en binaire des lettres a,..., z telle que les lettres consecutives dans l alphabet ont des codes consecutives. Trouver le message cache dans le texte : L enfer c est les autres! Le code Baudot. Le code Baudot est dans l histoire un des premiers codes binaires utilisé grâce à une machine. C est un code binaire : chaque caractère est codé par une série de 5 bits (0 ou 1). Combien de combinaisons sont possible? Proposez une méthode pour encoder l alphabet (26 lettres) et les chiffres (10 chiffres) sur les 5 bits. Modifier votre encodage de façon que le code de QWERTY correspond à celui de 123456. La machine de Baudot permettait une vitesse d écriture de 30 mots par minute. Aujourd hui, on appelle baud l unité de mesure du nombre de symboles transmissibles par seconde. Solution : bacon = 0001.0000.0010.1110.1101. 2 5 = 32 combinaisons. un code special pour changer de lettres a chiffres. voir le code propose par Baudot : http ://fr.wikipedia.org/wiki/code B audotv ers1901, lecodebaudotoriginalaétémodifiép mêmeetladispositiondestouches.ilorganisadonclescaractèresdef açonàcequelestransitionslespluscourantesentrecaractères ASCII Dans les années 60, le code AS- CII (American Standard Code for Information Interchange) est adopté comme standard. Il permet le codage de caractères sur 8 bits, soit 256 caractères possibles. Les caractères sont des données non numériques : cela n a aucun sens de d additionner ou de multiplier deux caractères. Par contre, il est souvent utile de comparer deux caractères, par exemple pour les trier dans l ordre alphabétique ou de passer à la lettre suivant une lettre donnée dans l ordre alphabétique. Les caractères, appelés symboles alphanumériques, incluent les lettres majuscules et minuscules, les symboles de ponctuation et les chiffres. le code ASCII représente chaque caractère sur 7 bits : À chaque caractère est associée une configuration de 8 bits (1 octet), mais le chiffre de poids fort (le plus à gauche) est toujours égal à zéro. les codes compris entre 0 et 31 ne correspondent pas à proprement parler à des caractères : ils n ont pas de correspondant visualisables. Ces codes, souvent nommés caractères de contrôle, sont utilisés pour indiquer des actions telles que passer à la ligne (CR, LF), émettre un bip sonore (BEL), etc. Un certain nombre correspondent au codage associé à la frappe au clavier de la touche CTRL avec une lettre les lettres se suivent dans l ordre alphabétique (codes 65 à 90 pour les majuscules, 97 à 122 pour les minuscules), ce qui simplifie les comparaisons et le passage d une lettre à la suivante 4
on passe des majuscules au minuscules en modifiant le 5ième bit, ce qui revient à ajouter 32 au code ASCII décimal les chiffres sont rangés dans l ordre croissant (codes 48 à 57), et les 4 bits de poids faibles définissent la valeur en binaire du chiffre Exercice 9. 6999114105118101122 118111116114101 110111109 101110 971159910510546. Solution : Ecrivez votre nom. Exercice 10. (à la maison) Dans un ligne de commande en UNIX écrivez : echo "votre_nom" > toto od -x toto La commande od reenvoie le code ascii contenu dans le fichier toto. Qu est ce que vous observer? ANSII et Unicode. Le code ASCII original, défini pour les besoins de l informatique en langue anglaise, ne permet la représentation des caractères accentués (é, è, à, ù,...), et encore moins des caractères chinois ou arabes. Une première extension a consisté en l utilisation effective des 8 bits de chaque octet : cela a conduit à l idée de code ASCII étendu. Le code ASCII étendu n est pas unique et dépend fortement de la plateforme utilisée. Le plus connu est ANSI. Même en utilisant effectivement les huit bits pour réaliser le codage, il n est possible de coder qu un nombre très limité de caractères. D où l idée de réaliser le codage non plus sur 8 bits, mais sur 16 et voire plus, on parle de codage multioctets des caractères. Après des initiatives séparées ménées notamment par Xerox et Apple, le consortium Unicode a été créé en 1991. Il regroupe de nombreux (et les plus gros) partenaires privés et publics du monde de l informatique. La version actuelle du standard comporte plus de 100 000 caractères. 5