Manual · pagina 93
Exercițiul 12 · O funcție de dispersie
În securitatea informatică, o funcție de dispersie („hash”) simplificată, , distribuie chei de date în „containere” de memorie („buckets”). Pentru a evita irosirea memoriei, un inginer dorește ca funcția să fie surjectivă, astfel încât fiecare container să poată fi utilizat. Considerând funcția , , justifică dacă funcția este surjectivă. În caz afirmativ, determină câte suprapuneri (chei diferite care merg în același container) există pentru fiecare element din codomeniu.
O funcție de dispersie („hash”) distribuie chei de date în „containere” de memorie; inginerul dorește ca ea să fie surjectivă, ca fiecare container să poată fi utilizat. Considerând funcția , , justifică dacă funcția este surjectivă. În caz afirmativ, determină câte suprapuneri (chei diferite care merg în același container) există pentru fiecare element din codomeniu.
Calculează , , , . Apoi compară cu .
1. Ce face funcția
Cheile sunt numerele , iar containerele sunt . Cheia merge în containerul , restul împărțirii lui la (ca la din manual, p. 92).
De exemplu, este restul lui la , adică ; este restul lui , adică .
Verifică-te
Cât este ?Alege un răspuns ca să vezi continuarea.
2. Este surjectivă?
Mai calculăm : , deci . Așadar cheile merg în containerele .Verifică-te
Ce poți spune despre surjectivitatea lui ?Alege un răspuns ca să vezi continuarea.
3. Câte chei în fiecare container
Comparăm cheile și : , iar se împarte exact la . Deci au același rest: . Valorile se repetă din în .Cheile –: cheile – repetă drumurile cheilor –. Cheile – le repetă încă o dată.
Verifică-te
Câte chei ajung în containerul ?Alege un răspuns ca să vezi continuarea.
container cheile Cheile se distribuie egal: chei în fiecare container. Cele trei chei dintr-un container se suprapun: în containerul , de exemplu, se suprapun , și (perechile , , , tot ).
Răspuns
este surjectivă: , , , .
Cum , fiecare container primește exact chei, care se suprapun: , , , pentru containerele .