Sunteți pe pagina 1din 44

Proiectarea algoritmilor: complexitatea medie

Dorel Lucanu
Faculty of Computer Science
Alexandru Ioan Cuza University, Iasi, Romania
dlucanu@info.uaic.ro

PA 2014/2015

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

1 / 44

Outline

Timpul mediu: algoritmi deterministi


Quicksort determinist

Timpul mediu: algoritmi probabilisti


Agoritmi nedeterministi
Algoritmi probabilisti
Quicksort probabilist

k-mediana

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

2 / 44

Timpul mediu: algoritmi deterministi

Plan

Timpul mediu: algoritmi deterministi


Quicksort determinist

Timpul mediu: algoritmi probabilisti


Agoritmi nedeterministi
Algoritmi probabilisti
Quicksort probabilist

k-mediana

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

3 / 44

Timpul mediu: algoritmi deterministi

Motivatie

Fie P o problema, p P instanta a problemei P, A un algoritm care


rezolva P.
Reamintim formula pentru complexitatea n cazul cel mai nefavorabil:
TA (n) = sup{TA (p) | p P g (p) = n}
Uneori, numarul instantelor p cu g (p) = n pentru care TA (p) = TA (n) sau
TA (p) are o valoare foarte apropiata de TA (n) este foarte mic.
Pentru aceste cazuri este preferabil sa calculam comportarea n medie a
algoritmului.

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

4 / 44

Timpul mediu: algoritmi deterministi

Exemplu de variabila aleatorie: aruncarea a doua zaruri


Experiment: aruncarea a doua zaruri
V (experiment) = suma punctelor de pe fetele superioare

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
D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

5 / 44

Timpul mediu: algoritmi deterministi

Exemplu de variabila aleatorie: aruncarea a doua zaruri


(cont.)

M(V ) = 7
D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

6 / 44

Timpul mediu: algoritmi deterministi

Definitie
Pentru a putea calcula comportarea n medie este necesar sa privim
marimea TA (p) ca fiind o variabila aleatorie:
o experienta = executia algoritmului pentru o instanta p,
valoarea experientei = durata executiei algoritmului pentru instanta
p) si sa precizam legea de repartitie a acestei variabile aleatorie.
Apoi, comportarea n medie se calculeaza ca fiind media acestei variabile
aleatoare (consideram numai cazul timpului de executie):
TAmed (n) = M({TA (p) | p P g (p) = n})
Daca multimea valorilor variabilei aleatoare TA (p) = {x0 , x1 , . . . } este
finita sau numarabila si probabilitatea ca TA (p) = xi este pi , atunci media
variabilei aleatorie TA (timpul mediu de executie) este:
X
TAmed (n) =
xi pi
i
D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

7 / 44

Timpul mediu: algoritmi deterministi

Exemplu

Consideram problema cautarii unui element ntr-o secventa de numere


ntregi:
Problema P1
Intrare:
n, a = (a
(0 , . . . , an1 ), z, toate numere ntregi.
min{i | ai = z} dac
a {i | ai = z} =
6 ,
Iesire:
poz =
1
altfel.
Presupunem ca secventa (a0 , . . . , an1 ) este memorata n tabloul a.
Consideram ca dimensiune a problemei P1 numarul n al elementelor din
secventa n care se cauta.

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

8 / 44

Timpul mediu: algoritmi deterministi

Algoritm pentru P1

Algoritmul A1 descris de urmatorul program rezolva P1 :


//@input: un tablou a cu n elemente, z
//@output: pozitia primului element din a egal cu z,
//
-1 daca nu exista un astfel de element
i = 0;
while (a[i] != z) && (i < n-1) {
i = i+1
if (a[i] = z) poz = i;
else poz = -1;

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

9 / 44

Timpul mediu: algoritmi deterministi

Timpul mediu pentru A1


Multimea valorilor variabilei aleatorii TA1 (p) este {3i + 2 | 1 i n} (s-au
numarat doar atribuirile si comparatiile).
In continuare trebuie sa stabilim legea de repartitie. Facem urmatoarele
presupuneri:
probabibilitatea ca z {a0 , . . . , an1 } este q si
q
(indicii i
n
candideaza cu aceeasi probabilitate pentru prima aparitie a lui z).
probabilitatea ca z sa apara prima data pe pozitia i 1 este

Rezulta ca probabilitatea ca z 6 {a0 , . . . , an1 } este 1 q. Acum probabilitatea


q
ca TA (p) = 3i + 2 (poz = i 1) este , pentru 1 i < n, iar probabilitatea ca
n
q
TA (p) = 3n + 2 este pn = + (1 q).
n
Timpul mediu de executie este:

D. Lucanu

n
P

n1
P

q
q
(3i + 2) + ( + (1 q)) (3n + 2)
n
i=1
i=1 n
3nq
3q
= 3n
+
+2
2
2
3n
7
(FII - UAIC)
Complexitatea medie
PA 2014/2015
med

TAmed (n)

pi xi =

10 / 44

Timpul mediu: algoritmi deterministi

Quicksort determinist

Plan

Timpul mediu: algoritmi deterministi


Quicksort determinist

Timpul mediu: algoritmi probabilisti


Agoritmi nedeterministi
Algoritmi probabilisti
Quicksort probabilist

k-mediana

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

11 / 44

Timpul mediu: algoritmi deterministi

Quicksort determinist

Quicksort: descriere
Este proiectat pe paradigma divide-et-impera.
Se considera o multime peste care este definita o relatie de ordine liniara
<.
Algoritmul Quicksort
Intrare: S = {a0 , . . . , an1 }
Iesire: o secventa cu elementele ai n ordine crescatoare
1

Generalizare (abstractizare): S = {ap , . . . , aq }, p q.

Divizarea problemei consta n alegerea unei valori x din S. Elementul


x este numit pivot. In general se alege pivotul x = ap , dar nu este
obligatoriu.

calculeaza
S< = {ai | ai < x} S= = {ai | ai = x} S> = {ai | ai > x}

sorteaza recursiv S< si S>

ntoarce secventa S< , S= , S>


D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

12 / 44

Timpul mediu: algoritmi deterministi

Quicksort determinist

Quicksort: partitionarea
Presupunem ca S este memorata ntr-un tablou a.
Se determinarea prin interschimbari a unui indice k cu proprietatile:
p k q si a[k] = x;
i : p i k = a[i] a[k];
j : k < j q = a[k] a[j];
Partitionarea tabloului se face prin interschimbari care mentin invariante
proprietati asemanatoare cu cele de mai sus. Se considera doua variabile
index: i cu care se parcurge tabloul de la stanga la dreapta si j cu care se
parcurge tabloul de la dreapta la stanga. Initial se ia i = p + 1 si j = q.
Proprietatile mentinute invariante n timpul procesului de partitionare sunt:
i 0 : p i 0 < i = a[i 0 ] x

(1)

j 0 : j < j 0 q = a[j 0 ] x

(2)

si
D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

13 / 44

Timpul mediu: algoritmi deterministi

Quicksort determinist

Quicksort: partitionarea

Presupunem ca la momentul curent sunt interogate elementele a[i] si a[j]


cu i < j. Distingem urmatoarele cazuri:
1

a[i] x. Transformarea i = i+1 pastreaza (1).

a[j] x. Transformarea j = j-1 pastreaza (2).

a[i] > x > a[j]. Daca se realizeaza interschimbarea a[i] a[j] si se


face i = i+1 si j = j-1, atunci ambele predicate (1) si (2) sunt
pastrate.

Operatiile de mai sus sunt repetate pana cand i devine mai mare decat j.
Considerand k = i 1 si interschimband a[p] cu a[k] obtinem
partitionarea dorita a tabloului.

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

14 / 44

Timpul mediu: algoritmi deterministi

Quicksort determinist

Quicksort: algoritmul de partitionare


@input: a = (a[p], . . . , a[q])
@output: k, a cu proprietatea i : p i k =
k < j q = a[k] a[j]
partitioneaza(a, p, q, k) {
x = a[p] ;
i = p + 1;
j = q;
while (i j) {
if (a[i] x) i = i+1;
if (a[j] x) j = j-1;
if ((i < j) && (a[i] > x) && (x > a[j])) {
swap(a, i, j);
i = i+1;
j = j-1;
}
}
k = i-1; a[p] = a[k]; a[k] = x;
}
D. Lucanu (FII - UAIC)

Complexitatea medie

a[i] a[k] si j :

PA 2014/2015

15 / 44

Timpul mediu: algoritmi deterministi

Quicksort determinist

Quicksort: algoritm
Dupa sortarea recursiva a subtablourilor a[p..k 1] si a[k + 1..q] se
observa ca tabloul este sortat deja. Astfel partea de asamblare a solutiilor
este vida.
@input: a = (a[p], . . . , a[q])
@output: elementele secventei a n ordine cresc
atoare
qsort(a, p, q) {
if (p < q) {
partitioneaza(a, p, q, k)
qSort(a, p, k)
qSort(a, k+1, q)
}
}

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

16 / 44

Timpul mediu: algoritmi deterministi

Quicksort determinist

Quicksort: timpul n cazul cel mai nefavorabil

Cazul cel mai nefavorabil se obtine atunci cand la fiecare partitionare se


obtine una din subprobleme cu dimensiunea 1.
Deoarece operatia de partitionare necesita O(q p) comparatii, rezulta ca
pentru acest caz numarul de comparatii este O(n2 ).
Acest rezultat este oarecum surprinzator, avand n vedere ca numele
metodei este sortare rapida.
Asa cum vom vedea, ntr-o distributie normala cazurile pentru care
QuickSort executa n2 comparatii sunt rare, fapt care conduce la o
complexitate medie foarte buna a algoritmului.

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

17 / 44

Timpul mediu: algoritmi deterministi

Quicksort determinist

Quicksort: timpul mediu


Presupunem ca q + 1 p = n (lungimea secventei) si ca probabilitatea ca pivotul
1
x sa fie al k-lea element este (fiecare element al tabloului poate fi pivot cu
n
1
aceeasi probabilitate ). Rezulta ca probabilitatea obtinerii subproblemelor de
n
1
dimensiuni k p = i 1 si q k = n i este . In procesul de partitionare, un
n
element al tabloului (pivotul) este comparat cu toate celelalte, astfel ca sunt
necesare n 1 comparatii. Acum numarul mediu de comparatii se calculeaza prin
formula:

n
(n 1) + 1 P (T med (i 1) + T med (n i)) , daca n 1
med
n i=1
T
(n) =

1
, daca n = 0
Teorema
Complexitatea medie a algoritmului QuickSort este O(n log2 n).
D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

18 / 44

Timpul mediu: algoritmi probabilisti

Plan

Timpul mediu: algoritmi deterministi


Quicksort determinist

Timpul mediu: algoritmi probabilisti


Agoritmi nedeterministi
Algoritmi probabilisti
Quicksort probabilist

k-mediana

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

19 / 44

Timpul mediu: algoritmi probabilisti

Agoritmi nedeterministi

Plan

Timpul mediu: algoritmi deterministi


Quicksort determinist

Timpul mediu: algoritmi probabilisti


Agoritmi nedeterministi
Algoritmi probabilisti
Quicksort probabilist

k-mediana

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

20 / 44

Timpul mediu: algoritmi probabilisti

Agoritmi nedeterministi

Definitie
Activitatea unui algoritm nedeterminist se desfasoara n doua etape: ntr-o prima
etapa se ghiceste o anumita structura S si n etapa a doua se verifica daca S
satisface o conditia de rezolvare a problemei. Putem adauga puteri magice de
ghicire unui limbaj de programare adaugandu-i o functie de forma:
random(N) care ntoarce un numar aleatoriu din multimea
{0, 1, . . . , n 1}.
Pentru a sti daca verificarea s-a terminat cu succes sau nu adauga si doua
instructiuni de terminare:
success care semnaleaza terminarea verificarii (si a a algoritmului) cu
succes, si
failure care semnaleaza terminarea verificarii (si a a algoritmului) fara
succes.
Aceasta definitie a algoritmilor nedeterministi este strans legata de rezolvarea
problemelor de decizie. Reamintim ca, n general, orice problema poate fi redusa
la rezolvarea unei probleme de decizie.
D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

21 / 44

Timpul mediu: algoritmi probabilisti

Agoritmi nedeterministi

Functia random n Alk

Urmatorul exemplu este un generator de numere pseudo-aleatorii din


cartea The C Programming Language de Kernighan and Ritchie.
rand() {
random_seed = random_seed * 1103515245 +12345;
return (random_seed / 65536) % 32768;
}
In Alk este implementata varianta care ntoarce valoarea calculata modulo
n, unde n este parametrul functiei.

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

22 / 44

Timpul mediu: algoritmi probabilisti

Agoritmi nedeterministi

Agoritmi nedeterministi: exemplu

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;

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

23 / 44

Timpul mediu: algoritmi probabilisti

Agoritmi nedeterministi

Agoritmi nedeterministi: demo


$ krun programs/ex1.alk -cST="x |->
<k>
failure ;
</k>
<state>
x |-> { 0 |-> 0 1 |-> 0 2 |-> 0
</state>
$ krun programs/ex1.alk -cST="x |->
<k>
success ;
</k>
<state>
x |-> { 0 |-> 0 1 |-> 1 2 |-> 1
</state>
$
D. Lucanu (FII - UAIC)

{ .Map }" -cSEED="1214"

}
{ .Map }" -cSEED="1212"

Complexitatea medie

PA 2014/2015

24 / 44

Timpul mediu: algoritmi probabilisti

Algoritmi probabilisti

Plan

Timpul mediu: algoritmi deterministi


Quicksort determinist

Timpul mediu: algoritmi probabilisti


Agoritmi nedeterministi
Algoritmi probabilisti
Quicksort probabilist

k-mediana

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

25 / 44

Timpul mediu: algoritmi probabilisti

Algoritmi probabilisti

Definitii
Exista doua puncte de vedere:
1. algoritmul probabilist este vazut ca un algoritm nedeterminist
pentru care exista o distributie de probabilitate peste alegerile
nedetermiste
2. algoritmul probabilist este un algoritm care are o intrare
suplimentara ce consta ntr-o secventa de biti aleatorii;
e echivalent cu a spune ca algoritmul probabilist consta n o multime
de algoritmi determinissti din care un algoritm este ales aleatoriu
pentru o intrare data
pentru o intrare x a problemei date, calculele algoritmului probabilist
pot diferi n functie de e secventa
actuala de biti aleatori

Aceasta diferenta poate fi proiectata n complexitate sau iesire:


timpul de executie vazut ca o variabila aleatorie
iesirea vazuta ca o variabila aleatorie
La acest curs considera doar prima varianta (numiti si algoritmi Las
Vegas).
D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

26 / 44

Timpul mediu: algoritmi probabilisti

Algoritmi probabilisti

Timpul mediu de executie al algoritmilor probabilisti


ProbA,x (C ) = probabilitatea cu care algoritmul A executa calculul C
pentru intrarea x
Time(C ) = timpul necesar lui A ca sa execute C
y iesirea pentru intrarea x
AC (x) iesirea calculata de C pentru intrarea x
timpul mediu de executie aP
lui A pentru intrarea x este
Exp-TimeA (x) = M[Time] = C ,AC (x)=y ProbA,x (C ) Time(C ).
Time este variabila aleatorie.
timpul mediu de executie a lui A n cazul cel mai nefavorabil este
Exp-TimeA (n) = max{Exp-TimeA (x) | g (x) = n}

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

27 / 44

Timpul mediu: algoritmi probabilisti

Quicksort probabilist

Plan

Timpul mediu: algoritmi deterministi


Quicksort determinist

Timpul mediu: algoritmi probabilisti


Agoritmi nedeterministi
Algoritmi probabilisti
Quicksort probabilist

k-mediana

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

28 / 44

Timpul mediu: algoritmi probabilisti

Quicksort probabilist

Randomized Quicksort
- exemplul canonic pentru algoritmii Las Vegas
Algoritmul RQS
Intrare: S = {a0 , . . . , an1 }
Iesire: elementele ai n ordine crescatoare
1

daca n = 1 ntoarce a0 ,

altfel alege aleatoriu uniform k {0, . . . , n 1}

calculeaza
S< = {ai | ai < ak }
S= = {ai | ai = ak }
S> = {ai | ai > ak }

sorteaza recursiv S< si S>

ntoarce secventa S< , S= , S>


D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

29 / 44

Timpul mediu: algoritmi probabilisti

Quicksort probabilist

Analiza algoritmului RQS

Fie functia rank astfel ncat arank(0) . . . arank(n1) .


(
1 arank(i) si arank(j) sunt comparate
Definim Xij =
0 altfel
Cu ajutorul lui Xij se numara comparatiile dintre arank(i) si arank(j) .
Xij este variabila aleatorie
Numarul mediu de comparatii este
P
P
Pn1 P
M[ n1
i=0
j>i Xij ] =
i=0
j>i M[Xij ].

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

30 / 44

Timpul mediu: algoritmi probabilisti

Quicksort probabilist

Analiza algoritmului RQS


pij probabiltatea ca arank(i) si arank(j) sa fie comparate ntr-o executie
M[Xij ] = pij 1 + (1 pij ) 0 = pij
pij =

2
(probabilitatea ca arank(i) sau arank(j) sa fie ales pivot)
j i +1
n1 X
X

pij =

i=0 j>i

n1 X
X
i=0 j>i

n1 X
n
X

2
j i +1
2
k

i=0 k=1
n X
n
X

=2

i=1 k=1
n
X

= 2n

k=1
D. Lucanu (FII - UAIC)

1
k

1
k

Complexitatea medie

PA 2014/2015

31 / 44

Timpul mediu: algoritmi probabilisti

Quicksort probabilist

Analiza algoritmului RQS

Teorema
Numarul mediu de comparatii ntr-o executie al algoritmului RQS este cel
mult 2nHn = O(n log n).

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

32 / 44

k-mediana

Plan

Timpul mediu: algoritmi deterministi


Quicksort determinist

Timpul mediu: algoritmi probabilisti


Agoritmi nedeterministi
Algoritmi probabilisti
Quicksort probabilist

k-mediana

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

33 / 44

k-mediana

k-mediana: definitie

Definitie
Fie S o lista cu n elemente dintr-o multime univers total ordonata.
k-mediana este cel de-al k-lea element din lista sortata a elementelor din
S. In alte cuvinte, k-mediana este un element x {a[0], . . . , a[n 1]} cu
proprietatile |{i | 0 i < n a[i] < x}| < k si
|{i | 0 i < n a[i] x}| k (daca toate lelementele din S sunt
distincte, atunci avem egalitate n ultima relatie).

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

34 / 44

k-mediana

Aplicatie: mediana unei multimi de puncte

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

35 / 44

k-mediana

k-mediana: problema

Presupunem S memorata ntr-un tablou.


Consideram urmatoarea problema:
Input
Output

un tablou (a[i] | 0 i < n) si un numar k {0, 1, . . . , n 1},


k-mediana

Evident, orice algoritm de sortare rezolva problema de mai sus. Deoarece


cerintele pentru selectie sunt mai slabe decat cele de la ordonare, se pune
firesc ntrebarea daca exista algoritmi mai performanti decat cei utilizati la
sortare.

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

36 / 44

k-mediana

k-mediana: descriere algoritm


Conditia pe care trebuie sa o satisfaca la iesire tabloul a este formulata de:
(i)(i < k = a[i] a[k]) (i > k = a[i] a[k])
Fie j o pozitie n a astfel ncat:
(i)(i < j = a[i] a[j]) (i > j = a[i] a[j])
Un asemenea j poate fi obtinut cu algoritmul de partitionare de la
quickSort. Daca j = k atunci problema este rezolvata. Daca j < k
atunci cel de-al k-lea cel mai mic element trebuie cautat n subtabloul
a[j+1..n], iar daca j > k atunci cel de-al k-lea cel mai mic element
trebuie cautat n subtabloul a[1..j-1].

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

37 / 44

k-mediana

k-mediana: algoritmul recursiv

Aceasta conduce la urmatoarea formulare recursiva a algoritmului de


selectare:
@input: un tablou a cu n elemente, 0 k < n
@output: k-mediana
selecteaza(a, p, q, k) {
partitioneaza(a, p, q, j);
if (j == k) return a[k];
if (j < k) selecteaza(a, j + 1, q, k);
else selecteaza(a, p, j - 1, k);
}

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

38 / 44

k-mediana

k-mediana: algoritmul nerecursiv


Descrierea recursiva nu este avantajoasa deoarece produce un consum de
memorie suplimentara (stiva apelurilor recursive) ce poate fi eliminat prin
derecursivare:
@input: un tablou a cu n elemente, 0 k < n
@output: k-mediana
selecteaza(a, n, k) {
p = 0; 1 = n-1;
repeat
partitioneaza(a, p, q, j);
if (j < k) p = k1 + 1;
if (k < j) q = k1 - 1;
until (j == k);
return a[k];
}
D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

39 / 44

k-mediana

k-mediana: analiza

Analiza algoritmului selecteaza este asemanatoare cu cea a algoritmului


quickSort. In cazul cel mai nefavorabil necesita O(n2 ) timp, iar pentru
complexitatea medie se cunoaste urmatorul rezultat:
Teorema
Complexitatea timp medie a algoritmului Selecteaza este O(n). Mai
precis, numarul de comparatii este aproximativ:


n
n
n + k log
+ (n k) log
.
k
nk

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

40 / 44

k-mediana

Mediana in general: un rezultat ajutator


Proprietate: Fie data o bara de lungime 1, care se taie arbitrar n doua. Lungimea
3
medie a bucatii mai lungi este .
4

Spatiul continuu: Consider


am variabila aleatorie Y = max(u, 1 u).
3
R
R 1
R
M(Y ) = 01 M(Y | Y = u)du = 02 (1 u)du + 11 udu =
4
2
Spatiul discret: se mparte bara n n p
arti egale de lungime
n par: lungimile segmentelor mai lungi sunt
Pn1
k=n/2+1

k
n

2
n1

3n 6
4(n 1)

k
n

k=(n+1)/2

k
n

2
n1

3n 1
4n

La limit
a se obtine n ambele cazuri

3
4

n
2

+ 1, . . . , n 1, cu probabilitatea

2
n1

. Rezult
a media egal
a cu

3
4

n impar: lungimile segmentelor mai lungi sunt


Pn1

,k =

1
n

k
n

,k =

n+1
2

, . . . , n 1, cu probabilitatea

2
n1

. Rezult
a media egal
a cu

3
4

Concluzie: daca se mparte n doua 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

Mediana in general: analiza

Intuitiv: Exp-Time(n) (n 1) + Exp-TimeA ( 34 n)


Formal: Presupunem ca pivotul este ales aleatoriu.Avem
Exp-Time(n) = maxk Exp-Time(n, k)
Afirmam ca Exp-Time(n) 4n. Demonstram prin inductie.
Pn1
Exp-Time(n) (n 1) + i=n/2
Exp-Time(i) =
(n 1) + M(Exp-Time( n2 ), . . . , Exp-Time(n 1))
Ipoteza inductiva: Exp-Time(i) 4i, i = n/2, . . . , n 1
Avem Exp-Time(n) (n 1) + M(4 n2 , . . . , 4(n 1)) (n 1) + 4 43 n < 4n

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

42 / 44

k-mediana

Un algoritm determinist liniar

[Manuel Blum, Robert W. Floyd, Vaughan Pratt, Ronald L. Rivest, and


Robert E. Tarjan. 1972. Linear time bounds for median computations.]
n
5

grupe de 5 elemente si calculeaza mediana

grupeaza tabloul n
fiecarei grupe;

calculeaza recursiv mediana medianelor p

utilizeaza p ca pivot si separa elementele din tablou

apeleaza recursiv pentru subtabloul potrivit (n care se afla


k-mediana)

D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

43 / 44

k-mediana

Un algoritm determinist liniar: analiza


Notatii: T (n, k) timpul pentru cazul cel mai nefavorabil pentru k-mediana,
Tn = maxk T (n, k) Pasul 1: O(n)
Pasul 2: T (n/5)
Pasul 3: O(n)
3
3
din tablou este p si ca cel putin 10
din
pasul 4: presupunand ca cel putin 10
7n
tablu este p, pasul recursiv ia cel mult T ( 10 ).
nsumand obtinem:
T (n) cn + T ( n5 ) + T ( 7n
10 )
2
n
n
7n
7n
cn + c 5 + T ( 52 ) + T ( 510 ) + c 7n
+
T
(
)
+
T
( 710n2 ) . . . = O(n) (similar
10
510
teoremei de master).
3
3
din tablou este p si ca cel putin 10
din
Demonstrarea afirmatiei cel putin 10
tablou este p:
Fie g = n5 .
Cel putin d g2 e dintre grupuri (cele cu mediana p) au cel putin trei elemente p.
Rezulta ca numarul de elemente p este cel putin 3d g2 e 3n
10 .
Analog pentru numarul de elemente p.

Comparati experimental cei doi algoritmi pentru mediana.


D. Lucanu (FII - UAIC)

Complexitatea medie

PA 2014/2015

44 / 44

S-ar putea să vă placă și