Edit this page Backlinks This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ===== Soluții Laborator 5: Analiza probabilistă în Hashing ===== 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 $k = 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. ----