mica a écrit 6 commentaires

  • [^] # Re: la fonction de hash de Daniel J. Bernstein...

    Posté par  . En réponse au message fonction de hashage de chaine de characteres. Évalué à 1.

    Merci!!
    DJB est exactement la fonction que je voulait utiliser, mais je n'avais pas pense a l'exponentiation rapide.
  • [^] # Re: facile

    Posté par  . En réponse au message fonction de hashage de chaine de characteres. Évalué à 2.

    Ca marche, c'est vrai mais c'est une tres mauvaise fonction de hachage.
  • [^] # Re: modulo

    Posté par  . En réponse au message fonction de hashage de chaine de characteres. Évalué à 1.

    Je suis en train d'ecrire un parseur qui separe tout les mots d'un flux.
    Donc a chaque espace, je cree un token qui contient le dernier mot.

    Je pourais faire un malloc puis strcpy du mot a chaque fois que je tombe sur un espace et considerer ca comme un token, mais je prefere calculer un hash puisque je n'ai pas besoin du mot en temps que tel, j'ai juste besoin d'etre capable de savoir si il est egal a un autre mot.

    Ensuite j'ai besoin de comparer une concatenation de mots avec une autre.

    Utiliser une librairie qui gere les grand nombre va de toute facon faire des malloc dans mon dos.
    L'idee c'est d'avoir un truc tres rapide et pas gourmant en memoire.
    Le tout est de trouver la bonne fonction de hash.
  • [^] # Re: modulo

    Posté par  . En réponse au message fonction de hashage de chaine de characteres. Évalué à 2.

    Ah je viens de comprendre ton idee: la valeur de hash serait l'interpretation en int de la concatenation de tout les bits des chars qui forme la chaine.
    Dans ce cas la, il me semble beaucoup plus econome en temps de calcule d'utiliser un hash sur la chaine comme djb2 puis de re-hacher avec ta fonction pour obtenir la propriete recherche
  • [^] # Re: modulo

    Posté par  . En réponse au message fonction de hashage de chaine de characteres. Évalué à 2.

    En C, il me semble q'une chaine de char est juste un pointeur vers l'addresse du premier char.
    Ca me semble pas terrible d'utiliser cette addresse comme valeur pour la chaine.
  • [^] # Re: modulo

    Posté par  . En réponse au message fonction de hashage de chaine de characteres. Évalué à 1.

    Merci pour ta reponse.
    Par contre je ne comprend pas comment je peux l'adapter au chaines de characteres.

    Tu proposes:
    hash(a) ≡ a [2^N]

    Est ce que ca veux dire que "a" dans ta formule est deja le hash d'une chaine.
    Si je comprend bien, je dois appliquer 2 hash different: un qui transforme la chaine en int (par example djb2 ( http://www.cse.yorku.ca/~oz/hash.html ), l'autre qui transforme cet int en un autre int (la fonction que tu proposes) .

    C'est bien ca?