LES A - Free

publicité
Terminal S
ARBRES et CODAGES
Informatique
et Systèmes
Numériques
LES ARBRES
INTRODUCTON
(récupérée sur le Web)
:
Les arbres sont principalement la structure de donnée utilisés pour stocker des données ordonnées et, d’après Knuth, la plus
importante structure non-linéaire intervenant dans l’informatique. Ils sont très utilisés dans tous les domaines, parce que bien
adaptés à la représentation naturelle d’information organisée homogène, et d’une grande rapidité et commodité de manipulation.
On trouve cette structure dans tous les domaines de l’informatique, que ce soit par exemple en compilation (arbres syntaxiques
pour représenter les expressions ou productions possibles d’un langage), en imagerie (les arbres quaternaires), en algorithmique
(par exemple, elle est le support de méthodes de tris ou de gestion d’information en tables) ou encore dans les domaines de
l’intelligence artificielle (arbres de jeux, arbres de décisions, de résolution, etc.).
Les réponses de ce TP sont à rédiger sur une feuille de copie
Depuis tout temps, on sait représenter un arbre…
Il est constitué de racines, d’un tronc, de branches et de feuilles.
Dessinez donc sur votre feuille de copie, et en introduction de ce TP, votre plus bel arbre.
En informatique, nous utiliserons ces désignations pour représenter un arbre mais la représentation sera
inversée : la racine sera placé en haut, il n’y aura pas de tronc mais des nœuds pour faire partir des branches
puis aux extrémités des branches, les feuilles (en bas donc).
Exemple :
Le nombre de branches par nœuds peut être quelconque
et l’arbre peut ne pas être « équilibré » et / ou « complet ».
Pour ce TP, nous nous intéresserons uniquement aux arbres
binaires : une ou deux branches par nœud.
Au niveau le plus élevé, il y a donc un nœud racine. Au niveau directement inférieur, il y a au plus deux
nœuds fils. En continuant à descendre aux niveaux inférieurs, on peut en avoir quatre, puis huit, seize, etc.
c'est-à-dire la suite des puissances de deux. Un nœud n'ayant aucun fils est appelé feuille. Le nombre de
niveaux total, autrement dit la distance entre la feuille la plus éloignée et la racine, est appelé hauteur de
l'arbre. Le niveau d'un nœud est appelé profondeur.
Revenons à notre premier exercice de cette année : « le nombre mystérieux » : découvrir un nombre entre
0 et 100. Nous avons évoqué, pour trouver la solution avec le moins de coup possible, la formulation
suivante :
« Diviser pour mieux régner ».
1- Avec les indications ci-dessous, vous allez représentez l’arbre binaire qui permet de représenter le
nombre de coup pour trouver un nombre mystérieux.
Pour faire simple, vous ne développerez que la branche de gauche de chaque nœud.
Le premier coup étant 50 ( (100 + 0) / 2, diviser pour mieux régner ), la racine de notre arbre sera le nombre
50, de profondeur 1. Ensuite, chaque nœud fils sera défini suivant les équations ci-dessous:
fils gauche
arrondi [ père - ( père / 2 ) ]
et
fils droite
arrondi [ père + ( père / 2 ) ]
2- Avec cette représentation, il est donc possible de définir la hauteur de l’arbre qui permet de trouver
le nombre de coup maximum pour la recherche du nombre mystérieux. Quelle est la hauteur de cet
arbre ?
Terminal S
ARBRES et CODAGES
Informatique
et Systèmes
Numériques
3- Quel est donc le nombre de coup pour trouver les valeurs : 6 ; 75 ; 32 ; 3 .
4- Ici notre arbre n’est pas complet. Donner la valeur de la borne maxi de notre arbre, tout en gardant la
même profondeur.
Le nombre maximum de coup peut être défini par l’équation suivante :
Pour obtenir log2 n :
Nombre de coup maxi entre 0 et n
= log2 n
𝑙𝑜𝑔2 𝑛 =
.
Mais nous en avons déjà parlé
ln 𝑛
ln 2
Passons aux choses sérieuses maintenant.
Le code Morse
L’alphabet Morse ou code Morse, est un code permettant
de transmettre un texte à l’aide de séries d’impulsions
courtes et longues, qu’elles soient produites par des signes,
des impulsions sonores, de la lumière ou des gestes.
Inventé en 1832 pour la télégraphie, ce codage de
caractères assigne à chaque lettre, chiffre et signe de
ponctuation une combinaison unique de signaux
intermittents. Le code Morse est considéré comme le
précurseur des communications numériques.
5- Représentez le code Morse à l’aide d’un arbre binaire. La racine sera représentée par un carré (sans
valeur), chaque branche portera la valeur point (▄) à gauche et trait (▄▄▄) à droite et chaque nœud
(ou feuille) représentera une lettres de l’alphabet suivant son code (ne représentez pas les chiffres
dans l’arbre).
6- Quel est la profondeur de l’arbre ?
7- Quel est le nombre de feuille libre à la plus grande profondeur ?
8- Par le calcul, peut-on retrouvez cette valeur et comment ?
Ouaouuu, c’est trop fort le code Morse !!
CODAGE et DECODAGE de l’information
9- A l’aide du code Morse, codez la séquence « BONJOUR » :
10- Décodez la séquence suivante :
▄▄▄ ▄ ▄▄▄ ▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄ ▄ ▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄ ▄▄▄ ▄ ▄ ▄ ▄ ▄
11- Quelles remarques pouvez-vous faire ?
12- Que manque-t-il à notre séquence pour être décodé ?
13- Décodez maintenant cette séquence :
▄▄▄ ▄ ▄▄▄ ▄
▄▄▄ ▄▄▄ ▄▄▄
▄▄▄ ▄ ▄
▄
▄▄▄ ▄▄▄
▄▄▄ ▄▄▄ ▄▄▄
▄ ▄▄▄ ▄
▄ ▄ ▄
▄
Terminal S
ARBRES et CODAGES
Informatique
et Systèmes
Numériques
Sans intermittence, nous pouvons dire que ce code est ambigu car non-décodable
Il y a des explications un peu plus loin.
Maintenant, définissons un alphabet A tel que : A = { a ; b ; c ; d }
Pour chaque lettre de cet alphabet, il est possible de définir un code binaire tel que :
a=00
b=01
c=10
et
d=11
14- Représenter l’arbre binaire pour cet alphabet :
15- Décoder la séquence suivante :
00110010011110011100100110
16- Par rapport à la question 10, pourquoi pouvez-vous décoder cette séquence ?
Notre alphabet A s’enrichi de trois nouvelles lettres : e ; f ; g tel que : A’ = { a ; b ; c ; d ; e ; f ; g }
17- Représenter deux arbres binaires pour cet alphabet :
- l’un en gardant le même code pour les lettres {a ; b ; c ; d } :  Arbre 1
- l’autre en redéfinissant le code binaire de chaque lettre sur 3 bits :  Arbre 2
18- Après avoir analysé le codage et décodage du code Morse et de l’alphabet A, quel est l’arbre (1 ou 2)
que vous allez privilégier pour cet alphabet A’ et pourquoi ?
19- Pour un ensemble E "alphanumérique" constitué de chiffres (10) et de lettres minuscules et
majuscules (2 x 26). Quelle est la profondeur de l’arbre, chaque lettre ayant le même nombre de bit ?
20- Sur combien de bit sera codé cet ensemble E :
La transmission de l’information peut-être représenté par le graphe suivant :
Terminal S
ARBRES et CODAGES
Informatique
et Systèmes
Numériques
Quelque soit la technologie utilisée (électrique, électronique, fibre optique, etc.) le canal ne laisse passer que
de l’information binaire (des 0 et des 1).
Si nous souhaitons transférer l’ensemble des caractères de la table ASCII (255 caractères) nous devrons
coder chaque caractère sur 8 bits (log2 (255)). Ce n’est pas très satisfaisant car dans les mots de notre langue
française, il y a des lettres qui sont plus utilisées que d’autres, par exemple le « e » et le « z ».
Démarche certainement étudiée par messieurs Samuel Morse et Alfred Vail en 1832.
Nous avons vue précédemment que l’on peut coder un alphabet sur un nombre de bit bien défini. Nous
avons vue aussi que si le nombre de bit varie pour un alphabet, le codage est possible mais le décodage est
impossible, on a évoqué alors que le code est ambigu.
Ah !!! Les explications arrivent.
Définition du code ambigu : considérons la source composée des trois symboles a, b et c. Ses messages
peuvent être n'importe quelle séquence de ces symboles ; par exemple, «aabca» est un message de cette
source. Le codage de cette source est le suivant : a
1b
00 c
11
Le codage est ambigu parce ce que, une fois codés, il n'y a aucun moyen de distinguer le message «aaaa»
du message «cc». En effet, tous deux sont codés «1111».
Pour améliorer la transmission, ne serai-t-il pas judicieux de trouver un code dont la longueur des
bits du codage soit inversement proportionnel aux nombres d’utilisation et que ce codage soit non
ambigu ?
Définition du code non-ambigu : On dit que le code d'une source est non-ambigu si et seulement si chaque
séquence (de longueur finie) de mots de code ne correspond qu'à un seul message de la source.
Le codage de cette source est le suivant : a
10 b
0c
11
On peut montrer que ce code est non-ambigu. Par exemple, la séquence «101100» se décode «acbb» et la
séquence «1101011» se décode «cbac».
Dans ce cas, il faut que la séquence soit de longueur finie.
21- représentez l’arbre binaire de cette source non ambigu :
Pour ce dernier exercice, vous allez concevoir un arbre binaire pour l’alphabet A’ = { a ; b ; c ; d ; e ; f ; g }
tel que le décodage soit non ambigu pour une longueur de séquence finie.
Remarque : nous ne tiendrons pas compte ici de la probabilité de sortie de chaque lettre.
22- Ecrivez un arbre binaire non ambigu pour l’alphabet A’ :
Remarque : cet arbre n’est pas équilibré (c'est-à-dire non centré sur la racine) et de plus, il est
incomplet (il y a des feuilles à chaque profondeur).
Il est bien évidement possible de coder et décoder un alphabet avec des longueurs de bit variables et des
séquences non finies ……. mais cela est une autre histoire.
Téléchargement