Documente Academic
Documente Profesional
Documente Cultură
Dorel Lucanu
PA 2014/2015
3 k-mediana
Plan
3 k-mediana
Motivaţie
Pentru aceste cazuri este preferabil să calculăm comportarea ı̂n medie a
algoritmului.
Sursa: http://hyperphysics.phy-astr.gsu.edu/hbase/math/dice.html
pi = P(V = xi ) - probabilitatea cu P
care V ia valoare xi
Media variabilei aleatorii: M(V ) = i xi · pi
M(V ) = 7
Definiţie
Pentru a putea calcula comportarea ı̂n medie este necesar să privim
mărimea TA (p) ca fiind o variabilă aleatorie:
o experienţă = execuţia algoritmului pentru o instanţă p,
valoarea experienţei = durata execuţiei algoritmului pentru instanţa
p) şi să precizăm legea de repartiţie a acestei variabile aleatorie.
Apoi, comportarea ı̂n medie se calculează ca fiind media acestei variabile
aleatoare (considerăm numai cazul timpului de execuţie):
TAmed (n) = M({TA (p) | p ∈ P ∧ g (p) = n})
Dacă mulţimea valorilor variabilei aleatoare TA (p) = {x0 , x1 , . . . } este
finită sau numărabilă şi probabilitatea ca TA (p) = xi este pi , atunci media
variabilei aleatorie TA (timpul mediu de execuţie) este:
X
TAmed (n) = xi · pi
i
Exemplu
Problema P1
Intrare: n, a = (a
(0 , . . . , an−1 ), z, toate numere ı̂ntregi.
min{i | ai = z} dacă {i | ai = z} = 6 ∅,
Ieşire: poz =
−1 altfel.
Algoritm pentru P1
Plan
3 k-mediana
Quicksort: descriere
Este proiectat pe paradigma divide-et-impera.
Se consideră o mulţime peste care este definită o relaţie de ordine liniară
<.
Algoritmul Quicksort
Intrare: S = {a0 , . . . , an−1 }
Ieşire: o secvenţă cu elementele ai ı̂n ordine crescătoare
1 Generalizare (abstractizare): S = {ap , . . . , aq }, p ≤ q.
2 Divizarea problemei constă ı̂n alegerea unei valori x din S. Elementul
x este numit pivot. În general se alege pivotul x = ap , dar nu este
obligatoriu.
3 calculează
S< = {ai | ai < x} S= = {ai | ai = x} S> = {ai | ai > x}
4 sortează recursiv S< şi S>
5 ı̂ntoarce secvenţa S< , S= , S>
D. Lucanu (FII - UAIC) Complexitatea medie PA 2014/2015 12 / 44
Timpul mediu: algoritmi determinişti Quicksort determinist
Quicksort: partiţionarea
Presupunem că S este memorată ı̂ntr-un tablou a.
Se determinarea prin interschimbări a unui indice k cu proprietăţile:
p ≤ k ≤ q şi a[k] = x;
∀i : p ≤ i ≤ k =⇒ a[i] ≤ a[k];
∀j : k < j ≤ q =⇒ a[k] ≤ a[j];
Partiţionarea tabloului se face prin interschimbări care menţin invariante
proprietăţi asemănătoare cu cele de mai sus. Se consideră două variabile
index: i cu care se parcurge tabloul de la stânga la dreapta şi j cu care se
parcurge tabloul de la dreapta la stânga. Iniţial se ia i = p + 1 şi j = q.
Proprietăţile menţinute invariante ı̂n timpul procesului de partiţionare sunt:
şi
∀j 0 : j < j 0 ≤ q =⇒ a[j 0 ] ≥ x (2)
D. Lucanu (FII - UAIC) Complexitatea medie PA 2014/2015 13 / 44
Timpul mediu: algoritmi determinişti Quicksort determinist
Quicksort: partiţionarea
Presupunem că la momentul curent sunt interogate elementele a[i] şi a[j]
cu i < j. Distingem următoarele cazuri:
1 a[i] ≤ x. Transformarea i = i+1 păstrează (1).
2 a[j] ≥ x. Transformarea j = j-1 păstrează (2).
3 a[i] > x > a[j]. Dacă se realizează interschimbarea a[i] ↔ a[j] şi se
face i = i+1 şi j = j-1, atunci ambele predicate (1) şi (2) sunt
păstrate.
Operaţiile de mai sus sunt repetate până când i devine mai mare decât j.
Considerând k = i − 1 şi interschimbând a[p] cu a[k] obţinem
partiţionarea dorită a tabloului.
Quicksort: algoritm
Teoremă
Complexitatea medie a algoritmului QuickSort este O(n log2 n).
Plan
3 k-mediana
Plan
3 k-mediana
Definiţie
Activitatea unui algoritm nedeterminist se desfăşoară ı̂n două etape: ı̂ntr-o primă
etapă “se ghiceşte” o anumită structură S şi ı̂n etapa a doua se verifică dacă S
satisface o condiţia de rezolvare a problemei. Putem adăuga “puteri magice de
ghicire” unui limbaj de programare adăugându-i o funcţie de forma:
random(N) – care ı̂ntoarce un număr aleatoriu din mulţimea
{0, 1, . . . , n − 1}.
Pentru a şti dacă verificarea s-a terminat cu succes sau nu adăugă şi două
instrucţiuni de terminare:
success – care semnalează terminarea verificării (şi a a algoritmului) cu
succes, şi
failure – care semnalează terminarea verificării (şi a a algoritmului) fără
succes.
Această definiţie a algoritmilor nedeterminişti este strâns legată de rezolvarea
problemelor de decizie. Reamintim că, ı̂n general, orice problemă poate fi redusă
la rezolvarea unei probleme de decizie.
D. Lucanu (FII - UAIC) Complexitatea medie PA 2014/2015 21 / 44
Timpul mediu: algoritmi probabilişti Agoritmi nedeterminişti
rand() {
random_seed = random_seed * 1103515245 +12345;
return (random_seed / 65536) % 32768;
}
În Alk este implementată varianta care ı̂ntoarce valoarea calculată modulo
n, unde n este parametrul funcţiei.
exp() {
return (1 - x[0])*x[1] + x[0]*(1 - x[2]);
}
x[0] = random(2);
x[1] = random(2);
x[2] = random(2);
if (exp() == 1) success;
else failure;
Plan
3 k-mediana
Definiţii
Exista două puncte de vedere:
1. algoritmul probabilist este văzut ca un algoritm nedeterminist
pentru care există o distribuţie de probabilitate peste alegerile
nedetermiste
2. algoritmul probabilist este un algoritm care are o intrare
suplimentară ce constă ı̂ntr-o secvenţă de biţi aleatorii;
e echivalent cu a spune ca algoritmul probabilist constă ı̂n o mulţime
de algoritmi determinisşti din care un algoritm este ales aleatoriu
pentru o intrare dată
pentru o intrare x a problemei date, calculele algoritmului probabilist
pot diferi ı̂n funcţie de e secventa
¸ actuală de biţi aleatori
Această diferenţă poate fi proiectată ı̂n complexitate sau ieşire:
timpul de execuţie văzut ca o variabilă aleatorie
ieşirea văzută ca o variabilă aleatorie
La acest curs consideră doar prima variantă (numiţi şi algoritmi Las
Vegas).
D. Lucanu (FII - UAIC) Complexitatea medie PA 2014/2015 26 / 44
Timpul mediu: algoritmi probabilişti Algoritmi probabilişti
Plan
3 k-mediana
”Randomized Quicksort”
Algoritmul RQS
Intrare: S = {a0 , . . . , an−1 }
Ieşire: elementele ai ı̂n ordine crescătoare
1 dacă n = 1 ı̂ntoarce a0 ,
2 altfel alege aleatoriu uniform k ∈ {0, . . . , n − 1}
3 calculează
S< = {ai | ai < ak }
S= = {ai | ai = ak }
S> = {ai | ai > ak }
4 sortează recursiv S< şi S>
5 ı̂ntoarce secvenţa S< , S= , S>
n−1 X n−1 X
X X 2
pij =
j −i +1
i=0 j>i i=0 j>i
n−1 X
n
X 2
≤
k
i=0 k=1
n Xn
X 1
=2
k
i=1 k=1
n
X 1
= 2n
k
k=1
Teoremă
Numărul mediu de comparaţii ı̂ntr-o execuţie al algoritmului RQS este cel
mult 2nHn = O(n log n).
Plan
3 k-mediana
k-mediana: definiţie
Definiţie
Fie S o listă cu n elemente dintr-o mulţime univers total ordonată.
k-mediana este cel de-al k-lea element din lista sortată a elementelor din
S. În alte cuvinte, k-mediana este un element x ∈ {a[0], . . . , a[n − 1]} cu
proprietăţile |{i | 0 ≤ i < n ∧ a[i] < x}| < k şi
|{i | 0 ≤ i < n ∧ a[i] ≤ x}| ≥ k (dacă toate lelementele din S sunt
distincte, atunci avem egalitate ı̂n ultima relaţie).
k-mediana: problema
Condiţia pe care trebuie să o satisfacă la ieşire tabloul a este formulată de:
k-mediana: analiza
1
Spaţiul discret: se ı̂mparte bara ı̂n n părţi egale de lungime
n
k n 2
n par: lungimile segmentelor mai lungi sunt ,k = + 1, . . . , n − 1, cu probabilitatea . Rezultă media egală cu
n 2 n−1
Pn−1 k 2 3n − 6 3
k=n/2+1
· = ≤
n n−1 4(n − 1) 4
k n+1 2
n impar: lungimile segmentelor mai lungi sunt ,k = , . . . , n − 1, cu probabilitatea . Rezultă media egală cu
n 2 n−1
Pn−1 k 2 3n − 1 3
k=(n+1)/2
· = ≤
n n−1 4n 4
3
La limită se obţine ı̂n ambele cazuri .
4
Concluzie: daca se ı̂mparte ı̂n două un tablou de lungime n, lungimea celui mare
3
subtablou este n.
4
D. Lucanu (FII - UAIC) Complexitatea medie PA 2014/2015 41 / 44
k-mediana