Note de curs, clasele 11-12, 24 mai 2013
From Algopedia
Jump to navigationJump to search
Arbori splay (încheiere)
- demonstrație că operația de splay are complexitate logaritmică
- folosim metoda potențialului
- potențialul unui nod după i pași dintr-o operație de splay este logaritmul mărimii subarborelui său:
- potențialul arborelui este suma potențialelor nodurilor
- analizăm rotația zig-zig
- demonstrăm că costul amortizat este
- prin însumare telescopică, costul real al operației de splay este
Algoritmi randomizați
- necesitate: să obținem algoritmi mai rapizi sau mai simplu de implementat folosind probabilitățile
- două metode:
- Monte Carlo: număr fixat de iterații, k; poate produce un răspuns incorect, dar probabilitatea acestui eșec scade pe măsură ce k crește
- Las Vegas: întotdeauna produce răspunsul corect; numărul de iterații este variabil și poate fi mare într-un caz nefericit, dar valoarea așteptată este mică
- exemple deja întâlnite:
- skip lists
- treaps
- quicksort cu randomizarea pivotului
- toate folosesc metoda Las Vegas: dau răspunsul corect, dar pot fi ineficiente dacă avem ghinion la generarea de numere aleatoare
Calculul lui prin metoda Monte Carlo
- teorie, aria pătratului și a sfertului de cerc înscris
- central limit theorem
- soluția propusă de algoritm converge la cu ; cu alte cuvinte, pentru a calcula încă o zecimală exactă, trebuie să înmulțim n cu 100.
- nu este practic (evident)
Verificarea unui produs de matrice în O(k n2) prin metoda Monte Carlo
- se dau trei matrice A, B și C (pătrate, pentru simplitate). Să se verifice dacă .
- prin înmulțire propriu-zisă: O(n3) banal, ajungând până la O(n2,37) cu algoritmi neimplementabili
- algoritm probabilistic: k iterații. La fiecare iterație, alege un vector aleator r de n elemente 0 și 1 și verifică dacă
- complexitate: O(k n2)
- poate greși, dar într-un singur sens: dacă , sigur algoritmul va declara aceasta. Dacă , există o șansă ca algoritmul să nu descopere aceasta.
- probabilitatea de eroare este
- demonstrație (la fiecare iterație, probabilitatea de a găsi o diferență între și este minim 1/2)
Closest pair O(n) prin metoda Las Vegas
- am studiat problema la lecția de geometrie computațională și am găsit un algoritm O(log n)
- există și algoritmi O(log log n), dar sunt greu de implementat
- algoritm: pornim cu S1 = S
- dintr-un set Si, alegem un punct la întâmplare xi. Calculăm explicit d(xi). Eliminăm din set toate punctele x pentru care d(x) > d(xi). Setul rămas este Si + 1
- în final, fie ultima distanță găsită. Ea este de cel mult trei ori mai mare decât pe care îl căutăm
- detalii de implementare: rețeaua de latură b
- demonstrații pentru diverse afirmații
- că
- că rețeaua de latură b permite filtrarea punctelor în O(n)
- că algoritmul are timp de rulare așteptat O(n)