Sunteți pe pagina 1din 42

Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice

Algoritmi paraleli şi distribuiţi


Sortare paralelă

Mitică Craus

Universitatea Tehnică ”Gheorghe Asachi” din Iaşi

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

• Există o vastă literatură de specialitate având ca subiect sortarea.


• Aceasta se explică prin faptul că sortarea apare ca substask ı̂n solut, iile algoritmice
ale multor probleme.
• Problema poate fi enunt, ată astfel:
Date fiind n elemente a0 , a1 , . . . , an−1 , dintr-o mulţime U peste care este definită o
relat, ie de ordine totală ” < ”, se dores, te renumerotarea lor astfel ı̂ncât
ai < aj , i, j ∈ {0, 1, . . . , n − 1}, i < j.
• Se presupune, pentru simplitate, că ai 6= aj , dacă i 6= j.

3/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice

Algoritmul Muller-Preparata - descriere

• Autori: David E. Muller şi Franco P. Preparata. Anul publicării: 1975


• Algoritmul este compus din trei faze:
1. Determinarea poziţiilor relative pentru fiecare pereche {ai , aj }, i, j = 0, 1, . . . , n − 1:
• Notaţii: pozitie relativaaj (ai ) şi pozitie relativaai (aj ) desemnează poziţia lui ai ,
respectiv aj ı̂n secvenţa (ai , aj ) sortată crescător.
• Dacă ai < aj , atunci pozitie relativaaj (ai ) = 0 şi pozitie relativaai (aj ) = 1.
• Dacă ai > aj , atunci pozitie relativaaj (ai ) = 1 şi pozitie relativaai (aj ) = 0.

2. Calcularea pozitiilor finale ale elementelor ai , i = 0, 1, . . . , n − 1.


3. Plasarea elementelor aj pe pozitiile finale.

4/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice

Algoritmul Muller-Preparata - pseudocod


• Notat, ii:
• A[0..n − 1] s, i P[0..n − 1] sunt două tablouri, fiecare de dimensiune n.
• R[0..2n − 2, 0..n − 1] este un tablou bidimensional de mărime (2n − 1)xn; R[j] desemnează coloana j.
• Premise:
• Datele de intrare sunt memorate ı̂n tabloul A[0..n − 1].
• Pozit, iile relative vor fi memorate ı̂n tabloul R, ı̂n liniile n − 1, n, . . . , 2n − 2.
• Pozit, iile finale vor fi ret, inute ı̂n tabloul P.
Sortare Paralela Muller Preparata(A, R, n)
1 for all i, j : 0 ≤ i, j ≤ n − 1
2 do in parallel/ ∗ calcularea pozit, iilor relative ∗ /
3 if A[i] < A[j]
4 then R[i + n − 1, j] ← 1
5 else R[i + n − 1, j] ← 0
6 for all j : 0 ≤ j ≤ n − 1
7 do in parallel/ ∗ calcularea pozit, iilor finale ∗ /
8 / ∗ Se calculează numărul elementelor care se află ı̂n faţa elementului aj ∗ /
9 Comprim Iterativ(R[j], +)
10 P[j] = R[0, j]
11 for all j : 0 ≤ j ≤ n − 1
12 do in parallel/ ∗ plasarea pe pozit, iile finale ∗ /
13 A[P[j]] = A[j]

5/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice

Exemplu de execuţie a algoritmului Muller-Preparata


Tabloul R

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

• Relativ la algoritmul secvenţial, bazat pe metoda enumerării, care necesita O(n2 )


O(n2 )
timp, eficienţa algoritmului este E = n2
= O(1).
O( log n ) log n

• 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

Algoritmul Impar-Par (Odd-Even Sort) - descriere

• Este o versiune a algoritmului Bubble.


• Se desfăs, oară ı̂n faze.
• În fazele impare sunt sortate perechile {ai , ai+1 } cu i par.
• În fazele pare sunt sortate perechile {ai , ai+1 } cu i impar.
• Este paralelizabil.

10/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice

Algoritmul Impar-Par secvenţial - pseudocod

• Notat, ii: A[0..n − 1] este un tablouri de dimensiune n.


• Premise: Datele de intrare sunt memorate ı̂n tabloul A[0..n − 1].

Sortare Secventiala Impar Par(A, n)


1 for faza ← 1 to n Compara si Interschimba(i, j)
2 do if faza este impara 1 if ai > aj
3 then for i ← 0 to 2b n2 c − 2 step 2 2 then temp ← ai
4 do compara si interschimba(i, i + 1) 3 ai ← aj
5 if faza este para 4 aj ← temp
6 then for i ← 1 to 2b n−12 c − 1 step 2 5
7 do compara si interschimba(i, i + 1)

11/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice

Exemplu de execuţie a algoritmului Impar-Par

Figura 2 : Exemplu de execuţie a algoritmului de sortare Impar-Par pentru n = 8

12/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice

Algoritmul Impar-Par paralel - pseudocod pentru un lanţ de unităţi de


procesare
• Premise: Init, ial, o unitate de procesare pi memorează elementul ai ı̂n registrul r .
Sortare Paralela Impar Par(pi , r , n)
1 for faza ← 1 to n
2 do if faza este impara si 0 ≤ i ≤ 2b n2 c − 1
3 then if i este par
4 then trimite lui pi+1 valoarea memorata in registrul r
5 primeste de la pi+1 o valoare v
6 r ← min(r , v )
7 else trimite lui pi−1 valoarea memorata in registrul r
8 primeste de la pi−1 o valoare v
9 r ← max(r , v )
10 if faza este para si 1 ≤ i ≤ 2b n−1
2 c
11 then if i este impar
12 then trimite lui pi+1 valoarea memorata in registrul r
13 primeste de la pi+1 o valoare v
14 r ← min(r , v )
15 else trimite lui pi−1 valoarea memorata in registrul r
16 primeste de la pi−1 o valoare v
17 r ← max(r , v )
13/ 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

• Algoritmul de sortare paralelă Impar-Par este optimal pentru architecturã: Fiecare


unitate de procesare este solicitată O(n) timp
• Costul nu este optimal: (Numarul de unităt, i de procesare ) x (timpul paralel) =
nxn = O(n2 ). Timpul pentru cel mai rapid algoritm secvenţial este O(n log n).
• Algoritmul poate fi implementat şi pe o maşină CREW-PRAM.
Exerciţiu: Scrieţi un pseudocod pentru sortarea Impar-Par pe o astfel de maşină.

15/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice

Algoritmul lui Batcher de sortare bitonică - descriere

• Autor: Batcher; Anul publicării: 1968.


• Operaţia de bază este sortarea unei secvenţe bitone.
• Esenţa problemei sortării unei secvenţe bitone este transformarea sortării unei
n
secvenţe de bitone lungime n ı̂n sortarea a doua secvent, e bitone de dimensiune 2.
• Pentru a sorta o secvent, ă de n elemente, prin tehnica sortării unei secvent, e bitone,
trebuie să dispunem de o secvent, ă bitonă formată din n elemente.
• Observaţii:
• Două elemente formează o secvent, ă bitonă.
• Orice secvent, ă nesortată este o concatenare de secvent, e bitone de lungime 2.
• Ideea transformării unei secvenţe oarecare ı̂n una bitonă: combinarea a două
n
secvent, e bitone de lungime 2 pentru a obţine o secvent, ă bitonă de lungime n.
• Algoritmul este paralelizabil.

16/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice

Secvenţe bitone

• Secvenţa bitonă este o secvenţă de elemente [a0 , a1 , . . . , an−1 ] pentru care


• există i astfel ı̂ncât [a0 , a1 , . . . , ai ] este monoton crescătoare s, i [ai+1 , . . . , an−1 ] este
monoton descrescătoare sau
• există o permutare circulară astfel ı̂ncât să fie satisfacută condit, ia anterioară.
• Exemple:
• [1, 2, 4, 7, 6, 0]; ı̂ntâi cres, te s, i apoi descres, te; i = 3.
• [8, 9, 2, 1, 0, 4]: după o permutare circulară la stânga cu 4 poziţii rezultă
[0, 4, 8, 9, 2, 1]; i = 3.
• Fie S = [a0 , a1 , . . . , an−1 ] o secventă bitonă,
• S1 = [min{a0 , a n }, min{a1 , a n +1 }, . . . min{a n −1 , an−1 }] şi
2 2 2
• S2 = [max{a0 , a n }, max{a1 , a n +1 }, . . . max{a n −1 , an−1 }]
2 2 2
• Secvenţele S1 si S2 au proprietăţile următoare:
• Sunt bitone.
• Fiecare element din S1 este mai mic decit fiecare element din S2 .

17/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice

Algoritmul lui Batcher de sortare bitonică - pseudocod


• Notaţii:
• A[0..n − 1] este un tablou unidimensional de dimensiune n.
• (A, i, d) defines, te segmentul A[i..i + d − 1] = A[i], ..., A[i + d − 1].
• s este un parametru binar care specifică ordinea crescătoare (s = 0) sau descrescătoare
(s = 1) a cheilor de sortare.
• COMPARA SI SCHIMBA(x, y , s) desemnează sortarea a două elemente x si y ordinea
indicată de parametrul s.
• Premise: Iniţial, A[0..n − 1] conţine secvenţa de sortat.
• Apel: SORTARE BATCHER(A, 0, n, 0) sau SORTARE BATCHER(A, 0, n, 1).

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

Sortarea unei secvenţe bitone - pseudocod

• Premise: Iniţial, segmentul A[i..i + d − 1] conţine o secventă bitonă de lungime d;

Sortare Secventa Bitona(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 / ∗ Construirea secvent, elor bitone S1 s, i S2 , de lungime d2 ∗ /
4 for all j : 0 ≤ j < d2
5 do in parallel
6 (A[i + j], A[i + j + d2 ]) ← Compara si Schimba(A[i + j], A[i + j + d2 ], s)
7 / ∗ sortarea secvenţei bitone S1 , de lungime d2 ∗ /
8 Sortare Secventa Bitona(A, i, d2 , s)
9 / ∗ sortarea secvenţei bitone S2 , de lungime d2 ∗ /
10 Sortare Secventa Bitona(A, i + d2 , d2 , s)

19/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice

Exemplu de sortare a unei secvenţe bitone

Copyright 1994
c Benjamin/Cummings Publishing Co.

Figura 3 : Exemplu de sortare a unei secvenţe bitone

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

0000111111 1110000000 - 0000000000 1110111111


0000000000 0011111000 - 0000000000 0011111000
0011111000 0000000000 - 0000000000 0011111000
1111110000 0000000011 - 0000000000 1111110011
1111111111 1100000111 - 1100000111 1111111111
1100000111 1111111111 - 1100000111 1111111111
0011111111 1111000000 - 0011000000 1111111111
1111111000 0000001111 - 0000001000 1111111111

s=1

0000111111 1110000000 - 1110111111 0000000000


0000000000 0011111100 - 0011111100 0000000000
0011111100 0000000000 - 0011111100 0000000000
1111110000 0000000111 - 1111110111 0000000000
1111111111 1111000111 - 1111111111 1111000111
1111000111 1111111111 - 1111111111 1111000111
0111111111 1110000000 - 1111111111 0110000000
1111100000 0011111111 - 1111111111 0011100000

Figura 5 : Corectitudinea

24/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice

Implementarea algoritmului lui Batcher pe reţele de sortare


• Dacă se derecursivează algoritmul lui Batcher, se constată că sortarea unei secvent, e de
n = 2m elemente constă ı̂n m faze de sortare a unei secvent, e bitone: SSB0 , SSB1 , . . . , SSBm−1
• În faza SSBk , k ∈ {0, 1, . . . , m − 1}, se realizează sortarea secvent, elor bitone Si2d formate din
0 0
perechile de secvent, e consecutive Sid Si d de lungime d = 2k , Sid fiind sortată crescător s, i Si d
descrescator.
• Secvent, ele Si2d cu numărul de ordine i par sunt sortate crescător. Cele cu i impar sunt
sortate descrescător.

Copyright 1994
c Benjamin/Cummings Publishing Co.

Figura 6 : Comparatori pentru sortarea a două elemente


25/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice

Reţea de comparatori care transformă o secvenţă oarecare ı̂n una bitonă


Fazele 0, 1, . . . , m − 2
• Intrare: o secvenţă oarecare; Ieşire: o secvenţă bitonă.

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

Reţea de sortare a unei secvenţe bitone - Faza m − 1


• Intrare: o secvenţă bitonă; Ieşire: o secvenţă sortată.

Copyright 1994
c Benjamin/Cummings Publishing Co.

Figura 8 : Reţea de sortare a unei secvenţe bitone (R2 ); n = 16

27/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice

Implementarea algoritmului lui Batcher pe hipercub


• Cubul binar multidimensional este o arhitectură ideală pentru implementarea
algoritmului lui Batcher.
• Reamintim:
• Dacă se derecursivează algoritmul lui Batcher, se constată că sortarea unei secvent, e de
n = 2m elemente constă ı̂n m faze de sortare a unei secvent, e bitone:
SSB0 , SSB1 , . . . , SSBm−1
• În faza SSBk , k ∈ {0, 1, . . . , m − 1}, se realizează sortarea secvent, elor bitone Si2d
0
formate din perechile de secvent, e consecutive Sid Si d de lungime d = 2k , Sid fiind
0d
sortată crescător s, i Si descrescator.
• Secvent, ele Si2d cu numărul de ordine i par sunt sortate crescător. Cele cu i impar sunt
sortate descrescător.
• Execut, ia fazei SSBk pe hipercub necesită utilizarea succesivă a dimensiunilor
Dk , Dk−1 , . . . , D1 , D0 .
• Planificarea utilizării dimensiunilor pentru o sortare completă poate fi reprezentată
astfel:
• SSB0 : D0
• SSB1 : D1 , D0
• SSB2 : D2 , D1 , D0
...
• SSBm−1 : Dm−1 , Dm−2 , . . . , D0
28/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice

Planificarea dimensiunilor = Fazele sortării prin ret, ele de sortare Batcher

(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

Comunicarea pe hipercub ı̂n timpul ultimei faze a algoritmului lui Batcher


Fiecare linie continuă reprezintă o operaţie de interschimbare.

Copyright 1994
c Benjamin/Cummings Publishing Co.

Figura 10 : Comunicarea ı̂n timpul ultimei faze a algoritmului lui Batcher


30/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice

Complexitatea implementării pe o mas, ină CREW-PRAM

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

Complexitatea implementării pe ret, ele de sortare

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

Complexitatea implementării pe hipercub

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

Sortare rapidă pe hipercub - descriere

• 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

Sortare rapidă pe hipercub - pseudocod


• Notat, ii:
• A[0..n − 1] este un tablou de dimensiune n = 2m .
• Premise:
• Datele de intrare sunt partit, ionate ı̂ntre unităt, ile de procesare.
• Fiecare unitate de proceare(nod al hipercubului) memorează o parte Ai din secventa de
sortat, memorată iniţial ı̂n tabloul A[0..n − 1].
Sortare Rapida pe Hipercub(Ai , m, pi , pivot)
1 i ← eticheta unitatii de procesare
2 for k ← m − 1 downto 0
3 do / ∗ ∗ /
4 x ← pivot
5 partitioneaza Ai in Ai1 si Ai2 astfel incat Ai1 ≤ x ≤ Ai2
6 if al − k − lea bit este 0
7 then trimite Ai2 unitatii de procesare vecina pe dimensiunea k
8 Bi1 ← subsecventa primita de la vecinul de pe dimensiunea k
Ai ← Ai1 Bi1
S
9
10 else trimite Ai1 unitatii de procesare vecina pe dimensiunea k
11 Bi2 ← subsecventa primita de la vecinul de pe dimensiunea k
Ai ← Ai2 Bi2
S
12
13 Aplica lui Ai sortarea rapida secventiala

36/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice

Exemplu de execuţie a algoritmului de sortare rapidă pe hipercub (m=3)

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

Exemplu de execuţie a algoritmului de sortare rapidă pe hipercub -


continuare

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

Exemplu de execuţie a algoritmului de sortare rapidă pe hipercub -


continuare

Copyright 1994
c Benjamin/Cummings Publishing Co.

Figura 13 : Partiţionarea sub-blocurilor. Se utilizează prima dimensiune (m − 3 = 0).

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

• Capitolul sortare are la bază cartea


V. Kumar, A. Grama A. Gupta & G Karypis, Introduction to Parallel Computing:
Design and Analysis of Algorithms, Addison Wesley, 2003
s, i edit, ia mai veche
V. Kumar, A. Grama A. Gupta & G Karypis, Introduction to Parallel Computing:
Design and Analysis of Algorithms, Benjamin-Cummings, 1994

42/ 42

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