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];
}

Vezi si

Referințe