cursul 1 - algoritmi

18
CAPITOLUL 1 ANALIZA STOCHASTICĂ A ALGORITMILOR 1.1 CONSIDERAŢII MATEMATICE PRELIMINARE 1.1.1 Funcţia caracteristică a unei variabile aleatoare. Definiţia 1.1.1.1. Numim variabilă aleatoare (v.a.) complexă orice expresie complexă Z X iY = + , unde X şi Y sunt variabile aleatoare reale. O v. a. complexă poate fi interpretată, ţinând seama de reprezentarea grafică a unui număr complex, ca un punct aleator M(X,Y) în plan. Definiţia 1.1.1.2. Prin definiţie, valoarea medie corespunzătoare lui Z este: ( ) ( ) ( ). M Z MX iM Y = + Fie X o v.a. reală având funcţia de repartiţie F(x). Să considerăm expresia: cos sin , itX e tX i tX t R = + Această expresie este o v.a. complexă, al cărui modul este egal cu 1 şi deci este mărginită. Valoarea medie a acestei v.a. există şi este o funcţie ( ), t t R ϕ , pe care o vom numi funcţie caracteristică a variabilei X. Dacă X este o v.a. discontinuă, atunci ( ) () cos sin , itX itX r r r r r r r r r t Me pe p tX i p tX ϕ = = = + iar dacă v.a. X are funcţia de repartiţie F, atunci: () ( ). itX t e dF X ϕ −∞ = Dacă ( ) X ρ este densitatea de repartiţie a v.a. X, atunci: () ( ) (cos ) ( ) (sin ) ( ) . itX t e X dX t X dX i t X dX ϕ ρ ρ ρ −∞ −∞ −∞ = = + Observaţie. Orice v.a. are ataşată o funcţie de repartiţie F(x) şi o funcţie caracteristică () t ϕ . Calculul direct cu funcţia de repartiţie prezintă dificultăţi, deoarece aceste funcţii sunt în general discontinue, pe când funcţiile caracteristice sunt continue faţă de t, cu valori complexe. Proprietăţi ale funcţiei caracteristice: 1. (0) 1; ϕ = 2. () 1, ; t t R ϕ ∀∈ 3. () t ϕ este uniform continuă pe R;

Upload: maria-bojescu

Post on 02-Dec-2015

6 views

Category:

Documents


0 download

DESCRIPTION

algoritmi

TRANSCRIPT

Page 1: Cursul 1 - Algoritmi

CAPITOLUL 1

ANALIZA STOCHASTICĂ A ALGORITMILOR

1.1 CONSIDERAŢII MATEMATICE PRELIMINARE 1.1.1 Funcţia caracteristică a unei variabile aleatoare.

Definiţia 1.1.1.1. Numim variabilă aleatoare (v.a.) complexă orice

expresie complexă Z X iY= + , unde X şi Y sunt variabile aleatoare reale. O v. a. complexă poate fi interpretată, ţinând seama de reprezentarea

grafică a unui număr complex, ca un punct aleator M(X,Y) în plan. Definiţia 1.1.1.2. Prin definiţie, valoarea medie corespunzătoare lui Z

este: ( ) ( ) ( ).M Z M X iM Y= + Fie X o v.a. reală având funcţia de repartiţie F(x). Să considerăm expresia: cos sin , itXe tX i tX t R= + ∈ Această expresie este o v.a. complexă, al cărui modul este egal cu 1 şi

deci este mărginită. Valoarea medie a acestei v.a. există şi este o funcţie ( ),t t Rϕ ∈ , pe care o vom numi funcţie caracteristică a variabilei X.

Dacă X este o v.a. discontinuă, atunci ( )( ) cos sin ,itXitX

r r r

rr r r r rt M e p e p tX i p tXϕ = = = +∑ ∑ ∑

iar dacă v.a. X are funcţia de repartiţie F, atunci:

( ) ( ).itXt e dF Xϕ∞

−∞

= ∫

Dacă ( )Xρ este densitatea de repartiţie a v.a. X, atunci:

( ) ( ) (cos ) ( ) (sin ) ( ) .itXt e X dX t X dX i t X dXϕ ρ ρ ρ∞ ∞ ∞

−∞ −∞ −∞

= = +∫ ∫ ∫

Observaţie. Orice v.a. are ataşată o funcţie de repartiţie F(x) şi o funcţie caracteristică

( )tϕ . Calculul direct cu funcţia de repartiţie prezintă dificultăţi, deoarece aceste funcţii sunt în general discontinue, pe când funcţiile caracteristice sunt continue faţă de t, cu valori complexe.

Proprietăţi ale funcţiei caracteristice: 1. (0) 1;ϕ = 2. ( ) 1, ;t t Rϕ ≤ ∀ ∈

3. ( )tϕ este uniform continuă pe R;

Page 2: Cursul 1 - Algoritmi

4. funcţia caracteristică a sumei a două v.a. independente este egală cu produsul funcţiilor caracteristice corespunzătoare celor două variabile:

; ,h f g f g= + v.a. independente, rezultă

( ) ( ) ( ) ( )( )( ) ,ith it f g itf itgh t M e M e M e M eϕ += = = •

deci ( ) ( ) ( );h f gt t tϕ ϕ ϕ= •

5. ( ) ( )t tϕ ϕ− = 6. fie ( )tϕ funcţia caracteristică a repartiţiei F(x). Dacă x1, x2 sunt

puncte de discontinuitate ale lui F, atunci: ( )1 2

2 1

1( ) ( ) ( )2 lim

itx itxc

c c

e eF x F x t dt

itϕ

π

− −

→∞ −

−− = • ∫

(teorema de inversiune a funcţiei caracteristice).

1.1.2 Funcţia generatoare

Ori de câte ori dorim să obţinem informaţii despre o secvenţă de numere 0 1, ,..., ,....n na a a a< >= putem construi o sumă infinită în funcţie de un

parametru z:

20 1 2

0

( ) ... nn

n

G z a a z a z a z∞

=

= + + + =∑ (1)

Apoi, putem încerca să obţinem informaţii despre G(z) (funcţia generatoare pentru secvenţa 0 1, ,..., ,....na a a ).

În legătură cu seria (1) sunt valabile următoarele afirmaţii: i. dacă (1) converge pentru o valoare particulară 0z , atunci ea este convergentă

pentru toate valorile lui z, cu 0 ;z z< ii. când se lucrează cu funcţia generatoare nu trebuie să ne preocupe

convergenţa seriilor, deoarece se exploarează doar posibilităţile lor de abordare pentru soluţionarea unei probleme.

1.1.2.1 Proprietăţi

1) Adunarea: Dacă )(1 zG este funcţia generatoare pentru na< > şi )(2 zG pentru nb< > , atunci 1 2( ) ( )G z G zα β+ este funcţia generatoare pentru n na bα β< + > , deoarece:

0 0 0

( )k k kk k k k

k k k

a z b z a b zα β α β≥ ≥ ≥

+ = +∑ ∑ ∑ .

Page 3: Cursul 1 - Algoritmi

2) Deplasarea:

Dacă 0

( ) nn

n

G z a z∞

=

=∑ este funcţia generatoare pentru 0 1, ,..., ,....na a a

atunci ( )nz G z este funcţia generatoare pentru 0 10,...,0, , ,....n

a a :

ori

0

( ) 0 .. 0n

n n k k kk k n k n

k k n k n

z G z z a z a z a z− −≥ ≥ ≥

= = + + + =∑ ∑ ∑ .

3) Înmulţirea Fie 1 2

0 0

( ) ; ( )k kk k

k k

G z a z G z b z≥ ≥

= =∑ ∑ , atunci

21 2 0 0 0 1 1 0 0 2 1 1 2 0( ) ( ) ( ) ( ) ...,G z G z a b a b a b z a b a b a b z• = + + + + + +

deci 1 2( ) ( )G z G z• este o funcţie generatoare pentru secvenţa 0, 1,.., nS S S , unde

0

n

n k n kk

S a b −=

=∑

4) Schimbarea lui z: ( )G cz este funcţia generatoare pentru secvenţa n

nc a< > . În particular,

funcţia generatoare pentru secvenţa 21, , ,....c c este 1

1 cz−, dacă 1cz < .

Pentru extragerea termenilor alternanţi ai unei serii se utilizează artificiul:

2 40 2 4

3 51 3 5

1 [ ( ) ( )] ...21 [ ( ) ( )] ...2

G z G z a a z a z

G z G z a z a z a z

+ − = + + +

− − = + + +

5) Diferenţierea şi integrarea: Fie

0

( ) kk

k

G z a z≥

= ∑ , atunci

10

( ) ( 1) kk

k

G z k a z+≥

′ = +∑ şi 1

10

( )z

kk

k

aG t dt zk−

=∑∫ .

Observaţie. Funcţia generatoare pentru nna< > este ( )zG z′ . 1.1.2.2 Exemple

Page 4: Cursul 1 - Algoritmi

1) Funcţia generatoare ataşată şirului 2 3 , cu :n nna n N= + ∈

20 0 0 0

1 1 2 5( ) (2 3 ) (2 ) (3 )1 2 1 3 1 5 6

k k k k k kk

k k k k

zG z a z z z zz z z z≥ ≥ ≥ ≥

−= = + = + = + =

− − − +∑ ∑ ∑ ∑ unde am presupus ca ambele serii geometrice sunt convergente, ceea ce se

realizeaza pentru 13

z < .

2) Funcţia generatoare pentru ! , :n n N< > ∈ Fie

0

( ) ! k

k

G z k z≥

=∑ funcţia generatoare ataşată. Atunci:

1 2 1 1

1 1 0

( ) ! ; ( ) ! ; ( ) ! .k k k

k k k

G z k k z z G z k k z zG z k z− + +

≥ ≥ ≥

′ ′= ⋅ = ⋅ =∑ ∑ ∑

Deducem imediat următoarea ecuaţie diferenţială (cu coeficienţi variabili):

2 1 1

1 1 0

( ) ( ) ( ! !) 1 ( 1)! 1 ! 1k k k

k k k

z G z zG z z k k k z z k z k z+ +

≥ ≥ ≥

′ + = + ⋅ + = + + + − = −∑ ∑ ∑ sau 2 ( ) ( ) ( ) 1.z G z zG z G z′ + = − (*) Căutăm soluţia ecuaţiei omogene corespunzătoare: 2 ( 1) 0,z y y z′ + − = unde s-a notat ( ) ( ).y z G z= Rezultă:

2

1y zy z′ −= ⇒ (prin integrare) 2

1 1ln ln( ) ln lnzy c dz c zz z−

= + = − −∫

sau

1

( ) ( ) , 0.zcG z y z e cz

−= = > (**)

Aplicând metoda variaţiei constantelor, încercăm să găsim o soluţie particulară a ecuaţiei diferenţiale (*). Considerând ( )c c z= şi introducând (**) în (*), rezultă:

1 1 1

2 1 122

1( )1

z z z

z z

c z e c e z c eczz c e e

z z

− − −

− −

′ + ⋅ ⋅ ⋅ − ⋅ + ⋅ = ⋅ −

sau după reduceri:

11

1( ) 1 ( ) ( ) .

z tzz

a

e ec z z e c z c z dtz t

−′ ′⋅ ⋅ = − ⇒ = − ⇒ = −∫

Page 5: Cursul 1 - Algoritmi

Aşadar, o soluţie particulară a lui (*) este ( )G z , unde

1

1( )

z t

a z

e dttG z ez

−−

= ⋅∫

(integrala care apare nu pune probleme pentru a, convenabil ales). Funcţia generatoare căutată va fi:

1

1 1( ) ( ) ( )

z t

az z

e dttcG z G z G z e e

z z− −

−= + = + ⋅

∫ cu a, c constante.

1.1.2.2.1 Funcţii generatoare cunoscute Acestea rezultă, în general, din dezvoltări în serii de puteri:

1) teorema binomului: 2

0

( 1)(1 ) 1 ... ... ;2

r k kr

k

r rz rz z C z∞

=

−+ = + + + + =∑

2) seria exponenţială: 2

0

1 11 ... ;2! !

z k

k

e z z zk

=

= + + + =∑

3) serii logaritmice: 1

2 3

1

1 1 ( 1)ln(1 ) ...2 3

kk

k

z z z z zk

+

−+ = − + − =∑

2 3

1

1 1 1 1ln ... .1 2 3

k

k

z z z zz k≥

= + + + = − ∑

1.1.2.3 Funcţia generatoare a unei variabile aleatoare

Presupunem în continuare o variabilă aleatoare care ia numai valori întregi şi nenegative. Fie ( ) kP k pξ = = probabilitatea ca v.a. ξ să ia valoarea k. Numim funcţie generatoare a v.a. ξ :

0

( ) kk

k

G z p zξ

=

=∑ cu z C∈ şi 1.z ≤ (1)

Observaţie. Funcţia generatoare determină univoc repartiţia unei v.a. ξ . Într-adevăr, fie i( ) ( )tt G eξ ξϕ = funcţia caracteristică ataşată în mod

univoc funcţiei Gξ .

Page 6: Cursul 1 - Algoritmi

Se observă că: ( )

0

(0)(0); , 1.2,.....

!

k

k

Gp G p k

ξ= = =

În continuare se va arăta cum se utilizează ( )G zξ pentru calculul momentelor. Pentru aceasta vom calcula derivatele funcţiei generatoare în punctul 1z = .

Observaţie. Funcţia generatoare este definită numai pentru 1z ≤ ; deci, derivatele în

punctul 1z = , dacă există, le vom calcula ca derivate la stânga. Avem deci:

'

1

( )

(1)

(1) ( 1) ( 1)

kk

sk

k s

G kp

G k k k s p

ξ

ξ

=

=

= = − ⋅ ⋅ − +

∑ …

(1’)

Notând cu sM momentul de ordinul s al lui ξ , care este media lui ( )sM ξ , avem:

0 (1) 1,M M= = (media unei constate este constanta însuşi)

1

( ) , s 1,2,....s ss k

k

M M k pξ≥

= = =∑

Din (1) şi (1’) rezultă:

0(1) 1G Mξ = = deoarece 0

1kk

p∞

=

=∑ ,

'1

1

(1) ( ) kk

G M M kpξ ξ∞

=

= = =∑

" 2 2 21 1 2 1

2 2 2

(1) ( ) 1 1k k kk k k

G k k p k p kp p p M Mξ

∞ ∞ ∞

= = =

= − = − + − = −∑ ∑ ∑

sau ' "2 (1) (1)M G Gξ ξ= + .

Obţinem acum uşor momentele centrate de ordinul 1,2,..., astfel: ( ( )) , 2,3,...s

sm M M sξ ξ = − = . În particular, pentru 2m avem:

22 2 " ' '

2 2 1[( ( )) ] (1) (1) (1)m M M M M G G Gξ ξ ξξ ξ = − = − = + − .

Cum dispersia 2 ( )D ξ este momentul de ordinul 2, 2m , avem:

22 " ' '( ) (1) (1) (1)D G G Gξ ξ ξξ = + − şi media '( ) (1)M Gξξ = .

Page 7: Cursul 1 - Algoritmi

1.2 ALGORITMI, ANALIZA UNUI ALGORITM

1.2.1 Algoritmi, caracteristici generale

Definiţia 1.2.1.1. Numim algoritm o prescripţie care determină un anumit proces de calcul şi care este precisă, perfect inteligibilă şi nu admite nici un fel de interpretări din partea celui care o duce la îndeplinire.

Înţelesul modern de algoritm este destul de apropiat de cel de reţetă, proces, metodă, procedură, rutină.

Definiţia 1.2.1.2. Algoritmul reprezintă un set finit de reguli care dă o secvenţă de operaţii pentru soluţionarea unui tip specific de probleme.

Observaţie. Orice algoritm este alcătuit din paşi, un pas fiind identificat printr-un nume şi un număr.

Caracteristicele unui algoritm: 1) caracter finit: un algoritm trebuie întotdeauna să se termine într-un

număr finit de paşi; 2) caracter determinist (claritatea): fiecare pas al unui algoritm trebuie

definit în mod precis; ordininele date trebuie să fie specificate în mod riguros şi fără ambiguităţi;

3) intrarea: un algoritm are una sau mai multe intrări constituite din cantităţile iniţiale care-i sunt date înainte ca algoritmul să înceapă; aceste intrări sunt luate dintr-un set specific de obiecte;

4) ieşirea: un algoritm are una sau mai multe ieşiri, adică acele cantităţi ce sunt într-o relaţie specifică cu intrările;

5) eficacitatea: orice algoritm trebuie sa ne conducă la rezultatul scontat în timp optim. Toate operaţiile ce urmează a fi executate în algoritm trebuie să fie suficient de fundamentate încât, în principiu, să poată fi făcute exact şi într-un interval finit de timp.

1.2.2. Exemple

1. Algoritmul lui Euclid Fiind daţi 2 întregi m şi n, să se găsească c.m.m.d.c. al lor:

Pasul 1: atribuie mr m nn

← − ⋅

Pasul 2: cât timp 0≠r execută

;;

rnnm

←←

nnmmr ⋅

−←

Pasul 3: tipăreşte n.

Page 8: Cursul 1 - Algoritmi

2. Algoritmul pentru calculul lui a . Se porneşte de la şirul recurent )( nx care satisface relaţia:

1

12n n n

n

ax x xx+

= + −

.

Observaţie: Se demonstrează uşor că acesta este convergent către )0( >aa . În algoritm se foloseşte o eroare de calcul ε .

Pasul 1: atribuie 0xu ← :

atribuie

−← u

uav

21 .

Pasul 2: cât timp ε>v execută:

.21;

;

−←

←+←

uuav

vuvux

Pasul 3: tipăreşte u. 1.2.3 Analiza unui algoritm

În practică dorim algoritmi care să îndeplinească anumite criterii valorice bine definite. Un criteriu de apreciere este durata de timp necesară pentru execuţia algoritmului; aceasta poate fi apreciată în funcţie de numărul de execuţii ale fiecărui pas. Alte criterii sunt: adaptabilitatea algoritmului la sistemele de calcul, simplitatea, structura, etc. Uneori există mai mulţi algoritmi pentru aceeaşi problemă şi va trebui să decidem care este mai bun. Aceasta conduce la un domeniu extrem de interesant al analizei algoritmilor: dându-se un algoritm, problema este de a determina caracteristicele performanţelor sale. Ideea generală este de a lua un algoritm şi de ai studia comportarea medie. Să aplicăm unele tehnici stabilite deja pentru studiul unui algoritm tipic.

Fie şirul nkkX ,...,2,1 ),( = . Să se determine nkkXmaxk

,...,2,1 ),( = .

Vom găsi m şi j, astfel: )( )(1

kXmaxjXmnk≤≤

== .

Algoritmul este următorul:

M1 (iniţializare): Se stabileşte .)( ;1 ; mnXknjn →→−→ M2 (s-a testat totul?): Dacă 0=k algoritmul s-a terminat.

Page 9: Cursul 1 - Algoritmi

M3 (comparare): Dacă ⇒≤ )( mkX treci la pasul M5. M4 (modificarea lui m): Se stabileşte .)( ; mkXjk →→ M5 (micşorarea lui k): ⇒−= 1kk treci la pasul M2.

Figura 1.1 Schema logică a algoritmului de găsire a elementului maxim dintr-un şir

START

READ n, X(k),k=1,n

j = n

k = n - 1

m = X(n)

M1

WRITE j, m STOP k=0 M2

X(k)≤m

j = k

m = X(k)

k = k -1

M4

M3

M5

da

DA

Page 10: Cursul 1 - Algoritmi

Algoritmul necesită o cantitate fixă de memorie, astfel încât vom analiza numai timpul necesar pentru a-l executa.

Pentru aceasta vom determina numărul de execuţii ale fiecărui pas.

Numărul pasului Numărul de execuţiiM1 1 M2 N M3 N-1 M4 A M5 N-1

Figura 1.2 Tabela cu numărul de execuţii ale fiecărui pas

Informaţiile necesare pentru determinarea timpului de rulare pe un calculator ne sunt date cunoscând numărul de execuţii al fiecărui pas. În tabelul din figura 1.2 se cunoaşte totul, cu excepţia lui A care poate fi privită ca o variabilă aleatoare. Analiza algoritmului constă în:

1) găsirea valorii minime pentru A; 2) găsirea valorii maxime a lui A; 3) găsirea valorii medii pentru A; 4) găsirea deviaţiei standard pentru A (o indicaţie calitativă în legătură cu

apropierea faţă de media valorii).

1. Valoarea minimă a lui A este 0; aceasta se întâmplă dacă )()( kXmaxnX

k= .

2. Valoarea maximă este 1−n ; apare în cazul )(...)2()1( nXXX >>> . 3. Valoarea medie este între 0 şi 1−n . Pentru a o determina se face

presupunerea următoare: )(kX sunt valori distincte şi fiecare din cele !n permutări ale acestor valori sunt la fel de probabile. În algoritmul

precedent, presupunem pentru exemplificare :3=n

Situaţia Valoarea lui A )3()2()1( XXX << 0 )2()3()1( XXX << 1 )3()1()2( XXX << 0 )1()3()2( XXX << 1 )1()2()3( XXX << 2 )2()1()3( XXX << 1

Media lui A va fi: 65

6121010=

+++++ .

Page 11: Cursul 1 - Algoritmi

În cazul general, probabilitatea ca A să aibă valoarea k va fi: .

! carepentru obiecte de permutari de nr.)(

nkAnpkAP nk

==== (a)

De exemplu, în tabela de mai sus: .61 ;

63 ;

62 323130 === ppp

Valoarea medie este:

∑−

=

⋅=1

0.

n

knkn kpA

4. Dispersia: ;)( 2

nn AAMV −= deci ∑ ∑ ∑ ∑ =+⋅−⋅=⋅−=

k k k knknnknnknknn pApkApkpAkV 222 2)(

∑∑ −⋅=+−⋅=k

nnkk

nnnk ApkAApk .2 22222

Abaterea standard: nn V=σ . În general însă se determină greu probabilităţile nkp . În majoritatea problemelor se va cunoaşte funcţia generatoare )(zGn , dar nu vom avea nici o cunoştinţă despre probabilităţile reale. În schimb, se pot determina media şi dispersia din însăşi funcţia generatoare. Pentru aceasta să presupunem că avem o funcţie generatoare ai cărei coeficienţi sunt probabilităţi: .....,)( 2

210 +++= zpzppzG unde kp este probabilitatea ca un eveniment să ia valoarea k. Dorim să calculăm:

−⋅=

⋅=

kk

defk

k

def

medGpkGdis

pkGmed

.)()(

;)(

22

Se observă că:

1)1( =G , întrucât ∑∞

=

==0

1)1(k

kpG

′−′+′′=

′=⋅= ∑2))1(()1()1()(

);1()(

GGGGdis

GpkGmedk

k

anterior demonstrate. Teoremă. Fie G, H două funcţii generatoare cu 1)1()1( == HG . Dacă

)(Gmed şi )(Gdis sunt definite ca mai sus, avem: )()()( HmedGmedHGmed +=•

Page 12: Cursul 1 - Algoritmi

)()()( HdisGdisHGdis +=• . Demonstraţie. Media şi dispersia sunt aşa-numiţii semiinvarianţi (cumulaţi). Semiinvarianţii sunt definiţi astfel:

).(ln...!3!2!1

33

221 eG

tktktk ′=+⋅

+⋅

+⋅

Deoarece semiinvarianţii sunt definiţi în funcţie de logaritmul unei funcţii generatoare, teorema de mai sus este evidentă. Fie 1

1,10 ...)( −−+++= n

nnnnn zpzppzG (b)

( unde !n

Np nk

nk = , vezi (a), iar nkN reprezintă numărul de permutări de n obiecte

pentru care kA = , aşadar, nkp este probabilitatea ca kA = ). Totul revine la a calcula )( nGmed şi )( nGdis . Demonstrăm în prealabil următoarea propoziţie. Propoziţie. )(zGn , definită ca mai sus, verifică relaţia de recurenţă:

2 ),(1)( 1 ≥⋅−+

= − nzGnnzzG nn .

Demonstraţie. Se arată uşor prin inducţie că: 1,1,1, )1( −−− +−= knknkn NNnN , atunci

1, 1, 1

1, 1, 1!,,

( 1)( 1)! ( 1)!( 1) ( 1)! ( 1)!! !

n k n k

N n k n knn kn k

N Nn n nn N N n np

n n

− − −

− − −

− − + −− + − −= = = =

knkn pn

npn ,11,1

11−−−

−+= , (1”)

cu knN , definiţi ca mai sus. Deci:

knknkn pn

npn

p ,11,1,11

−−−−

+= .

cu condiţiile iniţiale:

≥<==

nkkpp

kn

kk

si 0pentru 0,

0,1 δ , deci

≥=

=.1 daca 0

0 daca 1,1 k

kp k

Observaţie: nn

npn1

!)!1(

0, =−

= , deoarece permutările de n obiecte pentru

care 0=A se obţin în cazul în care )(nX este maximul din şir; în acest caz putem permuta cele 1−n elemente rămase în )!1( −n moduri distincte. Pe baza formulei (1”) şi a definiţiei (b) a lui )(zGn găsim:

1 1

,0 1, 1 1,0 1

1 1( )n n

k kn nk n n k n k

k k

nG z p z p p p zn n

− −

− − −= =

− = = + + =

∑ ∑

Page 13: Cursul 1 - Algoritmi

∑ ∑−

=

=−−−−

−++=

1

1

2

11,11,1 .111 n

k

n

k

kkn

kkn zp

nnzp

nn (2)

Dar 0,10,11,10,111

−−−−−

=−

+= nnnn pn

npn

npn

p ; din (2) rezultă succesiv:

=−

++−

= ∑ ∑−

=

=−−−

2

0

2

1,1,10,1

11)(n

k

n

k

kkn

kknn zp

nnzp

nzp

nnzG

∑−

=−−−−−

−+=

−+=

−+=

2

0111,11 ).(1)(1)(1)(

n

knnn

kknn zG

nnzzG

nnzG

nzzp

nnzG

nz

Acum, punând ( )nnzzQn

1def −+= , rezultă ( ) ( )zQzGn

kkn ∏

=

=2

(deoarece

( ) 11 =zG ).

Dar ' '' ' ' 22

1 1 1( ) (1) şi ( ) (1) (1) ( (1))n n n n n nmed Q Q dis Q Q Q Qn n n

= = = + − = −

(deoarece '' (1) 0nQ = ) şi notând (2)2

1 1

1 1 ; şi n n

n nk k

H Hk k= =

= =∑ ∑ avem atunci:

2 2

1( ) ( ) 1n n

n k nk k

med G med Q Hk= =

= = = −∑ ∑

şi

∑ ∑= =

−=

−==

n

k

n

knnkn HH

kkQdisGdis

2 2

)2(2

11)()( .

Deci: ( )(2)min 0, med 1, max 1, disn n nA H n H H= = = − = − = − . Se utilizează adesea în locul dispersiei, abaterea medie pătratică: (2)

n n nH Hσ = − . 1.2.4 Analiza algoritmilor de sortare Analiza acestor algoritmi include cunoaşterea numărului de permutări de elemente care au exact k inversiuni. Notăm acest număr cu )(kI n . De exemplu, pentru 5)2(;3)1(,4 === nn IIn . Schema logica a algoritmului este prezentată în figura 1.3.

Funcţia generatoare a mărimilor )(kI n : ...)2()1()0()( 2 +++= zIzIIzG nnnn satisface relaţia: ( ) )(...1)( 1

12 zGzzzzG nn

n −−++++= .

Page 14: Cursul 1 - Algoritmi

Dacă împărţim )(zGn la !n , obţinem funcţia generatoare )(zgn pentru distribuţia de probabilitate a numărului de inversiuni într-o permutare aleatoare de n elemente. Vom avea: )(...)()()( 21 zhzhzhzg nn ⋅⋅⋅= , unde

n

zzzzhn

n

12 ...1)(−++++

= .

Figura 1.3.

Deci: ∑∏==

=

=

n

kk

n

kkn zhmedzhmedzgmed

11

));(()())((

∑∏==

=

=

n

kk

n

kkn zhdiszhdiszgdis

11

)).(()())((

Cum

START

i = 1

j = i + 1

ai < aj ji aa ↔

M1

M4

M2

j = n

i = n - 1

STOP

M3

M3 j =j + 1

i = i + 1 M6

M5

M7

da

da

da

Page 15: Cursul 1 - Algoritmi

21)1())(( ' −

==nhzhmed nn ;

4)1(

323

21))1(()1()1())((

222""' −

−+−

+−

=−+=nnnnhhhzhdis nnnn ,

rezultă:

2

1

1( ( )) ( 1) ;2 4

n

nk

n nmed g z k=

−= − =∑

2 2

1

1 3 2 ( 1) (2 5)( 1)( ( )) ,2 3 4 72

n

nk

k k k k n n ndis g z=

− − + − + −= + − =

sau

(2 5)( 1)

72n

n n nσ + −= .

Pentru deducerea formulelor finale s-au aplicat rezultatele demonstrate anterior. Aşadar, despre v.a. A (care semnifică numărul de execuţii ale pasului M4) am găsit rezultatele:

( 1) ( 1) (2 5)( 1)min 0, med , max , dis4 2 72

n n n n n n nA − − + − = = = = =

.

1.2.4.1 Exemple de analiză stocastică a algoritmilor 1). Fie matricea ( ) , 1, , 1,ija i n j n= = . Să se bordeze matricea la dreapta cu cel mai mare element de pe fiecare linie. Să se facă analiza stocastică a algoritmului. Schema logică a algoritmului este dată în figura 1.4.

Analiza numărului de execuţii pe fiecare bloc este dată în tabelul din figura 1.5:

Blocul Numărul de

execuţii Blocul Numărul de

execuţii M1 1 M6 n(n-1) M2 n M7 n(n-1)-n M3 n M8 n M4 n(n-1) M9 n M5 nA M10 n-1

Figura 1.5 Analiza numărului de execuţii pe fiecare bloc pentru exemplul 1.

Pentru variabila aleatoare nA avem:

( )2 (2)min 0, max ( 1), med ( 1), disn n nn n n H n H H= = − = − = − .

Page 16: Cursul 1 - Algoritmi

Figura 1.4 Schema logică a algoritmului din exemplul 1.

READ n, (aij)

START

i = 1

i = j

ija=max

M1

M2

M3

max<ai,j+1

1,max += jia

M4

M5

j = n - 1 M6 j = j + 1

max1, =+nia M8

i = n i = i + 1

WRITE aij, 1,i n=

1, 1j n= +

STOP

M7

M10

M9

NU

DA

NU

Page 17: Cursul 1 - Algoritmi

2). Fie matricea ( ) , 1, , 1,ija i n j n= = . Să se ordoneze crescător de sus în jos diagonala principală a matricei, numai prin permutarea între ele a liniilor şi coloanelor.

Schema logică a algoritmului din exemplul 2 este dată în figura 1.7. Analiza numărului de execuţii pe fiecare bloc este dată în tabelul din

figura 1.6:

Blocul Numărul de execuţii

Blocul Numărul de execuţii

M1 1 M9 nB M2 n-1 M10 nB M3 2

nC M11 nB-1 M4 B M12 2

nC M5 nB M13 2

nC -1 M6 nB M14 n-1 M7 nB-1 M15 n-2 M8 B

Figura 1.6 Analiza numărului de execuţii pe fiecare bloc pentru exemplul 2.

Pentru variabila aleatoare nB avem:

( )32 2 2 5 ( 1)( 1) ( 1)min 0, max , med , dis2 4 72

n n nn n n n + −− −= = = =

Page 18: Cursul 1 - Algoritmi

Figura 1.7 Schema logică a algoritmului pentru exemplul 2.

START

READ n, (aij)

i = 1

j = i +1

aii > ajj

k = 1

jkik aa ↔

k = n

k = 1

kikj aa ↔

k = n

j = n

i = n - 1

WRITE

(aij) STOP

M1

M2

M3

M4

M5

M6

M8

M9

k= k+1

M7

k=k+1 M10

M11

M12j=j+1

M13

i=i+1 M14

M15

NU

nu

da

da

da