Dictionnaire optimise

Description

/// <summary>
/// Edité par Diallo Apha
/// aokdiallo@hotmail.com
/// Version du 13 Mars 2008
///
/// Cette Classe est L'implementation economique en memoire et en performace d'un dictionnaire.
/// En effet dans plusieurs applications telque les jeux de mots ou les editeurs de texte on a besoin d'un dictionnaire.
///
/// A -> Une premiere approche facile :
///
/// est de stocker dans un fichier tous les mots du dictionnaire.
/// Les problemes de cette approche sont :
/// 1 ->
/// la taille du fichier sera enorme
/// 2 ->
/// la recherche d'un mot est tres couteuse car à chaque fois il faut ouvrir le fichier et le parcourir en comparant à chaque fois le mot lut
/// avec le mot cherché.
///
/// B ->
/// Approche utiliséé dans ce projet :
///
/// le dictionnaire est une liste de noeuds.
/// chaque noeud represente une lettre et possede un lien ver d'autres noeuds
/// je m'explique :
/// par exemple le mot "AN" correspond au noeud('A') qui pointe vers le noeud ('N')qui à son tour pointe vers le noeud('\0')
/// '\0' representant le caractere de fin de mot.
/// là ou ça devient interessant c'est quand par exemple on veut ajouter les mots "ANE" et "ANES" dans le dico :
///
/// dans le cas de la premiere approche on aurait simplement ajouté ANE et ANES dans le fichier ce qui fait pour "AN" et "ANE" et "ANES" 9 caracteres.
///
/// dans la deuxieme approche on a deja le mot "AN" dans le dico donc il suffit de faire pointer le noeud (N) vers un nouveau noeud(E) puis
/// faire pointer le noeud (E) vers un nouveau noeud(\0) pour ANE.
/// ensuite
/// faire pointer le noeud (E) vers un nouveau noeud(S)
/// puis
/// faire pointer le noeud (S) vers un nouveau noeud(\0) pour ANES.
/// au final on a que 7 noeuds.
/// Voire la figure ci dessous :
/// A
/// |
/// \0<-N->E->\0
/// |
/// S->\0
/// mais le plus interessant à remarquer est que :
/// pour passer de An à ANE puis ANES on a rajouté 7 caracteres avec la premiere approche alors
/// qu'avec la deuxieme on n'en n'a rajouté que 4
/// on voit donc que le fait de reutiliser les lettres deja presentes nous fait enormement gagner en place memoire.
///
/// Ensuite pour verifier l'existance d'un mot avec la deuxieme approche c'est tres rapide
/// car on sais facilement trouver le noeud de la premiere lettre
/// du mot cherché.
/// à partir de là il suffit de tester les noeuds suivants en comparant les lettres avec celles du mot.
///
/// </summary>

Source / Exemple :


//dans le zip

Conclusion :


s'il il existe d'autres façons plus efficaces d'implementer un dictionnaire
Je suis preneur.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.