Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2724 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  hash

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

hash

n°517783
os2
Posté le 19-09-2003 à 00:17:01  profilanswer
 

salut
 
quel est la meilleur méthode pour la gestion des collisions dans un hash table, il me faut la plus performante... (j'utilise des tableau)
 
merci


---------------
Borland rulez: http://pages.infinit.net/borland
mood
Publicité
Posté le 19-09-2003 à 00:17:01  profilanswer
 

n°517823
Taz
bisounours-codeur
Posté le 19-09-2003 à 04:44:00  profilanswer
 

la plus performante en terme de quoi ?

n°518017
jagstang
Pa Capona ಠ_ಠ
Posté le 19-09-2003 à 10:40:10  profilanswer
 

Tout dépend de la taille de la table... Si tu as un tableau de 100 et que tu dois y mettres 10 données, les collisions seront plutôt rares..
 
à l'inverse, 1000 infos dans un tableau de 100 généreront beaucoup de collisions.
 
 
 
Voici quelques trucs que j'avais noté à ce sujet :
HACAHGE OUVERT (avec file)
==============
Type de hachage ouvert, cas d'école (données RAM et pas sur HD
|0 ---> Nicolas ---> Marc
|1
|2 ---> Igor
 
Les collisions sont simplement enfilées à la suite les une des autres.
 
HACHAGE OUVERT
==============
Dans la pratique, on utilise des index de taille au minimum 20% plus grande
que le taille des enregistrement, pour empêcher les collisions. il n'y a alors
plus de files. lorsque qu'une case est prise, on la place dans la suivante,
jusqu'à qu'on trouve un "blanc" (voilà pourquoi les 20% supplémentaire)
 
HACHAGE FERME (avec réserve)
============================
le tableau contient l'information, + un pointeur (mémoire ou physique)
En cas de collision (Fanfan --> Lea) on mets Fanfan dans la réserve et on pointe
Jean vers cet endroit de la réserve. En cas de double collision (Lea) on continue
de pointer
 
=============
|0 Jean(0)     | xx
|              |
|2 Zoe(2)      | NULL
|              |
|¬¬¬¬¬¬¬¬¬¬¬¬¬¬|
|xx Fanfan(0)  |  xy
|xy Lea(0)     |  NULL
|xz            |

n°518018
Taz
bisounours-codeur
Posté le 19-09-2003 à 10:41:46  profilanswer
 

tout dépend surtout de si tu veux avoir la possibilité de faire des suppressions

n°518023
jagstang
Pa Capona ಠ_ಠ
Posté le 19-09-2003 à 10:44:54  profilanswer
 

C'est clair qu'avec les files les suppressions deviennent lourdes à gérer. quoique

n°518027
Taz
bisounours-codeur
Posté le 19-09-2003 à 10:48:33  profilanswer
 

JagStang a écrit :

C'est clair qu'avec les files les suppressions deviennent lourdes à gérer. quoique

euh par rapport un truc sans file, je dis non

n°518035
schnapsman​n
Zaford Beeblefect
Posté le 19-09-2003 à 10:58:02  profilanswer
 

os2 a écrit :

salut
 
quel est la meilleur méthode pour la gestion des collisions dans un hash table, il me faut la plus performante... (j'utilise des tableau)
 
merci  


 
hachage ouvert, avec une taille étant un nombre premier suffisament grand pour le nombre d'éléments à stoquer, avec une fonction de hachage qui a une bonne répartition pour le type d'éléments stoqués [:aloy]


Message édité par schnapsmann le 19-09-2003 à 10:58:47

---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°518103
jagstang
Pa Capona ಠ_ಠ
Posté le 19-09-2003 à 11:48:12  profilanswer
 

Taz a écrit :

euh par rapport un truc sans file, je dis non


 
Oui c'est vrai. Les files c'est pas plus mal pour les suppressions tout compte fait  :)

n°523680
os2
Posté le 26-09-2003 à 04:59:08  profilanswer
 

SchnapsMann a écrit :


 
hachage ouvert, avec une taille étant un nombre premier suffisament grand pour le nombre d'éléments à stoquer, avec une fonction de hachage qui a une bonne répartition pour le type d'éléments stoqués [:aloy]


 
tu as un algo de cette technique?


---------------
Borland rulez: http://pages.infinit.net/borland
n°523715
jagstang
Pa Capona ಠ_ಠ
Posté le 26-09-2003 à 09:04:56  profilanswer
 

euh oui, donne moi ton mail en pv

mood
Publicité
Posté le 26-09-2003 à 09:04:56  profilanswer
 

n°641215
K-Surf
undercover
Posté le 13-02-2004 à 02:37:04  profilanswer
 


:hello: Hello @ tous,
 
J'ai un tableau qui doit gérer 1000 clients (Nom,Prénom:STRING(30 char. max))
 
est-il possible de faire une table hash sans collision ? :??:
si oui, connaissez-vous la formule coresspondante ?
 
svp, Merci :jap:
 
 

n°641217
nraynaud
lol
Posté le 13-02-2004 à 03:02:38  profilanswer
 

os2 a écrit :

tu as un algo de cette technique?

Knuth, "The art of computer programming" tu as dedans les critères pour choisir la taille du tableau et comment calculer cette taille.


---------------
trainoo.com, c'est fini
n°641919
K-Surf
undercover
Posté le 13-02-2004 à 14:43:52  profilanswer
 

K-Surf a écrit :


:hello: Hello @ tous,
 
J'ai un tableau qui doit gérer 1000 clients (Nom,Prénom:STRING(30 char. max))
 
est-il possible de faire une table hash sans collision ? :??:
si oui, connaissez-vous la formule coresspondante ?
 
svp, Merci :jap:
 
 
 


 
 [:atreyu]  
 


Message édité par K-Surf le 13-02-2004 à 14:44:01
n°641924
nraynaud
lol
Posté le 13-02-2004 à 14:49:30  profilanswer
 

K-Surf a écrit :


 
 [:atreyu]  
 
 

pour toute serie de données connues à l'avance, il existe une fonction de hachage parfaite, c'est un théorème.


---------------
trainoo.com, c'est fini
n°641940
K-Surf
undercover
Posté le 13-02-2004 à 14:54:05  profilanswer
 

nraynaud a écrit :

pour toute serie de données connues à l'avance, il existe une fonction de hachage parfaite, c'est un théorème.


 
huh  :??:  
 
théorème de qui ? de quoi ?  :??:  
 
 
Désolé, je suis un newb'  [:aurelie22]  :whistle:  
 

n°641947
nraynaud
lol
Posté le 13-02-2004 à 14:56:18  profilanswer
 

K-Surf a écrit :


théorème de qui ? de quoi ?  :??:  

qui dit que la réponse est oui. Par contre, j'ai pas l'algo sous la main.
 
De qui, j'ai ai aucune idée. Il est aussi dans le Knuth.


---------------
trainoo.com, c'est fini
n°649209
K-Surf
undercover
Posté le 20-02-2004 à 02:46:27  profilanswer
 

nraynaud a écrit :

qui dit que la réponse est oui. Par contre, j'ai pas l'algo sous la main.
 
De qui, j'ai ai aucune idée. Il est aussi dans le Knuth.


 
tu penses que tu arrivais à le retrouver svp ?  :??:  :jap:  
 
 [:atreyu] pour les autres, on s'est jamais.... :whistle:  
 
 

n°649646
nraynaud
lol
Posté le 20-02-2004 à 12:36:28  profilanswer
 

K-Surf a écrit :

tu penses que tu arrivais à le retrouver svp ?  :??:  :jap:

non
1) je suis dans le trou-du-cul de l'Allemagne
2) j'ai pas de bibliothèque sous la main


---------------
trainoo.com, c'est fini
n°798775
K-Surf
undercover
Posté le 18-07-2004 à 03:42:44  profilanswer
 


je passais dans la section comme ça:
 
enfaite chuis aller jeter un coup d'oeil dans le Knuth, la section HASH se trouve dans le 2ème volume, si je me rappelle bien,
bref j'ai rien capter à ce livre pour matheux anglophone, y'a de ces formules de ouf :ouch:  
 

n°800567
pospos
Posté le 20-07-2004 à 12:20:27  profilanswer
 

beaucoup de choses tres interessantes sur le sujet sur le site de Bob Jenkins:
 
http://burtleburtle.net/bob/
 
(mais le site à l'air out en ce moment)

n°800825
Giz
Posté le 20-07-2004 à 15:26:11  profilanswer
 

K-Surf a écrit :

:hello: Hello @ tous,
 
J'ai un tableau qui doit gérer 1000 clients (Nom,Prénom:STRING(30 char. max))
 
est-il possible de faire une table hash sans collision ? :??:
si oui, connaissez-vous la formule coresspondante ?
 
svp, Merci :jap:


 
C'est simple, pour cela tu associes un integer i pour le client i...un integer i+1 pour le client i+1. Tu alloues un tableau de taille 1000. L'integer associe au client correspond a la case du tableau.
 
PS : si tu veux etre SUR de ne pas avoir de collision dans une table de hash, il te faut au MINIMUM un tableau de taille egal au nombre de donnees que tu veux y mettre...cela va de soi  ;)


Message édité par Giz le 20-07-2004 à 15:26:54

---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
n°800849
jagstang
Pa Capona ಠ_ಠ
Posté le 20-07-2004 à 15:42:25  profilanswer
 

Giz a écrit :

C'est simple, pour cela tu associes un integer i pour le client i...un integer i+1 pour le client i+1. Tu alloues un tableau de taille 1000. L'integer associe au client correspond a la case du tableau.
 
PS : si tu veux etre SUR de ne pas avoir de collision dans une table de hash, il te faut au MINIMUM un tableau de taille egal au nombre de donnees que tu veux y mettre...cela va de soi  ;)


pas nécessairement. car deux éléments peuvent avoir le même hash...


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°800863
K-Surf
undercover
Posté le 20-07-2004 à 15:52:16  profilanswer
 


ça fait longtemps que je ne me suis pas remis sur le programme( :o donc j'ai pas encore tout ma tête, excusez-moi si je dis des bêtises :jap:)
 
donc ta solution Griz: serait exemple lors du recherche d'un client dans le tableau que je le recherche par son numéro integer i ?
 
paske l'avantage du hash, c'est de pouvoir définir un clé *si possible* unique qui coressponderait à une case(index) du tableau(bon bien sur en ayant une taille de tableau assez "modéré"...) donc si je veux faire une recherche par nom sans vouloir parcourir tous le tableau je fais comment avec l'histoire du integer i ??? :??:
 

n°800872
jagstang
Pa Capona ಠ_ಠ
Posté le 20-07-2004 à 15:59:45  profilanswer
 

unique non. la plus unique possible oui. relis ma première intervention


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°800873
Giz
Posté le 20-07-2004 à 16:00:12  profilanswer
 

K-Surf a écrit :

ça fait longtemps que je ne me suis pas remis sur le programme( :o donc j'ai pas encore tout ma tête, excusez-moi si je dis des bêtises :jap:)
 
donc ta solution Griz: serait exemple lors du recherche d'un client dans le tableau que je le recherche par son numéro integer i ?
 
paske l'avantage du hash, c'est de pouvoir définir un clé *si possible* unique qui coressponderait à une case(index) du tableau(bon bien sur en ayant une taille de tableau assez "modéré"...) donc si je veux faire une recherche par nom sans vouloir parcourir tous le tableau je fais comment avec l'histoire du integer i ??? :??:


 
c tout con, la personne est stockee a l'indice i du tableau. Indice associe a la personne (en plus de son nom, prenom,etc..)


---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
n°800875
Giz
Posté le 20-07-2004 à 16:01:34  profilanswer
 

JagStang a écrit :

pas nécessairement. car deux éléments peuvent avoir le même hash...


 
ma solution ne fait intervenir AUCUN hashcode hein !!!  :o


Message édité par Giz le 20-07-2004 à 16:01:57

---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
n°800878
K-Surf
undercover
Posté le 20-07-2004 à 16:04:41  profilanswer
 

JagStang a écrit :

unique non. la plus unique possible oui. relis ma première intervention


 
selon Knuth ou nraynaud, il parait que oui c'est possible (ça m'étonne aussi, m'enfin les math c'est puissant lol)
 

n°800880
K-Surf
undercover
Posté le 20-07-2004 à 16:05:42  profilanswer
 

Giz a écrit :

c tout con, la personne est stockee a l'indice i du tableau. Indice associe a la personne (en plus de son nom, prenom,etc..)


 
et pour faire une recherche d'une personne tu fais comment ?  :heink:  :??:  
 

n°800881
jagstang
Pa Capona ಠ_ಠ
Posté le 20-07-2004 à 16:06:14  profilanswer
 

et pourtant, c'est bien le titre du topic... --> HS


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°800882
jagstang
Pa Capona ಠ_ಠ
Posté le 20-07-2004 à 16:06:45  profilanswer
 

K-Surf a écrit :

et pour faire une recherche d'une personne tu fais comment ?  :heink:  :??:


bonne question  [:kenshirooo]


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°800884
Giz
Posté le 20-07-2004 à 16:08:06  profilanswer
 

K-Surf a écrit :

et pour faire une recherche d'une personne tu fais comment ?  :heink:  :??:


 
et ben tu as son integer associe. On te donnes le pointeur sur la personne et voila


---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
n°800885
jagstang
Pa Capona ಠ_ಠ
Posté le 20-07-2004 à 16:08:26  profilanswer
 

K-Surf a écrit :

selon Knuth ou nraynaud, il parait que oui c'est possible (ça m'étonne aussi, m'enfin les math c'est puissant lol)


je suis pas d'accord. moi place ces éléments dans un tableau de hash de longueur n (n =10)
 
"Marc"
"Nicolas"
"Marc"
 
en tout logique les marc vont se trouver ensemble... (sinon ton algo de hash est inutilisable pour les retrouver) et pourtant tu as encore le triple de l'espace et déjà des collisions


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°800887
jagstang
Pa Capona ಠ_ಠ
Posté le 20-07-2004 à 16:09:05  profilanswer
 

Giz a écrit :

et ben tu as son integer associe. On te donnes le pointeur sur la personne et voila


et... le pointeur associé tu l'obtiens comment ? je crois que tu n'as pas vraiment compris à quoi sert une table de hachage toi  :heink:


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°800888
Giz
Posté le 20-07-2004 à 16:09:14  profilanswer
 

JagStang a écrit :

et pourtant, c'est bien le titre du topic... --> HS


 
Les tableaux et les tables de hach c tres proche hein  :o


---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
n°800892
K-Surf
undercover
Posté le 20-07-2004 à 16:12:05  profilanswer
 

JagStang a écrit :

je suis pas d'accord. moi place ces éléments dans un tableau de hash de longueur n (n =10)
 
"Marc"
"Nicolas"
"Marc"
 
en tout logique les marc vont se trouver ensemble... (sinon ton algo de hash est inutilisable pour les retrouver) et pourtant tu as encore le triple de l'espace et déjà des collisions


 
oui c'est sur que si tu tombes 2 fois sur le meme prénom... :/
 
m'enfin avec le nom ET le prénom, c'est faisable ??? (bien sur il faut absolument que dans le monde il y'aurait qu'une seul personne ayant le meme nom de famille et le meme prénom)
 


Message édité par K-Surf le 20-07-2004 à 16:18:05
n°800893
Giz
Posté le 20-07-2004 à 16:13:35  profilanswer
 

JagStang a écrit :

et... le pointeur associé tu l'obtiens comment ? je crois que tu n'as pas vraiment compris à quoi sert une table de hachage toi  :heink:


 
ben je sais pas, moi j'imagine une structure de donnee (bon jse pas si c exactement pareil en bdd) :
 
struct personne i
{
 int placedsletableau
 char *nom
 char *prenom
}
 
fonction personne chercherpersonne (int placedsletableau)
{
 retourner tableau[placedsletableau]
}
 
void main ()
{
 personne pers = {0, "Jean", "Dupond"};
 chercherpersonne (pers.placedsletableau)
}
 
 
un truc comme ca koi...ca me pareil un peu facile, kkchose m'echappe sinon dans ce que tu ve faire exactement :/
}


---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
n°800898
K-Surf
undercover
Posté le 20-07-2004 à 16:14:59  profilanswer
 

Giz a écrit :

et ben tu as son integer associe. On te donnes le pointeur sur la personne et voila


 
je ne sais pas si tu as saisi l'avantage du hash ou si c'est moi qui capte vraiment pas ce que tu essaie de m'expliquer...
 
exemple concret: je veux faire une recherche par NOM uniquement, en tappant uniquement le nom comment je peux faire pour retrouver ton integer i sans à avoir parcourir tous le tableau ????
 
EDIT: GRILLED


Message édité par K-Surf le 20-07-2004 à 16:16:46
n°800903
Giz
Posté le 20-07-2004 à 16:19:57  profilanswer
 

K-Surf a écrit :

je ne sais pas si tu as saisi l'avantage du hash ou si c'est moi qui capte vraiment pas ce que tu essaie de m'expliquer...
 
exemple concret: je veux faire une recherche par NOM uniquement, en tappant uniquement le nom comment je peux faire pour retrouver ton integer i sans à avoir parcourir tous le tableau ????


 
Ha tres bien, ca s'eclairci pour moi ;)...donc du coup effectivement, tu es oblige de passer par du hashCode :/
Suffit d'appliquer une formule magique de hashCode sur les strings...mais evidemment la, tu n'est plus sur de ne pas avoir de collisions :/
Passer un integer t'aurais garanti l'unicite au lieu de passer par le nom :/
 
EDIT : ou alors, tu alloues un TRES TRES grand tableau, et la tu as plus de chances de ne pas avoir de collisions


Message édité par Giz le 20-07-2004 à 16:28:46

---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
n°803278
pospos
Posté le 22-07-2004 à 15:29:20  profilanswer
 

pospos a écrit :

beaucoup de choses tres interessantes sur le sujet sur le site de Bob Jenkins:
 
http://burtleburtle.net/bob/
 
(mais le site à l'air out en ce moment)


 
ca yest le lien remarche
 
je vous conseil vraiment d'aller le voir!

n°805599
K-Surf
undercover
Posté le 25-07-2004 à 05:49:00  profilanswer
 

pospos a écrit :

ca yest le lien remarche
 
je vous conseil vraiment d'aller le voir!


 
Merci beaucoup  :jap:  
 
 [:k-surf] http://burtleburtle.net/bob/hash/perfect.html
 
mais pour te dire la vérité: je capte vraiment Q U E D A L   :cry:  :sweat:  
 
si qqun aurait la bonté de nous expliqué un tout ptit peu svp  :jap:  
 
 :ange:  
 

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  hash

 

Sujets relatifs
[STL] SGI et leur extension hash_* : coup de gueule et solutions[Perl] Hash et cgi
Hash d'un string[crypto] En quoi ça consiste exactement la technique du hash ?
Passer des HASH TABLE de scripts CGI en scripts CGI[Perl] itérer sur les valeurs d'un tableau de hash de hash...
[PERL] Nombre d'élément d'un hashPerl : Array dans un Hash...
Plus de sujets relatifs à : hash


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)