Sunteți pe pagina 1din 5

Subiect examen

1. Baza 2p
2. Test grila 5 p
3. Topologia Fluture (Butterfly)
Definitie 0.5p
Exemplu 0.5p
4. Sortarea bitonicǎ
Algoritm paralel 1p
Comentarii 1p

Exemplu test grilǎ


1. Care este topologia descrisǎ mai jos:
 Fie iq-1...i0 reprezentarea binară a lui i Î {0,...,n-1} şi fie i numărul a cărui
(b)

reprezentare binară este iq-1...ib+1ĩb ib-1...i0, unde ĩb = 1-ib, 0 £ b < q.


 Nodul Vi este adiacent cu nodurile din mulţimea {Vi ; 0 £ b < q}.
(b)

R: Hipercubul

2. Funcţia f opereazǎ asupra tabloului A[0..n-1] iar n este de forma n = 2d.

proc f(A,op)
begin
for k = m-1 down to 0 do
for all j:2k £ j £ 2k+1-1 par do A[j]=A[2j] op A[2j+1];
end

Ce operaţie realizeazǎ f?

a. Comprimarea
b. Scurtcircuitarea

R: Comprimarea

3. Algoritmul calcul_prefixe determinarea valorilor


A[n],A[n]A[n+1],...,A[n]...A[2n-1] unde  este o operatie binara asociativa.

proc calcul_prefixe(A,B,)
begin

1
for k = m-1 down to 0 do
for all j:2k £ j £ 2k+1-1 par do A[j]=A[2j]A[2j+1];
B[1]= A[1];
for k = 1 to m do
for all j:2k £ j £2k+1-1 par do
if bit0(j) = 1 then
B[j]=B[[(j-1)/2]];
else
B[j]=B[j/2](-A[j+1]);
end

Algoritmul calcul_prefixe calculeazǎ prefixele în situaţia în care:

a. Operatia  admite element simetric


b. Operatia nu  admite element simetric

R: Operatia  admite element simetric

4. Ce trebuie pus în locul ??? în algoritmul de difuzare toţi-la-toţi pe un cub d-


dimensional?

proc ALL_TO_ALL_BC_HCUBE(my_id, my_msg, d, result)


begin
result = my_msg;
for i=0 to d-1 do
partner = ???;
send result to partner;
receive msg from partner;
result = result U msg;
end

R: my_id XOR 2i;

5. Ce trebuie pus in locul ??? în algoritmul de difuzare unu-la-toţi pe un cub d-


dimensional?
proc ONE_TO_ALL_BC(d, my_id, X)
begin
mask =2d-1; /* Set all d bits of mask to 1 */
for i = d-1 downto 0 do /* Outer loop */

2
mask = ???
if (my_id AND mask)=0 then
/* If the lower i bits of my_id are 0 */
if (my_id AND 2i)=0 then
msg_destination = my_id XOR 2i;
send X to msg_destination;
else
msg_source = my_id XOR 2i;
receive X from msg_source;
end

R: mask XOR 2i

6. Algoritmul sortare_prin_numǎrare are dezavantajul

proc sortare_prin_numarare()
begin
for all i,j: 1 £ i,j £ n par do
if A[i] £ A[j] R[i+n-1,j]=1
else R[i+n-1,j]=0;
for all j: 1 £ j £ n par do sum(R[j],+); P[j] = R[1,j];
for all j: 1 £ j £n par do A[P[j]] =A[j];
end

Algoritmul sortare_prin_numǎrare are dezavantajul

a. Timpului de executie – mare ?


b. Consumului de memorie mare ?

R: Consumului de memorie mare ?

7. Fie s = <a0, a1, … , an-1> o secventa bitona.


Fie s1=<min{a0, an/2}, min{a1, an/2 +1}…min{an/2-1,an-1}>.
Fie s2=<max{a0, an/2}, max{a1,an/2+1}…max{an/2-1,an-1}>.

In secventa s1 exista bi = min{ai, an/2+i} a.î.

a. Toate elementele din jurul bi sunt din secventa crescatoare


b. Fiecare element din s1 este mai mic decit fiecare element din s2

3
R: Fiecare element din s1 este mai mic decit fiecare element din s2

8. Algoritmul prezentat în cele ce urmează ar trebui să implementeze pe hipercub


algoritmul Quick_Sort.
proc HYPERCUBE_QUICK_SORT(B, n)
id = processor’s label;
for i=1 to d do
x = pivot;
partition B into B1 and B2 such that B1 £ x £ B2;
if ith bit is 0 then
send B2 to the processor along the ith communication
link;
C = subsequence received along the ith communication
link;
B = B1 U C;
else
send B1 to the processor along the ith communication
link;
C = subsequence received along the ith communication
link;
B = B2 U C;
sort B using sequential quicksort;
end

Sunt însa douǎ greşeli. Unde sunt acestea?

9. Algoritmul prezentat în cele ce urmează ar trebui să calculeaze drumurile minime


într-un graf G=(V,E) între oricare douǎ noduri.

for all i,j:1 ≤ i,j ≤ n do C[i,j] = D[i,j]


repeat log n times
for all i,j,k: 1 ≤ i,j,k ≤ n do
w[i,k,j] = C[i,k]+C[k,j]
for all i,j: 1 ≤ i,j ≤ n do
C[i,j] = min{ C[i,j], mink{w[i,k,j]; k = 1,...,n}
End.

Sunt însa douǎ greşeli. Unde sunt acestea? Pag 124- carte

10. Care afirmaţie este adevaratǎ

Daca în secvenţa a-c se operezǎ doua modificǎri se obţine algoritmul lui Canon.

4
a. Fiecare bloc este procesat în momente diferite in locuri diferite
b. Initial sunt aliniate blocurile lui A si B prin deplasari ciclice la stanga (in A) si in
sus (in B)
c. Urmeaza rad(p)-1 pasi de inmultiri locale si adunari locale de blocuri urmate de
deplasari ciclice la stanga (in A) si in sus (in B)
Care sunt modificǎrile necesare pentru a obţine algoritmul lui Canon?

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