GNT sans publicité, site mobile, fonctionnalitées exclusives...

[Semi débutant] Arbre de chaines

Le
Nicolas Cherel
Bonjour,

J'aurais besoin de créer un dictionnaire sous forme d'arbre
du style :
aux //aux
| |-tant //autant
|-imé //aimé
| | |-e //aime
| |-e //aie
|-près //après

Cela me permettrait de faire des recherche de correspondances rapides.
(je voudrais éviter de faire la correspondance sur de nombreux mots
commançant pareil)

Cela a t'il déjà implémenté ?
Y a t'il une structure de donnée de l'API qui me permettrait de faire ca
facilement ?

Merci d'avance
Lire les 3 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Nico
Le #182944
Salut,

pourquoi ne pas simplement utiliser un HashSet ou HashMap, avec le mot comme
clé ?
Ca ira sans doute plus vite qu'un arbre en performances et y a rien a coder.


"Nicolas Cherel" news:422632af$0$32270$
Bonjour,

J'aurais besoin de créer un dictionnaire sous forme d'arbre
du style :
a---u---x //aux
| |-t---a---n---t //autant
|-i---m---é //aimé
| | |-e //aime
| |-e //aie
|-p---r---è---s //après

Cela me permettrait de faire des recherche de correspondances rapides.
(je voudrais éviter de faire la correspondance sur de nombreux mots
commançant pareil)

Cela a t'il déjà implémenté ?
Y a t'il une structure de donnée de l'API qui me permettrait de faire ca
facilement ?

Merci d'avance


Vincent Lascaux
Le #184113
J'aurais besoin de créer un dictionnaire sous forme d'arbre
du style :
a---u---x //aux
| |-t---a---n---t //autant
|-i---m---é //aimé
| | |-e //aime
| |-e //aie
|-p---r---è---s //après

Cela me permettrait de faire des recherche de correspondances rapides.
(je voudrais éviter de faire la correspondance sur de nombreux mots
commançant pareil)


Si le but est d'obtenir une liste des mots ayant un certain préfixe, il
serait surement moins gourmand en mémoire et plus performant de garder un
tableau trié des mots et d'effectuer deux recherches binaires :
- Le plus grand index i tel que mots[i] < prefixe
- Le plus petit index i tel que prefixe < mots[i]
L'opérateur < utilisé étant une comparaison lexicographique en se limitant à
la taille du plus petit des mots.
L'ensemble des mots ayant le préfixe est entre les deux indexes.

Programmer ca ne devrait pas être très compliqué (ArrayList, sort, je pense
qu'il faut faire l'algo de recherche binaire à la main par contre)

--
Vincent

Nicolas Cherel
Le #184104
Vincent Lascaux wrote:
J'aurais besoin de créer un dictionnaire sous forme d'arbre
du style :
a---u---x //aux
| |-t---a---n---t //autant
|-i---m---é //aimé
| | |-e //aime
| |-e //aie
|-p---r---è---s //après

Cela me permettrait de faire des recherche de correspondances rapides.
(je voudrais éviter de faire la correspondance sur de nombreux mots
commançant pareil)



Si le but est d'obtenir une liste des mots ayant un certain préfixe, il
serait surement moins gourmand en mémoire et plus performant de garder un
tableau trié des mots et d'effectuer deux recherches binaires :
- Le plus grand index i tel que mots[i] < prefixe
- Le plus petit index i tel que prefixe < mots[i]
L'opérateur < utilisé étant une comparaison lexicographique en se limitant à
la taille du plus petit des mots.
L'ensemble des mots ayant le préfixe est entre les deux indexes.

Programmer ca ne devrait pas être très compliqué (ArrayList, sort, je pense
qu'il faut faire l'algo de recherche binaire à la main par contre)



Bien vu, et merci, je n'y avait pas pensé...


Publicité
Suivre les réponses
Poster une réponse
Anonyme