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ă rețeaua de latură b permite filtrarea punctelor în O(n)
    • că algoritmul are timp de rulare așteptat O(n)