Documente Academic
Documente Profesional
Documente Cultură
Mitică Craus
1/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Cuprins
Introducere
Algoritmul Muller-Preparata
Descriere
Pseudocod
Exemplu de execuţie
Corectitudinea
Complexitatea
Comentarii
Algoritmul Impar-Par (Odd-Even Sort)
Descriere
Pseudocod pentru algoritmul secvenţial
Exemplu de execuţie
Pseudocod pentru un lanţ de unităţi de procesare
Complexitatea
Comentarii
Sortare bitonică
Descriere
Pseudocod
Exemplu de sortare a unei secvenţe bitone
Corectitudinea
Implementare
Complexitatea
Comentarii
Sortare rapidă pe hipercub
Descriere
Pseudocod
Exemplu de execuţie
Complexitatea
Comentarii
Comentarii bibliografice
2/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Introducere
3/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
4/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
5/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Figura 1 : Exemplu de execuţie a algoritmului de sortare paralelă Muller-Preparata pentru secvenţa 2,6,3,8
6/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Corectitudinea
Lema (1)
Poziţiile finale ale elementelor secvent, ei a0 , a1 , . . . , an−1 respectă relaţia de ordine ” < ”.
Demonstraţie.
În urma calculării numărului elementelor care se află ı̂n faţa unui element ai (COMPRIM ITERATIV
(R[j],+)), se obţine poziţia finală a acestuia, ı̂n concordanta cu relaţia de ordine ” < ”.
Teorema (1)
Algoritmul Muller-Preparata sortează corect o secvent, ă de elemente a0 , a1 , . . . , an−1
dintr-o mult, ime U peste care este definită o relaţie de ordine totală ” < ”.
Demonstraţie.
Consecint, ă imediată a lemei 1.
7/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Complexitatea
Teorema (2)
Complexitatea timp a algoritmului de sortare paralelă Muller-Preparata, implementat pe
n2
o masina CREW-PRAM cu O( log n ) unităţi de procesare, este O(log n).
Demonstraţie.
1. Determinarea poziţiilor relative pentru fiecare pereche {ai , aj }, i, j = 0, 1, . . . , n − 1: dacă
maşina CREW-PRAM este compusă din n2 unităt, i de procesare, timpul paralel este O(1);
n2
dacă numărul unităt, ilor de procesare este d log n e, timpul paralel este O(log n) (tehnica este
aceeaşi cu cea de la comprimare).
2. Calcularea pozitiilor finale ale elementelor ai , i = 0, 1, . . . , n − 1: pentru fiecare i, sunt
necesare cel put, in d logn n e unităt, i de procesare, pentru a calcula pozit, ia finală a elementului
ai ı̂n timpul paralel O(log n) (vezi complexitatea algoritmului paralel de comprimare).
Rezultă un necesar de nd logn n e unităt, i de procesare pentru a calcula toate pozit, iile finale ı̂n
timpul paralel O(log n).
3. Plasarea elementelor aj pe pozitiile corecte: cu n unităt, i de procesare pentru se obţine
timpul paralel O(1).
8/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Comentarii
• Totusi, algoritmul nu este optimal, deoarece cel mai rapid algoritm secvential are
timpul de executie de O(n log n).
9/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
10/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
11/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
12/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Complexitatea
Teorema (3)
Complexitatea timp a algoritmului de sortare paralelă Impar-Par, implementat pe un lant,
de n unităţi de procesare, este O(n).
Demonstraţie.
Timpul paralel pentru fiecare fază este O(1). După n faze algoritmul se termină.
14/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Comentarii
15/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
16/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Secvenţe bitone
17/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Sortare Batcher(A, i, d, s)
1 if d = 2
2 then (A[i], A[i + 1]) ← Compara si Schimba(A[i], A[i + 1], s)
3 else / ∗ sortare crescătoare a unei secvenţe S de lungime d2 ∗ /
4 Sortare Batcher(A, i, d2 , 0)
5 / ∗ sortare descrescătoare a secvenţei S 0 , care urmează lui S, de lungime d
2 ∗/
6 Sortare Batcher(A, i + d2 , d2 , 1)
7 / ∗ sortarea secvenţei bitone SS 0 , de lungime d ∗ /
8 Sortare Secventa Bitona(A, i, d, s)
18/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
19/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Copyright
1994
c Benjamin/Cummings Publishing Co.
20/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Corectitudinea
Lema (2)
Dacă algoritmul lui Batcher sortează orice secvent, ă de chei de sortare binare, atunci
sortează orice secvent, ă de chei de sortare numere reale oarecare.
Demonstraţie.
Fie f : R → R o funcţie monotonă. Astfel, f (ai ) ≤ f (aj ) dacă şi numai dacă ai ≤ aj . Evident,
dacă algoritmul lui Batcher transformă secvenţa [a1 , a2 , . . . , an ] ı̂n secvenţa [b1 , b2 , . . . , bn ], atunci
va transforma secvenţa [f (a1 ), f (a2 ), . . . , f (an )] ı̂n secvenţa [f (b1 ), f (b2 ), . . . , f (bn )]. Astfel, dacă
ı̂n secvenţa [b1 , b2 , . . . , bn ] există un indice i pentru care bi > bi+1 , atunci ı̂n secvenţa
[f (b1 ), f (b2 ), . . . , f (bn )] vom avea f (bi ) > f (bi+1 ). (
0 , dacă bj < bi
Fie acum f o funcţie monotonă definită astfel: f (bj ) =
1 , dacă bj ≥ bi
În aceste condiţii, secvenţa [f (b1 ), f (b2 ), . . . , f (bn )] va fi o secventă binară nesortată deoarece
f (bi ) = 1 şi f (bi+1 ) = 0. Rezultă că algoritmul lui Batcher eşuează ı̂n sortarea secvenţei binare
[f (a1 ), f (a2 ), . . . , f (an )]. Deci, dacă algoritmul lui Batcher eşuează ı̂n sortarea unei secvenţe de
chei de sortare numere reale oarecare, atunci există o secvenţa binară care nu va fi sortată ı̂n
urma aplicăriii algoritmului lui Batcher.
21/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Corectitudinea -continuare
Teorema (4)
Algoritmul lui Batcher sorteaza cele n elemente ale secvent, ei memorate ı̂n tabloul A[0..n − 1], ı̂n
ordinea crescătoare (s = 0) respectiv descrescătoare (s = 1) a cheilor de sortare.
Demonstraţie.
Este suficient să demonstrăm corectitudinea procedurii SORTARE SECVENTA BITONA pentru cazul binar (Lema 2). Procedăm
prin inducţie după lungimea d a secvenţelor procesate.
Dacă d = 2, evident procedura SORTARE SECVENTA BITONA transformă secvenţa iniţială Sinit = A[i..i + d − 1] ı̂ntr-o secvenţă
sortată Sfin .
Vom demonstra că procedura SORTARE SECVENTA BITONA transformă o secvenţă binară Sinit de tipul 0r 1t 0v sau
1r 0t 1v (r + t + v = d) ı̂ntr-o secvenţă Sfin sortată ı̂n ordinea indicată de valoarea lui s, (∀)d ≥ 2
Pasul paralel 6 transformă secvenţa Sinit ı̂ntr-o secvenţă Stemp conform figurilor 2 şi 3.
1
Se observă că ı̂n toate cazurile, secvenţa rezultată Stemp , este formată din două sub-secvenţe bitone Stemp 2
şi Stemp , fiecare de
lungime d2 . O secvenţă este de tipul Sinit iar cealaltă secvenţă cont, ine numai cifre 0 sau numai cifre 1. Dacă s = 0, cheia
1
maximă din Stemp este mai mică sau egală cu cheia minimă din Stemp 2 1
. Dacă s = 1, cheia minimă din Stemp este mai mare sau
2
egală cu cheia maximă din Stemp .
Conform ipotezei de inducţie, procedura 1
SORTARE SECVENTA BITONA transformă secvenţele Stemp 2
şi Stemp ı̂n două secvenţe
1 şi S 2 , sortate crescător (d = 0) sau descrescător (s = 1). Dacă s = 0, cheia maximă din S 1 este mai mică sau egală cu
Sfin fin fin
2 deci secvenţa S 1 S 2 este crescătoare. Daca s = 1, cheia minimă din S 1 este mai mare sau egală cu
cheia minimă din Sfin fin fin fin
2 deci secvenţa S 1 S 2 este descrescătoare.
cheia maximă din Sfin fin fin
22/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Corectitudinea -continuare
s p + q(p, q ≤ d2 ) Secvenţa iniţială Secvenţa rezultată
d d d d
0 ≤ d2 0 2 −p 1p 1q 0 2 −q 0 2 1q 0 2 −(p+q) 1p
d d
0 ≤ d2 02 0k 1p+q 0m 02 0k 1p+q 0m
d d
0 ≤ d2 0k 1p+q 0m 0 2 02 0k 1p+q 0m
d d d d
0 ≤ d2 1p 0 2 −p 0 2 −q 1q 02 1p 0 2 −(p+q) 1q
d d d −(p+q) d
0 ≤ d
2 12 1p 0 2 −(p+q) 1q p
1 02 1q 1 2
d d d d
0 ≤ d
2 1p 0 2 −(p+q) 1q 1 2 1p 0 2 −(p+q) 1q 1 2
d d d d d d
0 > d
2 0 2 −p 1p 1q 0 2 −q 0 2 −p 1(p+q)− 2 0 2 −q 1 2
d −p d −q d −q (p+q)− d d −p d
0 > d 1 0 2 0 2 1q
p 02 1 2 02 12
2
d d d d
1 ≤ d
2 0 2 −p 1p 1q 0 2 −q 1q 0 2 −(p+q) 1p 0 2
d d
1 ≤ d 0 2 0k 1p+q 0m 0k 1p+q 0m 0 2
2
d d
1 ≤ d 0k 1p+q 0m 0 2 0k 1p+q 0m 0 2
2
d d d d
1 ≤ d
2 1p 0 2 −p 0 2 −q 1q 1p 0 2 −(p+q) 1q 0 2
d d d d
1 ≤ d
2 12 1p 0 2 −(p+q) 1q 12 1p 0 2 −(p+q) 1q
d −(p+q) d d d
1 ≤ d
2
p
1 02 1q 1 2 12 1 0 2 −(p+q) 1q
p
d −p d −q d d −p (p+q)− d d
1 > d
2 0 2 1p 1q 0 2 12 02 1 2 0 2 −q
d d d d d d
1 > d
2 1p 0 2 −p 0 2 −q 1q 12 0 2 −q 1(p+q)− 2 0 2 −p
Figura 4 : Corectitudinea
23/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Corectitudinea -continuare
s=0
s=1
Figura 5 : Corectitudinea
24/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Copyright
1994
c Benjamin/Cummings Publishing Co.
Copyright
1994
c Benjamin/Cummings Publishing Co.
Figura 7 : Reţea de comparatori care transformă o secvenţă oarecare ı̂n una bitonă (R1 ); n = 16
26/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Copyright
1994
c Benjamin/Cummings Publishing Co.
27/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
(a) (b)
Copyright
1994
c Benjamin/Cummings Publishing Co.
Figura 9 : (a) Planificarea dimensiunilor (b)Fazele sortării prin ret, ele de sortare Batcher
29/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Copyright
1994
c Benjamin/Cummings Publishing Co.
Teorema (4)
Complexitatea timp a algoritmului lui Batcher de sortare paralelă, implementat pe
mas, ină CREW-PRAM cu O(n) unităt, i de procesare este O(log2 n). Eficient, a
algoritmului este O( log1 n ).
Demonstraţie.
Timpul paralel pentru sortarea unei secvent, e bitone de lungime d < n este O(log d). După log n
O(n log n) 1
faze algoritmul se termină. Eficient, a este nO(log 2 n) = O( log n ).
31/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Teorema (5)
Complexitatea timp a algoritmului lui Batcher de sortare paralelă, implementat pe o
ret, ea de sortare cu O(n) intrări si ies, iri, este O(log2 n).
Demonstraţie.
Ret, eaua (R1 , R2 ) implementează algoritmul lui Batcher. Numărul de faze este log n. Fazele sunt
compuse din log d < log n paşi
32/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Teorema (6)
Complexitatea timp a algoritmului lui Batcher de sortare paralelă, implementat pe un
hipercub cu O(n) unităţi de procesare este O(log2 n).
Demonstraţie.
Sortarea Batcher pe hipercub este congruentă cu sortarea Batcher pe reţele de sortare
33/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Comentarii
• Algoritmul lui Batcher de sortare paralelă este din clasa timp O(log2 n). Numărul
de unităt, i de procesare este din clasa O(n). Comparativ cu algoritmii
Muller-Preparata şi Impar-Par are un cost mai bun.
• Totuşi, costul nu este optimal: (Numarul de unităt, i de procesare ) x (timpul
paralel) = n log2 n = O(n log2 n). Timpul pentru cel mai rapid algoritm secvenţial
este O(n log n).
34/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
• Să ne amintim că un hipercub cu m dimensiuni este format din două hipercuburi cu
m − 1 dimensiuni.
• Numărul unităţilor de procesare, p, este mai mic decât numărul elementelor
secvenţei de sortat, n.
• Ideea este de a partiţiona secvenţa de sortat pe subcuburi şi apoi de a repeta repeta
recursiv această operaţie.
• Selectarea pivotului este problema cheie.
35/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
36/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Copyright
1994
c Benjamin/Cummings Publishing Co.
Figura 11 : Partiţionarea secvenţei de sortat ı̂n două blocuri. Se utilizează dimensiunea a treia (m − 1).
37/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Copyright
1994
c Benjamin/Cummings Publishing Co.
Figura 12 : Partiţionarea fiecărui bloc ı̂n două sub-blocuri. Se utilizează dimensiunea a doua (m − 2 = 1).
38/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Copyright
1994
c Benjamin/Cummings Publishing Co.
39/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Complexitatea
Teorema (7)
Dacă pivotul este ales astfel ı̂ncât să partit, ioneze secvent, a ı̂n două subsecvent, e de
dimensiuni aproximativ egale, atunci
n n n
Tp = O( log ) + O( log p) + O(log2 p)
p p p
.
40/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Comentarii
• Selectarea unui pivot care să partit, ioneze secvent, a ı̂n două subsecvent, e de
dimensiuni aproximativ egale este dificilă.
41/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Comentarii bibliografice
42/ 42