Structure de données récursives : une structure de type dictionnaire
Introduction
![]() |
À lire absolument, avant de commencer l'exercice |
Nous nous proposons ici de créer une structure de données permettant de contenir un dictionnaire, c'est-à-dire tout simplement une liste de mots. Si nous ouvrons un dictionnaire nous observons une liste[1] telle que :
- A, subst. masc. : ... définition
- À, prép, : ... définition
- AALÉNIEN, IENNE, adj. et subst. masc. : ... définition
- AB-, préf. : ... définition
- ABA, subst. masc. : ... définition
- ABACA, subst. masc. : ... définition
- ... ainsi de suite
- ZYMOTIQUE, adj. : ... définition
- ZYTHUM, subst. masc. : ... définition
- ZZZ, onomat. : ... définition
Dans cet exercice, nous nous limiterons uniquement aux vedettes (le mot dont la définition est donnée à la suite, une entrée du dictionnaire), sans conserver ni leurs genres, ni leurs définitions, ni leur casse (tous les mots seront écris en minuscules). Un tel lexique pourra être tiré du dictionnaire mis à disposition par le CNAMCNAM. Il comprend 251307 mots différents (~2,6 Mo, ce qui fait une moyenne 9.8 caractères par mot).
Un tel lexique peut être stocké dans un tableau à 251307 entrées (une par mot) ou dans une liste chaînée de mots. Mais en y regardant de plus près, on remarque que des mots consécutifs dans le lexique trié ont souvent un préfixe commun :
- INAPPARENT
- INAPPÉTENCE
- INAPPLICABLE
- INAPPLICATION
- INAPPLIQUÉ
- INAPPRÉCIABLE
- INAPPRÉCIÉ
- INAPPRÊTÉ
- INAPPRIVOISABLE
- INAPPRIVOISÉ
- INAPPROCHABLE
Il est tentant de factoriser les préfixe INAPP sur toute cette liste :
- INAPP
- ARENT
- ÉTENCE
- LICABLE
- LICATION
- LIQUÉ
- RÉCIABLE
- RÉCIÉ
- RÊTÉ
- RIVOISABLE
- RIVOISÉ
- ROCHABLE
On peut réitérer le procédé dans la sous-liste
- LICABLE
- LICATION
- LIQUÉ
pour la transformer en
- LI
- CABLE
- CATION
- QUÉ
- LI
Si on poursuit à plus soif on obtient à partir de la première liste des INAPP
- INAPP
- ARENT
- ÉTENCE
- LI
- CA
- BLE
- TION
- QUÉ
- CA
- RÉ
- CI
- ABLE
- É
- CI
- RÊTÉ
- RIVOISA
- BLE
- SÉ
- ROCHABLE
On reconnaît là la naissance d'une structure arborescente. Mais il subsiste un petit problème, celui d'un mot entièrement contenu dans un autre. Considérons la liste
- BAL
- BALS
- BALLE
- BALLES
La construction nous conduit à
- BAL
- S
- LE
- S
Pour simplifier les choses, nous ajoutons à la fin de chaque mot un marqueur de fin de mot qui sera noté , celà nous conduit à quelque chose comme :
- BAL
- =bal
- S =bals
- LE
- =balle
- S =balles
Arbre n-aire
Transformer un arbre n-aire en arbre binaire
Question de point de vue
Arbre binaire
Le dictionnaire sous forme arbre binaire
Notes
- ↑ tirée du TLF : le trésor de la langue française informatisé