TABLE DE HASHAGE [TS ENVTS]

cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008 - 13 août 2004 à 12:21
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011 - 8 sept. 2009 à 16:11
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/25352-table-de-hashage-ts-envts

magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
8 sept. 2009 à 16:11
rien à voir avec cette source,
mais il suffit de savoir/repérer quelles libs sont utilisées et de les inclure avec ta distribution d'exécutable (voire même au mieux avoir un petit "installeur")
cs_mouradinfo Messages postés 3 Date d'inscription lundi 4 février 2008 Statut Membre Dernière intervention 13 juillet 2008
16 juin 2008 à 19:50
j'ai un broblem que les programme en builder marche suelment sur des pc où le builder c++ installer.
cs_mouradinfo Messages postés 3 Date d'inscription lundi 4 février 2008 Statut Membre Dernière intervention 13 juillet 2008
16 juin 2008 à 19:46
continu
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
17 août 2004 à 16:37
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
17 août 2004 à 14:47
si fait.
Un des param a l'init est une fonction critere

j'aurai pu le faire ici mais cela n'étais pas nécessaire pour la seule utilisation actuelle.

tu as tt compris! (sauf que chaque case est une liste... mé C bon maintenant)

cela viendra peut-etre.
cependant, il faut faire attention au prototype de cette fonction qui devra etre général

(au fait, pensez à mettre une note à cette srce)

[on poursuit cette discut ds ma prochaine qui présentera une version un peu plus évoluée srce OK]

++
Nono.
Utilisateur anonyme
17 août 2004 à 14:27
Aaaaaaaaah
D'accord.
C'est hashement plus clair ;-p
Ben je connaissais ce principe mais pas sous ce nom.
D'ailleurs on avait pas donner de noms.
Je pourrais faire l'intello en cours :-p

En gros ton critère s'éffectue sur un nombre que l'on peut associé à toute chaine. Par exemple f("Salut !") vaut 23 alors on range cette phrase dans la "case" 23...
La bibliothèque map ne permet pas d'associer un critère quelconque (grâce notamment aux pointeurs de fonctions) ???
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
17 août 2004 à 09:16
nan, je parlais de l'operateur d'égalité de BString
alors, ça change tt !!!

le critere ici est : la somme des 10 derniers caractères de la clef, (valeurs ASCII) et ensuite, un modulo du nombre de fragment est effectué.
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
17 août 2004 à 09:13
ben tu viens de reciter les deux que j'ai énoncés, alors je vois pas en quoi ce que j'ai dit est pas aussi rapide que toi ... ?
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
17 août 2004 à 08:56
ui, C ça, tu as cité deux criteres de hashage
mais, et de loin, pas les plus efficaces... (enfin, évidemment, ça dépend tjs des données...)

perso la premiere verif que je fais pr l'égalité est la longueur de la chaine dc....
puis après, C du car par car, par ordre croissant


++
Nono.
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
17 août 2004 à 08:32
est-ce que en qq sortes ça s'organise comme un arbre qui regrouperait (ds le cas des chaînes) les clefs commençant par J dans une liste, les clefs commençait par N (pour notre père lol, restons ds la série) ds une autre liste, et qui qd on demande une chaine associée à une clef effectue qq testes simples (du genre lire le premier caractère, puis le second éventuellement si c'est plus ramifié) pour réduire les chaînes à comparer au final?

j'imagine qu'on pourrait aussi envisager de créer des listes en fct de la longueur de la clef, par exemple toutes les clefs de 4 caractères, toutes celles de 5, etc...

je suis ds le bon?
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
16 août 2004 à 20:46
teleTubiz>
je n'ai peut-etre pas ete assez explicite effectivement
ceci n'a rien a voir avec le criptage md5

De plus, etre plus précis n'a rien a voir avec une perte de tps, C très bien de poser les question pour nous faire préciser ce qui nous semble évident.
Les bibliothèques que je produit dans ces pages sont ce que j'aurai aimé trouver sur le web il y a quelques années lorsque je me suis lancé en programmation

pour ce qui est de MétaProg, il génère une documentation technique pour l'utilisation et la maintenance du code, effectivement, je n'ai pas détaillé le fonctionnement...

une table de hashage est en fait une façon de stocker des données et de les retrouver rapidement.
Elle est constituée en fait d'un nombre quelconque de sous listes (idéalement conteannt chacune quelques éléments.)

cad, au lieu de les stocker dans une grande liste et de perdre du temps à les rechercher à chaque fois,
un critère (dit critère de hashage) nous permet de déterminer rapidement à quel groupe elle appartient.
et nous pouvons ainsi la chercher dans une liste plus courte.


ici, nous sommes dans le cas, de doublets clef/donnée étant des chaines de caracteres.
cad à un mot on associe une phrase
ex: "JVSM"->"Je vous Salue Marie, pleine de grâce ..."

lorsque l'on demande ce qui est associé à la clef "JVSM" et cela nous retourne le salut de l'Ange Gabriel (gardien des clefs lol)

donc, en définitive, une table de hashage est une base de donnée (relativement) rapide.

Magicalement et n'hésitez pas à demander des précisions...

Nono.
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
13 août 2004 à 12:50
oui, je pense que tu fait référence au hash_map des stl sauf qu'ici,

je l'ai rendu spécifique à un doublet : clef/données
étant des chaines de car
mais c'est facilement modifiable

en fait, je voulais utiliser les stl au départ mais impossible de les faire fonctionner sur ma station

plus d'info ds ce post :
http://www.cppfrance.com/forum.v2.aspx?ID=274647

++ [red]l'informagicien/red
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
13 août 2004 à 12:43
aaah, comme l'en-tête <map> de la STL ?
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
13 août 2004 à 12:43
j'ai écrit une réponse pdt 20 min, c'était très long, et qd j'ai appuyé sur envoyer, j'ai eu le message: veuillez introduire votre message, et puis plus mon message..... je sais pas si c'est Internet Explorer (shame on me ...) ou CodeS-SourceS qui a fait la blague, mais j'ai pas le courage ni l'envie de tout retaper :(

en gros, j'expliquais qu'un hash, c'est censé servir d'"emprunte" pour des données, que c'est nécessairement court, sensible aux données de départ et intrinsèquement irréversible. alors je comprends pas trop par rapport à ce code :/ tu pourrais expliquer plus en détails ce qu'il fait exactement et son utilité? (stp ^^)

vala, je râle pr mon message :( c t plus précis que ça :(
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
13 août 2004 à 12:41
nan, rien à voir avec du hash md5, il s'agit d'une table de hashage: cad comme une liste sauf que C bien plus rapide et que les clefs peuvent etre des chaines.
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
13 août 2004 à 12:25
Kiru> tu hash 1 Mo en combien de ms ? ?????

Dslé, G po épuré la doc générée automatiquement par MétaProg....

ce hash n'est pas dynamique, tu initialise au départ le nb de liste (fragments) que tu veux.

et c'et totalement réversible !
Il suffit de rassembler toutes les listes en une seule.
Rejoignez-nous