This is an old revision of the document!


Această pagină conține explicații și răspunsuri pentru întrebările din laboratorul 5.


Exemplul 1: Paradoxul zilelor de naștere

Întrebare 1: Pentru ce valoare a lui n probabilitatea ca două persoane să aibă aceeași zi de naștere depășește 0.5?

Răspuns: Probabilitatea depășește 0.5 în jurul lui n = 23. Acest rezultat este contraintuitiv — chiar și într-un grup mic, șansele de coliziune sunt mari.

Explicație: Probabilitatea ca toate zilele să fie distincte este:

$$ P(\text{distincte}) = \frac{k!}{(k-n)! k^n} $$

Pentru = 365$, dacă evaluăm numeric:

  • n = 20$ → P(\text{coliziune}) \approx 0.41$
  • n = 23$ → P(\text{coliziune}) \approx 0.507$
  • n = 30$ → P(\text{coliziune}) \approx 0.706$

Legătură cu hashing: Fiecare zi ≈ un slot hash, iar fiecare persoană ≈ un element inserat. La fel ca în hashing, chiar și cu multe sloturi disponibile, coliziunile devin probabile după doar \\( \sqrt{k} \\) inserări (ordine \\( O(\sqrt{k}) \\)).


Întrebare 2: Cum se aseamănă acest fenomen cu coliziunile într-o tabelă hash?

Răspuns: În ambele cazuri, avem o alocare aleatoare într-un spațiu finit de valori. Coliziunile apar mult mai devreme decât ne-am aștepta, iar acest lucru afectează eficiența căutărilor.

Explicație scurtă: Dacă spațiul are dimensiune k, atunci după doar sqrt(k) inserări, probabilitatea unei coliziuni devine semnificativă (≈50%). Asta înseamnă că pentru o tabelă hash cu 10^6 sloturi, e foarte probabil să apară coliziuni deja după câteva mii de inserări.


Exemplul 2: Problema colecționarului de cupoane

Întrebare 1: Cum crește numărul așteptat de extrageri odată cu n?

Răspuns: Numărul mediu de extrageri crește aproximativ proporțional cu n(ln n).

Explicație:

$$ E[T] = n H_n = n (1 + \tfrac{1}{2} + \tfrac{1}{3} + \dots + \tfrac{1}{n}) \approx n (\ln n + \gamma) $$

unde $\gamma \approx 0.577$ este constanta lui Euler–Mascheroni. De exemplu:

n E[T] teoretic E[T] simulat
—-—————————–
10 29.3 ≈ 29
50 224.5 ≈ 225
100 518.7 ≈ 520

Astfel, timpul așteptat crește mai repede decât liniar, dar mult mai lent decât pătratic.


Întrebare 2: Ce analogie există între această problemă și procesul de „umplere” a unei tabele hash?

Răspuns: Problema colecționarului de cupoane este echivalentă cu procesul de inserare în hash până când toate sloturile sunt ocupate. Fiecare „cupon” reprezintă un slot distinct, iar fiecare extragere corespunde unei inserări.

Explicație: La început, găsim ușor sloturi libere (șanse mari de succes). Pe măsură ce tabela se umple, șansele de a găsi un slot nou scad — apar tot mai multe „coliziuni”. În medie, este nevoie de aproximativ n(\ln n) inserări pentru a umple toate sloturile.


Concluzie generală

  • Coliziunile apar mai devreme decât ne-am aștepta ≈\sqrt{k} inserări).
  • Umplerea completă a unei tabele hash necesită în jur de n \ln n inserări.
  • Aceste două fenomene definesc limitele probabilistice ale hashing-ului eficient.