Gestion de Fichiers - PowerPoint PPT Presentation

About This Presentation
Title:

Gestion de Fichiers

Description:

Les arbres B diminuent ce taux puisqu'ils permettent un temps d'acc s d'ordre O ... Le hachage ressemble aux indexes associant une cl avec une adresse relative ... – PowerPoint PPT presentation

Number of Views:23
Avg rating:3.0/5.0
Slides: 13
Provided by: nat1151
Category:

less

Transcript and Presenter's Notes

Title: Gestion de Fichiers


1
Gestion de Fichiers
  • Hachage

2
Motivation
  • La recherche séquentielle peut être faite en
    temps daccès dordre O(N), ce qui veut dire
    que le nombre de seeks augmente au même taux
    que la taille du fichier.
  • Les arbres B diminuent ce taux puisquils
    permettent un temps daccès dordre O(LogkN) ou k
    est une mesure de la taille dune feuille (i.e.,
    le nombre denregistrements qui peuvent être
    sauvegardé dans une feuille). Nous verrons les
    arbres B plutard.
  • Ce que lon voudrait, cependant, est un temps
    daccès dordre O(1) ce qui veut dire que quelque
    soit la taille du fichier le temps daccès à un
    enregistrement est toujours un petit nombre de
    seeks.
  • Hachage statique est une technique permettant
    datteindre une telle performance si la taille du
    fichier ne varie pas.

3
Définition
  • Une fonction de hachage (hash function) est une
    fonction (mathématique) h qui peut transformer
    une clé K en une adresse h(K).
  • Le résultat h(K) du hachage est utilisé pour
    stocker lenregistrement corespondant à la clé K.
  • Le hachage ressemble aux indexes associant une
    clé avec une adresse relative denregistrement.
  • Hachage versus construction dindexes
  • Avec le hachage, il ny a pas de connection
    évidente entre la clé et ladresse
    (randomizing).
  • Avec le hachage, deux clés différentes peuvent
    être transformées en la même adresse
    (collision).

4
Exemple de fonction de hachage
  • On veut stocker 75 enreg.s dans un fichier. la
    clé est le nom de famille. Un espace pour 1000
    enreg.s est reservé.
  • Soit pl(K) 1ère lettre de K, dl(K) 2ème
    lettre de K.
  • Soit tdl(N) les trois derniers chiffres de N.
  • h(K) tdl(ASCII(pl(K)) ASCII(dl(K))).
  • Le résultat h(K) appliquée à une portion du
    fichier
  • Nom ASCII(pl(K)) ASCII(dl(K)) Produit
    Adresse domiciliaire
  • BALL 66 65
    6665 4290 ? 290
  • LOWEL 76 79
    76796004 ? 004
  • TREE 84 82
    84826888 ? 888
  • Les adresses qui apparaissent avoir été trouvés
    au hasard.

5
Collisions
  • Lorsque deux clés différentes produisent la même
    adresse, il y a une collision. Les clés
    impliquées dans cette collision sappellent des
    synonymes.
  • Exemple de collision h(OLIVER) h(LOWELL)
    004.
  • Néanmoins, il est très difficile de trouver une
    fonction de hachage qui évite les collisions
    ( perfect haching). Permettre les collision et
    trouver des moyens de les résoudre est plus
    simple à faire.
  • Solutions Possible
  • Espacer les enregistrements
  • Utilisation de mémoire supplémentaire
  • Placement de plus dun enregistrement à une
    adresse.

6
Collisions solutions possibles
  • Espacer les enregistrements éviter des
    regroupement denregistrements autour dun nombre
    réduit dadresse en cherchant des fonction de
    hachage qui distribue les enregistrements de la
    manière la hasardeuse possible. Notre h(K)
    précédent est mauvais à cet égard car il y a des
    combinaisons de lettres plus fréquentes que
    dautres.
  • Utiliser de la mémoire supplémentaire Ceci est
    possible si lespace réservé au fichier excède de
    loin lespace occupé par les enregistrements.
  • Placer plus dun enregistrement à une adresse
    réserver suffisament despace physique pour
    enregistrer les plus denreg.s logiques possible.
    Une adresse stockant plusieurs enreg.s est
    appelée compartiment (bucket).

7
Un algorithme simple de hachage
  • Etape 1 représentation numérique de la clé. Si
    la clé est déjà en forme numérique, passez à
    létape 2, sinon utilisez toutes les lettres de
    la clé et transformez les en code ASCII. Par
    exemple
  • LOWELL ? 76 79 87 69 76 76 32 32 32 32
    32 32
  • Ici, nous supposons que le champ-clé a une
    longeur fixe de 10 octets. LOWELL occupant les
    6 premiers octets, le reste est un espace vide
    (blanks).

8
Un algorithme simple de hachage (suite)
  • Etape 2 plier et ajouter (fold and add) .
    Découpez le résultat de létape 1 en pièces de
    deux nombre ASCII chacune et additionnez ces
    pièces. P.ex. LOWELL ? 76 79 87 69 76 76
    32 32 32 32 32 32
  • La somme sur lexemple ci-haut donne
    767987697676323232232 32 33820
  • Si p.ex. MaxInt32767 (15bits), on a un
    dépassement de capacité ! Un moyen de traiter ce
    problème est sassurer que chaque résultat
    intermédiaire est plus petit que MaxInt. Une
    méthode pour ce faire est (((((((76798769)mod
    N)7676)mod N)3232) mod N) 3232)
  • Le choix de N doit être judicieux et souvent
    cest un nombre premier.

9
Un algorithme simple de hachage (suite)
  • Etape 3 diviser par la taille du fichier et
    utiliser le reste comme adresse. Lintuition
    derrière cette étape est de réduire la taille du
    nombre produit à létape 2 afin que ce nombre
    nexcède pas la taille du fichier.
  • Méthode a s mod n a adresse à produire,
    s somme produit à létape 2, n taille du
    fichier. Notez que a sera un nombre entre 0 et
    n-1.

10
Un algorithme simple de hachage (suite)
  • Ceci est un exemple de code C pour lalgorithme
    simple de hachage utilisant un choix de N19937
    dans létape 2.
  • Int Hash (char key12, int numUsedAddresses, int
    maxAddress) int sum 0

    for (int 0 j lt 12 j
    2)
    sum (sum numUsedAddresses
    keyj keyj1) 19937 return sum
    maxAddress

11
Fonctions hachage et distribution
denregistrements
  • Les enregistrements peuvent être distribués sur
    toutes les adresses de manières différentes Il
    peut y avoir (a) aucun synonymes (distribution
    uniforme) (b) que des synonymes (pire cas) (c)
    quelques synonymes (cela arrive avec des
    distributions au hasard random distribution).
  • Les distributions uniformes pures sont difficiles
    à obtenir et ne valent pas la peine dêtre
    cherchées.
  • Les distributions au hasard peut être facilement
    derivées mais elles ne sont pas parfaites car
    elles peuvent générer un nombre important de
    synonymes.
  • On veut des méthodes de hachage meilleures que
    cela.

12
Dautres méthodes de hachage
  • Bien quil nexiste pas de fonction de hachage
    qui garantisse des distributions meileures que
    les distributions au hasard dans tous les cas, si
    on considère le clés qui vont être hachées,
    certaines améliorations sont possibles.
  • Voici quelques méthodes qui sont potentiellement
    meilleures que les méthodes au hasard
  • Examiner les clés pour trouver un patron
  • Plier certaines parties de la clé
  • Diviser la clé par un nombre (p.ex. premier)
  • Elever la clé au carré et prendre le milieu
    (mid-square method) p.ex. K453 ? carré205209
    ? milieu 52
  • Radix transformation 453 ? 382 base 11 ? 382
    mod 99.
Write a Comment
User Comments (0)
About PowerShow.com