IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

probleme avec le hachage de chaines de caracteres


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 43
    Points : 29
    Points
    29
    Par défaut probleme avec le hachage de chaines de caracteres
    Bonjour,
    je voudrais choisir cette fonction polynomiale (p(cle)= cle(0)*z^0 + cle(1)*z(1) + ...... + cle(n-1)*z^(-1) ) ou une autre pour des chaines de caractères, mon seul problème est de pouvoir comprendre comment elle fonctionne, comment elle gère les collisions ,la taille de la table de hachage ces avantages et ces inconvénients et si possible être conseillé sur les différentes fonctions de hachage et celle les + efficaces.
    merci et a bientôt

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 38
    Points : 46
    Points
    46
    Par défaut
    Sauf erreur de ma part, es tu sur de ta fonction polynomiale, parce qu'elle ne veut rien dire, ou alors tu l'as sortie de son contexte ??? Normalement une clef de hachage est P(mot) = clef, et non l'inverse.

    Comment les clefs de hachage fonctionne ? C'est tout simple elle prend un mot en argument et en fonction de ce mot et de ta fonction de hachage choisi va retourner une clef. Cette clef modulo la taille de ton tableau, te permettra de trouver la position du mot dans le tableau.

    La collision n'est pas géré par la clef de hachage, elle doit être géré par ton programme. Mais une fonction de hachage particulièrement intéressante et bien choisi, te permettra d'éviter les collisions.

    Il n'existe pas de clef de hachage efficace. Pour chaque problème, existe une clef de hachage spécifique.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 43
    Points : 29
    Points
    29
    Par défaut suite
    oui pour le p(clé)=... c'etait une erreur de tape je connais le fonctionnement des tables de hachage mais seulement je voudrais utilisé pour un TP une fonction de hachage qui m aide a voir que deux mots sont syntaxiquement proches (EX:ecole et ecoule) et et je pensais qu a la place de la fonction modulo la fonction de hachage polynomial pourrait plus m aider (HACHAGE POLYNOMIAL: P(MOT)=mot(0)*z^0 + mot(1)*z(1) + ...... + mot(n-1)*z^(-1) ) avec z un entier quelconque.
    Je sais que mon programme doit gerer les collisions mais je voudrais une fonction de hachage plus pertinante pour un verificateur de mot.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 38
    Points : 46
    Points
    46
    Par défaut
    Tu peux toujours tenter de faire une fonction polynomiale, j'y crois pas trop, mais ca peut se tenter :

    P(Mot) = Mot[0]*10^1 + Mot[1]*10^2 + Mot[2]*10^3 + ... + Mot[N]*10^N

    Mot[X] étant un entier positif compris entre 1 et 26.

    La fonction première d'une table de hachage n'est pas de voir si deux mots sont proches l'un de l'autre. Elle est surtout là pour ranger les éléments et pouvoir y accéder le plus rapidement possible.

    Si tu veux savoir si un mot est proche d'un autre tu peux toujours voir du côté des algorithmes de Hamming ou Levenshtein.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 43
    Points : 29
    Points
    29
    Par défaut ok
    oki mais comment est ce qu'elle fonctionne ? quelle est la taille de la table pour cette fonction polynomiale ? les valeurs des clés varient entre ? et ? et puis j ai regardé pour l algorithme de hamming et Levenshtein et d autres mais laquelle me conseille tu?
    merci

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 38
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par ludo007 Voir le message
    oki mais comment est ce qu'elle fonctionne ?
    Comment marche la fonction polynomiale ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    string mot = "salut";
    int somme = 0;
    for(int i = 0; i < mot.size(); i++) {
       somme += mot[i]*10^i
    }
    Est ce que cela t'aide ???

    Citation Envoyé par ludo007 Voir le message
    quelle est la taille de la table pour cette fonction polynomiale ? les valeurs des clés varient entre ?
    Il n'y a pas de taille de la table dans cette fonction polynomiale. Une fois que tu as obtenue un résultat avec ta fonction polynomiale, tu fais : polynomiale%taille_table. Le modulo te permettra d'obtenir une clef comprise entre 0 et Max de la taille de ta table de hachage. Il faudrait que tu revoies tes cours de table de hachage et le modulo...

  7. #7
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 43
    Points : 29
    Points
    29
    Par défaut resolu
    merci pour tt j ai utiliséune fonction de hachage qui me renvoyait la taille de mes chaines de caractere et j ai utilisé la distance de levenshtein pour la similitude entre deux chaines mais ne considerant que les chaines de longueur +ou - proche de la chaine a comparer merci pour toute votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme de copie d'une chaine de caractere
    Par kanebody dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 08/02/2009, 21h41
  2. Réponses: 13
    Dernier message: 22/02/2008, 21h02
  3. Souci avec une recherche de chaîne de caractère
    Par Pymousse dans le forum C++
    Réponses: 3
    Dernier message: 27/07/2007, 09h52
  4. Réponses: 8
    Dernier message: 05/08/2006, 13h30
  5. probleme d'heritage sur des chaines de caracteres
    Par pikiwiki dans le forum C++
    Réponses: 3
    Dernier message: 24/05/2006, 21h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo