Cartografierea indexului - Index mapping
Cartarea indexului (sau adresarea directă sau o funcție hash trivială ) în informatică descrie folosind o matrice , în care fiecare poziție corespunde unei chei din universul valorilor posibile. Tehnica este cea mai eficientă atunci când universul tastelor este destul de mic, astfel încât alocarea unui tablou cu o poziție pentru fiecare cheie posibilă este accesibilă. Eficacitatea sa provine din faptul că o poziție arbitrară într-o matrice poate fi examinată în timp constant .
Matrice aplicabile
Există multe exemple practice de date ale căror valori valide sunt restricționate într-un interval mic. O funcție hash trivială este o alegere adecvată atunci când astfel de date trebuie să acționeze ca o cheie de căutare. Câteva exemple includ:
- luna din an (1-12)
- zi din lună (1-31)
- zi a săptămânii (1-7)
- vârsta omului (0–130) - de exemplu tabele de actuari de salvare, ipotecă pe termen determinat
- Caractere ASCII (0–127), cuprinzând simboluri obișnuite ale operatorului matematic, cifre, semne de punctuație și alfabet în limba engleză
Exemple
Utilizarea unei funcții hash banale, într-o căutare de tabel non-iterativă, poate elimina complet testarea condițională și ramificarea, reducând lungimea căii de instrucțiuni a unui program de computer.
Evitați ramificarea
Roger Sayle oferă un exemplu de eliminare a unei ramuri multidirecționale cauzată de o declarație switch :
inline bool HasOnly30Days(int m)
{
switch (m) {
case 4: // April
case 6: // June
case 9: // September
case 11: // November
return true;
default:
return false;
}
}
Care poate fi înlocuit cu o căutare în tabel:
inline bool HasOnly30Days(int m)
{
static const bool T[] = { 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0 };
return T[m-1];
}