Sunteți pe pagina 1din 531

Liste simplu inlantuite

Listele simplu inlantuite sunt structuri de date dinamice omogene. Spre deosebire de
masive, listele nu sunt alocate ca blocuri omogene de memorie, ci ca elemente
separate de memorie. Fiecare nod al listei contine, in afara ce informatia utila, adresa
urmatorului element. Aceasta organizare permite numai acces secvential la elementele
listei.

Pentru accesarea listei trebuie cunoscuta adresa primului element (numita capul
listei); elementele urmatoare sunt accesate parcurgand lista.

Lista simplu inlantuita poate fi reprezentata grafic astfel:


1. Structura listei
Pentru a asigura un grad mai mare de generalitate listei a fost creat un alias pentru
datele utile (in cazul nostru un intreg):

// Datele asociate unui
// element dintr-o lista
typedef int Date;

In cazul in care se doreste memorarea unui alt tip de date, trebuie schimbata doar
declaratia aliasului Date.

Pentru memorarea listei se foloseste o structura autoreferita. Acesta structura va avea
forma:

// Structura unui element
// dintr-o lista simplu inlantuita
struct Element
{
// datele efective memorate
Date valoare;
// legatura catre nodul urmator
Element* urmator;
};

In cazul in care elemenul este ultimul din lista, pointerul urmator va avea valoarea
NULL.

Declararea listei se face sub forma:
// declarare lista vida
Element* cap = NULL;


2. Operatii cu liste
Principalele operatii cu liste sunt:
Parcurgere si afisare lista
Lista este parcursa pornind de la pointerul spre primul element si avansand folosind
pointerii din structura pana la sfarsitul listei (pointer NULL).

// Parcurgere si afisare lista simpla
void Afisare(Element* cap)
{
// cat timp mai avem elemente
// in lista
while (cap != NULL)
{
// afiseaza elementul curent
cout << cap->valoare << endl;

// avanseaza la elementul urmator
cap = cap->urmator;
}
}
Inserare element
Inserarea unui element se poate face la inceputul sau la sfarsitul listei.

a) Inserare la inceput
Acesta este cazul cel mai simplu: trebuie doar alocat elementul, legat de primul
element din lista si repozitionarea capului listei:

// Inserare element la inceputul unei
// liste simplu inlantuite
void InserareInceput(Element* &cap, Date val)
{
// Alocare nod si initializare valoare
Element *elem = new Element;
elem->valoare = val;

// legare nod in lista
elem->urmator = cap;

// mutarea capului listei
cap = elem;
}

b) Inserare la sfarsitul listei

In acest caz trebuie intai parcursa lista si dupa aceea adaugat elementul si legat de
restul listei. De asemenea, trebuie avut in vedere cazul in care lista este vida.

// Inserare element la sfarsitul unei
// liste simplu inlantuite
void InserareSfarsit(Element* &cap, Date val)
{
// Alocare si initializare nod
Element *elem = new Element;
elem->valoare = val;
elem->urmator = NULL;

// daca avem lista vida
if (cap == NULL)
// doar modificam capul listei
cap = elem;
else
{
// parcurgem lista pana la ultimul nod
Element *nod = cap;
while (nod->urmator != NULL)
nod = nod->urmator;

// adaugam elementul nou in lista
nod->urmator = elem;
}
}

c) inserare dupa un element dat

void InserareInterior(Element* &cap, Element* p, Date val)
{
// Alocare si initializare nod
Element *elem = new Element;
elem->valoare = val;
elem->urmator = NULL;

// lista vida
if (cap == NULL)
{
cap = elem;
return;
}

// inserare la inceputul listei
if (cap == p)
{
elem->urmator = cap;
cap = elem;
return;
}

// inserare in interior
elem->urmator = p->urmator;
p->urmator = elem;
}
Cautare element
Cautarea unui element dintr-o lista presupune parcurgerea listei pentru identificarea
nodului in functie de un criteriu. Cele mai uzuale criterii sunt cele legate de pozitia in
cadrul listei si de informatiile utile continute de nod. Rezultatul operatiei este adresa
primului element gasit sau NULL.

a) Cautarea dupa pozitie

Se avanseaza pointerul cu numarul de pozitii specificat:

// Cautare element dupa pozitie
Element* CautarePozitie(Element* cap, int pozitie)
{
int i = 0; // pozitia curenta

// parcurge lista pana la
// pozitia ceruta sau pana la
// sfarsitul listei
while (cap != NULL && i < pozitie)
{
cap = cap->urmator;
i++;
}

// daca lista contine elementul
if (i == pozitie)
return cap;
else
return NULL;
}

b) Cautarea dupa valoare

Se parcurge lista pana la epuizarea acesteia sau identificarea elementului:

// Cautare element dupa valoare
Element* CautareValoare(Element* cap, Date val)
{
// parcurge lista pana la gasirea
// elementului sau epuizarea listei
while (cap != NULL && cap->valoare != val)
cap = cap->urmator;

return cap;
}
Stergere element

a) Stergerea unui element din interiorul listei (diferit de capul listei)

In acest caz avem nevoie de adresa predecesorului elementului de sters. Se modifica
legaturile in sensul scurtcircuitarii elementului de sters, dupa care se elibereaza
memoria corespunzatoare elementului de sters:

// sterge un element din interiorul listei
// primind ca parametru adresa predecesorului
void StergereElementInterior(Element* predecesor)
{
// salvam referinta la elementul de sters
Element* deSters = predecesor->urmator;

// scurcircuitam elementul
predecesor->urmator = predecesor->urmator->urmator;

// si il stergem
delete deSters;
}

b) Stergerea unui element de pe o anumita pozitie

Daca elementul este primul din lista, atunci se modifica capul listei, altfel se cauta
elemental si se sterge folosind functia definite anterior:

void StergerePozitie(Element* &cap, int pozitie)
{
// daca lista e vida nu facem nimic
if (cap == NULL)
return;

// daca este primul element, atunci
// il stergem si mutam capul
if (pozitie == 0)
{
Element* deSters = cap;
cap = cap->urmator;
delete deSters;
return;
}

// daca este in interor, atunci folosim
// functia de stergere
Element* predecesor = CautarePozitie(cap, pozitie-1);
StergereElementInterior(predecesor);
}

c) stergerea dupa o valoare

Se cauta predecesorul elementului si se foloseste functia de stergere element:

void StergereValoare(Element* &cap, Date val)
{
// daca lista e vida nu facem nimic
if (cap == NULL)
return;

// daca este primul element, atunci
// il stergem si mutam capul
if (cap->valoare == val)
{
Element* deSters = cap;
cap = cap->urmator;
delete deSters;
return;
}

// cautam predecesorul
Element* elem = cap;
while (elem->urmator != NULL && elem->urmator->valoare != val)
elem = elem->urmator;


// daca a fost gasit, atunci il stergem
if (elem->urmator != NULL)
StergereElementInterior(elem);
}
3. Probleme
Sa se realizeze functiile pentru:
1. Interschimbarea a doua elemente prin modificarea legaturilor.
2. Concatenarea a doua liste simplu inlantuite.
3. Copierea unei liste simplu inlantuite.
4. Stergerea unei liste simplu inlantuite.
5. Sortarea unei liste simplu inlantuita.
6. Gasirea elementului aflat pe pozitia i de la sfarsitul listei.
7. Inversarea elementelor unei liste prin modificarea legaturilor.
8. Stabilirea simetriei unei liste.
9. Conversia unei matrice in matrice rara memorata ca lista simpla.


10. Se considera o lista ce contine elemente care au ca informatie utila: cod produs,
cantitate si pret. Scrieti si apelati functia care calculeaza total valoare pentru
materialele existente in lista.

11. Enumerati avantajele si dezavantajele listelor simple fata de masive alocate
static/dinamic. Dati exemple de cazuri in care este mai eficenta flosirea listelor si
cazuri in care este mai eficienta folosirea vectorilor.

76 intrebari - Capitole de matematica
Number: 76
Passing Score: 600
Time Limit: 120 min
File Version: 1.0
Exam A
QUESTION 1
A.
B.
C.
D.
Answer: D
Section: (none)
Explanation/Reference:
QUESTION 2
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 3
A.
B.
C.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 4
A.
B.
C.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 5
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 6
A.
B.
C.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 7
A.
B.
C.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 8
A.
B.
C.
D.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 9
A.
B.
C.
D.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 10
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 11
A.
B.
sau poate fi b
C.
D.
Answer: D
Section: (none)
Explanation/Reference:
QUESTION 12
A.
B.
C.
D.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 13
A.
B.
C.
D.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 14
A.
B.
C.
D.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 15
A.
B.
C.
D.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 16
A.
B.
C.
D.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 17
A.
B.
C.
D.
Answer: D
Section: (none)
Explanation/Reference:
QUESTION 18
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 19
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 20
A.
B.
C.
D.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 21
A.
B.
C.
D.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 22
A.
B.
C.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 23
A.
B.
C.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 24
A.
B.
C.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 25
A.
B.
C.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 26
A.
B.
C.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 27
A.
B.
C.
D.
Answer: D
Section: (none)
Explanation/Reference:
QUESTION 28
A.
B.
C.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 29
A.
B.
C.
D.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 30
A.
B.
C.
D.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 31
A.
B.
C.
D.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 32
A.
B.
C.
D.
E.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 33
A.
B.
C.
D.
E.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 34
A.
B.
C.
D.
Answer: D
Section: (none)
Explanation/Reference:
QUESTION 35
A.
B.
C.
D.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 36
A.
B.
C.
D.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 37
A.
B.
C.
D.
Answer: D
Section: (none)
Explanation/Reference:
QUESTION 38
A.
B.
C.
D.
Answer: D
Section: (none)
Explanation/Reference:
QUESTION 39
A.
B.
C.
D.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 40
A.
B.
C.
D.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 41
A.
B.
C.
D.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 42
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 43
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 44
A.
B.
C.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 45
A.
B.
C.
D.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 46
A.
B.
C.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 47
A.
B.
C.
D.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 48
A.
B.
C.
D.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 49
A.
B.
C.
D.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 50
A.
B.
C.
D.
Answer: D
Section: (none)
Explanation/Reference:
QUESTION 51
A.
B.
C.
D.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 52
A.
B.
C.
D.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 53
A.
B.
C.
D.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 54
A.
B.
C.
D.
Answer: D
Section: (none)
Explanation/Reference:
QUESTION 55
A.
B.
C.
D.
Answer: D
Section: (none)
Explanation/Reference:
QUESTION 56
A.
B.
C.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 57
A.
B.
C.
D.
Answer: D
Section: (none)
Explanation/Reference:
QUESTION 58
A.
B.
C.
D.
Answer: D
Section: (none)
Explanation/Reference:
QUESTION 59
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 60
A.
B.
C.
D.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 61
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 62
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 63
A.
B.
C.
D.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 64
A.
B.
C.
D.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 65
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 66
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 67
A.
B.
C.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 68
A.
B.
C.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 69
A.
B.
C.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 70
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 71
A.
B.
C.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 72
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 73
A.
B.
C.
poate fi c?
D.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 74
A.
B.
C.
D.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 75
A.
B.
C.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 76
A.
B.
C.
Answer: A
Section: (none)
Explanation/Reference:


Stabiliti daca
1. Fie V spatiul vectorial peste corpul numerelor reale al polinoamelor de grad mai mic sau egal
cu 3 cu coeficienti reali. Sistemul
{ }
3
, 2, 3 S X x X = + + este sistem liniar independent si nu este
sistem de generatori ?

2. Fie spatiul vectorial
3
R peste corpul numerelor reale si vectorii
( ) 1,1, 0 a =
,
( ) 2, 0,1 b =
si
( ) 3, , 2 d k =
. k pentru care vectorul d apartine subspatiului generat de a si b este

3. Fie spatiul vectorial
3
R peste corpul numerelor reale si subspatiul vectorial
( ) { } , , 3 2 0 W x y z x y z = + + =
. Dimensiunea lui W este

4. Fie
( ) ( )
2 2
: , , 2 , 3 f R R f x y x y x y = + +
. Suma elementelor matricii lui f n baza canonica este

5. Fie
( ) ( )
4 2
: , , , , 2 , 3 f R R f x y z t x y z x y t = + +
. Suma elementelor matricii lui f n baza
canonica este

6. Fie
( ) ( )
4 2
: , , , , 2 , 3 f R R f x y z t x y z x y t = + +
.Cate elemente are o baza a subspatiului
vectorial Kerf ?

7. Fie
( ) ( )
4 2
: , , , , 2 , 3 f R R f x y z t x y z x y t = + +
.Cate elemente are o baza a subspatiului
vectorial Im f ?

8. Fie
( ) ( )
3 3
: , , , , , f R R f x y z x y z y z x z = + +
. Suma elementelor matricii lui f n baza canonica
este


9. Fie matricea
2 2 3
1 1 0 ,
1 2
A a R
a
| |
|
=
|
|

\
. a pentru care rangul matricii A este 2 este


10. Sa se rezolve ecuatia matriciala

11. Suma solutiilor sistemului
2 1
2 1
2 5 6
x y z t
x y z t
x y z t
+ + =

+ =

+ + =

este


R:
= - 1
=3
=7
=5
=2
=2
=3
=0,75
1 0
0 1
(
)
=
= Sistemul este incompatibil
12. Suma solutiilor sistemului este


13. Suma solutiilor sistemului este


14. Suma solutiilor sistemului este

15. Solutiile sistemului sunt

16. Sa se afle valorile lui a, pentru care sistemul urmator are solutii nenule



17. Rangul matricei este 2 pentru a=, b=

18. Fie polinomul
5 4 3
15 20 40 35 f X X X X = + + + . Polinomul are radacini rationale?
19. Fie polinomul
3
1 f X X = + . Polinomul are radacini ntregi ?

20. Fie matricea
1 2
2 4
A
| |
=
|
\
. Suma valorilor proprii asociate matricei A este

21. Fie matricea
1 0 0
0 0 0
2 2 1
A
| |
|
=
|
|
\
. Suma valorilor proprii asociate matricei A este
= Sistemul este incompatibil
11a,a apartine lui R
= 1
x=-2a,y=a+1,z=a,a aparine R
= 2/3
a=1/2 , b = 1
=NU
=NU
=5
= 2

22. Fie
| |
$ $ $
5 3 3 2
5
, , 3 2 4, 2 3 1 f g Z X f X X X g X X = + + + = + +
$ $ $
. Restul mpartirii polinomului f la
polinomul g este
23. Fie matricea
1 5
0 0
A
| |
=
|
\
. Suma valorilor proprii asociate matricei A este

24. Fie matricea
2 1 1
1 2 1
1 1 2
A
| |
|
=
|
|

\
. Suma valorilor proprii asociate matricei A este

25. Fie matricea
1 1
1 1
A
| |
=
|

\
. Suma elementelor matricei Jordan asociata matricei A este

26. Fie sistemul
1
0
0
x y z t
y z t
z t
+ + + =

+ + =

+ =

si A matricea sistemului. Suma elementelor matricei


3
I A este

27. Fie matricile
1 0 0
0 1 0
0 0 0
A
| |
|
=
|
|
\
si
0 1 0
0 0 0
1 0 0
B
| |
|
=
|
|
\
. Notam cu n cel mai mic numar natural nenul
pentru care
( )
3
0
n
AB = . Atunci n este


28. Fie matricile
1 0 0
0 1 0
0 0 0
A
| |
|
=
|
|
\
si
0 1 0
0 0 0
1 0 0
B
| |
|
=
|
|
\
. Notam cu p cel mai mic numar natural nenul
pentru care
( )
3
0
n
BA = . Atunci p este

29. Fie matricea
3 2 1
6 4 2
9 6 3
A
| |
|
=
|
|
\
. Rangul matricei este

30. Fie matricile
3 2 1
6 4 2
9 6 3
A
| |
|
=
|
|
\
,
( )
1
2 , 3, 2,1
3
X Y
| |
|
= =
|
|
\
. Suma elementelor matricei S=A-XY este


31. Suma solutiilor sistemului
2 1
6 8 1
5 2 3
x y
x y
x y
+ =

+ =

este

32. Fie matricea . Suma valorilor proprii asociate matricei A este

3x+2 Cu caciulite
=1
= 6
= 0
=9
=2
= 3
=1
=0
=0,75
=0
33. Fie matricea . Valorile proprii asociate matricei A sunt

34. Fie matricea . Vectorii proprii asociati valorilor proprii ale matricei A
sunt

35. Suma solutiilor sistemului
2
1
2 3 0
x y z
x y z
x y z
+ =

+ =

+ =

este


36. Aflati coordonatele vectorului x=(1,1,1), in baza canonica din spatiul
37. Aflati coordonatele vectorului x=(1,1,1), in baza
din spatiul
38. Fie vectorii v
1
, v
2
R
2

( )
1
1, 2 v = si
( )
2
3, 4 v = Sa se scrie vectorul
( ) 4, 2 v = ca o combinatie
liniara a vectorilor v
1
, v
2
.

39. Fie vectorii v
1
, v
2
R
2

( )
1
1, 2 v = si
( )
2
3, 4 v = Sa se scrie vectorul ca o combinatie
liniara a vectorilor v
1
, v
2
.

40. Fie vectorii
( ) ( ) ( )
1 2 3
2, 4, 5 , -1, 1, 0 , -2, 0, 2 b b b = = = si B = {b
1
, b
2
, b
3
} baza n R
3
. Sa se
exprime vectorul
( ) 2, 1, 3 v = ca o combinatie liniara n baza B = {b
1
, b
2
, b
3
}

41. Fie vectorii din spatiul R
3
: v
1
= ( 1, 4, 2 ); v
2
= ( -1, 2, 0 ); = ( 3, 2, 5 ). Stabiliti daca
vectorii sunt liniari dependenti
42. Stabiliti daca (1,2) este combinatie liniara de (1,1) si (1,0) pentru ca pentru orice numere
reale a,b avem ca (1,2)=a(1,1)+b(1,0) ?

43. Stabiliti daca (1,1) si (1,0) formeaza un sistem liniar independent pentru ca exista numere
reale a,b asa ca (0,0)=a(1,1)+b(1,0)?
44. Cat este 2(1,1)+3(0,1)?
45. Valorile proprii ale matricii sunt

46. Valorile proprii ale matricii sunt

47. Se da o transformare liniara a carei matrice asociata in baza canonica este
= ai
=-ai
Alt Raspuns :)
=5,5
=1,1,1
=1/3,1/3,1/3
v v v = +
v v v = + 2
+ =
=2 =8
=2 =2
. Atunci valorile propriii ale transformarii liniare sunt

48. Se da o transformare liniara a carei matrice asociata in baza canonica este
. Atunci valorile propriii ale transformarii liniare sunt

49. Se da o transformare liniara a carei matrice asociata in baza canonica este
. Atunci valorile propriii ale transformarii liniare sunt
50. Matricea asociata unei transformari in baza canonica este . Atunci polinomul caracteristic al
acestei transformari este
51. Matricea asociata unei transformari in baza canonica este . Atunci polinomul caracteristic al
acestei transformari este
52. Matricea asociata unei transformari in baza canonica este . Atunci polinomul caracteristic al
acestei transformari este
53. Matricea asociata unei transformari in baza canonica este . Atunci polinomul caracteristic al
acestei transformari este
54. Matricea asociata unei transformari in baza canonica este . Atunci polinomul caracteristic al
acestei transformari este

55. Sa se rezolve ecuatia matriciala

56. n spatiul vectorilor coloana
3
vectorii
3 2 1
, , u u u ,
|
|
|

\
|
=
1
1
1
1
u
,
|
|
|

\
|
=
0
1
1
2
u
,
|
|
|

\
|
=
0
0
1
3
u
,
P = +

formeaza o baza. Daca


( )
3
AM ,
|
|
|

\
|


=
2 1 0
1 2 3
1 1 2
A
si ( )
3 2 1
, , u u u B = , atunci ( )
1
...
A
f u =


57. n spatiul vectorilor coloana
3
vectorii
3 2 1
, , u u u ,
|
|
|

\
|
=
1
1
1
1
u
,
|
|
|

\
|
=
0
1
1
2
u
,
|
|
|

\
|
=
0
0
1
3
u
,
formeaza o baza. Daca
( )
3
AM ,
|
|
|

\
|


=
2 1 0
1 2 3
1 1 2
A
si ( )
3 2 1
, , u u u B = , atunci ( )
2
...
A
f u =


58. n spatiul vectorilor coloana
3
vectorii
3 2 1
, , u u u ,
|
|
|

\
|
=
1
1
1
1
u
,
|
|
|

\
|
=
0
1
1
2
u
,
|
|
|

\
|
=
0
0
1
3
u
,
formeaza o baza. Daca
( )
3
AM ,
|
|
|

\
|


=
2 1 0
1 2 3
1 1 2
A
si ( )
3 2 1
, , u u u B = , atunci ( )
3
...
A
f u =
59. Fie , atunci ker ... T =

60. Fie , atunci dimker ... T =

61. Fie , atunci dimIm ... T =
62. Fie , atunci Im ... T =
63. Fie , atunci o baza pentru ImT o constituie
64. Fie spatiul vectorial . Determinati
65. Fie spatiul vectorial . O baza a acestui spatiu este
66. Fie spatiul vectorial . O baza a acestui spatiu este

67. Fie spatiul vectorial . O baza a acestui spatiu este


68. Fie spatiul vectorial multimea polinoamelor cu coeficienti complecsi. Determinati

69. Fie spatiul vectorial multimea polinoamelor cu coeficienti complecsi. O baza a acestui spatiu
vectorial este
70. Fie V un spatiu vectorial peste corpul K si f : V V o aplicatie liniara astfel incat f o f = f, iar functia
g = 1
V
- f (unde 1
V
e functia identitate). Atunci g g = o

3

. alt raspuns
=n-1
=n
71. Fie V un spatiu vectorial peste corpul K si f : V V o aplicatie liniara astfel incat f o f = f, iar functia
g = 1
V
- f (unde 1
V
e functia identitate). Atunci f g = o

72. Se considera functiile f(x) = e
ax
, g(x) = e
bx
, h(x) = e
cx
. Aceste functii sunt liniar independente in R-
spatiul vectorial V = {f | f : R R} daca: a, b, c sunt
73. Fie V un spatiu vectorial peste corpul K si f : V V o aplicatie liniara astfel incat f o f = f, iar functia
g = 1
V
- f (unde 1
V
e functia identitate). Atunci g f = o

74. In R-spatiul vectorial R
3
se considera vectorii (m,2,1), (0,n,1), (m,1,3), m si n numere reale. Pentru ce
valori ale lui m si n cei trei vecori sunt liniar independenti?

75. Fie

= +
=
= + +
= + +
=
0 3
0 2
0
0
) , , , , (
5
d c a
e a
e d c a
e b a
e d c b a L R
. Dimensiunea lui L este
76. Fie L = {(a,b,c,d)R
4
| a+2b+2c+5d = 0} si S = {(a,b,c,d)R
4
| -a+b-2d = 0} subspatii vectoriale ale
lui R
4
. Atunci dim
R
(L S) este egala cu
77. Fie L = {(a,b,c,d)R
4
| a+2b+2c+5d = 0} si S = {(a,b,c,d)R
4
| -a+b-2d = 0} subspatii vectoriale ale
lui R
4
. Atunci dim
R
(L + S) este egala cu
78. Se considera C - spatiul vectorial M
2
(C) al matricilor patratice cu 2 linii si 2 coloane, avand elemente
numere complexe (spatiu vectorial in raport cu adunarea matricilor si inmultirea cu scalari numere
complexe). Atunci dim
C
M
2
(C) este egala cu
79. Se considera R - subspatiul vectorial
) ( ,
2
C M C
)
`

|
|

\
|

= w z
z w
w z
L
(unde M
2
(C) este spatiul
vectorial al matricilor patratice cu 2 linii si 2 coloane, avand elemente numere complexe, in rapot cu
adunarea matricilor si inmultirea cu scalari numere reale). Atunci dim
R
L este egala cu:...

80. Se considera doua subspatii vectoriale L si S ale spatiului vectorial V peste corpul K. Suma lui L si S
este directa daca:...
81. Se considera vectorii u = (2,-3,1), v = (1,-1,0), w = (3,0,1), z = (-7,3,0) din R
3
. Alegeti afirmatia
adevarata: vectorii sunt liniar independenti; o baza pentru R
3
e formata cu vectorii v,w,z; nu se poate
extrage o baza pentru R
3
din cei patru vectori
82. Fie L={(a,b,c)R
3
|a+2b-xc=0} si
( )

= + +
= +
=
0 3 2
0 3
, ,
3
c xb a
b a
c b a S R
doua subspatii vectoriale ale lui
R
3
. Sa se afle xR astfel incat suma L + S sa fie directa.

83. Se considera un spatiu vectorial V de dimensiune n si o multime de m vectori liniar independenti din
V. Atunci relatia intre m si n care sa exprime toate situatiile posibile este:...
84. Determinati x R astfel ncat sistemul de mai jos sa fie compatibil:

=
= +
= + + +
x d c b a
d c b a
d c b a
3 4
3 4 3
4 3

85. Valoarea determinantului
2 2 2
9 4
3 2
1 1 1
z y x
z y x
este:
86. Valoarea determinantului
4 3 4 3 4 3
3 2 3 2 3 2
2 2 2
x z z y y x
x z z y y x
x z z y y x
+ + +
+ + +
+ + +
este:
=2
=2
=4
=4
=4
dim
K
(L S) = 0
o baza pentru R
3
e formata cu vectorii
v,w,z
x este orice numar real
m n
x = 7

87. Solutia sistemului de mai jos cu coeficienti in Z
5
este:

= + +
= + +
= + +
3

c b a
c b a
c b a


88. Rezolvati ecuatia:
0
3 1 0
0 2 1 0
0 1
=

x x
x
x x


89. Ecuatia
0
1
1
1
=
x x
x x
x x
are solutiile

90. Ecuatia
0
1
1
1
=
x x
x x
x x
are solutiile

91. Determinati parametrii a si b reali astfel ncat matricea de mai jos sa aiba rangul 2:
|
|
|

\
|
4 2 2 1
3 2 1
4 2 1
b
b
a

92. Care dintre urmatoarele valori pentru parametrii a si b reali fac ca matricea de mai jos sa nu aiba
rangul 3:
|
|
|

\
|
4 2 2 1
3 2 1
4 2 1
b
b
a


93. Determinati a real astfel ncat matricea de mai jos sa nu fie inversabila:
|
|
|

\
|
2 0 1
3 1
0 1 2
a


94. Care este rangul matricii:
|
|
|
|
|

\
|

4 4 6 12 5
2 2 3 6 3
0 2 2 4 2
2 0 1 2 1

95. Care este rangul matricii:
|
|
|
|
|
|

\
|


5 6 6 12 4
17 5 2 3 1
1 1 2 3 1
9 16 12 0 0
8 3 0 3 1


+
=3
=3
96. Fie A, B, C matrice astfel ncat AB = AC. Stabiliti daca B = C daca A e inversabila
97. Solutia X a ecuatiei matriceale:
|
|
|

\
|
=
|
|
|

\
|

2
3
4
0 4 5
2 2 3
3 1 2
X

este:

98. Solutia X a ecuatiei matriceale
|
|

\
|

=
|
|

\
|

|
|

\
|
1 1
1 1
1 1
1 1
2 1
1 2
X X
este:

99. Care valoare a parametrului real face ca sistemul de mai jos sa aiba solutii nenule:

= + + + +
= + + + +
= + + + +
= + + +
0 ) 3 (
0 ) 2 (
0 ) 1 (
0
t z y x
t z y x
t z y x
t z y x



100. Se considera sistemul:

= +
= +
= +
= +
1 3 2
4 2
5 2
3
y x
y x
y x
y x

Atunci sistemul e compatibil determinat cu solutia x=1, y=2?
101. Se considera sistemul:

= + +
= + +
= + +
3
4 2
4
mc b a
c mb a
c b ma

Atunci solutia lui, in cazul in care este compatibil determinat, este:

102. Fie A M
n
(C) o matrice. Daca x este un vector propriu, atunci se considera afirmatiile:
1. x e vector propriu al matricii A
-1
(daca exista)
2. x e vector propriu al matricii A
2

3. x e vector propriu al matricii A
k
, k numar natural.
Stabiliti valorile de adevar ale afirmatiilor anterioare.

103. Fie matricea A=
|
|
|

\
|


3 4 3
5 2 3
9 9 8
. Matricea Jordan J
A
astfel ncat A J
A
este:

104. Fie matricea A=
|
|
|

\
|


3 4 3
5 2 3
9 9 8
. Polinomul caracteristic al lui A este:

105. Fie A=
) (
3 1 5
0 1 0
2 0 4
3
C M
|
|
|

\
|
. Matricea Jordan J
A
asemenea cu A este:



= 2
+

=
+

=
m m
m
b
m m m
m m
a
+
+
=
m m m
m m
c

106. Fie A=
|
|
|

\
|



2 1 1
1 2 1
1 1 2
M
3
(C). Matricea Jordan J
A
, A J
A
, este:
II. Stabiliti daca
1. Fie
( ) ( )
3 3
: , , , , , f R R f x y z x y z y z x z = + + si baza
{ } , , B u v w = unde
( ) ( ) ( ) 1,1,1 , 0,1,1 , 0, 0,1 u v w = = = .
Suma elementelor matricii lui f in baza B este


2. Fie matricea
2 2 3
1 1 0 ,
1 2
A a R
a
| |
|
=
|
|

\
. a pentru care matricea este inversabil este

3. Fie matricea
1
0
i
A
i
| |
=
|

\
. Suma elementelor matricei
*
A este

4. Fie matricea . Daca
*
A este matricea adjuncta a matricei A, sa se arate
ca


5. Fie matricea
8 4
4 0
A
| |
=
|

\
. Suma elementelor matricei Jordan asociat matricei A este


6. Fie matricea . Suma elementelor matricei Jordan asociat matricei A este

7. S se afle
7
a Z astfel incat polinomul
| |
6
7
5 X aX Z X + +
$
s fie ireductibil

8. Suma valorilor proprii asociate matricei
2
2 2 2 2
2
, , , , 1
a ab ac
A ab b bc a b c R a b c
ac bc c
| |
|
= + + =
|
|
\
este

9. Fie matricea . Suma elementelor matricei Jordan asociat matricei A este

= -2
=0,75
=1
=9
=2
=Nu exista
=1
=0
10. Fie matricea . Matricei Jordan asociat matricei A este

11. Fie matricea . Suma elementelor matricei Jordan asociat matricei A este




12. Fie matricea . Suma elementelor matricei Jordan asociat matricei A este


13. Fie matricea . Determinati

14. Fie matricea . Determinati matricea Jordan
15. Cate subspatii vectoriale are
2
R ?


16. Cate subspatii vectoriale are
3
R ?


17. Se consider sistemul . Sistemul este compatibil determinat pentru
m=


18. Suma solutiilor sistemului
1
0
0
x y z t
y z t
z t
+ + + =

+ + =

+ =

este


=0
=2
=o infinitate
=o infinitate
=1
19. Fie sistemul
1
0
0
x y z t
y z t
z t
+ + + =

+ + =

+ =

si A matricea sitemului. Cate solutii are ecuatia


3
AX I = ?


20. Fie sistemul
1
0
0
x y z t
y z t
z t
+ + + =

+ + =

+ =

si A matricea sistemului. Cate solutii are ecuatia


3
XA I = ?



21. Fie matricea
1 0 0
1 1 0
0 0 1
A
| |
|
=
|
|
\
. Determinantul matricei
2 2004
... X A A A = + + + este


22. Fie matricea
1 0 0
1 1 0
0 0 1
A
| |
|
=
|
|
\
.Suma elementelor matricei
1
A

este


23. Fie matricea
2 1
3 1
A
| |
=
|

\
. Determinantul matricei
2 2003
... X A A A = + + + este


24. Fie matricea
2 2
2 2
A
| |
=
|

\
si
*
, 1 n N n > . Atunci
( )
2
det
n
I A +
este


25. Fie matricea
1 1
2 2
A
| |
=
|
\
si matricea
2 2004 2005
... X A A A A = + + + . Care din urmtoarele afirmatii
este adevrat ?
X are si elemente strict pozitive si elemente strict negative; X are toate elementele
strict negative; X are toate elementele strict pozitive


26. Fie
( )
2
V M R = si A V o matrice fixat. Fie fucntia
( ) : , f V V f X AX XA = . Atunci f este
morfism de spatii vectoriale ?


27. Cate solutii are sistemul
2 1
2 0
3 3 3 3 4 2
a b c d e
a b c d e
a b c d e
+ + =

+ + =

+ + =



28. Fie spatiul vectorial real
3
R si bazele
( ) ( ) ( ) { } ( ) ( ) ( ) { }
1 2
1,1, 0 , 1, 0,1 , 0, 0,1 , 1, 2, 3 , 1,1,1 , 1, 0,1 B B = =
.
Suma elementelor matricei de trecere de la baza
1
B la baza
2
B este
=o infinitate
=niciuna
=0
=2
=1
=1
f

= -1


29. Fie spatiul vectorial real
3
R si bazele
( ) ( ) ( ) { } ( ) ( ) ( ) { }
1 2
1,1, 0 , 1, 0,1 , 0, 0,1 , 1, 2, 3 , 1,1,1 , 1, 0,1 B B = =
. Linia
1 a matricei de trecere de la baza
1
B la baza
2
B este


30. Fie spatiul vectorial real
3
R si bazele
( ) ( ) ( ) { } ( ) ( ) ( ) { }
1 2
1,1, 0 , 1, 0,1 , 0, 0,1 , 1, 2, 3 , 1,1,1 , 1, 0,1 B B = =
. Linia
2 a matricei de trecere de la baza
1
B la baza
2
B este


31. Fie spatiul vectorial real
3
R si bazele
( ) ( ) ( ) { } ( ) ( ) ( ) { }
1 2
1,1, 0 , 1, 0,1 , 0, 0,1 , 1, 2, 3 , 1,1,1 , 1, 0,1 B B = = . Linia
3 a matricei de trecere de la baza
1
B la baza
2
B este


32. Fie matricea
, ,
x y
X x y R
y x
+
| |
=
|

\
astfel incat
2
2 2
4 13 0 X X I + = . Valoarea sumei x+y este

33. Fie matricea
1 1 1
0 1 1
0 0 1
A
| |
|
=
|
|
\
. Suma elementelor matricei
10
A este

34. Suma solutiilor sistemului
2 1
2 2 1
2
x y z
x y z
x y z
+ + =

+ + =

+ =

este
35. Fie . Stabiliti daca
M formeaza un spatiu vectorial peste R, fata de operatiile de adunare a matricilor si de inmultire cu
scalari.
36. Fie L multimea functiilor cu proprietatea ca astfel incat
. Stabilti daca L formeaza un subspatiu liniar in spatiul functilor
definite pe
37. Care din urmatoarele multimi ale lui formeaza un subspatiu al sau?
a. c.
b.
38. Fie , stabiliti daca matricile A,B sunt elementare si daca sunt, stabiliti
tipul acestora.



=5
=78
=0


III. Stabilti daca
1. Fie
( ) ( )
2 2
: , , 2 , f R R f x y x ay bx y = + +
, si c R astfel ncat f f cf = o . Suma a b c + + este


2. Fie A o matrice cu coeficienti complecsi. Aratati ca, daca exista astfel incat ,
atunci matricea este inversabila si avem ( )
1
I A

=


3. Se considera sistemul
( )
( )
2 1
2 1 3 1 ,
3 2 1
ax ay z
ax a y z a R
ax ay a z a

+ + =

+ + =

+ + + =

. Sistemul este incompatibil pentru a=



4. Fie matricea
, , ,
x p q r
A r x p q p q r R
q r x p
| |
|
=
|
|

\
. Suma patratelor radacinilor ecuatiei
( ) det 0 A =

este


5. Fie matricea
1
, ,
0
a
A a b R
b
| |
=
|
\
. Calculati
2 2
a b + astfel nct
( )
2
2 2
0 A I =


6. Fie matricea urmatoare, de ordin n, este inversabila daca
7. Fie V un spatiu vectorial real si , : f g V V morfisme de spatii vectoriale. Atunci relatia
1
V
f g g f = o o este posibila numai daca dimV=


8. O matrice se numeste involutiva daca . O matrice se numeste
idempotenta daca . Sa se arate ca daca B este o matrice idempotenta, atunci matricea
este


9. O matrice se numeste involutiva daca . O matrice se numeste
idempotenta daca . . Sa se arate ca daca A este o matrice involutiva, atunci matricea
este


=6
{ } a
=5
V <
10. Fie matricea patratica de ordinul n ale carei elemente sunt toate egale cu 1. Sa se arate ca
este inversabila si avem( )
1
n n
I E

=
( unde
I
n
este matricea unitate de ordinul n)

11. Daca A este o matrice cu 3 linii si trei coloane cu toate elementele egale cu 1 sau -1 , iar
D=det(A) , D este divizibil cu.

12. Fie matricea
a b c
A b c a
c a b
| |
|
=
|
|
\
unde a,b,c sunt radacinile ecuatiei
3 2
2 2 17 0 X X X + + = .
Determinantul matricei A este


13. Fie matricea
a b c
A b c a
c a b
| |
|
=
|
|
\
unde a,b,c sunt radacinile ecuatiei
( )
3 2 *
1 3 0, mX X m X m R + + + =
.
Notam
( ) D m
determinantul matricei A. Atunci
( ) lim
m
mD m

este
14. Fie
( )
2
V M R =
si A V o matrice fixata. Fie fucntia
( ) : ,
T T
f V V f X A X X A =
. Atunci f este
morfism de spatii vectoriale ?

15. Fie maticea
2
1 1
1 1 ,
4 5 4
x
A x a R
a a x
| |
|
=
|
|

\
. Cte radacini reale are ecuatia
( ) det 0 A =
?


16. Consideram expresiile
( ) ( ) ( ) 1 cos , 1 sin , 1 sin f x x g x x h x x = + = + = , elementele , , a b c R si
matricea
( ) ( ) ( )
( ) ( ) ( )
( ) ( ) ( )
f a g a h a
A f b g b h b
f c g c h c
| |
|
=
|
|
\
. Determinantul matricei A este egal cu

17. Fie matricea
, , , ,
a b
A a b c d R
c d
| |
=
|
\
. Valoarea expresiei
( ) ( )
2
2
A a d A ad bc I + +
este








18. Fie matricea *
0
0 0 0 ,
0
a a
A a R
a a
| |
|
=
|
|
\
si a este un numar real nenul. Sa se determine a astfel incat
egalitatea
n
A A = sa aiba loc pentru un anumit numar natural n.


D este divizibil cu 4
=4
-3
f este morfism de spaii
vectoriale
=1
=0
=0
19. Fie matricea . Rangul matricei A este 2 daca =


20. Fie matricea . Rangul matricei A este 3 daca =


21. Fie matricea . Sa se determine astfel incat matricea A sa fie
inversabila

22. Suma solutiilor sistemului
2 2 1
2 2 0
2 0
2 2 1
a b c d
a c d
a b d
a b c d
+ + + =

+ + =

+ + =

+ + + =

este


23. Fie sistemul
2 2 2 0
3 1
5 7 2
a b c d e
a b c d e
a b c d e
=

+ =

+ + =

. Sistemul este incompatibil?







Stabiliti valoarea de adevar a urmatoarelor afirmatii
1. Fie V un K spatiu vectorial. Atunci = = a x 0 , oricare ar fi K a si V x .


2. Fie V un K spatiu vectorial. Atunci
( ) ( ) ax x a x a = = si ( )( ) ax x a = , oricare ar fi K a si V x .


3. Fie V un K spatiu vectorial. Daca = ax , atunci 0 = a sau = x .

4. Fie
3
1 2 3
, , v v v , ( ) 0 , 1 , 1
1
= v , ( ) 1 , 1 , 0
2
= v , ( ) 1 , 0 , 1
3
= v . Avem ( )
3 2 1
, , ind v v v
K
n spatiul vectorial
3
.

5. Vectorii
3
1 2 3
, , v v v , ( ) 1 , 1 , 1
1
= v , ( ) 1 , 1 , 2
2
= v , ( ) 3 , 3 , 5
3
= v sunt liniar dependenti.

Adevarat
Adevarat
Adevarat
Adevarat
Adevarat

6. Fie
n
V = si
( ) { } 1 1
,..., , 0
n
n
N x x x x

= =
. Atunci N este un subspatiu vectorial al spatiului
vectorial
n
V = .

7. Fie
n
V = , 2 n si
( )
{ } 1 2 1 2
, ,..., , 2
n
n
N x x x x x x x = = =
. Atunci N este subspatiu vectorial al lui
n
.

8. Fie
{ }
: V f f = =


,
( ) ( ) { }
, X f V f x f x x = =
si
( ) ( ) { }
, Y f V f x f x x = =
.
Atunci X si Y sunt subspatii vectoriale ale spatiului vectorial V =

si Y X V = .


9. Orice spatiu vectorial V finit generat, diferit de spatiul nul, admite cel putin o baza. Toate bazele sale
sunt finite si au acelasi numar de vectori.

10. Fie V un spatiu vectorial nenul de dimensiune finita si
n
u u u ,..., ,
2 1
un sistem finit de generatori pentru
V . Atunci exista o baza B a lui V astfel nct { }
n
u u u B ,..., ,
2 1
.

11. Fie V un K spatiu vectorial de dimensiune
*
n si V v , v . Exista o baza B a lui V astfel
nct B v .

12. Daca V si V sunt doua spatii vectoriale peste corpul K , aplicatia
V V O : , ( ) = x O , V x ,
unde este vectorul zero a lui V nu este transformare liniara de la V la V ,

13. Daca V este un K spatiu vectorial, aplicatia identica V V
V
: 1 , ( ) x x
V
= 1 nu este transformare
liniara.

14. Fie V si V doua K spatii vectoriale si V V f : o transformare liniara. Avem:
( ) = f , ( ) ( ) x f x f = oricare ar fi V x .

15. Fie V si V doua K spatii vectoriale si V V f : o transformare liniara. Avem:
( ) ( ) { } = = x f V x f
def
Ker nu este subspatiu al lui V , iar ( ) ( ) { } V x x f f
def
= Im este subspatiu al lui V .

16. Fie V si V doua K spatii vectoriale si V V f : o transformare liniara. Avem:
f este aplicatie injectiva daca si numai daca ( ) { } = = O f Ker .

17. Fie V si V doua K spatii vectoriale si V V f : o transformare liniara de la V la V .
Daca < = n V
K
dim , atunci ( ) ( ) ( ) ( ) V n f f
K K K
dim Im dim Ker dim = = + .
18. Daca V este un K spatiu vectorial de dimensiune 1 n , atunci
n
K V~ .


19. n spatiul vectorilor coloana
3
vectorii
3 2 1
, , u u u ,
|
|
|

\
|
=
1
1
1
1
u
,
|
|
|

\
|
=
0
1
1
2
u
,
|
|
|

\
|
=
0
0
1
3
u
,
Adevarat
Adevarat
Adevarat
Adevarat
Adevarat
Adevarat
Fals
Fals
Adevarat
Fals
Adevarat
Adevarat
Adevarat
Adevarat
formeaza o baza. Daca
( )
3
AM ,
|
|
|

\
|


=
2 1 0
1 2 3
1 1 2
A
si ( )
3 2 1
, , u u u B = , atunci
( )
1 1 0
1 0 3
2 2 5
B A
M f
| |
|
=
|
|
\
.

20. Fie
| | { }
2
cu , , V f X f a bX cX a b c = = + +
. Atunci V nu este spatiu vectorial n raport cu
operatia de adunare a polinoamelor si de nmultire a polinoamelor cu scalari .

21. Polinoamele ( )( ) c X b X f =
1
, ( )( ) c X a X f =
2
, ( )( ) b X a X f =
3
, ( , , a b c ), formeaza o baza
pentru spatiul vectorial V , unde
| | { }
2
cu , , V f X f a bX cX a b c = = + +
, daca si numai daca
( )( )( ) 0 a c c b b a .


22. Daca
( )
2
,
z w
N z w
w z

| |
=
` |

\
)
M

atunci nu este un subspatiu al
( )
2
M .

23. Fie
( )
{ }
2
, L x y x y = =
. Atunci L este subspatiu vectorial al spatiului
( )
2
, , +
peste corpul
numerelor reale.

24. Fie
( )
2
, 0, , , ,
a b
L A A b d a b c d
c d

| |
= = + =
` |
\
)
M
. Atunci L este subspatiu vectorial al spatiului
( ) ( )
2
, , + M
peste corpul numerelor reale.

25. Fie
3 2
: f ,
( ) ( ) , , 2 , 3 2 4 f x y z x y z x y z = + + + .Atunci f nu este aplicatie liniara.


26. Daca
4 2
: f ,
( ) ( )
1 2 3 4 1 2 3 1 2 4
, , , 2 , 3 f x x x x x x x x x x = + +
, atunci f este o aplicatie liniara de
spatii vectoriale.

27. Fie vectorii
( ) ( ) ( )
1 2 3
2, 4, 5 , -1, 1, 0 , -2, 0, 2 b b b = = = .
B = {b
1
, b
2
, b
3
} formeaza o baza n R
3
?

28. Vectorii (1,5) si (2, -9) sunt liniar independenti.

29. Vectorii (2, -1) si (3, 4) formeaza o baza a spatiului vectorial

30. Vectorul (1, 10) este o combinatie liniara a vectorilor (1, 3) si (2, -1) deoarece
3(1, 3)-(2, -1)=(1, 10)

31. Vectorii (1, 2, -1), (3, 2, 5) si (4, 4, 4) sunt liniar independenti in

32. Valorile proprii ale transformarii liniare T(x,y)=(5x, x+3y) sunt 0 si 1.
Fals
Adevarat
Fals
Adevarat
Adevarat
Fals
Adevarat
Adevarat
Adevarat
Adevarat
Flas
Fals

33. Valorile proprii ale transformarii liniare T(x,y)=(5x, x+3y) sunt 3 si 5.

34. 1, 2 si 3 sunt valorile proprii ale transformarii liniare T(x, y, z)=(2x, x+3y, 3x+y+z).

35. 1, 2 si 3 sunt valorile proprii ale transformarii liniare T(x, y, z)=(3x, 2x-y, x-y+z).

36. este una din valorile proprii ale transformarii liniare T(x, y)=(3x+y, x+3y).

37. Fie

= +
=
= + +
= + +
=
0 3
0 2
0
0
) , , , , (
5
d c a
e a
e d c a
e b a
e d c b a L R
. Atunci L este subspatiu vectorial al lui R
5


38. Numerele 1,
3
2 , 3 sunt liniar independente peste Q?

39. Numerele 1,
3
2 ,
3 2
2 sunt liniar independente peste Q?

40. Este sistemul

= + + + +
= + + +
= + + + +
2 3 2 2
4 2
2 2 2 2
e d c b a
e d c b a
e d c b a
compatibil?



Adevarat
Adevarat
Adevarat
Fals
Adevarat
Fals
Adevarat
Adevarat
ALGEBRA II

Disciplin obligatorie; Anul I, Sem. 2, ore sptmnal, nvmnt de zi: 2 curs, 2 seminar,
total ore semestru 56; 6 credite; examen.




I. CONINUTUL TEMATIC AL DISCIPLINEI

Spaii vectoriale. Aplicaii liniare. Subspaii vectoriale. Subspaiu vectorial factor. Teorema de
izomorfism. (D. Ion, S. Barz, L. Tufan Lecii de algebr II, Ed. Fundaiei Romania de Maine,
Bucureti, 2004, pag 9-38)
Baze intr-un spaiu vectorial. Dimensiunea unui spaiu vectorial. Transformarea coordonatelor la
schimbarea bazelor. (D. Ion, S. Barz, L. Tufan Lecii de algebr II, Ed. Fundaiei Romania de
Maine, Bucureti, 2004, pag 9-38)
Aplicaii multiliniare alternate: determinani. Matrici inversabile. Regula lui Cramer. Rangul unei
matrice. Sisteme de ecuaii liniare. (D. Ion, S. Barz, L. Tufan Lecii de algebr II, Ed.
Fundaiei Romania de Maine, Bucureti, 2004, pag 39-91)
Teorema mpririi cu rest n Z i K[X]. Polinoame ireductibile. Descompunerea unui polinom n
produs de polinoame ireductibile. (D. Ion, S. Barz, L. Tufan Lecii de algebr II, Ed. Fundaiei
Romania de Maine, Bucureti, 2004, pag 92-105)
Algebra endomorfismelor unui spaiu vectorial finit dimensional. Vectori i valori proprii.
Polinomul caracteristic i polinomul minimal. (D. Ion, S. Barz, L. Tufan Lecii de algebr II,
Ed. Fundaiei Romania de Maine, Bucureti, 2004, pag 115-130)
Teoremele Hamilton-Cayley i Frobenius. Matrice asemenea. Forma canonic Jordan.
(D. Ion, S. Barz, L. Tufan Lecii de algebr II, Ed. Fundaiei Romania de Maine, Bucureti,
2004, pag 115-130)


II. BIBLIOGRAFIE MINIMAL OBLIGATORIE

D. Ion, S. Barz, L. Tufan Lecii de algebr II, Ed. Fundaiei Romania de Maine, Bucureti,
2004
L. Tufan Algebr. Culegere de probleme, Ed. Fundaiei Romania de Maine, Bucureti, 2000
L. Tufan Module. Teoria corpurilor., Ed. Fundaiei Romania de Mine, Bucureti, 2002



Test de autoevaluare



1) Fie vectorii v
1
, v
2
, v R
3
.
( )
1
1, 2, 3 v = i ( )
2
0, 1, 1 v = S se scrie vectorul ( ) 1, 2, 4 v =
ca o combinaie liniar a vectorilor v
1
i v
2
.

Rezolvare
Conform definiiei trebuie s aflm scalarii
1
i
2
astfel nct
v =
1
v
1
+
2
v
2


( ) ( ) ( )
( ) ( ) ( )
( ) ( )
1 2
1 1 1 2 2 2
1 1 2 1 2
1, 2, 4 1, 2, 3 0, 1, 1
1, 2, 4 1, 2, 3 + 0, 1, 1
1, 2, 4 , 2 + , 3 +
= +
=
=

sau altfel scris obinem urmtorul sistem cu necunoscutele
1
,
2
.
1 1
1 2 2
1 2 2
1 1
2 2 4
3 4 7
= =

+ = =


+ = =

sistem incompatibil sau putem afirma c vectorul v nu se
poate scrie ca o combinaie liniar a vectorilor v
1
i v
2
.

2) Fie vectorii ( ) ( ) ( )
1 2 3
0, 2, 1 ; 1, , 1 ; , 0, 1 ; R v v m v m m = = =
Determinai parametrul m R astfel nct vectorii v
1
, v
2
, v
3
s fie liniar independeni.

Rezolvare
Aplicnd definiia trebuie s punem condiia ca toi scalarii
1
,
2
,
3
R s fie nuli n
egalitatea:
1
v
1
+
2
v
2
+
3
v
3
=0, sau transformnd aceast egalitate ntr-un sistem de ecuaii
liniare omogene cu solutie nula unica, atunci obligatoriu trebuie s punem conditia ca
determinantul matricii format din vectorii v
1
, v
2
, v
3
` s fie nenul:
det A 0
0 1
2 0
1 1 1
m
m

0 0 + 0 2m m
2
0 2 0

m
2
+ 2m + 2 0 (m+1)
2
+ 1 0 () m R
Aadar vectorii sunt liniar independeni pentru () m R


3) Fie vectorii ( ) ( ) ( )
1 2 3
1, 1, 2 , 1, 1, 1 , 1, 2, 1 v v v = = = , v
1
, v
2
, v
3
R
3

Vectorii v
1
, v
2
, v
3
` formeaz o baz a spatiului vectorial R
3
?

Rezolvare
Pentru a demonstra c sistemul format din trei vectori v
1
, v
2
, v
3
` (numarul vectorilor din
baza trebuie sa fie egal cu dimensiunea spatiului in care se lucreaza) formeaz baza este
suficient s demonstrm c este un sistem liniar independent

1 1 2
2 1 1
1 1 1
0 Vectorii v
1
, v
2
, v
3
` formeaz o baz a spatiului vectorial R
3

4) Exprimati vectorul ( ) 3, 1, 2 v = n baza unitar.

Rezolvare
n spaiul R
3
vectorii unitari sunt ( ) ( ) ( )
1 2 3
1, 0, 0 ; 0, 1, 0 ; 0, 0, 1 e e e = = =
i atunci putem scrie
v = -3e
1
+ 1 e
2
+ 2 e
3
.
5) Aplicaia T : R
2
R
3
unde
T(x
1
, x
2
) = (x
1
+ x
2
, x
2
, x
1
x
2
) este o aplicaie liniar ?
Rezolvare
Vom arta c:
T(x + y) = T(x) + T(y) () , R, x, y R
2

T(x
1
+ y
1
, x
2
+ y
2
) = T(x
1
, x
2
) + T(y
1
, y
2
)
(x
1
+ y
1
+ x
2
+ y
2
, x
2
y
2
, x
1
y
1
x
2
y
2
) =
= (x
1
+ x
2
, x
2
, x
1
x
2
) + (y
1
+ y
2
, y
2
, y
1
y
2
) (A).

6) Fie aplicaia liniar T : R
2
R
3
, T(x
1
, x
2
) = (x
1
+ x
2
, x
2
, x
1
x
2
)
S se determine matricea asociat aplicaiei liniare T n raport cu perechea de baze:
B = {a
1
, a
2
} i B = {b
1
, b
2
, b
3
}, unde
( ) ( )
( ) ( ) ( )
1 2
1 2 3
1, 1 , -1, 3 ;
1, 1, 1 , 1, 3, 4 , 5, -1, 0
a a
b b b
= =
= = =


Rezolvare
T(a
1
) = T(1, 1) = (2, 1, 2)
T(a
2
) = T(1, 3) = (2, 3, 2).
Coordonatele acestor doi vectori n baza B sunt:
(10/4, 9/8, 1/8) i respectiv (5/2, 1/8, 7/8). Deci
( )
|
|
|
|
|
|

\
|

=
8
7

8
1

8
1

8
9
2
5
4
10

T M
' B , B




7) Fie aplicaia liniar T : R
2
R
3
, T(x
1
, x
2
) = (x
1
+ x
2
, x
2
, x
1
x
2
)
S se determine matricea asociat aplicaiei liniare T n raport cu bazele canonice.

Rezolvare
Bazele canonice sunt B = {e
1
, e
2
}, ( ) ( )
1 2
1, 0 , 0, 1 e e = = i
{ }
( ) ( ) ( )
' ' '
1 2 3 1 2 3
' , , , 1, 0, 0 ; 0, 1, 0 ; 0, 0, 1 B e e e e e e = = = =
' ' '

T(e
1
) = T(1, 0) = (1, 0, 1)
T(e
2
) = T(0, 1) = (1, 1, 1).
Coordonatele acestor doi vectori n baza B sunt (1, 0, 1) i respectiv (1, 1, 1) i deci
( )
|
|
|

\
|

=
1 1
1 0
1 1
T M
' B , B




8) Fie T : R
3
R
3
o aplicaie liniar a crei matrice asociat n raport cu baza canonic este:

|
|
|

\
|
=
1 3 0
3 1 0
0 0 4
A
T

S se afle valorile proprii asociate acestui operator.

Rezolvare
Polinomul caracteristic ( ) ( )
3
4 0 0
det A 0 1 3
0 3 1
P E

= =

i atunci ecuaia
caracteristic va fi: (-4)
2
(+2)= 0
Valorile proprii sunt soluiile acestei ecuaii:
1
=
2
= 4 i
3
= 2.

9) Fie T : R
3
R
3
o aplicaie liniar a crei matrice asociat n raport cu baza canonic este:

|
|
|

\
|
=
1 3 0
3 1 0
0 0 4
A
T

S se afle vectorii proprii asociai acestui operator.

Rezolvare

Vectorii proprii asociai valorii proprii se afl rezolvnd ecuaia: T(v) = v
Polinomul caracteristic ( ) ( )
3
4 0 0
det E A 0 1 3
0 3 1
P

= =

i atunci ecuaia
caracteristic va fi: (-4)
2
(+2)= 0
Valorile proprii sunt soluiile acestei ecuaii:
1
=
2
= 4 i
3
= 2.
Aadar, fie
1
=
2
= 4, atunci vom rezolva ecuaia
T(v) = 4v, v R
3

=
=

= +
= +
=
R v v
R v
v v
v v
v 4 v v 3
v 4 v 3 v
v 4 v 4
3 2
1
2 3
1 1
3 3 2
2 3 2
1 1

Deci v = (k, h, h), unde k, h R i nu sunt simultan nuli, este vectorul propriu cutat asociat
valorii = 4.

Fie
3
= 2 atunci vom rezolva ecuaia
T(v) = -2v, v R
3

=
=

= +
= +
=
R v v
0 v
v 2 v v 3
v 2 v 3 v
v 2 v 4
3 2
1
3 3 2
2 3 2
1 1

Deci v = (0, p, p), unde p R nenul, este vectorul propriu asociat valorii
= 2.
10) Cu ajutorul transformarilor elementare calculati detA, pentru matricea urmatoare
( )
4
2 1 2 1
2 6 4 5
,
4 8 4 2
0 10 4 3
A A M
| |
|

|
=
|
|

\
.
Vom efectua o serie de transformari elementare de tip I sau II aplicate liniilor lui A, reducand-
o la forma superior triunghiulara T, ceea ce ne permite sa calculam det det A T = .
2 1 2 1
2 6 4 5
4 8 4 2
0 10 4 3
A
| |
|

|
=
|
|

\
2 2 1
3 3 1
,
2
L L L
L L L

+
2 1 2 1
0 5 2 4
0 10 0 4
0 10 4 3
B
| |
|

|
=
|
|

\
.
In continuare, pentru a avea numai 0 si sub cel de al doilea numar dupa diagonala lui B,
efectuam transformarile elementare urmatoare
2 1 2 1
0 5 2 4
0 10 0 4
0 10 4 3
B
| |
|

|
=
|
|

\
3 3 3
4 4 2
2
2
L L L
L L L
+

2 1 2 1
0 5 2 4
0 0 4 12
0 0 8 5
C
| |
|

|
=
|

\
.
Transformam in 0 si coeficientul lui C de sub cel de al treilea numar al diagonalei sale
2 1 2 1
0 5 2 4
0 0 4 12
0 0 8 5
C
| |
|

|
=
|

\
4 4 3
2 L L L +
2 1 2 1
0 5 2 4
0 0 4 12
0 0 0 19
T
| |
|

|
=
|

|
\
.
Am efectuat numai transformari elementare de tip I si obtinem
( )( ) det det 2 5 4 19 760 A T = = = .
11) Stabiliti daca matricile urmatoare sunt matrici elementare si de ce tip


Matricile ( ) ( ) ( ) , ,
ij ij i n
T P M M de forma
1 5 0 1
3 0
, , ,
0 1 1 0
0 1
1 0 3 0 0 1 5 0 0
0 1 0 , 0 1 0 , 0 1 0
0 0 1 1 0 0 0 0 1
A B C
D F G
| |
| | | |
= = =
|
| |
\ \
\
| |
| | | |
|
| |
= = =
|
| |
| | |
\ \
\
( )
1
... 1 ... ... ...
1
1
ij
i
T
j

| |
|
|
| =
|
|
|
\

1
... 0 ... 1 ... ...
1 0 ... ...
1
ij
i
P j
i j
| |
|
|
| =
|
|
|
\



( )
1
1
... ... ... ...
1
i
M i
i

| |
|
|
| =
|
|
|
\


Se numesc matrice elementare de tip I, II, respectiv III.
Matricea ( )
ij
T coincide cu
n
I mai putin pozitia ( ) , , i j i j , unde are drept coeficient
numarul .
Matricea ( )
i
M coincide cu
n
I mai putin pozitia( ) , i i unde avem numarul 0 .
Matricea
ij
P care se obtine din permutand linia i cu linia j.
Asadar, observam ca matricile date A, B, C, D, F, G sunt matrice elementare, respectiv
( )
( ) ( )
( )
12 1 12 12 13 1
5 , 3 , , 3 , , 5 A T B M C P D T F P G M = = = = = = .
Analiza numerica - modele de probleme

____ 1. Se da tabelul
x 1 2 3
y 6 7 6

Sa se calculeze diferenta divizata f[1,2,3] .
a. -1 c. -2
b. -4 d. -3

____ 2. Se rezolva cu metoda lui Gauss cu pivotare partiala sistemul cu matricea extinsa
. Dupa eliminari succesive se ajunge la sistemul cu matrice superior triunghiulara
a.

c.

b.

d.


____ 3. Metoda lui Simpson are ordin de exactitate egal cu
a. 2 d. 5
b. 1 e. 3
c. 4


____ 4. Aproximati integrala

cu metoda sumata a trapezului cu 2 subintervale.
a. 9 c. 12
b. 11 d. 10


____ 5. Se rezolva ecuatia = pe intervalul [0,1] cu metoda aproximatiilor succesive corespunzatoare
functiei . Alegem predictie initiala . Cat este urmatoarea iteratie conform
metodei aproximatiilor succesive?
a. 1/12 d. 3/10
b. 3/5 e. 1/4
c. 4/9


____ 6. Se rezolva ecuatia =0 pe intervalul [0,1] cu metoda bisectiei. Prima iteratie este
0.5. Care este a doua iteratie?
a. 0.75 d. 1.25
b. 0.5 e. 1.5
c. 0.25


____ 7. Se aplica metoda lui Ritz pentru calculul inversei matricii . La primul pas se alege vector
si se calculeaza matricea
a.

d.

b.

e.

c.



____ 8. Se rezolva cu metoda lui Gauss cu pivotare partiala sistemul cu matricea extinsa
. Dupa eliminari succesive se ajunge la sistemul cu matrice superior triunghiulara
a.

c.

b.

d.



____ 9. Aproximati integrala

cu metoda lui Simpson.
a. 66 c. 68
b. 65 d. 64


____ 10. Se rezolva cu metoda lui Gauss cu pivotare partiala sistemul cu matricea extinsa
. Dupa eliminari succesive se ajunge la sistemul cu matrice superior triunghiulara
a.

c.

b.

d.



____ 11. Fie polinomul lui Legendre de ordin 3 pe [-1,1]. Cat este


a. 1 d. 2
b. 0 e. 3
c. 4


____ 12. Aproximati integrala

cu metoda lui Simpson.
a. 1 c.

b.

d.



____ 13. Aproximati integrala

cu metoda trapezului.
a. 1.5 c. 1
b. 2 d. 0.5


____ 14. Se aplica metoda iterativa a lui Jacobi sistemului cu predictie initiala
. Sa se calculeze urmatoarea iteratie in metoda lui Jacobi.
a.

d.

b.

e.

c.



____ 15. Aproximati integrala

cu metoda trapezului.
a. 3 c. 2
b. 1 d. 0


____ 16. Aproximati integrala

cu metoda sumata a lui Simpson cu 2 subintervale.
a. 40/3 c. 55/3
b. 50/3 d. 45/3


____ 17. Se rezolva ecuatia cu metoda lui Newton cu predictie initiala . Cat este urmatoarea
iteratie ?
a. 1/3 d. 3/2
b. 0 e. 1/2
c. 1/4


____ 18. Se da tabelul
x 1 2 3
y 4 7 10

Sa se calculeze diferenta divizata f[2,3] .
a. 3 c. 1
b. 2 d. 4


____ 19. Se rezolva ecuatia =0 pe intervalul [0,1] cu metoda bisectiei. Prima iteratie este
0.5. Care este a doua iteratie?
a. 0.75 d. 1.25
b. 1.5 e. 0.5
c. 0.25

____ 20. Se aplica metoda radacinii patrate matricii A= pentru calculul descompunerii Cholesky A=BB ,
unde B este inferior triunghiulara(toate elementele deasupra diagonalei principale sunt nule) cu elementele
diagonale pozitive. Sa se afle elementul de pe a doua linie si a doua coloana din matricea B.
a. 4 d. 1
b. 3 e. 15
c. 10


____ 21. Pentru A= sa se calculeze .
a. 7 d. 5
b. 4 e. 10
c. 6

____ 22. Aproximati integrala

cu metoda trapezului.
a. 1 c. 0.5
b. 1.5 d. 2


____ 23. Se da tabelul
x -1 0 1
y 1 0 1
Se noteaza cu P(x) polinomul lui Lagrange de grad cel mult 2 ce interpoleaza datele din tabelul de
mai sus. Cat este P(2)?
a. 3 c. 2
b. 5 d. 4

____ 24. Se aplica metoda iterativa a lui Gauss-Seidel sistemului cu predictie initiala
. Sa se calculeze urmatoarea iteratie in metoda lui Gauss-Seidel.
a.

d.

b.

e.

c.



____ 25. Se rezolva ecuatia = pe intervalul [0,1] cu metoda aproximatiilor succesive corespunzatoare
functiei . Alegem predictie initiala . Cat este urmatoarea iteratie conform
metodei aproximatiilor succesive?
a. 3/4 d. 1/8
b. 3/5 e. 1/10
c. 2/5

____ 26. Pentru A= sa se calculeze .
a. 5 d. 6
b. 7 e. 4
c. 10


____ 27. Aproximati integrala

cu metoda sumata a trapezului cu 2 subintervale.
a. 2 c. 0
b. 1 d. 3


____ 28. Se aplica metoda lui Ritz pentru calculul inversei matricii . La primul pas se alege vector
si se calculeaza matricea
a.

d.

b.

e.

c.



____ 29. Se rezolva ecuatia =0 pe intervalul [0,1] cu metoda bisectiei. Prima iteratie este
0.5. Care este a doua iteratie?
a. 0.75 d. 0.5
b. 1.25 e. 0.25
c. 1.5


____ 30. Aproximati integrala

cu metoda lui Simpson.
a. 11 c. 17
b. 19/2 d. 40/3


____ 31. Se da tabelul
x -1 0 1
y 1 -1 1
Se noteaza cu P(x) polinomul lui Lagrange de grad cel mult 2 ce interpoleaza datele din tabelul de
mai sus. Cat este P( )?
a. 3 c. 5
b. 4 d. 6


____ 32. Se aplica metoda iterativa a lui Gauss-Seidel sistemului cu predictie initiala
. Sa se calculeze urmatoarea iteratie in metoda lui Gauss-Seidel.
a.

d.

b.

e.

c.


____ 33. Se aplica metoda lui Ritz pentru calculul inversei matricii . La primul pas se alege vector
si se calculeaza matricea
a.

d.

b.

e.

c.


____ 34. Se aplica metoda radacinii patrate matricii A= pentru calculul descompunerii Cholesky A=BB ,
unde B este inferior triunghiulara(toate elementele deasupra diagonalei principale sunt nule) cu elementele de
pe diagonala pozitive. Sa se afle elementul de pe prima linie si prima coloana din matricea B.
a. 4 d. 2
b. 5 e. 1
c. 3


____ 35. Se aplica metoda iterativa a lui Jacobi sistemului cu predictie initiala
. Sa se calculeze urmatoarea iteratie in metoda lui Jacobi.
a.

d.

b.

e.

c.



____ 36. Se rezolva ecuatia cu metoda lui Newton cu predictie initiala . Cat este urmatoarea
iteratie ?
a. 3 d. 2
b. -1 e. 0
c. 1


____ 37. Aproximati integrala

cu metoda lui Gauss-Legendre cu 2 noduri.
a. 0 c. 3
b. 2 d. 1


____ 38. Pentru A= sa se calculeze .
a. 6 d. 4
b. 7 e. 10
c. 5


____ 39. Se aplica metoda iterativa a lui Gauss-Seidel sistemului cu predictie initiala
. Sa se calculeze urmatoarea iteratie in metoda lui Gauss-Seidel.
a.

d.

b.

e.

c.



____ 40. Aproximati integrala
d.

cu metoda trapezului.
a. 1 c. 0.5
b. 2 d. 1.5


____ 41. Polinomul lui Lagrange de grad mai mic sau egal cu 2 ce interpoleaza valorile din tabelul
x -1 0 1
y 3 0 -1

este

a.

c.

b.

d.


____ 42. Se aplica metoda iterativa a lui Gauss-Seidel sistemului cu predictie initiala
. Sa se calculeze urmatoarea iteratie in metoda lui Gauss-Seidel.
a.



b.

e.

c.



____ 43. Pentru A= sa se calculeze .
a. 4 d. 6
b. 7 e. 5
c. 10


____ 44. Se rezolva ecuatia =0 pe intervalul [0,1] cu metoda bisectiei. Prima iteratie este
0.5. Care este a doua iteratie?
a. 1.5 d. 0.5
b. 0.25 e. 1.25
c. 0.75


____ 45. Se rezolva ecuatia = pe intervalul [0,1] cu metoda aproximatiilor succesive corespunzatoare
functiei . Alegem predictie initiala . Cat este urmatoarea iteratie conform
metodei aproximatiilor succesive?
a. 3/5 d. 1/8
b. 1/10 e. 2/5
c. 3/4


____ 46. Se rezolva ecuatia cu metoda lui Newton cu predictie initiala . Cat este urmatoarea
iteratie ?
a. 3 d. 2
b. 4 e. 1
c. 5


____ 47. Pentru A= sa se calculeze .
a. 7 d. 4
b. 5 e. 10
c. 6


____ 48. Se da tabelul
x -1 0 1
y 2 0 0
Se noteaza cu P(x) polinomul lui Lagrange de grad cel mult 2 ce interpoleaza datele din tabelul de
mai sus. Cat este P(3)?
a. 2 c. 6
b. 5 d. 7


____ 49. Se da functia f(x)= si se noteaza cu
p(x) polinomul de grad cel mult 2010 care interpoleaza f pe nodurile
2,3,4,...,2010. Care e valoarea lui p(1)?


a. 2009 d. 2008
b. 2010 e. 1
c. 2


____ 50. Se aplica metoda radacinii patrate matricii A= pentru calculul descompunerii Cholesky A=BB ,
unde B este inferior triunghiulara(toate elementele deasupra diagonalei principale sunt nule) cu elementele de
pe diagonala principala pozitive. Sa se afle elementul de pe a doua linie linie si a doua coloana din matricea
B.
a. 1 d. 2
b. 3 e. 4
c. 10


____ 51. Se da tabelul
x 1 2 3
y 4 5 8

Sa se calculeze diferenta divizata f[1,2] .
a. 1 c. 4
b. 3 d. 2


____ 52. Se rezolva ecuatia =0 pe intervalul [0,1] cu metoda bisectiei. Prima iteratie este
0.5. Care este a doua iteratie?
a. 0.5 d. 1.5
b. 0.25 e. 1.25
c. 0.75


____ 53. Pentru A= sa se calculeze .
a. 10 d. 13
b. 14 e. 12
c. 11


____ 54. Metoda trapezului are ordin de exactitate egal cu
a. 2 d. 3
b. 4 e. 5
c. 1


____ 55. Se rezolva ecuatia = pe intervalul [0,1] cu metoda aproximatiilor succesive corespunzatoare
functiei . Alegem predictie initiala . Cat este urmatoarea iteratie conform
metodei aproximatiilor succesive?
a.

d.

b.

e.

c.



____ 56. Se da tabelul
x 1 2 3
y 4 7 2

Sa se calculeze diferenta divizata f[1,2,3] .
a. -1 c. -2
b. -3 d. -4


____ 57. Se rezolva cu metoda lui Gauss cu pivotare partiala sistemul cu matricea extinsa
. Dupa eliminari succesive se ajunge la sistemul cu matrice superior triunghiulara
a.

c.

b.

d.



____ 58. Se rezolva cu metoda lui Gauss cu pivotare partiala sistemul cu matricea extinsa
. Dupa eliminari succesive se ajunge la sistemul cu matrice superior triunghiulara
a.

c.

b.

d.



____ 59. Se aplica metoda iterativa a lui Jacobi sistemului cu predictie initiala
. Sa se calculeze urmatoarea iteratie in metoda lui Jacobi.
a.

d.

b.

e.

c.



____ 60. Se aplica metoda radacinii patrate matricii A= pentru calculul descompunerii Cholesky A=BB ,
unde B este inferior triunghiulara(toate elementele deasupra diagonalei principale sunt nule) cu elementele de
pe diagonala pozitive. Sa se afle elementul de pe prima linie si prima coloana din matricea B.
a. 2 d. 4
b. 3 e. 1
c. 5


____ 61. Se da tabelul
x 1 2 3
y 4 7 6

Sa se calculeze diferenta divizata f[1,2,3] .
a. -1 c. -4
b. -2 d. -3


____ 62. Se aplica metoda iterativa a lui Gauss-Seidel sistemului cu predictie initiala
. Sa se calculeze urmatoarea iteratie in metoda lui Gauss-Seidel.
a.

d.

b.

e.

c.



____ 63. Aproximati integrala

cu metoda lui Simpson.
a. 15 c. 16
b. 17 d. 18


____ 64. Aproximati integrala

cu metoda lui Simpson.
a. 1 c. 0
b. 2 d. 3


____ 65. Se rezolva ecuatia = pe intervalul [0,1] cu metoda aproximatiilor succesive corespunzatoare
functiei . Alegem predictie initiala . Cat este urmatoarea iteratie conform
metodei aproximatiilor succesive?
a. 3/5 d. 2/7
b. 3/8 e. 1/3
c. 1/14


____ 66. In formula de cuadratura a lui Gauss cu doua noduri pe intervalul se folosesc radacinile
polinomului lui Legendre de ordin 2 pe care sunt egale cu
a.

c.

b.

d. -1,1


____ 67. Se aplica metoda iterativa a lui Jacobi sistemului cu predictie initiala
. Sa se calculeze urmatoarea iteratie in metoda lui Jacobi.
a.

d.

b.

e.

c.



____ 68. Se rezolva ecuatia cu metoda lui Newton cu predictie initiala . Cat este urmatoarea
iteratie ?
a. 2 d. -1
b. 3 e. 1
c. 0


____ 69. Se rezolva ecuatia cu metoda lui Newton cu predictie initiala . Cat este urmatoarea
iteratie ?
a. 1 d. -1
b. 0 e. 3
c. 2


____ 70. Pentru A= sa se calculeze .
a. 7 d. 5
b. 6 e. 10
c. 4


STRUCTURI DE DATE
Adrian CARABINEANU
0
Cuprins
1 Algoritmi. Not iuni generale 5
1.1 Exemplu de algoritm.
Sortarea prin insert ie . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Aspecte care apar la rezolvarea unei
probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3 Timpul de execut ie a algoritmilor . . . . . . . . . . . . . . . . 7
1.4 Corectitudinea algoritmilor . . . . . . . . . . . . . . . . . . . . 9
1.5 Optimalitatea algoritmilor . . . . . . . . . . . . . . . . . . . . 9
1.6 Existent a algoritmilor . . . . . . . . . . . . . . . . . . . . . . . 14
2 Tipuri de structuri de date 15
2.1 Generalitat i . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 Liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.1 Liste alocate secvent ial . . . . . . . . . . . . . . . . . . 16
2.2.2 Liste alocate nlant uit . . . . . . . . . . . . . . . . . . 16
2.3 Stive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.4 Liste de tip coada . . . . . . . . . . . . . . . . . . . . . . . 28
2.5 Grafuri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.6 Arbori binari . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.6.1 Parcurgerea arborilor binari . . . . . . . . . . . . . . . 36
2.7 Algoritmul lui Human . . . . . . . . . . . . . . . . . . . . . . 42
2.7.1 Prezentare preliminara . . . . . . . . . . . . . . . . . . 43
2.7.2 Coduri prex. Arbore de codicare . . . . . . . . . . . 43
2.7.3 Construct ia codicarii prex a lui Human . . . . . . . 45
2.7.4 Optimalitatea algoritmului Human . . . . . . . . . . . 49
3 Tehnici de sortare 51
3.1 Heapsort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
1
2 CUPRINS
3.1.1 Reconstituirea proprietat ii de heap . . . . . . . . . . . 52
3.1.2 Construct ia unui heap . . . . . . . . . . . . . . . . . . 54
3.1.3 Algoritmul heapsort . . . . . . . . . . . . . . . . . . . 54
3.2 Cozi de prioritat i . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.3 Sortarea rapida . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.3.1 Descrierea algoritmului . . . . . . . . . . . . . . . . . . 60
3.3.2 Performant a algoritmului de sortare rapida . . . . . . . 62
3.4 Metoda bulelor (bubble method) . . . . . . . . . . . . . . . . 64
4 Tehnici de cautare 65
4.1 Algoritmi de cautare . . . . . . . . . . . . . . . . . . . . . . . 65
4.1.1 Algoritmi de cautare secvent iala (pas cu pas) . . . . . 66
4.1.2 Cautarea n tabele sortate (ordonate) . . . . . . . . . . 67
4.1.3 Arbori de decizie asociat i cautarii binare . . . . . . . . 71
4.1.4 Optimalitatea cautarii binare . . . . . . . . . . . . . . 72
4.2 Arbori binari de cautare . . . . . . . . . . . . . . . . . . . . . 76
4.3 Arbori de cautare ponderat i (optimali) . . . . . . . . . . . . . 81
4.4 Arbori echilibrat i . . . . . . . . . . . . . . . . . . . . . . . . . 86
4.4.1 Arbori Fibonacci . . . . . . . . . . . . . . . . . . . . . 87
4.4.2 Proprietati ale arborilor echilibrat i . . . . . . . . . . . 89
4.5 Insert ia unui nod ntr-un arbore echilibrat . . . . . . . . . . . 91
4.5.1 Rotat ii n arbori echilibrat i . . . . . . . . . . . . . . . . 91
4.5.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4.5.3 Algoritmul de insert ie n arbori echilibrat i . . . . . . . 98
4.6 Stergerea unui nod al unui arbore echilibrat . . . . . . . . . . 98
4.6.1 Algoritmul de stergere a unui nod dintr-un arbore echili-
brat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Lista gurilor
1.1 Arbore de decizie . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1 Liste simplu si dublu nlant uite . . . . . . . . . . . . . . . . . 17
2.2 Exemple de grafuri . . . . . . . . . . . . . . . . . . . . . . . . 31
2.3 Exemplu de arbore binar . . . . . . . . . . . . . . . . . . . . . 36
2.4 Exemplu de arbore binar cu precizarea legaturilor . . . . . . . 37
2.5 Exemplu de arbore Human . . . . . . . . . . . . . . . . . . . 44
2.6 Construirea arborelui Human . . . . . . . . . . . . . . . . . . 46
3.1 Exemplu de heap reprezentat sub forma unui arbore binar si
sub forma unui vector . . . . . . . . . . . . . . . . . . . . . . 52
3.2 Efectul funct iei ReconstituieHeap . . . . . . . . . . . . . . . . 53
3.3 Model de execut ie a funct iei ConstruiesteHeap . . . . . . . . . 55
4.1 Arbore de cautare binara . . . . . . . . . . . . . . . . . . . . . 71
4.2 Arbori de cautare . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.3 Optimizarea lungimii drumurilor externe . . . . . . . . . . . . 73
4.4 Stergerea radacinii unui arbore binar de cautare . . . . . . . . 80
4.5 Arbore binar de cautare . . . . . . . . . . . . . . . . . . . . . 80
4.6 Arbori posibili de cautare si numarul mediu de comparat ii
pentru o cautare reusita . . . . . . . . . . . . . . . . . . . . . 82
4.7 Arbori Fibonacci . . . . . . . . . . . . . . . . . . . . . . . . . 88
4.8 Rotat ie simpla la dreapta pentru re-echilibrare . . . . . . . . . 92
4.9 Rotat ie dubla la dreapta pentru re-echilibrare . . . . . . . . . 93
4.10 Rotat ie dubla la dreapta pentru re-echilibrare . . . . . . . . . 93
4.11 Rotat ie simpla la stanga pentru re-echilibrare . . . . . . . . . 94
4.12 Rotat ie dubla la stanga pentru re-echilibrare . . . . . . . . . . 94
4.13 Rotat ie dubla la stanga pentru re-echilibrare . . . . . . . . . . 95
4.14 Exemplu de insert ie ntr-un arbore echilibrat . . . . . . . . . . 96
3
4 LISTA FIGURILOR
4.15 Exemplu de insert ie ntr-un arbore echilibrat . . . . . . . . . . 96
4.16 Exemplu de insert ie ntr-un arbore echilibrat . . . . . . . . . . 97
4.17 Exemplu de insert ie ntr-un arbore echilibrat . . . . . . . . . . 97
4.18 Exemplu de stergere a unui nod dintr-un arbore echilibrat . . 99
4.19 Exemplu de stergere a unui nod dintr-un arbore echilibrat . . 99
4.20 Exemplu de stergere a unui nod dintr-un arbore echilibrat . . 100
4.21 Exemplu de stergere a unui nod dintr-un arbore echilibrat . . 101
Capitolul 1
Algoritmi. Not iuni generale
1n. . :|.n.nn:n. Un n|j:.n este o :n:n n n|| h.n nn.n
care primeste o mult ime de valori ca nn n .n:n: si produce o mult ime de
valori ca nn n ..:.
1.1 Exemplu de algoritm.
Sortarea prin insert ie
Vom considera mai ntai problema sortarii (ordonarii) unui sir de n numere
ntregi a [0] , a [1] , ..., a [n 1] (ce reprezinta datele de intrare). Sirul ordonat
(de exemplu crescator) reprezinta datele de iesire. Ca procedura de calcul
vom considera procedura :n:.. :.n .n: . pe care o prezentamn cele ce
urmeaza:

Incepand cu al doilea numar din sir, repetam urmatorul procedeu :
inseram numarul de pe pozit ia j ,ret inut ntr-o cheie, n subsirul deja ordonat
a [0] , ..., a [j 1] astfel ncat sa obt inem subsirul ordonat a [0] , ..., a [j] . Ne
oprim cand obt inem subsirul ordonat de n elemente. De exemplu, pornind de
la sirul de numere ntregi 7, 1, 3, 2, 5, folosind sortarea prin insert ie obt inem
succesiv
7 [ 1 3 2 5
1 7 [ 3 2 5
1 3 7 [ 2 5
1 2 3 7 [ 5
1 2 3 5 7
Linia verticala [ separa subsirul ordonat de restul sirului. Prezentam mai jos
programul scris n C + + pentru sortarea elementelor unui sir de 10 numere
5
6 CAPITOLUL 1. ALGORITMI. NOTIUNI GENERALE
ntregi:
# include <iostream.h
void main(void)
{ // datele de intrare
int a[10];
int i=0;
while(i<n)
{ cout<<a[<<i<<]=; cin*(a+i); i=i+1;}
//procedura de calcul
for(int j=1;j<10;j++)
int key=a[j];
//insereaza a[j] n sirul sortat a[0,...,j-1]
i=j-1;
while((i=0)*(a[i]key))
a[i+1]=a[i];
i=i-1;}
a[i+1]=key;}
//datele de iesire
for(j=0;j<n;j++)
cout<<a[<<j<<]=<<*(a+j)<<;; }
Putem modica programul C++ de sortare a n numere ntregi impunand
sa se citeasca numarul n, alocand dinamic un spat iu de n obiecte de tip int
si t inand cont ca (a +i) = a[i] :
# include <iostream.h
void main(void)
{
// datele de intrare
int n;
int i=0;
cout<<n=;
cinn;
int* a;
a = new int [n];
while(i<n)
{ cout<<a[<<i<<]=; cin*(a+i); i=i+1;}
//procedura de calcul
for(int j=1;j<n;j++)
int key=*(a+j);
1.2. ASPECTE CARE APAR LA REZOLVAREA UNEI PROBLEME 7
//insereaza a[j] in sirul sortat a[0,...,j-1]
i=j-1;
while((i=0)*(*(a+i)key))
*(a+i+1)=*(a+i);
i=i-1;}
*(a+i+1)=key; }
//datele de iesire
for(j=0;j<n;j++)
cout<<a[<<j<<]=<<*(a+j)<<;;}
1.2 Aspecte care apar la rezolvarea unei
probleme
Cand se cere sa se elaboreze un algoritm pentru o problema data, care sa
furnizeze o solut ie (e si aproximativa, cu condit ia ment ionarii acestui lucru),
cel put in teoretic trebuie sa e parcurse urmatoarele etape:
1) Demonstrarea faptului ca este posibila elaborarea unui algoritm pentru
determinarea unei solut ii.
2) Elaborarea unui algoritm (n acest caz etapa anterioara poate deveni
inutila).
3) Demonstrarea corectitudinii.
4) Determinarea timpului de execut ie al algoritmului.
5) Investigarea optimalitat ii algoritmului.
Vom prezenta n cele ce urmeaza, nu neaparat n ordinea indicata mai
sus, aceste aspecte.
1.3 Timpul de execut ie a algoritmilor
Un algoritm este elaborat nu doar pentru un set de date de intrare, ci pentru
o mult ime de astfel de seturi. De aceea trebuie bine precizata mult imea
(seturilor de date) de intrare. Timpul de execut ie se masoara n funct ie de
lungimea n a setului de date de intrare.
Ideal este sa determinam o formula matematica pentru T(n) = timpul de
executare pentru orice set de date de intrare de lungime n. Din pacate, acest
lucru nu este n general posibil. Din aceasta cauza ne vom limita la a evalua
:n.n| n nn:.n al timpului de execut ie.
8 CAPITOLUL 1. ALGORITMI. NOTIUNI GENERALE
Sa reluam procedura de calcul pentr algoritmul de sortare prin insert ie:
//procedura de calcul .................................cost.............timp
for(int j=1;j<n;j++) ......................................c
1
................n
int key=*(a+j); ..........................................c
2
..............n 1
//insereaza a[j] in sirul sortat a[1,...,j-1]
i=j-1; ............................................................c
3
..............n 1
while((i=0)*(*(a+i)key))..........................c
4
.............

n
j=2
t
j
*(a+i+1)=*(a+i);........................................c
5
..........

n
j=2
(t
j
1)
i=i-1;} ...........................................................c
6
..........

n
j=2
(t
j
1)
*(a+i+1)=key; } ...........................................c
7
...............n 1
c
1
, ..., c
7
sunt costurile de timp pentru ecare instruct iune.

In coloana
timp punem de cate ori este repetata instruct iunea; t
j
reprezinta numarul de
execut ii ale testului while (comparat ia) pentru valoarea xata j. Timpul de
execut ie este
T (n) = nc
1
+ (n 1) (c
2
+c
3
+c
7
c
5
c
6
) + (c
4
+c
5
+c
6
)
n

j=2
t
j
. (1.1)
Timpul de execut ie poate sa depinda de natura datelor de intrare.

In cazul
n care vectorul de intrare este deja sortat crescator, t
j
= 1 (deoarece pentru
ecare j, a[0, ..., j 1] este sortat). Timpul de execut ie n acest caz (cel mai
favorabil) este
T (n) = n(c
1
+c
2
+c
3
+c
4
+c
7
) (c
2
+c
3
+c
4
+c
7
) . (1.2)
Daca vectorul este sortat n sens invers (n ordine descrescatoare) avem cazul
cel mai defavorabil. Fiecare element a [j] este comparat cu ecare element
din a [0, ..., j 1] si astfel t
j
= j pentru j = 2, 3, ..., n. Cum
n

j=2
j =
n(n + 1)
2
1,
n

j=2
(j 1) =
n(n 1)
2
,
deducem ca
T (n) =
_
c
4
2
+
c
5
2
+
c
6
2
_
n
2
+
_
c
1
+c
2
+c
3
+
c
4
2

c
5
2

c
6
2
+c
7
_
n(c
2
+c
3
+c
4
+c
7
) .
(1.3)
1.4. CORECTITUDINEA ALGORITMILOR 9
Timpul de execut ie este are ordinul de marime O(n
2
) .

In general spunem
ca timpul de execut ie este de ordinul O(f (n)) daca
lim
n
T (n)
f (n)
= l, l nita.
Cand f (n) = n
k
, k N

spunem ca algoritmul este |.nn.n|. Specicam


faptul ca un algoritm este considerat nnh.| daca este polinomial.
1.4 Corectitudinea algoritmilor

In demonstrarea corectitudinii algoritmilor exista doua aspecte importante


- :.n.nn n: .n|n: presupunand ca algoritmul se termina ntr-un
numar nit de pasi, trebuie demonstrat ca rezultatul este corect.
- J:n.nn:n :j:nn|.: trebuie demonstrat ca algoritmul se ncheie n
timp nit.
Evident, condit iile enumerate mai sus trebuie ndeplinite pentru orice set
de date de intrare admis de problema.
Modul tipic de lucru constan introducerean anumite locuri din program
a unor .nn:.nn ., care reprezinta relat ii ce sunt ndeplinite la orice trecere
a programului prin acele locuri. De exemplu n cazul sortarii prin insert ie,
invariant ii sunt urmatorii:
- nn n: .n: n .||. while {:n.nn: |. i = j 1)
|nn| .nn.. nn. n.. n jn|. , n ] :n n: .n|.
Ciclul for se termina odata cu ultima executare a ciclului while, cand
j = n si cand toate elementele sunt sortate.
1.5 Optimalitatea algoritmilor
Sa presupunem ca pentru o anumita problema am elaborat un algoritm si
am putut calcula timpul sau de execut ie T (n) . Este natural sa ne punem
problema daca algoritmul este executat n timpul | nn. : posibil sau
exista un alt algoritm cu timpul de execut ie mai mic. Spunem ca un algoritm
este .n daca raportul dintre timpul sau de execut ie si timpul de execut ie
al oricarui alt algoritm care rezolva aceeasi problema are ordinul de marime
O(1) . Problema demonstrarii optimalitat ii este deosebit de dicila, mai ales
10 CAPITOLUL 1. ALGORITMI. NOTIUNI GENERALE
datorita faptului ca trebuie sa consideram tot i algoritmii posibili si sa aratam
ca ei au un timp de execut ie superior celui al algoritmului optim.

In cazul algoritmilor de sortare ne propunem sa gasim o margine inferioara


a timpilor de execut ie. Vom face mai ntai observat ia ca numarul total de
instruct iuni executate si numarul de comparat ii au acelasi ordin de marime.
Mult imea comparat iilor poate vizualizata cu ajutorul n:h:.|: n n....

Intr-un arbore de decizie ecare nod este etichetat prin a


i
: a
j
pentru i si j
din intervalul 1 i, j n unde n este sa numarul de elemente din secvent a
de intrare. Fiecare frunza este etichetata cu o permutare ( (1) , ..., (n)) .
Execut ia algoritmului de sortare corespunde trasarii unui drum elementar de
la radacina arborelui de sortare la o frunza. La ecare nod intern este facuta o
comparat ie ntre a
i
si a
j
. Subarborele stang dicteaza comparat iile urmatoare
pentru a
i
a
j
iar subarborele drept dicteaza comparat iile urmatoare pen-
tru a
i
> a
j
. Cand ajungem la o frunza algoritmul a stabilit ordonarea
a
(1)
a
(2)
... a
(n)
. Pentru ca algoritmul sa ordoneze adecvat, ecare
din cele n! permutari de n elemente trebuie sa apara ntr-o frunza a arbore-
lui de decizie.

In gura (1.1) prezentam arborele de decizie corespunzator
sortarii unei mult imi a
1
, a
2
, a
3
= 1, 2, 3 .

In funct ie de datele de in-
trare, comparat iile efectuate de program reprezinta un drum elementar n
arborele de decizie ce uneste radacina arborelui cu o frunza. Numarul de
noduri (comparat ii) dintr-un astfel de drum elementar este egal cu cel mult
h, nalt imea arborelui.
Teorema 1. C:. n:h: n n... n: :n.n n |nn n: nn| .nn
n :n.n| O(n ln n) .
1nn: ..

Intrucat exista n! permutari ale celor n elemente, arborele
trebuie sa aiba n! frunze. Un arbore binar de nalt ime h are cel mult 2
h
frunze. Deci
n 2
h
,
h log
2
n! = ln n! log
2
e.
Plecand de la inegalitatea
n! >
_
n
e
_
n
,
obt inem
h n(ln n 1) log
2
e,
adica
h = O(nln n) .
1.5. OPTIMALITATEA ALGORITMILOR 11
Figura 1.1: Arbore de decizie
T inand cont de teorema mai sus enunt ata, este de presupus ca un algoritm
de sortare optim are timpul de execut ie de ordinul O(n ln n) . Algoritmul de
sortare prin insert ie, avand timpul de execut ie de ordinul O(n
2
) , are toate
sansele sa nu e optimal. Vom da n cele ce urmeaza un exemplu de algoritm
de sortare optim si anume algoritmul de :n: :.n .n:|nn:.
Pentru a avea o imagine intuitiva a procedurii de interclasare, sa con-
sideram ca un pachet cu n cart i de joc este mpart it n alte 2 pachete asezate
pe masa cu fat a n sus. Fiecare din cele 2 pachete este sortat, cartea cu
valoarea cea mai mica ind deasupra. Dorim sa amestecam cele doua sub-
pachete ntr-un singur pachet sortat, care sa ramana pe masa cu fat a n jos.
Pasul principal este acela de a selecta cartea cu valoarea cea mai mica dintre
cele 2 aate deasupra pachetelor (fapt care va face ca o noua carte sa e
deasupra pachetului respectiv) si de a o pune cu fat a n jos pe locul n care
se va forma pachetul sortat nal. Repetam procedeul pana cand unul din
pachete este epuizat.

In aceasta faza este sucient sa luam pachetul ramas si
sa-l punem peste pachetul deja sortat ntorcand toate cart ile cu fat a n jos.
Din punct de vedere al timpului de execut ie, deoarece avem de facut cel mult
n/2 comparat ii, timpul de execut ie pentru procedura de interclasare este de
ordinul O(n) .
Procedura de interclasare este utilizata ca subrutina pentru algoritmul de
12 CAPITOLUL 1. ALGORITMI. NOTIUNI GENERALE
sortare prin interclasare care face apel la tehnica n..n . n nn. dupa
cum urmeaza:
1..n:

Imparte sirul de n elemente ce urmeaza a sortat n doua
subsiruri de cate n/2 elemente.
on nn: Sorteaza recursiv cele doua subsiruri utilizand sortarea prin
interclasare.
nh.nn: Interclaseaza cele doua subsiruri sortate pentru a produce
rezultatul nal.
Descompunerea sirului n alte doua siruri ce urmeaza a sortate are loc
pana cand avem de sortat siruri cu unul sau doua componente. Prezentam
mai jos programul scris n C + +.

In program, funct ia sort sorteaza un
vector cu maximum 2 elemente, funct ia intecl interclaseaza 2 siruri sortate
iar dist implementeaza strategia n..n . n nn a metodei studiate.
#include<iostream.h
/****************************/
void sort(int p,int q, int n, int *a) {
int m;
if(*(a+p)*(a+q))
{ m=*(a+p); *(a+p)=*(a+q); *(a+q)=m;} }
/**********************************/
void intecl(int p, int q, int m, int n, int *a){
int *b,i,j,k;
i=p;j=m+1;k=1;
b=new int[n];
while(i<=m && j<=q)
if(*(a+i)<=*(a+j))
{ *(b+k)=*(a+i);i=i+1;k=k+1;}
else
{ *(b+k)=*(a+j);j=j+1;k=k+1;}
if(i<=m)
for (j=i;j<=m;j++)
{ *(b+k)= *(a+j); k=k+1;}
else for(i=j;i<=q;i++)
{ *(b+k)=*(a+i); k=k+1;}
k=1;
for(i=p;i<=q;i++) { *(a+i)=*(b+k); k=k+1;} }
/*************************************/
void dist(int p, int q, int n, int *a){
1.5. OPTIMALITATEA ALGORITMILOR 13
int m;
if((q-p)<=1) sort(p,q,n,a);
else
m=(p+q)/2; dist(p,m,n,a); dist(m+1,q,n,a);intecl(p,q,m,n,a);
} }
/**************************************/
void main(void){
int n; *a,i;
cout<<n=; cinn;
a=new int[n];
for(i=1;i<=n;i++)
cout<<a[<<i<<]=; cin*(a+i-1);}
dist(0,n-1,n,a);
for(i=1;i<=n;i++)
cout<<a[<<i-1<<]=<<a[i-1];}

In continuare sa calculam T (n), numarul aproximativ de comparat ii efec-


tuat de algoritm. Succesiv, problema se descompune n alte doua probleme,
ecare referindu-se la n/2 elemente. Urmeaza interclasarea elementelor, care
necesita un numar de n/2 comparat ii. Avem deci
T (n) = 2T
_
n
2
_
+
n
2
, T (0) = 0.
Pentrunceput sa consideram n = 2
k
, k N. Rezulta (efectuand implicit
un rat ionament prin induct ie):
T
_
2
k
_
= 2T
_
2
k1
_
+ 2
k1
= 2
_
2T
_
2
k2
_
+ 2
k2
_
+ 2
k1
= ...
= 2
p
T
_
2
kp
_
+p2
k1
= 2
p
_
2T
_
2
kp1
_
+ 2
kp1
_
+p2
k1
=
= 2
p+1
T
_
2
kp1
_
+ (p + 1) 2
k1
= T (0) +k2
k1
= k2
k1
.
Pentru un numar natural oarecare n, e k astfel ncat sa avem 2
k
n < 2
k+1
.
Rezulta
k2
k1
= T
_
2
k
_
T (n) < T
_
2
k+1
_
= (k + 1) 2
k
. (1.4)
Cum k = O(ln n) , din (1.4) rezulta ca
T = O(nln n) ,
deci algoritmul de sortare prin interclasare este optim.
14 CAPITOLUL 1. ALGORITMI. NOTIUNI GENERALE
1.6 Existent a algoritmilor
Problema existent ei algoritmilor a statn atent ia matematicienilorncanainte
de aparit ia calculatoarelor. Un rol deosebit n aceasta teorie l-a jucat matem-
aticianul englez Alan Turing (1912-1954), considerat parintele inteligent ei
articiale.
Numim :h|nn nn.nnh.|n o problema pentru care nu poate elab-
orat un algoritm. Denirea matematica a not iunii de algoritm a permis
detectarea de probleme nedecidabile. Cateva aspecte legate de decidabilitate
sunt urmatoarele:
- 1:h|nn :.:.. :j:nn|:. pentru orice program si orice valori de
intrare sa se decida daca programul se termina.
- 1:h|nn |.n|n |: :j:nn|:: sa se decida pentru oricare doua
programe daca sunt echivalente (produc aceeasi iesire pentru aceleasi date
de intrare).
Capitolul 2
Tipuri de structuri de date
2.1 Generalitat i
Structurile de date reprezinta nnn|.n . n n: nn| n n. n nn-
:.n n||n:|. n n n:n n.| nnjn.. Structurilor de date
sunt utilizate n diferite circumstant e ca de exemplu:
Memorarea unor date din realitate;
Instrumente ale programatorilor;
Modelarea unor situat ii din lumea reala.
Cele mai des utilizate structuri de date sunt tablourile, listele, stivele,
cozile, arborii, tabelele de dispersie si grafurile.
2.2 Liste
O |.n |.n.n:n este o structura de date omogena, secvent iala formata din
|nn ale listei. Un element (numit uneori si nn) din lista cont ine o
.n]:nn . .n si eventual o .n]:nn . n |jn:n. De exemplu, n
lista echipelor de fotbal nscrise ntr-un campionat, un element (ce reprezinta
o echipa) poate cont ine urmatoarele informat iie specice: nume, numar de
puncte, numar de goluri nscrise si numar de goluri primite. Fiecare din aceste
informat ii poate reprezenta o |. care poate utilizata pentru comparat ii
si inspect ii. De exemplu luand drept cheie numarul de puncte si golaverajul
se poate face clasicarea echipelor.
15
16 CAPITOLUL 2. TIPURI DE STRUCTURI DE DATE
1.. .n elementelor din lista deneste ordinea elementelor (primul ele-
ment, al doilea, etc). Cont inutul listei se poate schimba prin:
- nnnjn:n de noi elemente la sfarsitul listei;
- .n:n:n de noi elemente n orice loc din lista;
- :j:n de elemente din orice pozit ie a listei;
- nn.n:n unui element dintr-o pozit ie data.
Printre operat iile care schimba structura listei vom considera si .n. .n|..n:n
unei liste ca o |.n .nn.
Alte operat ii sunt operat iile de n:n:..n:. Ele nu modica structura
listelor dar furnizeaza informat ii despre ele. Dintre operat iile de caracterizare
vom ment iona n cele ce urmeaza:
- |n|..n:n elementului din lista care satisface un anumit criteriu;
- n:n.nn:n |nj.n.. |...
Pot luate n considerare si operat ii mai complexe, ca de exemplu:
- n:n:n unei listen doua sau mai multe sublisten funct ie dendeplinirea
unor condit ii;
- | .n elementelor dintr-o lista, care ndeplinesc unul sau mai multe
criterii, n:- |.n nn.
- :n:n n. |. :nnn dupa valorile creascatoare sau descrescatoare
ale unei chei;
- nh.nn:n a doua sau mai multor liste prin nnnn: {n|..:) sau
.n:|nn:.
Spat iul din memorie ocupat de lista poate alocat n doua moduri: prin
n|n: n .n|n sau prin n|n: n|nn .n.
2.2.1 Liste alocate secvent ial

In acest caz nodurile ocupa pozit ii succesive n memorie. Acest tip de alo-
care este ntalnit cand se lucreaza cu tablouri (vectori). Avantajul alocarii
secvent iale este dat de faptul ca accesul la oricare din nodurile listei este di-
rect. Dezavantajul consta n faptul ca operat iile de adaugare, eliminare sau
schimbare de pozit ie a unui nod necesita un efort mare de calcul dupa cum
s-a vazut n algoritmii de sortare prezentat i mai nainte.
2.2.2 Liste alocate nlant uit
Exista doua feluri de alocare nlant uita: n|n: .n| n|nn .n si n|n:
nh| n|nn .n (gura 2.1). Alocarea nlant uita poate efectuata static
2.2. LISTE 17
Figura 2.1: Liste simplu si dublu nlant uite
(utilizand vectori) sau dinamic.

In acest din urma caz (de care ne vom ocupa
n cele ce urmeaza), se utilizeaza o zona de memorie numita 11.1 (movila,
gramada).

In C + + variabilele pastrate n HEAP (cum ar de exemplu
nodurile listei), se aloca atunci cand doreste programatorul, cu ajutorul op-
eratorului new, iar zona se elibereaza, tot la dorint a acestuia prin operatorul
delete.

In cazul alocarii dinamice, nodul unei liste este o structura care
cont ine alaturi de informat ie si adresa nodului urmator (pentru liste simplu
nlant uite) sau adresele nodului urmator si a celui precedent n cazul listelor
dublu nlant uite. Dupa cum se va vedea din exemplele ce urmeaza, princi-
pala problema n cazul operat iilor cu liste o reprezinta redenirea legaturilor
(adreselor) cand se sterge sau se insereaza un element.
Liste simplu nlant uite
Mai jos prezentam proceduri (funct ii) de creare (prin insert ie repetata) si
parcurgere a listelor precum si procedurile de stergere (eliminare) a unui
nod si de inserare a unui nod imediat dupa alt nod ce cont ine o anumita
informat ie.
#include<iostream.h
//introducem structura de nod al unei liste
18 CAPITOLUL 2. TIPURI DE STRUCTURI DE DATE
struct nod { int inf; nod *adr ;} ;
//declararea funct iilor de creare, parcurgere, eliminare si inserare
nod *creare(void);
void parcurge(nod *prim);
nod *elimina(nod *prim, int info);
nod *inserare dupa(nod* prim, int info, int info1);
//functia principala
/***********************************************/
void main(void) {
int info, info1; nod *cap;
cap=creare();
parcurge(cap);
cout<<Spuneti ce nod se elimina;
cininfo;
cap= elimina(cap, info);
parcurge(cap);
cout<<Spuneti ce valoare se insereaza si dupa cine<<endl;
cininfo1;
cininfo;
inserare dupa(cap,info,info1);
parcurge(cap);}
//functia de creare a listei
/********************************************/
nod *creare(void)
{ nod *prim,*p,*q; int inf; char a;
//crearea primului element al listei
prim=new nod;
cout<< Introduceti prim-inf<<endl;
cininf;
prim-inf=inf;
prim-adr=NULL;
q=prim;
/*pana cand se decide ca operatia este gata, se creaza elementele urma-
toare*/
cout<<Gata?[d/n]<<endl;
cina;
while (a!=d) {
p=new nod;
2.2. LISTE 19
cout<<p-inf<<endl;
cininf;
/*se creaza un nou nod*/
p-inf=inf ;
p-adr=NULL;
/*se stabileste legatura dintre nodul anterior si nodul nou creat*/
q-adr=p;
q=p;
cout<<Gata?[d/n]<<endl;
cina;}
return prim;}
/********************************************/
/*urmeaza procedura de parcurgere a listei*/
void parcurge(nod *cap)
{ nod *q;
if(!cap) { cout<<Lista vida; return;}
cout<<Urmeaza lista<<endl;
for(q=cap;q;q=q-adr)
cout<<q-inf<< ;}
/****************************/
/*urmeaza procedura de eliminare a nodului ce contine o anumita infor-
matie*/
nod *elimina(nod* prim, int info)
{ nod *q,*r;
/*se studiaza mai intai cazul cand trebuie eliminat primul nod*/
while((*prim).inf==info)
{ q=(*prim).adr; delete prim; prim=q;}
/*se studiaza cazul cand informatia cautata nu este in primul nod*/
q=prim;
while(q-adr)
{ if(q-adr-inf==info)
/*in cazul in care a fost gasit un nod cu informatia ceruta, acesta se
elimina iar nodul anterior este legat de nodul ce urmeaza*/
{ r=q-adr; q-adr=r-adr; delete r;}
else q=q-adr;}
return prim;}
/*************************************/
20 CAPITOLUL 2. TIPURI DE STRUCTURI DE DATE
/*functia de inserare a unui nod ce contine o anumita informatie dupa
un nod ce contine o informatie data*/
nod *inserare dupa(nod*prim, int info, int info1)
{ nod *c, *d;
c=prim;
while(c-adr&&(c-inf!=info)) c=c-adr;
d=new nod; d-inf=info1;
if(!c-adr)
/*daca nici-un nod nu contine informatia data, noul nod se insereaza
dupa ultimul element al listei*/
{ d-adr=NULL; c-adr=d;}
/* daca au fost depistate noduri ce contin informatia data noul element
se insereaza dupa primul astfel de nod*/
else { d-adr=c-adr; c-adr=d;}
return prim;}
Ca o ilustrare a utilitat ii listelor liniare simplu inlant uite vom prezenta
n cele ce urmeaza o procedura de adunare si nmult ire a doua polinoame
de o variabila. Un polinom va reprezentat printr-o lista, un nod al listei
corespunzand unui monom. Informat ia din nodul listei (monom) va cont ine
gradul monomului si coecientul. Pentru a efectua produsul polinoamelor
vom crea cu funct ia prod o noua lista, n ecare nod al noii liste ind pro-
dusul a doua monoame (ecare dintre aceste monoame apart inand altui poli-
nom). Cu o funct ie numita canonic, daca doua noduri (monoame) din lista
nou creata (lista produs) au acelasi grad, coecientul unuia din monoame
este nlocuit cu suma coecient ilor iar coecientul celuilalt cu 0. Cu funct ia
elimina stergem apoi nodurile (monoamele) care cont in coecientul 0.
Pentru a aduna doua polinoame, vom efectual mai ntai concatenarea lor
(ultimul element din lista ce reprezinta primul polinom va legata de primul
element din lista ce reprezinta al doilea element). Aplicand apoi funct iile
canonic si elimina obt inem polinomul suma. Prezentam programul mai jos:
#include<iostream.h
struct nod{ int grad; int coef; nod *adr ;} ;
/************************/
//declararea functiilor utilizate
nod *creare(void);
void parcurge(nod *prim);
void canonic (nod *prim);
2.2. LISTE 21
nod* concatenare(nod *prim1, nod*prim2);
nod *elimina(nod* prim, int info);
nod* prod(nod *prim1, nod* prim2);
/***********************/
//functia principala
void main(void){
nod *cap, *cap1,*suma,*produs,*prim;
cap=creare();
cout<<Listeaza primul polinom<<endl;
parcurge(cap);
cap1=creare();
cout<<Listeaza al doilea polinom<<endl;
parcurge(cap1);
cout<<Produsul polinoamelor<<endl;
cout<<*****************;
produs=prod(cap,cap1);
canonic(produs);
produs=elimina(produs,0);
parcurge(produs);
prim=concatenare(cap,cap1);
cout<<Polinoamele concatenate<<endl;
parcurge(prim);
canonic(prim);
cout<<Suma polinoamelor<<endl;
suma=elimina(prim,0);
parcurge(suma);}
/**********************/
//functia de creare a unui polinom
nod *creare(void){
nod *prim,*p,*q;int coef,grad;char a;
prim=new nod;
cout<< Introduceti prim-grad<<endl;
cingrad;
prim-grad=grad;
cout<< Introduceti prim-coef<<endl;
cincoef;
prim-coef=coef;
prim-adr=NULL;
22 CAPITOLUL 2. TIPURI DE STRUCTURI DE DATE
q=prim;
cout<<Gata?[d/n]<<endl;
cina;
while (a!=d){
p=new nod;
cout<<p-grad<<endl;
cingrad;
p-grad=grad;
cout<<p-coef<<endl;
cincoef;
p-coef=coef;
p-adr=NULL;
q-adr=p;
q=p;
cout<<Gata?[d/n]<<endl;
cina;}
return prim;}
/**************************/
//functia de parcurgere a unui polinom
void parcurge(nod *cap){
nod *q;
if(!cap)cout<<Polinom vid;
return;
cout<<Urmeaza polinomul<<endl;
for(q=cap;q;q=q-adr)
cout<<+(<<(*q).coef<<)<<X<<(*q).grad;}
/*********************************/
//functia care efectueaza produsul a doua polinoame
nod* prod(nod* prim1, nod* prim2)
{ nod *p,*q,*r,*cap,*s;
cap=new nod;
cap-grad=1;cap-coef=0;cap-adr=NULL;
s=cap;
for(p=prim1;p;p=p-adr)
for(q=prim2;q;q=q-adr)
{ r=new nod;r-coef=p-coef*q-coef;
r-grad=p-grad+q-grad;r-adr=NULL;
s-adr=r;s=r;}
2.2. LISTE 23
return cap;}
/*************************/
/*functia care aduna coecientii a doua monoame de acelasi grad si
atribuie valoarea 0 coecientului unuia din monoamele adunate*/
void canonic(nod *prim){
nod *p,*q;
for (p=prim;p;p=p-adr)
{ q=p-adr;
while(q) if(p-grad==q-grad)
{ p-coef+=q-coef;q-coef=0;q=q-adr;} } return;}
/******************************/
/*functia care elimina monoamele ale caror coecienti au o valoare data*/
nod *elimina(nod* prim, int info)
{ nod *q,*r;
if((*prim).coef==info)
q=(*prim).adr; delete prim; prim=q;
q=prim;
while(q-adr)
if(q-adr-coef==info)
{ r=q-adr; q-adr=r-adr; delete r;}
else q=q-adr;
return prim;}
/******************************/
//functia de concatenare a doua monoame
nod* concatenare(nod *prim1, nod*prim2)
nod *q,*r;
for(q=prim1;q;q=q-adr) r=q;
r-adr=prim2;
return prim1;
Liste dublu nlant uite

In continuare vom prezenta un program n cadrul caruia se creeaza o lista


dublu nlant uita, se parcurge direct si invers si se elimina nodurile ce cont in
o informat ie data. Structura nod va cont ie trei campuri: unul (inf) este
informat ia nodului, al doilea (urm) este pointerul care indica adresa nodului
urmator iar al treilea (ant) este pointerul care indica adresa nodului anterior.
24 CAPITOLUL 2. TIPURI DE STRUCTURI DE DATE
Vom introduce un nou tip de variabila, numit lista constand dintr-o struc-
tura formata din doua variabile de tip nod (cele doua noduri reprezentand
primul si ultimul element al listei dublu nlant uite). Funct ia creare per-
mite crearea unei liste dublu nlant uite. Funct ia parcurg d, al carui ar-
gument este primul element al listei, permite parcurgerea directa (plecand
de la primul element si ajungand la ultimul) a listei. Funct ia parcurg i al
carei argument este ultimul nod al listei realizeaza parcurgerea listei n sens
invers. Funct ia elimin d ale carei argumente sunt o variabila de tip lista
si o variabila de tip int, parcurge direct lista dubla si elimina nodurile ce
cont in argumentul de tip ntreg de cate ori le ntalneste. Proprietatea pe
care o au listele duble de a putea parcurse n ambele sensuri este folosita
de funct ia sortin pentru a sorta prin insert ie, dupa valorile din campul inf,
elementele listei, valoarea ntoarsa de funct ie ind lista sortata (mai precis
primul si ultimul element al listei sortate).
#include<iostream.h
struct nod{ int inf; nod *urm; nod *ant;} ;
typedef struct{ nod *p;nod *u;} lista;
//declararea functiilor utilizate
lista creare(void);
void parcurg i(nod*prim);
void parcurg d(nod*prim);
lista elimin d(lista list,int info);
nod*sortin(lista list);
/********************************/
//functia principala
void main(void)
{ int info;
nod *prim;lista list;
list= creare();
parcurg d(list.p);
parcurg i(list.u);
cout<<Spuneti ce nod se elimina<<endl;
cout<<list.p-inf;
cininfo;
list=elimin d(list,info);
parcurg d(list.p);
parcurg i(list.u);
prim=sortin(list);
2.2. LISTE 25
cout<<Urmeaza lista sortata<<endl;
parcurg d(prim);}
/**********************************/
//functia de creare
lista creare(void)
{ nod *prim,*p,*q;int inf;char a; lista val;
prim=new nod;
cout<< Introduceti prim-inf<<endl;
cininf;
prim-inf=inf;prim-urm=NULL;prim-ant=NULL;
q=prim;cout<<Gata?[d/n]<<endl;
cina;
while (a!=d)
{ p=new nod;
cout<<p-inf<<endl;
cininf;
p-inf=inf ;p-urm=NULL;p-ant=q;
q-urm=p;
q=p;
cout<<Gata?[d/n]<<endl;
cina;}
val.p=prim;
if(!prim-urm) val.u=prim;
else val.u=p;
return val;}
/******************************/
//functia de parcurgere directa
void parcurg d(nod *prim)
{ nod *q;
if(!prim){ cout<<Lista vida;return;}
cout<<Urmeaza lista directa<<endl;
for(q=prim;q;q=q-urm)
cout<<q-inf<< ;}
/******************************/
//functia de parcurgere inversa
void parcurg i(nod *ultim)
{ nod *q;
if(!ultim){ cout<<Lista vida;return;}
26 CAPITOLUL 2. TIPURI DE STRUCTURI DE DATE
cout<<Urmeaza lista inversa<<endl;
for(q=ultim;q;q=q-ant)
cout<<q-inf<< ;}
/**********************************/
/*functia de eliminare a nodurilor ce contin o informatie data*/
lista elimin d(lista list, int info){
nod *q,*r,*p;
while(list.p-inf==info)
if (list.p==list.u) { list.p=NULL;list.u=NULL;return list;}
else
{ q=list.p-urm;q-ant=NULL; delete list.p; list.p=q;}
q=list.p;
while(q-urm)
{ if(q-urm==list.u)
{ if (q-urm-inf==info)
{ r=q-urm;
list.u=q;q-urm=NULL;delete r;}
return list;}
if(q-urm-inf==info)
{ p=q;r=q-urm; q-urm=r-urm;
q-urm-ant=p; delete r;}
else q=q-urm;}
list.u=q;return list;}
/****************************/
//functia de sortare prin insertie
nod* sortin(lista list){
nod*s,*r,*p=list.p,*q;int m;
if(!list.p) cout<<Lista vida<<endl;
else
for(q=p-urm;q;q=q-urm)
{ for(s=q-ant;s;s=s-ant)
{ if (!s-ant) break;
if(q-inf=s-ant-inf) break;}
if(q-inf<s-inf)
{ m=q-inf;
for(r=q;!(r==s);r=r-ant)
r-inf=r-ant-inf;s-inf=m;} }
return list.p;}
2.3. STIVE 27
2.3 Stive
o.n este o lista pentru care singurele operat ii permise sunt:
- adaugarea unui element n stiva;
- eliminarea, vizitarea sau modicarea ultimului element introdus n stiva.
Stiva funct ioneaza dupa principiul |.n| .n:n :.n| .. - 1n 1n
1.: C {111C).

In cazul alocarii dinamice (de care ne vom ocupa n cele ce urmeaza), ele-
mentele (nodurile) stivei sunt structuri n component a carora intra si adresa
nodului anterior.

In programul de mai jos dam funct iile push de adaugare n stiva a unei
nregistrari si pop de extragere. Cu ajutorul lor construim o stiva folosind
funct ia creare.
#include<iostream.h
struct nod{ int inf; nod*ant;} ;
nod*stiva;
/*********************************/
//functia de adaugare in stiva a unei noi inregistrari
nod*push(nod *stiva, int info)
{ nod *r;
r=new nod;
r-inf=info;
if(!stiva)r-ant=NULL;
else r-ant=stiva;
stiva=r;return stiva;}
/*********************************/
//functia de extragere din stiva a ultimului nod
nod *pop(nod*stiva)
{ nod *r;
if(!stiva)
cout<<Stiva vida <<endl;
else
{ r=stiva;stiva=stiva-ant;delete r;}
return stiva;}
/************************************/
/*functia de parcurgere a stivei in ordine inversa (de la ultimul nod intrat
la primul)*/
void parcurge(nod*stiva)
28 CAPITOLUL 2. TIPURI DE STRUCTURI DE DATE
{ nod*r=stiva;
if(!stiva) cout<<Stiva vida<<endl;
else { cout<<Urmeaza stiva<<endl;
while(r){ cout<<r-inf<< ;r=r-ant;} }
return;}
/************************************/
/*functia de creare a stivei prin adaugari si eliminari*/
nod* creare()
{ char a;int info;nod*stiva;
cout<<Primul nod<<endl;
cout<<stiva-inf;
cin info;
stiva=new nod;
stiva-inf=info;
stiva-ant=NULL;
a=a;
while(!(a==t)){
cout<<Urmatoarea operatie[a/e/t]<<endl;
/* t=termina; a=adauga nod; e=elimina nod;*/
cina;
switch(a)
{ case t: break;
case a:cout<<Stiva-inf<<endl;
cininfo;
stiva=push(stiva,info);break;
default:stiva=pop(stiva);break;} }
return stiva;}
/******************************/
//functia principala
void main()
{ stiva=creare();
parcurge(stiva);}
2.4 Liste de tip coada
O nnn este o lista pentru care toate inserarile sunt facute la unul din capete
iar toate stergerile (consultarile, modicarile) sunt efectuate la celalalt capat.
2.4. LISTE DE TIP COAD

A 29
Coada funct ioneaza pe principiul :.n| .n:n :.n| .. - 1.: 1n 1.:
C {111C).

In cazul alocarii dinamice, elementele (nodurile) cozii sunt structuri n


component a carora intra si adresa nodului urmator.

In programul de mai jos dam funct iile pune de adaugare n coada a unei
nregistrari si scoate de extragere. Cu ajutorul lor construim o coada folosind
funct ia creare. Vom reprezenta coada printr-o structura coada care cont ine
primul si ultimul nod al cozii.
#include<iostream.h
//urmeaza structura de tip nod
struct nod{ int inf;nod*urm;} ;
//urmeaza structura de tip coada
typedef struct{ nod *p;nod *u;} coada;
coada c;
/***********************************/
//functia de adaugare in coada
coada pune(coada c,int n)
{ nod *r;
r=new nod;r-inf=n;r-urm=NULL;
if(!c.p)
{ c.p=r;c.u=r;}
else{ c.u-urm=r;c.u=r;} return c;}
/*********************************/
//functia de extragere din coada
coada scoate(coada c)
{ nod *r;
if(!c.p) cout<<Coada vida<<endl;
else
{ cout <<Am scos <<c.p-inf<<endl;
r=c.p;c.p=c.p-urm;delete r;return c;
/***********************************/
//functia de listare (parcurgere) a cozii
void parcurge(coada c)
{ nod *r=c.p;
cout<<Urmeaza coada<<endl;
while(r)
{ cout<<r-inf<< ;
r=r-urm;}
30 CAPITOLUL 2. TIPURI DE STRUCTURI DE DATE
cout <<endl;}
/***********************************/
//functia de creare a cozii
coada creare()
{ char a;int info;coada c;
cout<<Primul nod<<endl;
cout<<c.p-inf<<endl;
cin info;
c.p=new nod;
c.p-inf=info;
c.p-urm=NULL;
c.u=c.p;
a=a;
while((a==s)+(a==a)){
cout<<Urmatoarea operatie;
cout<<[a=pune nod/s=scoate/t=termina]<<endl;
cina;
switch(a)
{ case s: c=scoate(c);break;
case a:cout<<c.p-inf<<endl;cininfo;
c=pune(c,info);break;
default:break;} }
return c;}
/**********************************/
//functia principala
void main()
{ c=creare();
parcurge(c);}
2.5 Grafuri
Un j:n] :.nn G este o pereche (V, E) unde V este o mult ime nita iar E
este o relat ie binara pe V . Mult imea V se numeste mult imea n:]:.|: iar
mult imea E se numeste mult imea n:|: lui G ((u, v) E, u V, v V ).

Intr-un j:n] n:.nn G = (V, E) mult imea muchiilor este constituita


din perechi de varfuri neordonate (u, v E, u V, v V ) . Daca (u, v) este
un arc dintr-un graf orientat G = (V, E) spunem ca (u, v) este .n.nn n.n
2.5. GRAFURI 31
sau |nn n.n varful u si este .n.nn n sau .n:n n varful v. Despre
(u, v) sau u, v spunem ca sunt incidente varfurilor u si v. Daca (u, v) sau
u, v reprezinta un arc (muchie) ntr-un graf spunem ca varful v este nn.n-
n varfului u. (Pentru simplitate folosim notat ia (u, v) si pentru muchiile
grafurilor neorientate.)
Figura 2.2: Exemple de grafuri

In gura (2.2) prezentam un graf orientat si un graf neorientat. Adiacent a


grafurilor se pune n evident a cu ajutorul unei nn:. n nn.nn n. De
exemplu matricea de adiacent a a grafului orientat din gura este
0 1 2 3
0 0 1 0 1
1 0 1 1 0
2 0 0 0 0
3 0 1 0 0
.
0, 1, 2, 3 sunt etichetele varfurilor grafului considerat. Daca (u, v) 0, 1, 2, 3
0, 1, 2, 3 este un arc al grafului punem valoarea 1 pentru elementul aat pe
linia u si coloana v a matricei.

In caz contrar punem 0.
32 CAPITOLUL 2. TIPURI DE STRUCTURI DE DATE
Matricea de adiacent a a grafului neorientat este
0 1 2 3
0 0 1 0 1
1 1 0 1 1
2 0 1 0 0
3 1 1 0 0
.
Daca u, v este o muchie a grafului punem valoarea 1 pentru elementul aat
pe linia u si coloana v a matricei.

In caz contrar punem 0. Observam ca
matricea de adiacent a a unui graf neorientat este simetrica.
G:nn| unui varf al unui graf neorientat este numarul muchiilor incidente
acestuia.

Intr-un graf orientat, j:nn| .:.: al unui varf este numarul
arcelor care pleaca din el iar j:nn| .n:.: al unui varf este numarul arcelor
ce intra n el. Suma gradului exterior si a gradului interior este j:nn|
varfului.
Un n:n n |nj.n k de la un varf u la un varf u

ntr-un graf G = (V, E)


este un sir de varfuri (v
0
, v
1
, v
2
, ..., v
k1
, v
k
) astfel ncat u = v
0
, u

= v
k
si
(v
i1
, v
i
) E pentru i = 1, 2, ..., k. Drumul n .n varfurile v
0
, v
1
, ..., v
k1
, v
k
si muchiile(arcele) (v
0
, v
1
) , (v
1
, v
2
) , ..., (v
k1
, v
k
) .
1nj.nn unui drum este numarul de muchii (arce) din acel drum. Un
drum este |nnn: daca toate varfurile din el sunt distincte.
Prezentam n continuare un program scris n C care stabileste, pe baza
matricei de adiacent a daca ntre doua varfuri ale grafului exista un drum.
Ideea pe care se bazeaza programul este urmatoarea: daca ntre doua varfuri
i si j exista un drum, atunci oricare ar varful k, ntre i si k exista un drum
daca si numai daca (i, k) este arc al grafului sau ntre j si k exista un drum.

In nal programul aseaza o matrice n care elementul de pe linia i si coloana


j ia valoarea 1 daca exista un drum de la i la j si valoarea 0 daca nu exista.
Urmeaza programul:
# include <stdio.h
# dene maxcol 20
# dene maxlin 20
unsigned char i,j,k,n,x[maxcol][maxlin],y[maxcol][maxlin];
void main(void)
{ printf(Dimensiunea matricii n=);scanf(%d,&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
2.5. GRAFURI 33
{ printf( x[%d][%d]=,i,j);
scanf(%d,&x[i][j]);y[i][j]=x[i][j];}
j=0;while(j<n)
{
i=0;
while(i<n)
{ if(y[i][j]!=0)
{ k=0;
while(k<n)
y[i][k]=y[i][k][[y[j][k]; k + +; ; ;
i++;} ;
j++;} ;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
printf(y[%d][%d]=%d ,i,j,y[i][j]);}
Pentru graful orientat din gura (2.2) se obt ine matricea
0 1 2 3
0 0 1 1 1
1 0 1 1 0
2 0 0 0 0
3 0 1 1 0
.

In cazul grafurilor neorientate, daca x


1
= x
r
si nici-o muchie nu este
parcursa de doua ori (adica nu apar perechi de muchii alaturate de forma
(x
i
x
i+1
), (x
i+1
, x
i
), drumul (x
1
, x
2
, ...., x
r
= x
1
) se numeste .|. Daca muchi-
ile ciclului sunt arce orientate avem un ciclu ntr-un graf orientat.
Un graf neorientat este n. daca pentru ecare doua varfuri u, v exista
un drum (u, ..., v) de la u la v. Daca un graf nu este conex, atunci el are r 2
componente conexe care sunt subgrafuri conexe maximale ale lui Gn raport
cu relat ia de incluziune a mult imilor. Numarul de varfuri [V (G)[ al unui graf
se numeste :n.n| grafului iar numarul muchiilor [E (G)[ reprezinta nn:.nn
grafului.
Un graf (neorientat) conex care nu cont ine cicluri se numeste n:h:. Dam
n continuare cateva teoreme de caracterizare a arborilor:
Teorema 2. 1. G = (V, E) n j:n] n:.nn n :n.n n 3. 1:nnn:|
nn. .. n |.n|n.
n) G n j:n] n. ]n:n .|:..
34 CAPITOLUL 2. TIPURI DE STRUCTURI DE DATE
h) G n j:n] ]n:n .|:. nn..nn| {nnn . nnnjn |. G n|..
nn. nn: n .|).
) G n j:n] n. n.n.nn| {nnn :j n|. n |. G. j:n]|
:.|n n nn. n.).
1nn:n ..a) b). Fie G conex si fara cicluri. Fie u, v din V astfel
ca (u, v) E. Cum graful este conex, exista un drum (v, ...., u) de la v la
u. Adaugand si muchia (u, v) , graful G

= (V, E (u, v)) va cont ine ciclul


(v, ..., u, v) .
b) c) Daca G nu ar conex, n virtutea proprietat ii de maximalitate,
adaugand o noua muchie ce uneste doua varfuri din doua componente conexe
diferite nu obt inem un ciclu, ceea ce contrazice b). Asadar G este conex. Sa
presupunem mai departe prin absurd ca e E si G

= (V, E e) este
conex. Atunci exista un drum ce uneste extremitat ile lui e n G, deci G
cont ine un ciclu, ceea ce contrazice din nou b).
c) a). Daca G ar cont ine un ciclu si e ar o muchie a acestui ciclu,
atunci G

= (V, E e) ramane conex, ceea ce contrazice c).


Teorema 3. C:. n:h: G = (V, E) n :n.n| n, n: n 1 n|...
1nn:n .. Mai ntai vom demonstra ca G cont ine cel put in un varf de
gradul 1 (varfuri terminale, frunze). Sa presupunem prin absurd ca gradul
d (v) 2 pentru orice v V.

In acest caz sa consideram n G un drum
D de lungime maxima si sa notam cu x o extremitate a acestui drum. Cu
presupunerea facuta, varful x ar avea gradul cel put in 2, deci n virtutea max-
imalitat ii lui D trebuie sa e adiacent cel put in altui varf din D, formandu-se
astfel un ciclu n G. Apare o contradict ie.
Acum proprietatea ca G are n 1 muchii rezulta usor prin induct ie. Ea
este adevarata pentru n = 1. Presupunem ca este adevarata pentru tot i
arborii de ordin cel mult n 1 si e G un arbore de ordin n. Daca x este un
nod terminal al lui G, atunci G

cu V (G

) = V x este si el un arbore de
ordinul n 1 si conform ipotezei de induct ie va avea n 2 muchii. Rezulta
ca G are n 1 muchii.
Teorema 4. 1. G n j:n] n :n.n| n 3. 1:nnn:| nn. .. n
|.n|n.
n) G n j:n] n. ]n:n .|:..
n) G n j:n] ]n:n .|:. n 1 n|...
) G n. . n: n 1 n|...
] ) 1.. n n n. n:n n: :. nn n:]:. n..n n| |. G.
1nn:n ..a) d). Avem a) (b si teorema 2) d).
2.6. ARBORI BINARI 35
d) a). Presupunem prin absurd ca G nu este conex. Adaugand un
numar de muchii care sa uneasca elemente din diverse componente conexe
ale grafului putem obt ine un graf conex fara cicluri cu ordinul mai mare ca
n1. Se ajunge la o contradict ie (n virtutea teoremei 2), deci G este conex.
a) e). Avem a) (c si teorema 2) e).
e) a). Presupunem prin absurd ca G are cicluri. Extragand n mod
convenabil unele muchii, se ajunge astfel la un graf conex fara cicluri, de
ordin n cu mai put in de n1 muchii. Se obt ie astfel o contradict ie n virtutea
teoremei 3.
a) f). Rezulta imediat n virtutea denit iilor.
Din teoremele 2 si 4 obt inem sase caracterizari diferite ale arborilor :
(a) (f) .
2.6 Arbori binari
Ne vom ocupa n continuare de studiul n:h:.|: h.nn:. deoarece acestia con-
stituie una din cele mai importante structuri neliniare ntalnite n teoria
algoritmilor.

In general, structura de arbore se refera la o relat ie de ramni-
care la nivelul nodurilor, asemanatoare aceleia din cazul arborilor din natura.

In cele ce urmeaza vom introduce ntr-o alta maniera not iunea de arbore.
Arborii sunt constituit i din nn:. .n:n (puncte de ramnicare) si
nn:. :n.nn| {]:n.). Fie V = v
1
, v
2
, ... o mult ime de noduri interne
si B = b
1
, b
2
, ... o mult ime de frunze. Denim inductiv mult imea arborilor
peste V si B :
1n. ..
n) C:. |nn b
i
B n n:h:. b
i
n nnnn :nnn.nn
n. n:h:.
h) 1nn T
1
, ..., T
m
, m 1 n n:h:. n| .n.| n nn:. .n:n .
]:n. n.,n nn n nn .n: v V n n nn. nn. (m + 1)
- || T = v, T
1
, ..., T
m
) n n:h:. An| v :nnn.nn n:h:|..
(v) = m j:nn| n:h:|. .n: T
i
, i = 1, ..., m n hn:h:. n. |. T.
Cand reprezentam grac un arbore radacina este deasupra iar frunzele
sunt dedesupt (gura (2.3)).
Vom preciza termenii folosit i atunci cand ne referim n general la arbori.
Fie T un arbore cu radacina v si avand subarborii T
i
, 1 i m. Fie w
i
=
root (T
i
) radacina subarborelui T
i
. Atunci w
i
este | numarul i al lui v iar v
este nn| lui w
i
. De asemenea w
i
este fratele lui w
j
, i, j = 1, ..., m. Not iunea
36 CAPITOLUL 2. TIPURI DE STRUCTURI DE DATE
Figura 2.3: Exemplu de arbore binar
de nnnn {nnnn) indica nchiderea tranzitiva si reexiva a relat iei
de u (tata).
A.|| (sau nn nn.nn) unui nod v al unui arbore T este denit astfel:
daca v este radacina lui T atunci nivel (v, T) = 0. Daca v nu este radacina
lui T atunci pentru un anumit i, v apart ine subarborelui T
i
. Vom pune
nivel (v, T) = 1+nivel (v, T
i
). Vom omite al doilea argument din suma cand
contextul o va cere (T
i
= ) .

Inalt imea h(T) a unui arbore T este denita dupa cum urmeaza: h(T) =
max nivel (b, T) ; b este frunza lui T .

In exemplul din gura nivel (v
3
) =
1, nivel (v
4
) = 2, nivel (b
5
) = 3 si h(T) = 3.
Un arbore T este un n:h: h.nn: daca toate nodurile interne ale lui T sunt
radacini ale unor subarbori de gradul 1 sau 2. Un arbore T este n| daca
toate nodurile interne ale sale sunt radacini ale unor subarbori de gradul 2.
Arborele binar din gura este un arbore complet. Un arbore complet binar
cu n noduri interne are n + 1 frunze. Primul respectiv al doilea subarbore
este numit hn:h:| nnj respectiv n:
2.6.1 Parcurgerea arborilor binari

In cazul arborilor binari, informat iile pot stocate n frunze sau n nodurile
2.6. ARBORI BINARI 37
interne. Fiecare nod al arborelui binar este o structura care cont ine alaturi
de informat ia specica si adresele nodurilor u stang respectiv drept (gura
(2.4)).
Figura 2.4: Exemplu de arbore binar cu precizarea legaturilor
Pentru a accesa informat iile pastrate de un arbore, trebuie sa-l exploram
(parcurgem). Cum orice arbore binar are trei componente (o radacina, un
subarbore stang si un subarbore drept), n mod natural apar trei metode de
parcurgere a arborelui:
- Parcurgere n preordine (rsd): se viziteaza radacina, se parcurge sub-
arborele stang, se parcurge sub arborele drept.
- Parcurgere n postordine (sdr): se parcurge subarborele stang, se
parcurge subarborele drept, se viziteaza radacina.
- Parcurgere simetrica sau n inordine(srd): se parcurge subarborele
stang, se viziteaza radacina, se parcurge subarborele drept. Aplicand aceste
denit ii arborelui din gura obt inem v
1
v
2
b
1
v
4
b
4
b
5
v
3
b
2
b
3
, pentru parcurgerea
n preordine, b
1
b
4
b
5
v
4
v
2
b
2
b
3
v
3
v
1
pentru parcurgerea n postordine iar pentru
parcurgerea n inordine b
1
v
2
b
4
v
4
b
5
v
1
b
2
v
3
b
3
.
Vom prezenta n cele ce urmeaza un program C++ cu funct iile de creare,
parcurgere si stergere a unui arbore. Pentru utilizarea nodurilor unui ar-
bore binar a fost denita o structura cu urmatoarele campuri: info - campul
38 CAPITOLUL 2. TIPURI DE STRUCTURI DE DATE
informat ie, n acest program de tip ntreg, st - adresa nodului descendent
stang, dr - adresa nodului descendent drept. Programul realizeaza prelu-
crarea arborelui prin urmatoarele funct ii:
a) Funct ia creare pentru crearea arborelui efectueaza operat iile:
- aloca memoria necesara unui nod;
- citeste informat ia nodului si aseaza mesaje de invitat ie pentru crearea
nodurilor descendente (stang si drept);
- daca informat ia introdusa este un numar ntreg diferit de 0, se ape-
leaza recursiv funct ia pentru crearea subarborelui stang stocandu-sa adresa
de legatura pentru accesul la descendent i. Urmeaza apoi apelul recursiv
pentru crearea subarborelui drept;
- daca informat ia introdusa este 0, atunci nodului i se atribuie valoarea
NULL.
Funct ia ntoarce adresa nodului creat.
b) Funct ia rsd pentru parcurgerea n preordine efectueaza operat iile:
- prelucreaza (aseaza) radacina;
- trece la descendentul stang apelandu-se recursiv pentru parcurgerea
subarborelui stang;
- trece la descendentul drept apelandu-se recursiv pentru parcurgerea
subarborelui drept.
c) Funct ia srd pentru parcurgerea n inordine efectueaza operat iile:
- trece la descendentul stang apelandu-se recursiv pentru parcurgerea
subarborelui stang;
- prelucreaza (aseaza) radacina;
- trece la descendentul drept apelandu-se recursiv pentru parcurgerea
subarborelui drept.
d) Funct ia sdr pentru parcurgerea n postordine efectueaza operat iile:
- trece la descendentul stang apelandu-se recursiv pentru parcurgerea
subarborelui stang;
- trece la descendentul drept apelandu-se recursiv pentru parcurgerea
subarborelui drept;
- prelucreaza (aseaza) radacina.
e) Funct ia sterge pentru stergerea arborelui efectueaza operat iile:
- se sterge subarborele stang: se apeleaza recursiv stergerea pentru de-
scendentul stang;
- se sterge subarborele drept: se apeleaza recursiv stergerea pentru de-
scendentul drept;
- se sterge nodul curent;
2.6. ARBORI BINARI 39
Urmeaza programul.
#include <iostream.h
typedef struct nod { int info; struct nod *st; struct nod *dr;} arbore;
arbore *rad; int n;
// Se declara functiile
/***********************************/
arbore *creare();
void srd(arbore *rad);
void rsd(arbore *rad);
void sdr(arbore *rad);
void sterge(arbore *rad);
/*******************************/
// Functia principala
void main() {
cout<<Radacina=;
rad=creare();
cout<<Urmeaza arborele parcurs in inordine<<endl;
srd(rad);
cout<<Urmeaza arborele parcurs in preordine<<endl;
rsd(rad);
cout<<Urmeaza arborele parcurs in postordine<<endl;
sdr(rad);
sterge(rad);}
/*******************************/
// Functia de creare a arborelui
arbore *creare( )
{ arbore *p; cinn;
if (n!=0)
{ p=new arbore;
p-info=n;cout<<p-info<<-st ;p-st=creare( );
cout<<p-info<<-dr ;p-dr=creare( );return p;}
else
p=NULL;return p;}
/**********************************/
// Functia de parcurgere in inordine
void srd(arbore *rad)
{ if (rad!=NULL)
{ srd(rad-st);
40 CAPITOLUL 2. TIPURI DE STRUCTURI DE DATE
cout<<rad-info<< ;
srd(rad-dr);} }
/*********************************/
// Functia de parcurgere in postordine
void sdr(arbore *rad)
{ if (rad!=NULL)
{ sdr(rad-st);
sdr(rad-dr);cout<<rad-info<< ;} }
/************************************/
// Functia de parcurgere in preordine
void rsd(arbore *rad)
{ if(rad!=NULL)
{ cout<<rad-info<< ;
rsd(rad-st);
rsd(rad-dr);} }
/**********************************/
// Functia de stergere
void sterge(arbore *rad)
{ if (rad!=NULL){ sterge(rad-st);sterge(rad-dr);
cout<<S-a sters<<rad-info<<endl;
delete rad;} } ;
Vom prezenta mai departe o varianta nerecursiva de traversare a unui
arbore n inordine folosind o stiva auxiliara a. Schematic, algoritmul se
prezinta astfel:
p=radacina; a=NULL;
do {
while(p) { ap /*pune nodul p al arborelui in stiva*/;
p=p-st;}
if(!a) break;
else pa/*scoate p din stiva*/;
viziteaza p; p=p-adr;
while(p[[a);
Ideea algoritmului este sa salvam nodul curent p n stiva si apoi sa
traversam subarborele stang; dupa aceea scoatem nodul p din stiva, l vizitam
si apoi traversam subarborele drept.
Sa demonstram ca acest algoritm parcurge un arbore binar de n noduri
n ordine simetrica folosind induct ia dupa n. Pentru aceasta vom demonstra
2.6. ARBORI BINARI 41
urmatorul rezultat: dupa o intrare n ciclul do, cu p
0
radacina unui subar-
bore cu n noduri si stiva a cont inand nodurile a[1],...,a[m], procedura va
traversa subarborele n chestiune n ordine simetrica iar dupa parcurgerea
lui stiva va avea n nal aceleasi noduri a[1],...,a[m]. Armat ia este evi-
denta pentru n = 0. Daca n > 0, e p=p
0
nodul arborelui binar la intrarea
n setul de instruct iuni al ciclului do. Punand p
0
n stiva, aceasta devine
a[1],...,a[m],p
0
iar noua valoare a lui p este p=p
0
st. Acum subarborele
stang are mai put in de n noduri si conform ipotezei de induct ie subarborele
stang va traversat n inordine, dupa parcurgere stiva ind a[1],...,a[m],p
0
.
Se scoate p
0
din stiva (aceasta devenind a[1],...,a[m]), se viziteaza p=p
0
si
se atribuie o noua valoare lui p adica p=p
0
dr. Acum subarborele drept
are mai put in de n noduri si conform ipotezei de induct ie se va traversa
arborele drept avand n nal n stiva nodurile a[1],...,a[m].
Aplicand propozit ia de mai sus, se intra n ciclul do cu radacina arborelui
si stiva vida, si se iese din ciclu cu arborele traversat si stiva vida.
Urmeaza programul.
#include <iostream.h
typedef struct nod { int inf; nod *st; nod *dr;} arbore;
arbore *rad;int n;
typedef struct nods{ arbore *inf; nods*ant;} stiva;
typedef struct{ arbore *arb; stiva *stiv;} arbstiv;
/******************************/
//Functia de punere in stiva
stiva *push(stiva*a, arbore *info)
{ stiva *r;
r=new stiva;
r-inf=info;
if(!a)r-ant=NULL;
else r-ant=a;
a=r;return a;}
/*******************************/
//Functia de scoatere din stiva si de vizitare a nodului
arbstiv pop(stiva *a)
{ arbstiv q;stiva *r;
if(!a)
cout<<Stiva vida <<endl;
else
{ q.arb=a-inf;r=a;
42 CAPITOLUL 2. TIPURI DE STRUCTURI DE DATE
cout<<(a-inf)-inf<< ;
a=a-ant;delete r;q.stiv=a;}
return q;}
/************************************/
//Functia de creare a arborelui
arbore *creare()
{ arbore *p; ;cinn;
if (n!=0)
{ p=new arbore;
p-inf=n;cout<<p-inf<<-st ;p-st=creare( );
cout<<p-inf<<-dr ;p-dr=creare( );return p;}
else
p=NULL;return p;}
/*************************************/
//Functia principala care realizeaza traversarea in inordine
void main()
{ stiva *a; arbore *p;arbstiv q;
cout<<Radacina<<endl;
p=creare();
a=NULL;
do{
while (p) { a=push(a,p);p=p-st;}
if (!a) break;
else { q=pop(a);p=q.arb;a=q.stiv;}
p=p-dr;}
while(p[[a);
2.7 Algoritmul lui Human
Algoritmul de codicare (compresie, compactare) 1nnn poarta numele
inventatorului sau, David Human, profesor la MIT. Acest algoritm este
ideal pentru compresarea (compactarea, arhivarea) textelor si este utilizat n
multe programe de compresie.
2.7. ALGORITMUL LUI HUFFMAN 43
2.7.1 Prezentare preliminara
Algoritmul lui Human apart ine familiei de algoritmi ce realizeaza codicari
cu lungime variabila. Aceasta nseamna ca simbolurile individuale (ca
de exemplu caracterele ntr-un text) sunt nlocuite de secvent e de bit i (cu-
vinte de cod) care pot avea lungimi diferite. Astfel, simbolurilor care
se ntalnesc de mai multe ori n text (sier) li se atribuie o secvent a mai
scurta de bit i n timp ce altor simboluri care se ntalnesc mai rar li se
atribuie o secvent a mai mare. Pentru a ilustra principiul, sa presupunem
ca vrem sa compactam urmatoarea secvent a :AEEEEBEEDECDD. Cum
avem 13 caractere (simboluri), acestea vor ocupa n memorie 13 8 = 104
bit i. Cu algoritmul lui Human, sierul este examinat pentru a vedea care
simboluri apar cel mai frecvent (n cazul nostru E apare de sapte ori, D
apare de trei ori iar A, B si C apar cate o data). Apoi se construieste (vom
vedea n cele ce urmeaza cum) un arbore care nlocuieste simbolurile cu
secvent e (mai scurte) de bit i. Pentru secvent a propusa, algoritmul va utiliza
substitut iile (cuvintele de cod) A = 111, B = 1101, C = 1100, D = 10,
E = 0 iar secvent a compactata (codicata) obt inuta prin concatenare va
111000011010010011001010. Aceasta nseamna ca s-au utilizat 24 bit i n loc
de 104, raportul de compresie ind 24/104 1/4.. Algoritmul de compresie
al lui Human este utilizat n programe de compresie ca pkZIP, lha, gz,
zoo, arj.
2.7.2 Coduri prex. Arbore de codicare
Vom considera n continuare doar codicarile n care nici-un cuvant nu este
prexul altui cuvant. Aceste codicari se numesc codicari prex. Codi-
carea prex este utila deoarece simplica atat codicarea (deci compactarea)
cat si decodicarea. Pentru orice codicare binara a caracterelor; se con-
cateneaza cuvintele de cod reprezentand ecare caracter al sierului ca n
exemplul din subsect iunea precedenta.
Decodicarea este de asemenea simpla pentru codurile prex. Cum nici
un cuvant de cod nu este prexul altuia, nceputul oricarui sier codicat
nu este ambiguu. Putem sa identicam cuvantul de cod de la nceput, sa
l convertim n caracterul original, sa-l ndepartam din sierul codicat si
sa repetam procesul pentru sierul codicat ramas.

In cazul exemplului
prezentat mai nainte sirul se desparte n
111 0 0 0 0 1101 0 0 10 0 1100 10 10,
44 CAPITOLUL 2. TIPURI DE STRUCTURI DE DATE
secvent a care se decodican AEEEBEEDECDD. Procesul de decodicare
necesita o reprezentare convenabila a codicarii prex astfel ncat cuvantul
init ial de cod sa poata usor identicat. O astfel de reprezentare poate
data de un arbore binar de codicare, care este un arbore complet (adica
un arbore n care ecare nod are 0 sau 2 i), ale carui frunze sunt caracterele
date. Interpretam un cuvant de cod binar ca ind o secvent a de bit i obt inuta
etichetand cu 0 sau 1 muchiile drumului de la radacina pana la frunza ce
cont ine caracterul respectiv: cu 0 se eticheteaza muchia ce uneste un nod cu
ul stang iar cu 1 se eticheteaza muchia ce uneste un nod cu ul drept.

In
gura (2.5) este prezentat arborele de codicare al lui Human corespunzator
exemplului nostru. Notand cu ( alfabetul din care fac parte simbolurile
(caracterele), un arbore de codicare are exact [([ frunze, una pentru ecare
litera (simbol) din alfabet si asa cum se stie din teoria grafurilor, exact [([ 1
noduri interne (notam cu [([ , cardinalul mult imii ().
Figura 2.5: Exemplu de arbore Human
Dandu-se un arbore T, corespunzator unei codicari prex, este foarte
simplu sa calculam numarul de bit i necesari pentru a codica un sier.
Pentru ecare simbol c (, e f (c) frecvent a (numarul de aparit ii) lui
c n sier si sa notam cu d
T
(c) adancimea frunzei n arbore. Numarul de
bit i necesar pentru a codica sierul este numit costul arborelui T si se
2.7. ALGORITMUL LUI HUFFMAN 45
calculeaza cu formula
COST (T) =

cC
f (c) d
T
(c) .
2.7.3 Construct ia codicarii prex a lui Human
Human a inventat un algoritm greedy care construieste o codicare pre-
x optima numita codul Human. Algoritmul construieste arborele core-
spunzator codicarii optime (numit arborele lui Human) pornind n ,
n . Se ncepe cu o mult ime de [([ frunze si se realizeaza o secvent a de
[([ 1 operat ii de ]..nn:. pentru a crea arborele nal.

In algoritmul scris n
pseudocod care urmeaza, vom presupune ca ( este o mult ime de n caractere si
ecare caracter c ( are frecvent a f (c). Asimilam ( cu o nn: constituita
din arbori format i dintr-o singura frunza.Vom folosi o stiva o formata din
noduri cu mai multe campuri; un camp pastreaza ca informat ie pe f (c), alt
camp pastreaza radacina c iar un camp suplimentar pastreaza adresa nodului
anterior (care indica un nod ce are ca informat ie pe f (c

) cu proprietatea ca
f (c) f (c

)). Extragem din stiva varful si nodul anterior (adica obiectele cu


frecvent a cea mai redusa) pentru a le face sa fuzioneze. Rezultatul fuzionarii
celor doua noduri este un nou nod care n campul informat iei are f (c)+f (c

)
adica suma frecvent elor celor doua obiecte care au fuzionat. De asemenea n
al doilea camp apare radacina unui arbore nou format ce are ca subarbore
stang, respectiv drept, arborii de radacini c si c

. Acest nou nod este introdus


n stiva dar nu pe pozit ia varfului ci pe pozit ia corespunzatoare frecvent ei
sale. Se repeta operat ia pana candn stiva ramane un singur element. Acesta
va avea n campul radacinilor chiar radacina arborelui Human.
Urmeaza programul n pseudocod. T inand cont de descrierea de mai sus
a algoritmului numele instruct iunilor programului sunt sucient de sugestive.
n [([
S C
cat timp (S are mai mult decat un nod)
{ z ALOCA-NOD( )
x stanga[z] EXTRAGE-MIN(S)
y dreapta[z] EXTRAGE-MIN(S)
f (z) f (x) +f (y)
INSEREAZA(S, z) }
returneaza EXTRAGE-MIN(S) .
46 CAPITOLUL 2. TIPURI DE STRUCTURI DE DATE
Figura 2.6: Construirea arborelui Human

In cazul exemplului deja considerat, avem f (E) = 7, f (D) = 3, f (A) =


f (B) = f (C) = 1. Putem, pentru comoditate sa etichetam frunzele nu cu
simbolurile corespunzatoare, ci cu frecvent ele lor.

In gura (2.6) prezentam
arborii aat i n nodurile stivei, dupa ecare repetare a instruct iunilor din
ciclul while. Se pleaca cu o padure de frunze, ordonata descrescator dupa
frecvent ele simbolurilor si se ajunge la arborele de codicare.
Prezentam mai jos si programul n C + + pentru algoritmul Human de
codicare prexata.
#include<iostream.h
#include<string.h
typedef struct nod{ char *symb; nod*st;nod*dr;} arbore;
typedef struct nods{ arbore*rad; nods*ant;int frecv;} stiva;
/***********************************************/
/*Functia de punere a unui nou nod in stiva ordonata dupa frecventa*/
stiva *push(stiva*varf, arbore *a, int f)
{ stiva *v,*p,*q;
v=new stiva; v-rad=a;v-frecv=f;v-ant=NULL;
if(!varf)
{ varf=v; return varf;}
for(p=varf,q=NULL;(p!=NULL)* (p-frecv<f;q=p,p=p-ant
2.7. ALGORITMUL LUI HUFFMAN 47
v-ant=p;
if(q!=NULL) q-ant=v;
else { varf=v;}
return varf;}
/************************************************/
//Functia de stergere a varfului stivei
void pop(stiva *
{ stiva*r;
r=varf;
varf=varf-ant;
delete r;
return;}
/***********************************************/
//Functia de fuzionare a doi arbori
arbore*fuziune(arbore *p, arbore*q)
{ arbore*r;
r=new arbore;
r-symb=0

;
r-dr=p;r-st=q;
return r;}
/*********************************************/
//Functia de parcurgere in preordine a arborelui lui Human
//si de codicare a frunzelor
void rsd(arbore*rad, char*shot)
{ char frunza[60];
for (int i=0;i<60;i++)
frunza[i]=0

;
if (rad==NULL)return;
if(rad-symb!=NULL)
cout<<rad-symb<<:<<shot<<endl;
if(shot!=NULL)
strcpy(frunza,shot);
strcat(frunza,0);
rsd(rad-st,frunza);
if(shot!=NULL)
strcpy(frunza,shot);
strcat(frunza,1);
rsd(rad-dr,frunza);}
48 CAPITOLUL 2. TIPURI DE STRUCTURI DE DATE
/********************************************/
//Functia de creare a unui arbore constand dintr-o singura
//frunza (radacina) care contine simbolul ce trebuie codicat
arbore *frunza(char *simb)
{ arbore*r;r=new arbore;
r-symb=simb;r-st=NULL;r-dr=NULL; return r;}
/********************************************/
//Functia de parcurgere a stivei
void parcurge(stiva*s)
{ stiva*rr;rr=s;
if(!rr) cout<<Stiva vida<<endl;
else { cout<<Urmeaza stiva<<endl;
while(rr){
cout<<(rr-rad)-symb<< ;
rr=rr-ant;} }
cout<<endl;return;}
/********************************************/
//Functia principala
void main()
{ arbore *r1,*r2;int f1,f2; stiva *vf;
vf=new stiva; vf=NULL;
vf=push(vf,frunza(D),3);
vf=push(vf,frunza(A),1);
vf=push(vf,frunza(B),1);
vf=push(vf,frunza(C),1);
vf=push(vf,frunza(E),7);
parcurge(vf);
cout<<endl;
do
{ r1=vf-rad;f1=vf-frecv;pop(vf);
r2=vf-rad;f2=vf-frecv;pop(vf);
vf=push(vf,fuziune(r1,r2),f1+f2);
} while(vf-ant);
cout<<Urmeaza codicarea<<endl;
rsd(vf-rad-st,0);
rsd(vf-rad-dr,1);}
2.7. ALGORITMUL LUI HUFFMAN 49
2.7.4 Optimalitatea algoritmului Human
1n. .. Un arbore de codicare T pentru alfabetul ( este .n daca
pentru orice alt arbore de codicare T

al aceluiasi alfabet avem


COST (T) =

cC
f (c) d
T
(c) COST (T

) =

cC
f (c) d
T
(c) .
Vom demonstra n cele ce urmeaza ca algoritmul Human construieste
un arbore de codicare optim.
Lema 1. 1. T n n:h: n n.n: .n n: n|]nh| (. 1nn
f (c) < f (c

) nn. d
T
(c) d
T
(c

) .
1nn:n .. Sa presupunem prin absurd ca avem f (c) < f (c

) si
d
T
(c) < d
T
(c

) . Schimband ntre ele frunzele care cont in pe c si c

obt inem
un nou arbore de codicare cu costul
COST (T) f (c) d
T
(c) f (c

) d
T
(c

) +f (c) d
T
(c

) +f (c

) d
T
(c) =
= COST (T) (f (c) f (c

)) (d
T
(c) d
T
(c

)) < COST (T) ,


ceea ce contrazice ipoteza de optimalitate.
Lema 2. 1. ]:n | n.n.n f
1
. f
2
:n.nn: .nh|:.|:
c
1
. c
2
n.n n|]nh| (. .n. ..n n n:h: n n.n: .n n n:
]:n.| c
1
. c
2
n ]:n ..
1nn: .. Fie h nalt imea unui arbore de codicare optim T. Fie
un nod de adancime h 1 si c
i
si c
j
i sai, care evident sunt frunze. Sa
presupunem ca f (c
i
) f (c
j
) . Conform lemei precedente sau f (c
i
) = f
1
sau d
T
(c
i
) d
T
(c
1
) de unde d
T
(c
i
) = d
T
(c
1
) din alegerea lui .

In ambele
cazuri putem schimba ntre ele frunzele c
i
si c
1
fara a afecta costul arborelui.
La fel procedam cu c
2
si c
j
si obt inem un arbore de codicare optim n care
c
1
si c
2
sunt frat i.
Teorema 5. .|j:.n| 1nnn n:. n n:h: n n.n:
.n.
1nn:n . (prin induct ie dupa n = [([). Teorema este evidenta pen-
tru n 2. Sa presupunem ca n 3 si e T
Huff
arborele construit cu
algoritmul Human pentru frecvent ele f
1
f
2
... f
n
. Algoritmul aduna
frecvent ele f
1
si f
2
si construieste nodul corespunzator frecvent ei f
1
+f
2
. Fie
50 CAPITOLUL 2. TIPURI DE STRUCTURI DE DATE
T

Huff
arborele construit cu algoritmul Human pentru mult imea de frecvent e
f
1
+f
2
, f
3
, ..., f
n
. Avem
COST (T
Huff
) = COST
_
T

Huff
_
+f
1
+f
2
,
deoarece T
Huff
poate obt inut din T

Huff
nlocuind frunza corespunzatoare
frecvent ei f
1
+f
2
cu un nod intern avand ca i frunzele de frecvent e f
1
si f
2
.
De asemenea, conform ipotezei de induct ie T

Huff
este un arbore de codicare
optim pentru un alfabet de n 1 simboluri cu frecvent ele f
1
+ f
2
, f
3
, ..., f
n
.
Fie T
opt
un arbore de codicare optim satisfacand lema anterioara, adica
frunzele de frecvent e f
1
si f
2
sunt frat i n T
opt
. Fie T

arborele obt inut din


T
opt
prin nlocuirea frunzelor de frecvent e f
1
si f
2
si a tatalui lor cu o singura
frunza de frecvent a f
1
+f
2
. Atunci
COST (T
opt
) = COST (T

) +f
1
+f
2

COST
_
T

Huff
_
+f
1
+f
2
= COST (T
Huff
) ,
deoarece COST (T

) COST
_
T

Huff
_
conform ipotezei de induct ie. Rezulta
de aici
COST (T
opt
) = COST (T
Huff
) .
Capitolul 3
Tehnici de sortare
3.1 Heapsort
1n. .. Un vector A[1..n] este un heap (ansamblu) daca satisface pro-
prietatea de heap :
A[k/2|] A[k] , 2 k n.
Folosim notat ia | pentru a desemna partea ntreaga a unui numar real.
Un vector A care reprezinta un heap are doua atribute: |nj.n].] este
numarul elementelor din vector si n.nn.n-|n].] reprezinta numarul el-
ementelor heap-ului memoratn vectorul A. Astfel, chiar daca A[1..lungime[A]]
cont inen ecare element al sau date valide, este posibil ca elementele urmatoare
elementului .]n.nn.n-|n].]], unde n.nn.n-|n].] |nj.n].],
sa nu apart ina heap-ului.
Structurii de heap i se ataseaza n mod natural un arbore binar aproape
complet (gura (3.1)).
Fiecare nod al arborelui corespunde unui element al vectorului care cont ine
valorile atasate nodurilor. Radacina arborelui este A[1]. Dat ind un in-
dice i, corespunzator unui nod, se poate determina usor indicii nodului tata,
TATA(i) si ai ilor STANG(i) si DREPT(i):
indicele TATA(i)
returneaza i/2| (partea ntreaga a lui i/2),
indicele STANG(i)
returneaza 2i,
indicele DREPT(i)
51
52 CAPITOLUL 3. TEHNICI DE SORTARE
Figura 3.1: Exemplu de heap reprezentat sub forma unui arbore binar si sub
forma unui vector
returneaza 2i + 1.
Pentru orice nod i diferit de radacina este, n virtutea denit iei heap-ului,
adevarata proprietatea de heap:
A[TATA(i)] A[i].
Denim nn| .nn unui nod al arborelui ca ind numarul muchiilor celui
mai lung drum ce nu viziteaza tatal nodului si leaga nodul respectiv cu o
frunza. Evident, nalt imea arborelui este nalt imea radacinii.
3.1.1 Reconstituirea proprietat ii de heap
Funct ia ReconstituieHeap este un subprogram important n prelucrarea
heap-urilor. Datele de intrare sunt un vector A si un indice i. Atunci cand se
apeleaza ReconstituieHeap se presupune ca subarborii avand ca radacini
nodurile STANG(i) si DREPT(i) sunt heap-uri. Dar cum elementul A[i]
poate mai mic decat descendent ii sai, este posibil ca acesta sa nu respecte
proprietatea de heap. Sarcina funct iei ReconstituieHeap este sa -
]nn n heap valoarea A[i], astfel ncat subarborele care are n radacina
valoarea elementului de indice i, sa devina un heap.
3.1. HEAPSORT 53
Figura 3.2: Efectul funct iei ReconstituieHeap
Urmeaza funct ia scrisa n pseudocod.
ReconstituieHeap(A,i)
stSTANG(i)
drDREPT(i)
daca st dimensiune-heap[A] si A[st]A[i] atunci
maximst
altfel
maximi
daca dr dimensiune-heap[A] si A[dr]A[i] atunci
maximdr
daca maxim,=i atunci
schimba A[i]A[maxim]
ReconstituieHeap(A,maxim)

In gura (3.2) este ilustrat efectul funct iei ReconstituieHeap.

In gura (3.2, a) este desenata congurat ia init iala a heap-ului unde


A[2] nu respecta proprietatea de heap deoarece nu este mai mare decat
descendent ii sai. Proprietatea de heap este restabilita pentru nodul 2 n
gura (3.2, b) prin interschimbarea lui A[2] cu A[4], ceea ce anuleaza propri-
etatea de heap pentru nodul 4. Apeland recursiv ReconstituieHeap(A, 4)
se pozit ioneaza valoarea lui i pe 4. Dupa interschimbarea lui A[4] cu A[9]
54 CAPITOLUL 3. TEHNICI DE SORTARE
asa cum se vede n gura (3.2, c), nodul 4 ajunge la locul sau si apelul recur-
siv ReconstituieHeap(A, 9) nu mai gaseste elemente care nu ndeplinesc
proprietatea de heap.
3.1.2 Construct ia unui heap
Funct ia ReconstituieHeap poate utilizata de , n pentru transfor-
marea vectorului A[1..n] n heap.
Cum toate elementele subsirului A[n/2| + 1..n] sunt frunze, ele pot
considerate heap-uri formate din cate un element. Funct ia Construieste-
Heap pe care o prezentam n continuare traverseaza restul elementelor si
executa funct ia ReconstituieHeap pentru ecare nod ntalnit. Ordinea
de prelucrare a nodurilor satisface cerint a ca subarborii, avand ca radacina
descendent i ai nodului i sa formeze heap-uri nainte ca ReconstituieHeap
sa e executat pentru aceste noduri.
Urmeaza, n pseudocod funct ia ConstruiesteHeap:
dimensiune-heap[A]lungime[A]
pentru i lungime[A]/2|,1 executa
ReconstituieHeap(A,i).
Figura (3.2) ilustreaza modul de aplicare a funct iei ConstruiesteHeap.

In gura se vizualizeaza structurile de date (heap-urile) n starea lor an-


terioara apelarii funct iei ReconstituieHeap. (a) Se considera vectorul A
cu 10 elemente si arborele binar corespunzator. Se observa ca variabila de
control i a ciclului n momentul apelului funct iei ReconstituieHeap(A,i)
indica nodul 5. (b) reprezinta rezultatul; variabila de control i a ciclului
indica acum nodul 4. (c)-(e) vizualizeaza iterat iile succesive ale ciclului pen-
tru din ConstruiesteHeap. Se observa ca atunci cand se apeleaza funct ia
ReconstituieHeap pentru un nod dat, subarborii acestui nod sunt deja
heap-uri. (f) prezinta heap-ul nal.
3.1.3 Algoritmul heapsort
Algoritmul de sortare heapsort ncepe cu apelul funct iei Construieste-
Heap n scopul transformarii vectorului de intrare A[1..n] n heap. Deoarece
cel mai mare element al vectorului este atasat nodului radacina A[1], acesta
va ocupa locul denitiv n vectorul ordonat prin interschimbarea sa cu A[n].
Mai departe, excluzand din heap elementul de pe locul n, si micsorand cu 1
n.nn.n-|n].], restul de A[1..(n 1)] elemente se pot transforma usor
3.1. HEAPSORT 55
Figura 3.3: Model de execut ie a funct iei ConstruiesteHeap
56 CAPITOLUL 3. TEHNICI DE SORTARE
n heap, deoarece subarborii nodului radacina au proprietatea de heap, cu
eventuala except ie a elementului ajuns n nodul radacina. Pentru aceasta se
apeleaza funct ia ReconstituieHeap(A,1). Procedeul se repeta micsorand
dimensiunea heap-ului de la n 1 la 2.
Urmeaza, scris n pseudocod, algoritmul descris de funct ia Heapsort(A):
ConstruiesteHeap(A),
pentru ilungime[A],2 executa
schimba A[1]A[i]
dimensiune-heap[A]dimensiune-heap[A]-1
ReconstituieHeap(A,i)
Vom scrie programul heapsort si n C + +. Fat a de descrierea de mai
nainte a algoritmului, vor interveni cateva mici modicari datorate faptului
ca n C + + indexarea elementelor unui vector ncepe de la 0 si nu de la 1.
/**************************************/
#include<iostream.h
void ReconstituieHeap(int* A, int i, int dimensiune )
{ int a,maxim, stang=2*i+1,drept=stang+1;
if (stang<dimensiune&&A[stang]A[i]) maxim=stang;
else maxim=i;
if (drept<dimensiune&&A[drept]A[maxim]) maxim=drept;
if(maxim!=i){ a=A[i];A[i]=A[maxim];A[maxim]=a;
ReconstituieHeap(A,maxim,dimensiune); } }
/************************************/
void ConstruiesteHeap( int* A, int dimensiune )
{ int i;
for (i = (dimensiune - 2)/2; i = 0; i)
ReconstituieHeap(A, i, dimensiune);}
/***********************************/
void heapsort( int* A, int dimensiune )
{ int i, temp;
ConstruiesteHeap( A, dimensiune );
for (i = dimensiune-1; i =1; i) {
temp = A[i]; A[i] = A[0]; A[0]=temp;
dimensiune=dimensiune-1;
ReconstituieHeap( A,0,dimensiune );} }
/***********************************/
void main()
{ int N=10;
3.2. COZI DE PRIORIT

ATI 57
int A[10];
A[0]=10;A[1]=8;A[2]=6;A[3]=5;
A[4]=11;A[5]=5;A[6]=17;A[7]=9;A[8]=3;A[9]=21;
heapsort(A,N);
cout<< Sirul sortat (metoda heapsort)<<endl;
for(int i=0;i<N;i++) cout<<A[i]<< ; }
Timpul de execut ie
Funct ia ReconstituieHeap consta din comparat ii si interschimbari ale de
elemente aate pe nivele consecutive. Timpul de execut ie al funct iei va
deci de ordinul nalt imii arborelui binar asociat care este de ordinul O(ln n)
unde n este numarul de elemente din heap.
Funct ia ConstruiesteHeap apeleaza funct ia ReconstituieHeap de n
ori. Deducem de aici ca timpul de execut ie al funct iei ConstruiesteHeap
este de ordinul O(nln n). Funct ia heapsort apeleaza o data funct ia Con-
struiesteHeap si de n 1 ori funct ia ReconstituieHeap. Rezulta de aici
ca timpul de execut ie al funct iei heapsort este O(nln n) +(n1)O(ln n) =
O(nln n) .
3.2 Cozi de prioritat i
Vom prezentan cele ce urmeazanca o aplicat ie a not iunii de heap: utilizarea
lui sub forma de coada cu prioritat i.
nnn :.:.n . este o structura de date care cont ine o mult ime S de
elemente, ecare avand asociata o valoare numita |.. Asupra unei cozi cu
prioritat i se pot efectua urmatoarele operat ii:
Insereaza(S, x) insereaza elementul x n mult imea S.Aceasta operat ie
este scrisa n felul urmator S S x .
ExtrageMax(S) elimina si ntoarce elementul din S avand cheia cea mai
mare.
O aplicat ie a cozilor de prioritat i o constituie planicarea lucrarilor pe
calculatoare partajate. Lucrarile care trebuie efectuate si prioritat ile rela-
tive se memoreaza ntr-o coada de prioritat i. Cand o lucrare este terminata
sau ntrerupta, funct ia ExtrageMax va selecta lucrarea avand prioritatea
cea mai mare dintre lucrarile n asteptare. Cu ajutorul funct iei Insereaza
oricand se introduce n coada o sarcina noua.
58 CAPITOLUL 3. TEHNICI DE SORTARE

In mod natural o coada cu prioritat i poate implementata utilizand un


heap. Funct ia Insereaza(S, x) insereaza un element n heap-ul S. La prima
expandare a heap-ului se adauga o frunza arborelui. Apoi se traverseaza un
drum pornind de la aceasta frunza catre radacina n scopul gasirii locului
denitiv al noului element.
Urmeaza instruct iunile funct iei Insereaza(S,x) n pseudocod.
dimensiune-heap[S]dimensiune-heap[S]+1
i dimensiune-heap[S]
cat timp i1 si S[TATA(i)]<cheie executa
S[i] S[TATA(i)]
iTATA[i]
S[i]cheie.
ExtrageMax(S) este asemanatoare funct iei Heapsort, instruct iunile
sale n pseudocod ind:
daca dimensiune-heap[S]<1 atunci
eroare depasire inferioara heap;
max S[1]
S[1] S[dimensiune-heap[S]]
dimensiune-heap[S]dimensiune-heap[S]-1
ReconstituieHeap(S,1)
returneaza max.
Urmeaza scris in C + + un program care implementeaza o coada cu pri-
oritat i.
#include<iostream.h
/*******************************************/
void ReconstituieHeap(int* A, int i, int dimensiune )
{ int a,maxim, stang=2*i+1,drept=stang+1;
if (stang<dimensiune&&A[stang]A[i]) maxim=stang;
else maxim=i;
if (drept<dimensiune&&A[drept]A[maxim])
maxim=drept;
if(maxim!=i){ a=A[i];A[i]=A[maxim];A[maxim]=a;
ReconstituieHeap(A,maxim,dimensiune); } }
/******************************************/
int ExtrageMax( int* A, int dim)
{ int max;
if(dim<0) cout<<Depasire inferioara heap<<endl;
max=A[0];
3.2. COZI DE PRIORIT

ATI 59
A[0]=A[dim];
ReconstituieHeap( A,0,dim- - );
return max;}
/******************************************/
void Insereaza(int* A, int cheie, int dimensiune )
{ int i,tata;
i=dimensiune+1;
A[i]=cheie;tata=(i-1)/2;
while(i0&&A[tata]<cheie)
{ A[i]=A[tata];i=tata;A[i]=cheie;tata=(i-1)/2;} }
/***********************************************/
void main() {
char x,y;int cheie,dimensiune,max, S[100];
cout<<Indicati primul element<<endl;
cinmax;
S[0]=max;
dimensiune=0;
cout<<Intrerupem?[d/n]<<endl;
cinx;
while(x!=d){
cout<<Extragem sau inseram[e/i]<<endl;
ciny;
switch (y)
{ case e:
max=ExtrageMax( S,dimensiune );
dimensiune=dimensiune-1;
if (dimensiune=0) { cout<<heap-ul ramas este:<<endl;
for (int i=0;i<=dimensiune;i++) cout<<S[i]<< ;
cout<<endl;
cout<<Elementul maxim este = <<max<<endl;
cout<<dimensiunea<<dimensiune<<endl;}
break;
default:cout<<Introduceti cheia<<endl;
cincheie; Insereaza(S,cheie,dimensiune);
dimensiune=dimensiune+1;
cout<<dimensiunea<<dimensiune<<endl;
cout<<heap-ul este:<<endl;
for (int i=0;i<=dimensiune;i++) cout<<S[i]<< ;
60 CAPITOLUL 3. TEHNICI DE SORTARE
cout<<endl;}
cout<<Intrerupem?[d/n]<<endl;
cinx;} }
3.3 Sortarea rapida
Sortarea rapida este un algoritm care sorteaza pe loc (n spat iul alocat sirului
de intrare). Cu acest algoritm, un sir de n elemente este sortat ntr-un
timp de ordinul O(n
2
), n cazul cel mai defavorabil. Algoritmul de sortare
rapida este deseori cea mai buna solut ie practica deoarece are o comportare
medie remarcabila: timpul sau mediu de execut ie este O(nln n) si constanta
ascunsa n formula O(nln n) este destul de mica.
3.3.1 Descrierea algoritmului
Ca si algoritmul de sortare prin interclasare, algoritmul de sortare rapida
ordoneaza un sir A[p..r] folosind tehnica n..n . n nn.
Divide : Sirul A[p..r] este rearanjat n doua subsiruri nevide A[p..q] si
A[q + 1..r] astfel ncat ecare element al subsirului A[p..q] sa e mai mic sau
egal cu ecare element al subsirului A[q + 1..r] . Indicele q este calculat de
procedura de partit ionare.
Stapaneste: Cele doua subsiruri A[p..q] si A[q + 1..r] sunt sortate prin
apeluri recursive ale aalgoritmului de sortare rapida.
Combina: Deoarece cele doua subsiruri sunt sortate pe loc, sirul A[p..r] =
A[p..q] A[q + 1..r] este ordonat.
Algoritmul (intitulat QUICKSORT(A, p, r) )n pseudocod este urmatorul:
QUICKSORT(A, p, r):
//urmeaza algoritmul
daca p < r atunci
q PARTITIE(A, p, r)
QUICKSORT(A, p, q)
QUICKSORT(A, q + 1, r).
Pentru ordonarea sirului Ase apeleaza QUICKSORT(A, 1,lungime[A]).
O alta funct ie a algoritmului este funct ia PARTITIE(A, p, r) care rear-
anjeaza pe loc sirul A[p..r] , returnand si indicele q ment ionat mai sus:
PARTITIE(A, p, r)
//urmeaza funct ia
3.3. SORTAREA RAPID

A 61
x A[p]
i p
j r
cat timp i<j executa
{ repeta
jj-1
pana cand A[j]x
repeta
ii+1
pana cand A[i]x
daca i<j atunci
interschimba A[i] A[j]; jj-1}
returneaza j.
Urmeaza programul scris n C + + :
#include <iostream.h
/*************************/
int Partitie(int*A, int p, int r) { int x,y,i,j;
x=A[p];
i=p;
j=r;
while(i<j)
{ while(A[j]x)j- - ;
while (A[i]<x) i+ +;
if(i<j){ y=A[i];A[i]=A[j];A[j]=y;j- -;} }
return j;}
/*****************************/
void Quicksort(int *A, int p, int r)
{ int q;
if (p<r)
{ q= Partitie(A,p,r);
Quicksort(A,p,q);
Quicksort(A,q+1,r); } }
/******************************/
void main()
{ int *A,n;
cout<<Introduceti numarul de elemente<<endl;
cinn;
A=new int[n];
62 CAPITOLUL 3. TEHNICI DE SORTARE
for(int i=0;i<n;i++)
{ cout<<A[<<i<<]=;cin*(A+i);}
Quicksort(A,0,n-1);
for(i=0;i<n;i++)
cout<< A[<<i<<]=<<A[i];}
3.3.2 Performant a algoritmului de sortare rapida
Timpul de execut ie al algoritmului depinde de faptul ca partit ionarea este
echilibrata sau nu.
Cazul cel mai defavorabil
Vom demonstra ca cea mai defavorabila comportare a algoritmului de sortare
rapida apare n situat ia n care procedura de partit ionare produce un vector
de n 1 elemente si altul de 1 element. Mai ntai observam ca timpul
de execut ie al funct iei Partitie este O(n) . Fie T (n) timpul de execut ie
al algoritmului de sortare rapida. Avem pentru partit ionarea amintita mai
nainte, formula de recurent a
T (n) = T (n 1) +O(n) ,
de unde rezulta
T (n) =
n

k=1
O(k) = O
_
n

k=1
k
_
= O
_
n
2
_
,
adica, pentru un c > 0 sucient de mare,
T (n) cn
2
. (3.1)
Vom arata prin induct ie ca estimarea (3.1) este valabila pentru orice
partit ionare.
Sa presupunem ca partit ionare produce subvectori de dimensiuni q si nq.
Cu ipoteza de induct ie avem
T (n) = T (q) +T (n q) +O(n)
c max
1qn1
_
q
2
+ (n q)
2
_
+O(n) = c
_
n
2
2n + 2
_
+O(n) cn
2
.
3.3. SORTAREA RAPID

A 63
Cazul cel mai favorabil
Daca funct ia de partit ionare produce doi vectori de n/2 elemente, algoritmul
de sortare rapida lucreaza mult mai repede. Formula de recurent a n acest
caz
T (n) = 2T (n/2) +O(n) ,
conduce, dupa cum s-a aratat n cazul algoritmului de insert ie prin inter-
clasare la un timp de execut ie de ordinul O(nln n) .
Estimarea timpului de execut ie mediu
Timpul de execut ie mediu se denet e prin induct ie cu formula
T (n) =
1
n
n1

q=1
(T (q) +T (n q)) +O(n) .
Presupunem ca
T (n) anln n +b,
pentru un a > 0 si b > T (1) .
Pentru n > 1 avem
T (n) =
2
n
n1

k=1
T (k) +O(n)
2
n
n1

k=1
(ak ln k +b) +O(n) =
=
2a
n
n1

k=1
k ln k +
2b
n
(n 1) +O(n) .
Tinand cont de inegalitatea
n1

k=1
k ln k
1
2
n
2
ln n
1
8
n
2
,
obt inem
T (n)
2a
n
_
1
2
n
2
ln n
1
8
n
2
_
+
2b
n
(n 1) +O(n)
anln n
a
4
n + 2b +O(n) = anln n +b +
_
O(n) +b
a
4
n
_
anln n +b,
deoarece valoarea lui a poate aleasa astfel ncat
an
4
sa domine expresia
O(n) +b. Tragem deci concluzia ca timpul mediu de execut ie a algoritmului
de sortare rapida este O(nln n) .
64 CAPITOLUL 3. TEHNICI DE SORTARE
3.4 Metoda bulelor (bubble method)
Principiul acestei metode de sortare este urmatorul: pornind de la ultimul
element al sirului catre primul, se schimba ntre ele ecare element cu cel
anterior, daca elementul anterior (de indice mai mic) este mai mare.

In
felul acesta primul element al sirului este cel mai mic element. Se repeta
procedura pentru sirul format din ultimele n1 elemente si asa mai departe,
obt inandu-se n nal sirul de n elemente ordonat. Numarul de comparat ii si
deci timpul de execut ie este de ordinul O(n
2
) .
Urmeaza programul scris n C + +.
#include <iostream.h
//returneaza p,q in ordine crescatoare
/*****************************/
void Order(int *p,int *q) {
int temp;
if(*p*q) { temp=*p; *p=*q; *q=temp; } }
//Bubble sorting
void Bubble(int *a,int n)
{ int i,j;
for (i=0; i<n; i++)
for (j=n-1; i<j; j)
Order(&a[j-1],&a[j]);}
//functia principala
void main()
int i,n=10; static int a[] = { 7,3,66,3,-5,22,-77,2,36,-12} ;
cout<<Sirul initial<<endl;
for(i=0; i<n; i++)
cout<<a[i]<< ;cout<<endl;
Bubble(a,n);
cout<<Sirul sortat<<endl;
for(i=0; i<n; i++)
cout<<a[i]<< ;cout<<endl;
//Rezultatele obtinute
* Sirul initial * 7 3 66 3 -5 22 -77 2 36 -12 *
* Sirul sortat * -77 -12 -5 2 3 3 7 22 36 66 *
Capitolul 4
Tehnici de cautare
4.1 Algoritmi de cautare
Vom presupune ca n memoria calculatorului au fost stocate un numar de n
nregistrari si ca dorim sa localizam o anumita n:j.:n:. Ca si n cazul
sortarii , presupunem ca ecare nregistrare cont ine un camp special, numit
|.. Colect ia tuturor nregistrarilor se numeste nh| sau .:. Un grup
mai mare de siere poarta numele de hn.n n nn.

In cazul unui n|j:.n n nn: se considera un anumit argument K, iar


problema este de a cauta acea nregistrare a carei cheie este tocmai K. Sunt
posibile doua cazuri: nn:n {:.n), candnregistrarea cu cheia
avuta n vedere este depistata, sau nn:n ]n:n {n:.n), cand
cheia niciunei nregistrari nu coincide cu cheia dupa care se face cautarea.
Dupa o cautare fara succes, uneori este de dorit sa inseram o nouanregistrare,
cont inand cheia K n tabel; metoda care realizeaza acest lucru se numeste
algoritmul de nn: . .n: ..
Desi scopul cautarii este de a aa informat ia din nregistrarea asociata
cheii K, algoritmii pe care i vom prezenta n continuare, t in n general cont
numai de cheie, ignorand celelalte campuri.

In multe programe cautarea este partea care consuma cel mai mult timp,
de aceea folosirea unui bun algoritm de cautare se reecta n sporirea vitezei
de rulare a programului.
Exista de asemenea o importanta interact iune ntre sortare si cautare,
dupa cum vom vedea n cele ce urmeaza.
65
66 CAPITOLUL 4. TEHNICI DE C

AUTARE
4.1.1 Algoritmi de cautare secvent iala (pas cu pas)
Algoritmul S (cautare secvent iala). Fiind dat un tabel de nregistrari
R
1
, R
2
, ..., R
n
, n 1, avand cheile corespunzatoare K
1
, K
2
, ..., K
n
, este cautata
nregistrarea corespunzatoare cheii K. Vom mai introduce o nregistrare c-
tiva R
n+1
cu proprietatea ca valoarea cheii K
n+1
este atat de mare ncat K nu
va capata nici-o data aceasta valoare (punem formal K
n+1
= ). Urmeaza
algoritmul scris n pseudocod
i0
Executa
ii+1
Cat timp in si K ,= K
i
Daca K = K
i
cautarea a avut succes
Altfel, cautarea nu a avut succes.

In cazul n care cheile sunt ordonate crescator, o varianta a algoritmului


de cautare secvent iala este
Algoritmul T (cautare secvent iala ntr-un tabel ordonat):
i0
Executa
ii+1
Cat timp in si K K
i
Daca K = K
i
cautarea a avut succes
Altfel, cautarea nu a avut succes.
Sa notam cu p
i
probabilitatea ca sa avem K = K
i
, unde p
1
+p
2
+...+p
n
=
1. Daca probabilitat ile sunt egale, n medie, algoritmul S consuma acelasi
timp ca si algoritmul T pentru o cautare cu succes. Algoritmul T efectueaza
nsa n medie de doua ori mai repede cautarile fara succes.
Sa presupunem mai departe ca probabilitat ile p
i
nu sunt egale. Timpul
necesar unei cautari cu succes este proport ional cu numarul de comparat ii,
care are valoarea medie
C
n
= p
1
+ 2p
2
+... + 3p
n
.
Evident, C
n
ia cea mai mica valoare atunci cand p
1
p
2
... p
n
, adica
atunci cand cele mai utilizate nregistrari apar la nceput. Daca p
1
= p
2
=
... = p
n
= 1/n, atunci
C
n
=
n + 1
2
.
4.1. ALGORITMI DE C

AUTARE 67
O repartit ie interesanta a probabilitat ilor este |jn |. Z.] care a observat ca
n limbajele naturale, cuvantul aat pe locul n n ierarhia celor mai utilizate
cuvinte apare cu o frecvent a invers proport ionala cu n:
p
1
=
c
1
, p
2
=
c
2
, ..., p
n
=
c
n
, c =
1
H
n
, H
n
= 1 +
1
2
+... +
1
n
.
Daca legea lui Zipf guverneaza frecvent a cheilor ntr-un tabel, atunci
C
n
=
n
H
n
iar cautarea ntr-o astfel de circumstant a, este de circa
1
2
ln n ori mai rapida
decat cautarea n cazul general.
4.1.2 Cautarea n tabele sortate (ordonate)

In cele ce urmeaza vom discuta algoritmi de cautare pentru tabele ale caror
chei sunt ordonate. Dupa compararea cheii date K cu o cheie K
i
a tabelului,
cautarea continua n trei moduri diferite dupa cum K < K
i
, K = K
i
sau
K > K
i
. Sortarea tabelelor (listelor) este recomandabila n cazul cautarilor
repetate. De aceea n aceasta subsect iune vom studia metode de cautare n
tabele ale caror chei sunt ordonate K
1
< K
2
< ... < K
n
. Dupa compararea
cheilor K si K
i
ntr-o tabela ordonata putem avea K < K
i
(caz n care
R
i
, R
i+1
, ..., R
n
nu vor mai luate n considerat ie), K = K
i
(n acest caz
cautarea se termina cu succes) sau K > K
i
(caz n care R
1
, R
2
, ..., R
i
nu vor
mai luate n considerat ie).
Faptul ca o cautare, chiar fara succes duce la eliminarea unora din cheile
cu care trebuie comparata K, duce la o ecientizare a cautarii.
Vom prezenta mai departe un algoritm general de cautare ntr-un tabel
sortat. Fie S = K
1
< K
2
< ... < K
n
stocata ntr-un vector K [1..n], adica
K [i] = K
i
si e o cheie a. Pentru a decide daca a S, comparam a cu un
element al tabelului si apoi continuam cu partea superioara sau cea inferioara
a tabelului. Algoritmul (numit n cele ce urmeaza algoritmul B) scris n
pseudocod este:
prim1
ultimn
urmatorun ntreg n intervalul [prim,ultim]
executa
68 CAPITOLUL 4. TEHNICI DE C

AUTARE
{ daca a<K[urmator] atunci ultimurmator-1
altfel primprim+1
urmatorun ntreg n intervalul [prim,ultim]}
cat timp a,=K[urmator] si ultim prim
daca a=K[urmator] atunci avem nn:
altfel avem nn: ]n:n .

In cazul n care un ntreg n intervalul [prim,ultim]=prim spunem


ca avem o nn: |.n.n:n.
Daca unntregn intervalul [prim,ultim]=(prim+ultim)/2| spunem
ca avem o nn: h.nn:n.
Amintim ca folosim notat ia | pentru partea ntreaga a unui numar, n
timp ce | are urmatoarea semnicat ie
a| =
_
a dac a a este ntreg,
a| + 1 dac a a nu este ntreg.
Prezentamn continuare un proiect pentru cautarea ntr-o lista ordonata
(cu relat ia de ordine lexicograca) de nume, pentru a aa pe ce pozit ie se aa
un nume dat. Proiectul cont ine programele cautare.cpp, fcautare.cpp (n
care sunt descrise funct iile folosite de cautare.cpp) si sierul de nume scrise
n ordine lexicograca search.dat.
/******************cautare.cpp**********/
#include <stdio.h
#include <string.h
#include <io.h
typedef char Str20[21]; //Nume de lungime 20
extern Str20 a[], cheie; //vezi fcautare.cpp
char DaNu[2], alegere[2];
int marime, unde, cate;
void GetList() {
FILE *fp;
fp=fopen(search.dat,r);
marime=0;
while (!feof(fp)) {
fscanf(fp, s, a[marime]);
marime++;
}
fclose(fp);
4.1. ALGORITMI DE C

AUTARE 69
printf(numarul de nume in lista = %dn

, marime
//functii implementate in fcautare.cpp
void GasestePrimul(int, int *);
void GasesteToate(int, int *);
void Binar(int, int, int *);
void main() {
GetList(); // citeste numele din sier
strcpy(DaNu,d);
while (DaNu[0]==d)
printf( Ce nume cautati? ); scanf(%s, cheie);
//Se cere tipul cautarii
printf( Secventiala pentru (p)rimul, (t)oate, ori (b)inara? );
scanf(%s,alegere);
switch(alegere[0]) {
case t:
GasesteToate(marime,
if (cate0)
printf(%d aparitii gasite.n

, cate);
else
printf( %s nu a fost gasit.n

, cheie);
break;
case b:
Binar(0,marime-1,
if (unde0)
printf( %s gasit la pozitia %d.n

, cheie, unde);
else
printf( %s nu a fost gasit.n

, cheie);
break;
case p:
GasestePrimul(marime,
if (unde0)
printf( %s gasit la pozitia %d.n

, cheie, unde);
else
printf( %s nu a fost gasit.n

, cheie);
printf( Inca o incercare (d/n)? ); scanf(%s, DaNu);
}
}
/******fcautare.cpp****************************/
70 CAPITOLUL 4. TEHNICI DE C

AUTARE
/******************************************
!* Functii de cautare intr-o lista de nume *
!* ce urmeaza a folosite de programul Cautare.cpp. *
/*****************************************/
#include <string.h
#include <stdio.h
typedef char Str20[21]; //Nume de lungimea 20
Str20 a[100], cheie;
void GasestePrimul(int marime, int *unde) {
// Cautare secventiala intr-o lista de nume pentru
// a aa prima aparitie a cheii.
int iun;
iun=0;
while (strcmp(a[iun],cheie)!=0
if (strcmp(a[iun],cheie)!=0) iun=-1;
*unde = iun+1;
}
void GasesteToate(int marime, int *cate) {
// Cautare secventiala intr-o lista de nume pentru
// a aa toate aparitiile cheii.
int cat, i;
cat=0;
for (i=0; i<marime; i++)
if (strcmp(a[i],cheie)==0) {
printf( %s pe pozitia %d.n

, cheie, i + 1);
cat++;
}
*cate = cat;
}
void Binar(int prim, int ultim, int *unde) {
// Cautare binara intr-o lista ordonata pentru o aparitie
// a cheii specicate. Se presupune ca prim<ultim.
int urmator, pr, ul, iun;
pr=prim; ul=ultim; iun=-1;
while (pr <= ul
urmator=(pr+ul) / 2;
if (strcmp(a[urmator],cheie)==0)
iun=urmator;
4.1. ALGORITMI DE C

AUTARE 71
else if (strcmp(a[urmator],cheie) 0)
ul=urmator-1;
else
pr=urmator+1; }
*unde = iun+1;
}
4.1.3 Arbori de decizie asociat i cautarii binare
Pentru a nt elege mai bine ce se ntampla n cazul algoritmului de cautare
binara, vom construi n:h:| n n... n.n nn:.. h.nn:.
Arborele binar de decizie corespunzator unei cautari binare cu nnregistrari
poate construit dupa cum urmeaza:
Daca n = 0, arborele este format din frunza [0]. Altfel nodul radacina este
n/2| , subarborele stang este arborele binar construit asemanator cu n/2|
1 noduri iar subarborele drept este arborele binar construit asemanator cu
n/2| noduri si cu indicii nodurilor incrementat i cu n/2| . Am avut n vedere
numai nodurile interne corespunzatoare unei cautari cu succes.
Prezentam mai jos un arbore de cautare binara pentru n = 16 (gura
4.1).
Figura 4.1: Arbore de cautare binara
72 CAPITOLUL 4. TEHNICI DE C

AUTARE
Prima comparat ie efectuata este K : K
8
care este reprezentata de nodul
(8) din gura. Daca K < K
8
, algoritmul urmeaza subarborele stang iar daca
K > K
8
, este folosit subarborele drept. O cautare fara succes va conduce la
una din frunzele numerotate de la 0 la n; de exemplu ajungem la frunza [6]
daca si numai daca K
6
< K < K
7
.
4.1.4 Optimalitatea cautarii binare
Vom face observat ia ca orice arbore binar cu n noduri interne (etichetate
cu (1) , (2) , (3) , ... (n))si deci n + 1 frunze (etichetate cu [0] , [1] , [2] ,
... [n 1] , [n]), corespunde unei metode valide de cautare ntr-un tabel
ordonat daca parcurs n ordine simetrica obt inem [0] (1) [1] (2) [2] (3)
... [n 1] (n) [n] . Nodul intern care corespunde n Algoritmul B lui
urmator[prim,ultim] va radacina subarborelui care are pe [ultim] drept
cea mai din dreapta frunza iar pe [prim] drept cea mai din stanga frunza.
De exemplu n gura 4.2, a) urmator[0,4]=2, urmator[3,4]=4, pe cand
n gura 4.2, b) urmator[0,4]=1, urmator[3,4]=4.
Figura 4.2: Arbori de cautare
Vom demonstra n cele ce urmeaza ca ntre arborii de decizie asociat i
algoritmului B de cautare, cei optimi sunt arborii corespunzatori cautarii
binara. Vom introduce mai ntai doua numere ce caracterizeaza arborele T:
4.1. ALGORITMI DE C

AUTARE 73
E (T) , |nj.nn n:n:.|: .:n ale arborelui reprezinta suma lungimilor
drumurilor (numarul de muchii) care unesc frunzele arborelui cu radacina iar
I (T) , |nj.nn n:n:.|: .n:n ale arborelui reprezinta suma lungimilor
drumurilor care unesc nodurile interne cu radacina. De exemplu n gura
4.2, a) E (T) = 2 + 2 + 2 + 3 + 3 = 12, I (T) = 1 + 1 + 2 = 4 iar n gura
4.2, b) E (T) = 1 + 2 + 3 + 4 + 4 = 14, I (T) = 1 + 2 + 3 = 6.

In continuare
ne va necesara
Lema 3. 1nn T n n:h: h.nn: n| n nnn N ]:n.. nn.
E (T) n.n.n nnn . nnn. nnn n ]:n.| |. T nn | n|
nn n.| n. { 2
q
N ]:n. n.|| q 1 . 2N 2
q
]:n.
n.|| q. nn q = log
2
N| , n.|| :nnn.n.. .nn 0).
1nn:n .. Sa presupunem ca arborele binar T are frunzele u si v (e
x tatal lor), pe nivelul L iar frunzele y si z pe nivelul l astfel ca L l 2.
Vom construi un alt arbore binar T
1
(vezi gura 4.3) transferand pe u si v
Figura 4.3: Optimizarea lungimii drumurilor externe
pe nivelul l + 1 ca i ai lui y; x devine frunza iar y nod intern. Rezulta ca
E (T) E (T
1
) = 2L (L 1) +l 2 (l + 1) = L l 1 1,
si deci T nu poate avea o lungime a drumurilor externe minima. Deci T are
toate frunzele pe un singur nivel daca N este o putere a lui 2 sau, altfel, pe
doua nivele consecutive q 1 si q. unde q = log
2
N| .
74 CAPITOLUL 4. TEHNICI DE C

AUTARE
Medoda de construire a arborilor binari de decizie asociat algoritmului B
conduce la
Lema 4. 1nn 2
k1
n < 2
k
, nn: ]|.nn n|j:.n|
B n.n | n| k nn:n ... 1nn n = 2
k
1, nn: ]n:n
n.n k nn:n .. .n: nnn 2
k1
n < 2
k
1. nn: ]n:n
n.n n k 1 n k nn:n ... .nn nnnnn n n: n = 2
k
1
n ]:n.| n:h:|. h.nn: n.n n|j:.n|. B n n.|| k .n:
n: 2
k1
n < 2
k
1 ]:n.| jn n.|| k 1 . k.
1nn:n .. Lema este adevarata pentru k = 1. Fie k 2 si sa
presupunem (ipoteza de induct ie) ca teorema este adevarata pentru orice
2
k1
n < 2
k
. Daca 2
k
n < 2
k+1
vom avea doua cazuri: (I) n este impar,
adica n = 2p + 1; (II) n este par adica n = 2p, unde p N, p 1.
Cazul (I): Radacina arborelui binar T, corespunzator algoritmului B are
eticheta p + 1 iar subarborele stang T
l
si subarborele drept T
r
cont in cate p
noduri interne. Din relat ia
2
k
2p + 1 < 2
k+1
,
rezulta ca
2
k1
p < 2
k
.
Aplicand ipoteza de induct ie ambilor subarbori T
l
si T
r
avemh(T
l
) = h(T
r
) =
k deci h(T) = k + 1, nalt imea lui T ind numarul maxim de comparat ii
ale cheilor efectuate de algoritmul B n cazul unei cautari cu succes. Daca
p = 2
k
1 toate frunzele lui T
l
si T
r
se aa pe nivelul k, deci daca n =
2p + 1 = 2
k+1
1 toate frunzele lui T se vor aa pe nivelul k + 1. Daca
2
k1
p < 2
k
1, ceea ce implica 2
k
n < 2
k+1
1, cum (cu ipoteza de
induct ie) atat T
l
cat si T
r
au frunzele pe nivelele k 1 sau k, deducem ca T
va avea frunzele pe nivelele k sau k + 1.
Cazul (II):

In acest caz radacina arborelui binar are eticheta p, T
l
are
p 1 noduri interne iar T
r
are p noduri interne. Cum 2
k
2p < 2
k+1
rezulta
ca 2
k1
p < 2
k
. Avem de asemenea 2
k1
p 1 < 2
k
n afara cazului
cand p = 2
k1
si deci n = 2
k
.

In acest ultim caz arborele T este asemanator
cu arborele din gura 4.1: el are h(T) = k + 1, N 1 frunze pe nivelul k si
doua frunze pe nivelul k + 1; teorema a fost demonstrata direct n aceasta
circumstant a (n = 2
k
). Ne mai ramane sa consideram cazul 2
k
< n < 2
k+1
.
Cu ipoteza de induct ie deducem ca h(T
l
) = h(T
r
) = k deci h(T) = k +1 iar
algoritmul B necesita cel mult k + 1 comparat ii pentru o cautare cu succes.
4.1. ALGORITMI DE C

AUTARE 75
Cum n este par, n ,= 2
s
1, s 1, avem de aratat ca frunzele lui T se aa
pe nivelele k sau k + 1. Aceasta rezulta din aplicarea ipotezei de induct ie la
subarborii T
l
si T
r
care au p 1 respectiv p noduri interne.

Intr-adevar, cum
p 1 ,= 2
k
1 rezulta ca frunzele lui T
l
se aa pe nivelele k 1 sau k. Pentru
T
r
toate frunzele se aa e pe nivelul k (daca p = 2
k
1) e pe nivelele k 1
sau k. Rezulta ca frunzele lui T se aa pe nivelele k sau k + 1.
Deducem ca numarul de comparat ii n cazul unei cautari (cu sau fara
succes) este de cel mult log
2
N| + 1.
Vom demonstra n continuare
Lema 5. 1n: :. n:h: h.nn: n| T n.]nn :|n .n
E (T) = I (T) + 2N,
nn N ::..nn nnn:| n nn:. .n:n n| |. T.
1nn:n .. Sa presupunem ca arborele binar T are
j
noduri interne
si
j
noduri externe (frunze) la nivelul j; j = 0, 1, ... (radacina este la nivelul
0). De exemplu n gura 4.2, a) avem (
0
,
1
,
2
, ...) = (1, 2, 1, 0, 0, ...) ,
(
0
,
1
,
2
, ...) = (0, 0, 3, 2, 0, 0, ...) iar n gura 4.2, b) avem (
0
,
1
,
2
, ...) =
(1, 1, 1, 1, 0, 0, ...) , (
0
,
1
,
2
, ...) = (0, 1, 1, 1, 2, 0, 0, ...) .
Consideram funct iile generatoare asociate acestor siruri
A(x) =

j=0

j
x
j
, B(x) =

j=0

j
x
j
,
unde numai un numar nit de termeni sunt diferit i de 0. Este valabila relat ia
2
j1
=
j
+
j
, j = 0, 1, ...,
deoarece toate cele
j1
noduri interne de la nivelul j 1 au ecare n parte
cate 2 i pe nivelul k si numarul total al acestor i este
j
+
j
. Rezulta de
aici ca
A(x) +B(x) =

j=0
(
j
+
j
) x
j
=
0
+
0
+

j=1
(
j
+
j
) x
j
=
= 1 + 2

j=1

j1
x
j
= 1 + 2x

j=1

j1
x
j1
= 1 + 2x

j=0

j
x
j
,
adica
A(x) +B(x) = 1 + 2xA(x) . (4.1)
76 CAPITOLUL 4. TEHNICI DE C

AUTARE
Pentru x = 1 se obt ine B(1) = 1 + A(1), dar B(1) =

j=0

j
este
numarul de frunze ale lui T iar A(1) =

j=0

j
este numarul de noduri
interne, deci numarul de noduri interne este cu 1 mai mic decat numarul de
nodduri externe. Derivand relat ia (4.1) obt inem
A

(x) +B

(x) = 2A(x) + 2xA

(x) ,
B

(1) = 2A(1) +A

(1) .
Cum A(1) = N, A

(1) =

j=0
j
j
= I (T) , B

(1) =

j=0
j
j
= E (T) ,
deducem relat ia
E (T) = I (T) + 2N. (4.2)
Reprezentarea sub forma de arbore binar a algoritmului binar de cautare
B, ne sugereaza cum sa calculam ntr-un mod simplu numarul mediu de
comparat ii. Fie C
N
numarul mediu de comparat ii n cazul unei cautari reusite
si e C

N
numarul mediu de cautari n cazul unei ncercari nereusite. Avem
C
N
= 1 +
I (T)
N
, C

N
=
E (T)
N + 1
. (4.3)
Din (4.2) si (4.3) rezulta
C
N
=
_
1 +
1
N
_
C

N
1. (4.4)
Rezulta ca C
N
este minim daca si numai daca C

N
este minim, ori dupa
cum am aratat mai nainte acest lucru se ntampla atunci si numai atunci
cand frunzele lui T se aa pe cel mult doua nivele consecutive. Cum lemei 2
arborele asociat cautarii binare satisface aceasta ipoteza, am demonstrat:
Teorema 6. nn:n h.nn:n .nn n n| n n.n.n..n.n
nnn:| nn. n nn:n .. .nn.]:n n :.n nn:...
4.2 Arbori binari de cautare
Am demonstrat n sect iunea precedenta ca pentru o valoare data n, arborele
de decizie asociat cautarii binare realizeaza numarul minim de comparat ii
necesare cautarii ntr-un tabel prin compararea cheilor. Metodele prezentate
n sect iunea precedenta sunt potrivite numai pentru tabele de marime xa
deoarece alocarea secvent iala a nregistrarilor face operat iile de insert ie si
4.2. ARBORI BINARI DE C

AUTARE 77
stergere foarte costisitoare.

In schimb, folosirea unei structuri de arbore
binar faciliteaza insert ia si stergerea nregistrarilor, facand cautarea n tabel
ecienta.
1n. .. 1n n:h: h.nn: n nn: n: n| .nn
S = x
1
< x
2
< ... < x
n

n n:h: h.nn: n nn:. v


1
, v
2
, ..., v
n
. . nn:. n .|n
|nn n| |. S. nn.n ..n ]n . .n,.n
CONTINUT : v
1
, v
2
, ..., v
n
S.
1.|n:n n:n.n :n.nn. nn.n n n.| n n: v
i
n nn n|
hn:h:|. nnj nn: .n nnn n:h:|. :nnn.nn v
k
,nn.
CONTINUT (v
i
) < CONTINUT (v
k
)
.n: n n.| n n: v
j
n nn n| hn:h:|. n: nn: .n nnn n:h:|.
:nnn.nn v
k
,nn.
CONTINUT (v
k
) < CONTINUT (v
j
) .
O denit ie echivalenta este urmatoarea : :n:n: n :n.n .n:.n
n n. n:h: h.nn: n nn: n: n| .nn S ::n :n.nn S.
Prezentam mai jos un program de insert ie si stergere a nodurilor ntr-un
arbore binar de cautare.
# include<iostream.h
# include<stdlib.h
int cheie;
struct nod{ int inf; struct nod *st, *dr;} *rad;
/*********************************************/
void inserare(struct nod**rad)
{ if(*rad==NULL)
{ *rad=new nod;(*rad)-inf=cheie;
(*rad)-st=(*rad)-dr=NULL;return;}
if(cheie<(*rad)-inf) inserare(&(*rad)-st);
else if(cheie(*rad)-inf) inserare(&(*rad)-dr);
else cout<<cheie<< exista deja in arbore.;}
/************************************************/
void listare(struct nod *rad,int indent)
78 CAPITOLUL 4. TEHNICI DE C

AUTARE
{ if(rad){ listare(rad-st, indent+1);
cheie=indent;
while(cheie) cout<< ;
cout<<rad-inf;
listare(rad-dr,indent+1);} }
/***********************************************/
void stergere(struct nod**rad)
{ struct nod*p,*q;
if(*rad==NULL)
{ cout<<Arborele nu contine <<cheie<<endl;return;}
if(cheie<(*rad)-inf) stergere(&(*rad)-st);
if(cheie(*rad)-inf) stergere(&(*rad)-dr);
if(cheie==(*rad)-inf)
{ if((*rad)-dr==NULL)
{ q=*rad;*rad=q-st; delete q;}
else
if((*rad)-st==NULL)
{ q=*rad;*rad=q-dr; delete q;}
else
{ for(q=(*rad),p=(*rad)-st;p-dr;q=p,p=p-dr);
(*rad)-inf=p-inf;
if((*rad)-st==p)(*rad)-st=p-st;
else q-dr=p-st; delete p;} } }
/*************************************************/
void main()
{ rad=new nod;
cout<<Valoarea radacinii este:;cinrad-inf;
rad-st=rad-dr=NULL;
do{
cout<<Operatia:Listare(1)/Inserare(2)/Stergere(3)/Iesire(0);
cout<<endl;
cincheie;if(!cheie) return;
switch(cheie)
{ case 1:listare(rad,1);cout<<endl; break;
case 2: cout<<inf=;cincheie;inserare(&rad);break;
case 3: cout<<inf=;cincheie;stergere(&rad);break;}
} while(rad);
cout<<Ati sters radacina<<endl;}
4.2. ARBORI BINARI DE C

AUTARE 79
Dupa cum se observa din program, ideea insert iei n arborele binar de
cautare este urmatoarea: daca arborele este vid, se creaza un arbore avand
drept unic nod si radacina nodul inserat; altfel se compara cheia nodului
inserat cu cheia radacinii. Daca avem cheia nodului inserat mai mica decat
cheia radacinii, se trece la subarborele stang si se apeleaza recursiv proce-
dura de inserare, altfel se trece la subarborele drept si se apeleaza recursiv
procedura.
Procedura prezentata n program de stergere a unui nod din arborele bi-
nar de cautare este de asemenea recursiva.

In cazul n care cheia nodului
ce urmeaza a sters este mai mica decat cheia radacinii, se trece la sub-
arborele stang si se apeleaza recursiv procedura de stergere; altfel se trece
la subarborele drept si se apeleaza recursiv procedura de stergere.

In cazul
n care nodul ce urmeaza a sters este chiar radacina vom avea mai multe
posibilitati: a) subarborele drept este vid: se sterge radacina iar ul stang
al radacinii devine noua radacina; b) subarborele stang este vid: se sterge
radacina iar ul drept al radacinii devine noua radacina; c) radacina are ambii
i; n acest se sterge cel mai din dreapta descendent al ului stang al radacinii
iar informat ia (cheia) acestuia nlocuieste informat ia (cheia) radacinii, ul
stang al nodului eliminat devine totodata ul drept al tatalui nodului elimi-
nat. Daca ul stang al radacinii nu are u drept, atunci el este cel eliminat,
informat ia lui nlocuieste informat ia radacinii iar ul lui stang devine ul
stang al radacinii (gura 4.4).
Algoritmul de cautare, dupa o anumita cheie, ntr-un arbore de cautare
este n esent a urmatorul: comparam cheia nregistrarii cautate cu cheia
radacinii. Daca cele doua chei coincid cautarea este reusita. Daca cheia
nregistrarii este mai mica decat cheia radacinii continuam cautarea n sub-
arborele stang iar daca este mai mare n subarborele drept.
De foarte multe ori este util sa prezentam arborii binari de cautare ca n
gura 4.5.
Aici arborele binar de cautare este prezentat ca un arbore complet n
care informat iile (cheile) sunt stocate n cele N noduri interne iar informat ia
ecarui nod extern (frunza) este intervalul deschis dintre doua chei consecu-
tive, astfel ncat, daca x
i
, x
i+1
sunt doua chei consecutive si vrem sa cautam
nodul ce cont ine cheia a cu a (x
i
, x
i+1
) sa m condusi aplicand algoritmul
de cautare (ntr-un arbore binar de cautare) la frunza etichetata cu (x
i
, x
i+1
) .
Vom arata ca nalt imea medie a unui arbore binar de cautare este de
ordinul O(ln N) (N este numarul nodurilor interne) si cautarea necesita n
medie circa 2 ln N 1, 386 log
2
N comparat ii n cazul n care cheile sunt
80 CAPITOLUL 4. TEHNICI DE C

AUTARE
Figura 4.4: Stergerea radacinii unui arbore binar de cautare
Figura 4.5: Arbore binar de cautare
4.3. ARBORI DE C

AUTARE PONDERATI (OPTIMALI) 81


inserate n arbore n mod aleator. Sa presupunem ca cele N! ordonari posi-
bile ale celor N chei corespund la N! modalitat i de insert ie. Numarul de
comparat ii necesare pentru a gasi o cheie este exact cu 1 mai mare decat
numarul de comparat ii efectuate atunci cand cheia a fost inserata n arbore.
Notand cu C
N
numarul mediu de comparat ii pentru o cautare reusita si cu
C

N
numarul mediu de comparat ii pentru o cautare nereusita avem
C
N
= 1 +
C

0
+C

1
+... +C

N1
N
,
pentru ca nainte de reusita cautarii vom avea cautari nereusite n mult imi
de 0, 1, ..., n 2 sau n 1 elemente. Tinand cont si de relat ia
C
N
=
_
1 +
1
N
_
C

N
1,
deducem
(N + 1) C

N
= 2N +C

0
+C

1
+... +C

N1
.
Scazand din aceasta ecuat ie urmatoarea ecuat ie
NC

N1
= 2 (N 1) +C

0
+C

1
+... +C

N2
obt inem
(N + 1) C

N
NC

N1
= 2 +C

N1
C

N
= C

N1
+
2
N + 1
.
Cum C

0
= 0 deducem ca
C

N
= 2H
N+1
2,
de unde
C
N
= 2
_
1 +
1
N
_
H
N+1
3
2
N
2 ln N.
4.3 Arbori de cautare ponderat i (optimali)

In cele ce urmeaza vom asocia ecarui element din mult imea ordonata S
cate o pondere (probabilitate). Ponderile mari indica faptul ca nregistrarile
corespunzatoare sunt importante si frecvent accesate; este preferabil de aceea
82 CAPITOLUL 4. TEHNICI DE C

AUTARE
ca aceste elemente sa e cat mai aproape de radacina arborelui de cautare
pentru ca accesul la ele sa e cat mai rapid.
Sa analizam n continuare problema gasirii unui arbore optimal. De ex-
emplu, Fie N = 3 si sa presupunem ca urmatoarele chei K
1
< K
2
< K
3
au probabilitat ie p, q respectiv r. Exista 5 posibili arbori binari de cautare
avand aceste chei drept noduri interne (gura 4.6).
Figura 4.6: Arbori posibili de cautare si numarul mediu de comparat ii pentru
o cautare reusita
Obt inem astfel 5 expresii algebrice pentru numarul mediu de comparat ii
ntr-o cautare. Cand N este mare, este foarte costisitor sa construim tot i
arborii de cautare pentru a vedea care din ei este cel optim. Vom pune de
aceea n evident a un algoritm de gasire al acestuia.
Fie S = K
1
< K
2
< ... < K
N
. Fie p
i
0, i = 1, ..., N probabilitatea de
cautare a cheii a = K
i
si q
j
0, j = 0, 1, ...N probabilitatea de cautare a
cheii a (K
j
, K
j+1
) (punem K
0
= si K
N+1
= ). Avem deci
N

i=1
p
i
+
N

j=0
q
j
= 1.
(2N + 1) - tuplul (q
0
, p
1
, q
1
, ..., p
N
, q
N
) se numeste n.:.h .n :hnh.|.n .|:
{nn:.|:) n nn: {n). 1. T un arbore de cautare pentru S, e
T
i
4.3. ARBORI DE C

AUTARE PONDERATI (OPTIMALI) 83


adancimea (nivelul) nodului intern i (al i - lea nod intern n ordine simet-
rica) si e
T
j
adancimea frunzei j (al (j + 1) lea nod extern sau frunza
(K
j
, K
j+1
)).
Sa consideram o cautare a cheii a. Daca a = K
i
, vom compara a cu

T
i
+ 1 elemente din arbore; daca K
j
< a < K
j+1
, atunci vom compara a cu

T
j
elemente din arbore. Asadar
POND(T) =
N

i=1
p
i
_

T
i
+ 1
_
+
N

j=0
q
j

T
j
,
este nnn:| nn. n nn:n .. n: nn:. POND(T) este |nj.nn
nn:nn n n:n:.|: n:h:|. T (sau | |. T :|n. |n n.:.h .
nnn n :hnh.|.n .|: n nn:).
Vom considera POND(T) drept indicator de baza pentru ecient a operat iei
de cautare (acces) deoarece numarul asteptat de comparat ii ntr-o cautare
va proport ional cu POND(T). De exemplu, n cazul arborelui din gura
4.6 b) (unde n loc de p, q, r punem p
1
, p
2
, p
3
) avem

1
= 1,
2
= 2
3
= 0,
0
= 2,
1
= 3,
2
= 3,
3
= 1
si deci
POND(T) = 2q
0
+ 2p
1
+ 3q
1
+ 3p
2
+ 3q
2
+p
3
+q
3
.
(Vom omite indicele T cand este clar din context la ce arbore ne referim.)
1n. .. .:h:| n nn: T n| .nn :nnnn S n.:.h .n
nn:.|: n nn: (q
0
, p
1
, q
1
, ..., p
N
, q
N
). optimal nnn POND(T)
{| n:h:|. n |nj.nn nn:nn n n:n:.|: n:h:|.) n.n.n
n :n: :.| |:|n| . n:h:. n nn: S.
Vom prezenta mai departe un algoritm de construire a unui arbore de
cautare optimal. Fie un arbore de cautare peste S avand nodurile interne
etichetate cu 1, 2, ..., N (corespunzator cheilor K
1
, ..., K
N
) si frunzele etichetate
cu 0, 1, ..., N (corespunzand lui (, K
1
) , (K
1
, K
2
) , ..., (K
N1
, K
N
) , (K
N
, )). Un
subarbore al acestuia ar putea avea nodurile interne i + 1, ..., j si frunzele
i, ..., j pentru 0 i, j n, i < j. Acest subarbore este la randul sau ar-
bore de cautare pentru mult imea cheilor K
i+1
< ... < K
j
. Fie k eticheta
radacinii subarborelui.
Fie costul acestui subarborePOND(i, j)si j:nn n:
GREUT (i, j) = p
i+1
+... +p
j
+q
i
+... +q
j
,
84 CAPITOLUL 4. TEHNICI DE C

AUTARE
de unde rezulta imediat ca
GREUT (i, j) = GREUT (i, j 1) +p
j
+q
j
, GREUT (i, i) = q
i
.
Avem relat ia
POND(i, j) = GREUT (i, j) +POND(i, k 1) +POND(k, j) .

Intr-adevar, subarborele stang al radacini k are frunzele i, i + 1, ..., k 1,


iar subarborele drept are frunzele k, k + 1, ..., j, si nivelul ecarui nod din
subarborele drept sau stang este cu 1 mai mic decat nivelul aceluiasi nod n
arborele de radacina k. Fie C (i, j) = min POND(i, j) costul unui subarbore
optimal cu ponderile p
i+1
, ..., p
j
; q
i
, ..., q
j
. Rezulta atunci pentru i < j :
C (i, j) = GREUT (i, j) + min
i<kj
(C (i, k 1) +C (k, j)) ,
C (i, i) = 0.
Pentru i = j + 1 rezulta imediat ca
C (i, i + 1) = GREUT (i, i + 1) , k = i + 1.
Plecand de la aceste relat ii prezentam mai jos un program, scris n limba-
jul C de construire a unui arbore optimal. Campul informat iei ecarui nod
cont ine un caracter (litera) iar acestea se considera ordonate dupa ordinea
citirii.
/***********************************************/
#include<stdio.h
#include<stdlib.h
#include <io.h
# dene N 25
struct nod { char ch; struct nod *st,*dr;} *rd;
char chei[N];
//cheile de cautare se considera ordonate dupa ordinea citirii
int i,nr;
int p[N-1];/*ponderile cheilor*/
int q[N];
/*ponderile informat iilor aate intre 2 chei consecutive*/
int c[N][N], greut[N][N], rad[N][N];
FILE*f;
4.3. ARBORI DE C

AUTARE PONDERATI (OPTIMALI) 85


/****Functia de calcul a greutatii si costului**********/
void calcul()
{ int x,min,i,j,k,h,m;
for(i=0;i<=nr;i++)
{ greut[i][i]=q[i];
for(j=i+1;j<=nr;j++)
greut[i][j]=greut[i][j-1]+p[j]+q[j];}
for(i=0;i<=nr;i++) c[i][i]=q[i];
for(i=0;i<nr;i++)
{ j=i+1;
c[i][j]=greut[i][j];
rad[i][j]=j;}
for(h=2;h<=nr;h++)
for(i=0;i<=nr-h;i++)
{ j=i+h;m=rad[i][j-1];
min=c[i][m-1]+c[m][j];
for(k=m+1;k<=rad[i+1][j];k++)
{ x=c[i][k-1]+c[k][j];
if(x<min)m=k;min=x;} }
c[i][j]=min+greut[i][j];
rad[i][j]=m;} }
/****Functia de generare a arborelui optimal****/
struct nod *arbore(int i, int j)
{ struct nod *s;
if(i==j) s=NULL;
else{ s=new nod;
s-st=arbore(i,rad[i][j]-1);
s-ch=chei[rad[i][j]];
s-dr=arbore(rad[i][j],j);}
return s;}
/****** Functia de listare indentata a nodurilor arborelui*****/
void listare(struct nod*r, int nivel)
{ int i;
if(r){ listare(r-dr,nivel+1);i=nivel;
while(i) printf( );
printf(%cn

, r >ch);
listare(r-st, nivel+1);} }
Functiaprincipala
86 CAPITOLUL 4. TEHNICI DE C

AUTARE
void main() { f=fopen(arboptim.dat,r);
fscanf(f,%dn

, &nr);
if(nr0)
fscanf(f,%dn

, &q[0]);
for(i=1;i<=nr;i++)
fscanf(f,%c %dn%dn

, &chei[i], &p[i], &q[i]);


calcul();
printf(Lungimea medie a unei cautari: %fn

,
(oat)c[0][nr]/greut[0][nr]);
struct nod*radacina=arbore(0,nr);
listare(radacina,0);} }
/****************************************************/
Fisierul arboptim.dat cont ine pe prima linie numarul de noduri interne
ale arborelui, pe a doua linie valoarea ponderii q
0
iar pe celelalte linii cheile
K
i
cu ponderile p
i
si q
i
. Un exemplu de astfel de sier este urmatorul:
/******************arboptim.dat***********************/
5
1
a 0 2
b 1 1
c 1 0
f 2 2
e 3 0
d 1 2
/**************************************************/
4.4 Arbori echilibrat i
Insert ia de noi noduri ntr-un arbore binar de cautare poate conduce la ar-
bori dezechilibrat i n care ntre nalt imea subarborelui drept al unui nod si
nalt imea subarborelui stang sa e o mare diferent a.

Intr-un astfel de arbore
act iunea de cautare va consuma mai mult timp.
O solut ie la problema ment inerii unui bun arbore de cautare a fost de-
scoperita de G. M. Adelson-Velskii si E. M. Landis n 1962 care au pus n
evident a asa numit ii n:h:. |.|.h:n . (sau n:h:. .11).
4.4. ARBORI ECHILIBRATI 87
1n. .. 1n n:h: h.nn: echilibrat (AVL) nnn nn| .nn h-
n:h:|. nnj n| :.n:. nn n n.]:n nn. n| n n 1 n nn| .nn
hn:h:|. n n:.
1n. .. 1.]:n n n.n: nn| .nn hn:h:|. n: . nn| .nn h-
n:h:|. nnj n:n nn| n factor de echilibru n| n. nn.
Asadar, daca un arbore binar este echilibrat, atunci factorul de echilibru
al ecarui nod este 1, 0 sau 1.
4.4.1 Arbori Fibonacci
O clasa importanta de arbori echilibrat i este clasa de n:h:. 1.hnn. de care
ne vom ocupa n continuare.
Sa consideram mai ntai sirul (F
n
)
n1
de numere Fibonacci, denite prin
urmatoarea formula de recurent a:
F
1
= F
2
= 1,
F
n+2
= F
n+1
+F
n
, n 1.
(4.5)
Primii termeni din sirul lui Fibonacci sunt 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ... .
Pentru a gasi o formula explicita pentru numerele Fibonacci, vom cauta
o solut ie a recurent ei (4.5) de forma F
n
= r
n
. Rezulta ca r satisface ecuat ia
algebrica de gradul 2 :
r
2
r 1 = 0,
cu solut ia
r
1,2
=
1

5
2
.
Solut ia generala va
F
n
= Ar
n
1
+Br
n
2
.
Constantele A si B vor determinate din condit iile F
1
= F
2
= 1 care conduc
la sistemul algebric
A
1 +

5
2
+B
1

5
2
= 1,
A
3 +

5
2
+B
3

5
2
= 1,
cu solut ia
A =

5
5
, B =

5
5
.
88 CAPITOLUL 4. TEHNICI DE C

AUTARE
Figura 4.7: Arbori Fibonacci
4.4. ARBORI ECHILIBRATI 89
Obt inem astfel ]:n|n |. 1.n pentru numerele Fibonacci:
F
n
=

5
5
_
1 +

5
2
_
n

5
5
_
1

5
2
_
n
.
.
Arborii binari Fibonacci, notat i cu FT
k
, k = 0, 1, 2, ... sunt denit i prin
recurent a dupa cum urmeaza:
- FT
0
si FT
1
sunt format i ecare dintr-un singur nod extern etichetat cu
[0] ;
- pentru k 2, arborele Fibonacci de ordin k, FT
k
are radacina etichetata
cu F
k
; subarborele stang al radacinii este FT
k1
iar subarborele drept al
radacinii este arborele FT
k2
cu etichetele tuturor nodurilor incrementate cu
F
k
(eticheta radacinii lui FT
k
) (vezi gura 4.7).
Vom pune mai departe n evident a cateva proprietat i ale arborilor Fi-
bonacci.
Lema. 1n: :. k 1. n:h:| 1.hnn. FT
k
n n:h: |.|.-
h:n n nnn nn| .nn h(FT
k
) = k1. F
k+1
]:n. . F
k+1
1 nn:. .n:n.
1nn:n ..Pentru k = 1 si k = 2 proprietatea este vericata. Sa
presupunem ca proprietatea este adevarata pentru tot i arborii Fibonacci FT
k

cu k

< k. Fie FT
k
un arbore Fibonacci de ordin k > 3. Din denit ia
recursiva obt inem ca h(FT
k
) = h(FT
k1
) + 1 = k 1, numarul de frunze
al lui FT
k
este egal cu F
k
+ F
k1
= F
k+1
iar numarul de noduri interne este
1 + (F
k
1) + (F
k1
1) = F
k+1
1. Din ipoteza de induct ie, proprietatea
de echilibrare este satisfacuta pentru toate nodurile cu except ia radacinii.

In
ceea ce priveste radacina, subarborele stang arenalt imea k2 iar subarborele
drept are nalt imea k 3, deci FT
k
este echilibrat.
4.4.2 Proprietati ale arborilor echilibrat i
Arborii echilibrat i reprezinta o treapta intermediara ntre clasa arborilor op-
timali (cu frunzele asezate pe doua nivele adiacente) si clasa arborilor binari
arbitrari. De aceea este resc sa ne ntrebam cat de mare este diferent a
dintre un arbore optimal si un arbore echilibrat; prezentam n acest context
urmatoarea teorema:
Teorema.

1nn| .nn n. n:h: |.|.h:n T N nn:. .n:n nn
nnnnn n: log
2
(N + 1) . 1.4404 log
2
(N + 2) 0.328.
90 CAPITOLUL 4. TEHNICI DE C

AUTARE
1nn:n .. Un arbore binar de nalt ime h are cel mult 2
h
1 noduri
interne; deci
N 2
h(T)
1 h(T) log
2
(N + 1) .
Pentru a gasi limitarea superioara a lui h(T), ne vom pune problema aarii
numarului minim de noduri interne cont inute ntr-un arbore echilibrat de
nalt ime h. Fie deci T
h
arborele echilibrat de nalt ima h cu cel mai mic numar
de noduri posibil; unul din subarborii radacinii, de exemplu cel stang va avea
nalt imea h1 iar celalalt subarbore va avea nalt imea h1 sau h2. Cum
T
h
are numarul minim de noduri, va trebui sa consideram ca subarborele
stang al radacinii are nalt imea h 1 iar subarborele drept are nalt imea
h 2.Putem asadar considera ca subarborele stang al radacinii este T
h1
iar
subarborele drept este T
h2
.

In virtutea acestei considerat ii, se demonstreaza
prin induct ie ca arborele Fibonacci FT
h+1
este arborele T
h
cautat, n sensul
ca ntre tot i arborii echilibrat i de nalt ime impusa h, acesta are cel mai mic
numar de noduri. Conform lemei precedente avem
N F
h+2
1 =

5
5
_
1 +

5
2
_
h+2

5
5
_
1

5
2
_
h+2
1.
Cum

5
5
_
1

5
2
_
h+2
> 1,
rezulta ca
log
2
(N + 2) > (h + 2) log
2
_
1 +

5
2
_

1
2
log
2
5
h < 1.4404 log
2
(N + 2) 0.328.
Din considerat iile facute pe parcursul demonstrat iei teoremei, rezulta
urmatorul
Corolar.

1n: n:h:.. |.|.h:n . n nnn: nn n nn:.. n:h:..
1.hnn. n nn|.nn nn..nn, deci sunt cei mai put in performant i.
4.5. INSERTIA UNUI NOD

INTR-UN ARBORE ECHILIBRAT 91
4.5 Insert ia unui nod ntr-un arbore echili-
brat
Inserarea unui nou nod se efectueaza cu algoritmul cunoscut de inserare a
nodurilor ntr-un arbore binar de cautare. Dupa inserare nsa, va trebui sa
:-|.|.h:nn arborele daca vom ajunge ntr-una din urmatoarele situat ii:
- subarborelui stang al unui nod cu factorul de echilibru 1 i creste
nalt imea;
- subarborelui drept al unui nod cu factorul de echilibru 1i crestenalt imea.
Ambele cazuri sunt tratate apeland la :n .. (pe care le vom descrie n
cele ce urmeaza). Rotat iile implica doar modicari ale legaturilor n cadrul
arborelui, nu si operat ii de cautare, de aceea timpul lor de execut ie este de
ordinul O(1) .
4.5.1 Rotat ii n arbori echilibrat i
Rotat iile sunt operat ii de schimbare ntre ele a unor noduri aate n relat ia de
tata-u (si de refacere a unor legaturi) astfel ncat sa e pastrata structura de
arbore de cautare. Astfel, printr-o :n . .n|n n n. n:h: |n nnjn, ul
drept al radacinii init iale devine noua radacina iar radacina init iala devine
ul stang al noii radacini. Printr-o :n . .n|n n n. n:h: |n n:nn, ul
stang al radacinii init iale devine noua radacina iar radacina init iala devine
ul drept al noii radacini. O :n . nh|n |n n:nn afecteaza doua nivele:
ul drept al ului stang al radacinii init iale devine noua radacina, radacina
init iala devine ul drept al noii radacini iar ul stang al radacinii init iale
devine ul stang al noii radacini. O :n . nh|n |n nnjn afecteaza de
asemenea doua nivele: ul stang al ului drept al radacinii init iale devine
noua radacina, radacina init iala devine ul stang al noii radacini iar ul drept
al radacinii init iale devine ul drept al noii radacini.
Vom studia cazurile de dezechilibru ce pot aparea si vom efectua re-
echilibrarea prin rotat ii.
n.| 1. : nn| .nn hn:h:|. nnj n| nn|. a n: n: ]n:|
n |.|.h: .n. .n| 1.
a) Factorul de echilibru al ului stang b al lui a este 1 (gura 4.8).
Aceasta nseamna ca noul element a fost inserat n subarborele A. Re-
echilibrarea necesita o rotat ie simpla la dreapta a perechii tata-u (a > b).
b) Factorul de echilibru al ului stang b al lui a este 1.
92 CAPITOLUL 4. TEHNICI DE C

AUTARE
Figura 4.8: Rotat ie simpla la dreapta pentru re-echilibrare
b.1) Factorul de echilibru al ului drept c al lui b este 1 (gura 4.9).
Aceasta nseamna ca noul element a fost inserat n subarborele C. Pentru
re-echilibrare vom avea nevoie de o rotat ie dubla la dreapta a nodurilor b <
c < a.
b.2) Factorul de echilibru al ului drept c al lui b este -1. Se trateaza ca
si cazul b.1) (gura 4.10). .
b.3) Factorul de echilibru al ului drept c al lui b este 0. Dezechilibrarea
este imposibila.
c) Factorul de echilibru al ului stang b al lui a este 0. Dezechilibrarea
este imposibila.
n.| 11. : nn| .nn hn:h:|. n: n| nn|. a n: n: ]n:|
n |.|.h: .n. .n| 1. Se trateaza asemanator cu cazul I).
a) Factorul de echilibru al ului stang b al lui a este 1 (gura 4.11).
Aceasta nseamna ca noul element a fost inserat n subarborele C. Re-
echilibrarea necesita o rotat ie simpla la stanga a perechii tata-u (a < b).
b) Factorul de echilibru al ului drept b al lui a este -1.
b.1) Factorul de echilibru al ului stang c al lui b este -1(gura 4.12).
Aceasta nseamna ca noul element a fost inserat n subarborele B. Pentru re-
echilibrare vom avea nevoie de o rotat ie dubla la stanga a nodurilor b > c > a.
4.5. INSERTIA UNUI NOD

INTR-UN ARBORE ECHILIBRAT 93
Figura 4.9: Rotat ie dubla la dreapta pentru re-echilibrare
Figura 4.10: Rotat ie dubla la dreapta pentru re-echilibrare
94 CAPITOLUL 4. TEHNICI DE C

AUTARE
Figura 4.11: Rotat ie simpla la stanga pentru re-echilibrare
Figura 4.12: Rotat ie dubla la stanga pentru re-echilibrare
4.5. INSERTIA UNUI NOD

INTR-UN ARBORE ECHILIBRAT 95
b.2) Factorul de echilibru al ului drept c al lui b este 1. Se trateaza ca si
cazul b.1) (gura 4.13). .
Figura 4.13: Rotat ie dubla la stanga pentru re-echilibrare
b.3) Factorul de echilibru al ului drept c al lui b este 0. Dezechilibrarea
este imposibila.
c) Factorul de echilibru al ului stang b al lui a este 0. Dezechilibrarea
este imposibila.
4.5.2 Exemple

In arborele din gura 4.14 ne propunem sa inseram elementul 58. Suntem


n cazul I.a). Subarborii cu radacinile 70 si 80 devin dezechilibrat i. Pentru
echilibrare se roteste perechea (60, 70) la dreapta, obt inandu-se arborele din
gura 4.15.

In arborele din gura 4.16 ne propunem sa inseram elementul 68. Suntem


n cazul I.b.1). Pentru echilibrare se roteste la stanga perechea (60, 65) si
apoi se roteste la dreapta perechea (70, 65). Se obt ine n nal arborele din
gura 4.17.
96 CAPITOLUL 4. TEHNICI DE C

AUTARE
Figura 4.14: Exemplu de insert ie ntr-un arbore echilibrat
Figura 4.15: Exemplu de insert ie ntr-un arbore echilibrat
4.5. INSERTIA UNUI NOD

INTR-UN ARBORE ECHILIBRAT 97
Figura 4.16: Exemplu de insert ie ntr-un arbore echilibrat
Figura 4.17: Exemplu de insert ie ntr-un arbore echilibrat
98 CAPITOLUL 4. TEHNICI DE C

AUTARE
4.5.3 Algoritmul de insert ie n arbori echilibrat i
Pentru a insera un element x ntr-un arbore binar de cautare echilibrat se
parcurg urmatoarele etape:
- se cauta pozit ia n care noul element trebuie inserat (ca n orice arbore
binar de cautare);
- se insereaza elementul x (ca n orice arbore binar de cautare);
- se reactualizeaza factorii de echilibru ai ascendent ilor lui x pana la
radacina sau pana se gaseste cel mai apropiat ascendent p al lui x, daca
exista, astfel ncat subarborele T cu radacina p sa e dezechilibrat;
- daca p exista, se re-echilibreaza subarborele T cu ajutorul unei rotat ii
(simple sau duble).
4.6 Stergerea unui nod al unui arbore echili-
brat
Stergerea este similara insert iei: stergem nodul asa cum se procedeaza n
cazul unui arbore binar de cautare si apoi re-echilibram arborele rezultat.
Deosebirea este ca numarul de rotat ii necesar poate tot atat de mare cat
nivelul (adancimea) nodului ce urmeaza a sters. De exemplu sa stergem
elementul x din gura 4.18.a).

In urma stergerii se ajunge la arborele ne-echilibrat din gura 4.18.b).


Subarborele cu radacina n y este ne-echilibrat. Pentru a-l echilibra este
necesara o rotat ie simpla la dreapta a perechii (y, i)obt inandu-se arborele din
gura 4.19.d); si acest arbore este ne-echilibrat, radacina a avand factorul
de echilibru 2. O rotat ie dubla la dreapta a lui e, b si a, re-echilibreaza
arborele ajungandu-se la arborele din gura 4.20.e).
4.6.1 Algoritmul de stergere a unui nod dintr-un ar-
bore echilibrat
Fie data nregistrarea avand cheia x. Pentru a sterge dintr-un arbore de
cautare echilibrat nodul cu cheia x parcurgem urmatoarele etape
- se localizeaza nodul r avand cheia x;
- daca r nu exista, algoritmul se termina;
- altfel, se sterge nodul r, utilizand algoritmul de stergere ntr-un arbore
binar de cautare;.
4.6. STERGEREA UNUI NOD AL UNUI ARBORE ECHILIBRAT 99
Figura 4.18: Exemplu de stergere a unui nod dintr-un arbore echilibrat
Figura 4.19: Exemplu de stergere a unui nod dintr-un arbore echilibrat
100 CAPITOLUL 4. TEHNICI DE C

AUTARE
Figura 4.20: Exemplu de stergere a unui nod dintr-un arbore echilibrat
- e q nodul extern eliminat n urma aplicarii algoritmului de stergere si p
tatal sau. Se re-echilibreaza (daca este cazul) arborele prin rotat ii implicand
nodul p si eventual ascendent ii acestuia.
Vom arata ca numarul de rotat ii necesar stergerii unui nod poate ajunge
pana la numarul ce indica nivelul nodului n arbore. Observam mai ntai ca
o rotat ie reduce cu 1 nalt imea arborelui caruia i este aplicata. Fie a cel
mai apropiat predecesor al elementului sters x, astfel ca subarborele T
a
cu
radacina n a sa e neechilibrat. Daca nainte de rotat ie h(T
a
) = k, atunci
dupa rotat ie h(T
a
) = k 1.
Fie b tatal lui a (daca a nu este radacina arborelui). Avem urmatoarele
situat ii favorabile:
- factorul de echilibru al lui b este 0: nu este necesara nici-o rotat ie;
- factorul de echilibru al lui b este 1 si T
a
este subarborele drept al lui b:
nu este necesara nici-o rotat ie;
- factorul de echilibru al lui b este -1 si T
a
este subarborele stang al lui b:
nu este necesara nici-o rotat ie.
Dicultat ile se ivesc atunci cand:
- factorul de echilibru al lui b este -1 si T
a
este subarborele drept al lui b;
- factorul de echilibru al lui b este 1 si T
a
este subarborele stang al lui b

In ambele cazuri va trebui sa re-echilibram arborele T cu radacina n b.


4.6. STERGEREA UNUI NOD AL UNUI ARBORE ECHILIBRAT 101
Sa observam ca nainte de echilibrare h(T) = k+1 iar dupa re-echilibrare
h(T) = k. Astfel, subarborele avand drept radacina pe tatal lui b poate
deveni ne-echilibrat si tot asa pana cand ajungem la radacina arborelui init ial
(n cel mai rau caz).

In continuare prezentam un program, scris n C de inserare si stergere de


noduri ntr-un arbore binar de cautare echilibrat.
Figura 4.21: Exemplu de stergere a unui nod dintr-un arbore echilibrat
# include<stdio.h
# include<malloc.h
# dene F 0
# dene T 1
struct Nod{ char Info;int FactEch;struct Nod *st;struct Nod *dr;} ;
struct Nod *Inserare (char , struct Nod *, int *);
void Listare(struct Nod *, int );
struct Nod *EchilibrareDr(struct Nod *, int *);
struct Nod *EchilibrareSt(struct Nod *, int *);
struct Nod *Sterge(struct Nod *, struct Nod *, int *);
struct Nod *StergeElement(struct Nod *, char , int *);
/*********************************************/
/* Functia de inserare in arborele de cautare */
struct Nod * Inserare (char Info, struct Nod *tata, int *H)
102 CAPITOLUL 4. TEHNICI DE C

AUTARE
{ struct Nod *Nod1;
struct Nod *Nod2;
if(!tata)
{ tata = (struct Nod *) malloc(sizeof(struct Nod));
tata-Info = Info;
tata-st = NULL;
tata-dr = NULL;
tata-FactEch = 0;
*H = T;
return (tata);}
if(Info < tata-Info)
{ tata-st = Inserare(Info, tata-st, H);
if(*H)
/* Creste inaltimea subarborelui stang */
{
switch(tata-FactEch)
{
case 1: /* Subarborele drept mai inalt*/
tata-FactEch = 0;
*H = F;
break;
case 0: /* Arbore echilibrat */
tata-FactEch = -1;
break;
case -1: /* Subarborele stang mai inalt */
Nod1 = tata-st;
if(Nod1-FactEch == -1)
{ //Cazul din gura 4.8
printf(Rotatie simpla la dreapta n

);
tata-st= Nod1-dr;
Nod1-dr = tata;
tata-FactEch = 0;
tata = Nod1;
tata-FactEch = 0;}
else
/*cazul Nod1-FactEch == 0 nu este posibil pentru ca
am avut *H=F; ramane Nod1-FactEch == 1 ca in
gurile 4.9 si 4.10 */
4.6. STERGEREA UNUI NOD AL UNUI ARBORE ECHILIBRAT 103
{
printf(Rotatie dubla la dreapta n

);
Nod2 = Nod1-dr;
Nod1-dr = Nod2-st;
Nod2-st = Nod1;
tata-st = Nod2-dr;
Nod2-dr = tata;
if(Nod2-FactEch == -1)
tata-FactEch = 1;
else
tata-FactEch = 0;
if(Nod2-FactEch == 1)
Nod1-FactEch = -1;
else
Nod1-FactEch = 0;
tata = Nod2;}
tata-FactEch = 0;
*H = F;} } }
if(Info tata-Info)
{
tata-dr = Inserare(Info, tata-dr, H);
if(*H)
/* Subarborele drept devine mai inalt */
{
switch(tata-FactEch)
{
case -1: /* Subarborele stang este mai inalt */
tata-FactEch = 0;
*H = F;
break;
case 0: /* Arbore echilibrat */
tata-FactEch = 1;
break;
case 1: /* Subarborele drept este mai inalt */
Nod1 = tata-dr;
if(Nod1-FactEch == 1)
{ /*Cazul din gura 4.11 */
printf(Rotatie simpla la stanga n

);
104 CAPITOLUL 4. TEHNICI DE C

AUTARE
tata-dr= Nod1-st;
Nod1-st = tata;
tata-FactEch = 0;
tata = Nod1;
tata-FactEch = 0;}
else
/*cazul Nod1-FactEch == 0 nu este posibil pentru ca
am avut *H=F; ramane Nod1-FactEch == -1 ca in
gurile 4.12 si 4.136 */
printf(Rotatie dubla la stanga n

);
Nod2 = Nod1-st;
Nod1-st = Nod2-dr;
Nod2-dr = Nod1;
tata-dr = Nod2-st;
Nod2-st = tata;
if(Nod2-FactEch == 1)
tata-FactEch = -1;
else
tata-FactEch = 0;
if(Nod2-FactEch == -1)
Nod1-FactEch = 1;
else
Nod1-FactEch = 0;
tata = Nod2;
}
tata-FactEch = 0;
*H = F;} } }
return(tata);}
/*************************************************/
/* Functia de listare */
void Listare(struct Nod *Arbore,int Nivel)
{ int i;
if (Arbore)
{
Listare(Arbore-dr, Nivel+1);
printf(n

);
for (i = 0; i < Nivel; i++)
printf( );
4.6. STERGEREA UNUI NOD AL UNUI ARBORE ECHILIBRAT 105
printf(%c, Arbore-Info);
Listare(Arbore-st, Nivel+1);
}
}
/* Echilibrare in cazul cand subarborele drept
devine mai inalt in comparatie cu cel stang*/
/**************************************/
struct Nod * EchilibrareDr(struct Nod *tata, int *H)
{
struct Nod *Nod1, *Nod2;
switch(tata-FactEch)
{
case -1:
tata-FactEch = 0;
break;
case 0:
tata-FactEch = 1;
*H= F;
break;
case 1: /* Re-echilibrare */
Nod1 = tata-dr;
if(Nod1-FactEch = 0)
/* Cazul din gura 4.18 a) cu tata==y */

printf(Rotatie simpla la stanga n

);
tata-dr= Nod1-st;
Nod1-st = tata;
if(Nod1-FactEch == 0)
{
tata-FactEch = 1;
Nod1-FactEch = -1;
*H = F;
}
else
{
tata-FactEch = Nod1-FactEch = 0;
}
tata = Nod1;
106 CAPITOLUL 4. TEHNICI DE C

AUTARE
}
else
{
printf(Rotatie dubla la stanga n

);
Nod2 = Nod1-st;
Nod1-st = Nod2-dr;
Nod2-dr = Nod1;
tata-dr = Nod2-st;
Nod2-st = tata;
if(Nod2-FactEch == 1)
tata-FactEch = -1;
else
tata-FactEch = 0;
if(Nod2-FactEch == -1)
Nod1-FactEch = 1;
else
Nod1-FactEch = 0;
tata = Nod2;
Nod2-FactEch = 0;
}
}
return(tata);
}
/* Echilibrare in cazul cand subarborele stang
devine mai inalt in comparatie cu cel drept*/
/*******************************************/
struct Nod * EchilibrareSt(struct Nod *tata, int *H)
{
struct Nod *Nod1, *Nod2;
switch(tata-FactEch)
{
case 1:
tata-FactEch = 0;
break;
case 0:
tata-FactEch = -1;
*H= F;
break;
4.6. STERGEREA UNUI NOD AL UNUI ARBORE ECHILIBRAT 107
case -1: /* Re-echilibrare */
Nod1 = tata-st;
if(Nod1-FactEch <= 0)
/*Cazul gurii 4.18 a) cu tata==e */

printf( Rotatie simpla la dreapta n

);
tata-st= Nod1-dr;
Nod1-dr = tata;
if(Nod1-FactEch == 0)
{
tata-FactEch = -1;
Nod1-FactEch = 1;
*H = F; }
else
{ tata-FactEch = Nod1-FactEch = 0; }
tata = Nod1; }
else
/*cazul din gura 4.21 cu tata==e */
printf(Rotatie dubla la dreapta n

);
Nod2 = Nod1-dr;
Nod1-dr = Nod2-st;
Nod2-st = Nod1;
tata-st = Nod2-dr;
Nod2-dr = tata;
if(Nod2-FactEch == -1)
tata-FactEch = 1;
else
tata-FactEch = 0;
if(Nod2-FactEch == 1)
Nod1-FactEch = -1;
else
Nod1-FactEch = 0;
tata = Nod2;
Nod2-FactEch = 0; } }
return(tata); }
/* Inlocuieste informatia nodulului Temp in care a fost gasita cheia
cu informatia celui mai din dreapta descendent al lui R (pe care
apoi il sterge)*/
108 CAPITOLUL 4. TEHNICI DE C

AUTARE
/**********************************************/
struct Nod * Sterge(struct Nod *R, struct Nod *Temp, int *H)
{ struct Nod *DNod = R;
if( R-dr != NULL)
{ R-dr = Sterge(R-dr, Temp, H);
if(*H)
R = EchilibrareSt(R, H); }
else
{ DNod = R;
Temp-Info = R-Info;
R = R-st;
free(DNod);
*H = T; }
return(R); }
/* Sterge element cu cheia respectiva din arbore */
/**********************************************/
struct Nod * StergeElement(struct Nod *tata, char Info, int
*H)
{ struct Nod *Temp;
if(!tata) {
printf( Informatia nu exista n

);
return(tata); }
else { if (Info < tata-Info ) {
tata-st = StergeElement(tata-st, Info, H);
if(*H)
tata = EchilibrareDr(tata, H); }
else
if(Info tata-Info) { tata-dr = StergeElement(tata-dr,
Info, H);
if(*H)
tata = EchilibrareSt(tata, H); }
else { Temp= tata;
if(Temp-dr == NULL) {
tata = Temp-st;
*H = T;
free(Temp); }
else
if(Temp-st == NULL) { tata = Temp-dr;
4.6. STERGEREA UNUI NOD AL UNUI ARBORE ECHILIBRAT 109
*H = T;
free(Temp); }
else
{ Temp-st = Sterge(Temp-st, Temp, H);
if(*H)
tata = EchilibrareDr(tata, H); } } }
return(tata); }
/* Functia principala*/
/*****************************************/
void main()
{ int H;
char Info ;
char choice;
struct Nod *Arbore = (struct Nod *)malloc(sizeof(struct Nod));
Arbore = NULL;
printf( Tastati b pentru terminare: n

);
choice = getchar();
while(choice != b)
{ ush(stdin);
printf(Informatia nodului (tip caracter: a,b,1,2,etc.): n

);
scanf(%c,&Info);
Arbore = Inserare(Info, Arbore, &H);
printf(Arborele este: n

);
Listare(Arbore, 1); ush(stdin);
printf(Tastati b pentru terminare: n

);
choice = getchar(); } ush(stdin);
while(1) {
printf( Tastati b pentru terminare: n

);
printf( Introduceti cheia pe care vreti s-o stergeti: n

);
scanf(%c,&Info);
if (Info == b) break;
Arbore = StergeElement(Arbore, Info, &H);
printf( Arborele este: n

);
Listare(Arbore, 1); } }
110 CAPITOLUL 4. TEHNICI DE C

AUTARE
Bibliograe
[1] T. H. CORMEN, C. E. LEISERSON, R. R. RIVEST, 1n:n: n
n|j:.n., Edit. Computer Libris AGORA, Cluj-Napoca, 2000
[2] H. GEORGESCU, J|n.. n :j:nnn:, Edit. Universitat ii Bucuresti,
2005.
[3] D. E. KNUTH, J| .: ] n: 1:j:nnn.nj, vol.1, Reading, Mas-
sachusets, 1969; vol. 3, Addison-Wesley, 1973.
[4] D. STOILESCU, |j: n , Edit. Radial, Galat i, 1998
[5] I. TOMESCU, 1nn o::, Edit. Universitat ii Bucuresti, 1998.
111
CONICE
Forma generala:
a
11
x
2
+ a
22
y
2
+ 2a
12
xy + 2a
13
x + 2a
23
y + a
33
= 0
= |
22 12
12 11
a a
a a
|
= |
33 23 13
23 22 12
13 12 11
a a a
a a a
a a a
|
I = a
11
+ a
22
Forma canonica:
S
1
x
2
+ S
2
y
2
+

= 0
Unde, S
1
si S
2
sunt solutiile ecuatiei:
S
2
I*S + = 0
Solutiile ecuatiei vor fi:
Delta = I
2
4*1* (1 coeficientul lui S
2
)
S
1
=
1 * 2
delta I
S
2
=
1 * 2
delta I
Teoreme:
1. Conica are centru daca 0
Centrul conicei va fi:
fx = a
11
x + a
12
y + a
13
= 0
fy = a
12
x + a
22
y + a
23
= 0
2. Conica este degenerata daca = 0
3. Conica este:
- elipsa reala daca > 0 si I * < 0
- elipsa imaginara daca > 0 si I * > 0
- hiperbola daca 0 si < 0
- parabola daca = 0
a
11
x
2
+ a
22
y
2
+ 2a
12
xy + 2a
13
x + 2a
23
y + a
33
= 0
3x
2
+ 10xy + 3y
2
2x 14y 13 = 0
a
11
= 3
a
12
= 5
a
13
= -1
a
22
= 3
a
23
= -7
a
33
= -13
= |
22 12
12 11
a a
a a
| = |
3 5
5 3
| = (3*3) (5*5) = 9 25 = -16
= |
33 23 13
23 22 12
13 12 11
a a a
a a a
a a a
| = |
7 3 5
1 5 3
13 7 1
7 3 5
1 5 3

| =
= {[3 * 3 * (-13)] + [5 * (-7) * (-1)] + [(-1) * 5 * (-7)]} {[(-1) * 3 * (-1)] + [(-7) * (-7) * 3] +
[(-13) * 5 * 5]} =
= (-117 + 35 + 35) (3 + 147 325) = -47 +175 = 128
I = a
11
+ a
22
I = 3 + 3 = 6
Concluzie: = -16, = 128, I = 6
Forma canonica:
S
1
x
2
+ S
2
y
2
+

= 0
S
1
x
2
+ S
2
y
2
+
16
128

= 0
S
1
x
2
+ S
2
y
2
8 = 0
Unde, S
1
si S
2
sunt solutiile ecuatiei:
S
2
I*S + = 0
S
2
6S - 16 = 0
Solutiile ecuatiei vor fi:
Delta = I
2
4*1* (1 coeficientul lui S
2
)
Delta = 6
2
4* 1 * (-16) = 36 + 64 = 100
S
1
=
1 * 2
delta I
S
1
=
1 * 2
100 ) 6 (
=
2
10 6
= 8
S
2
=
1 * 2
delta I
S
2
=
1 * 2
100 ) 6 (
=
2
10 6
= -2
Forma canonica devine:
8x
2
-2y
2
8 = 0
x
2
-y
2
/4 1 = 0
x
2
-y
2
/4 = 1
Centrul conicei va fi:
fx = a
11
x + a
12
y + a
13
= 0
fy = a
12
x + a
22
y + a
23
= 0
a
11
= 3
a
12
= 5
a
13
= -1
a
22
= 3
a
23
= -7
a
33
= -13
3x + 5y 1 = 0 / -5
5x + 3y 7 = 0 / 3
-15x 25y + 5 = 0
15x + 9 y 21 = 0
-16y 16 = 0
-16y = 16
y = -1
3x + 5y 1 = 0
3x + 5 (-1) 1 = 0
3x 6 = 0
3x = 6
x=2
Centrul va fi (2, -1)
CONICE
Forma generala:
a
11
x
2
+ a
22
y
2
+ 2a
12
xy + 2a
13
x + 2a
23
y + a
33
= 0
= |
22 12
12 11
a a
a a
|
= |
33 23 13
23 22 12
13 12 11
a a a
a a a
a a a
|
I = a
11
+ a
22
Forma canonica:
S
1
x
2
+ S
2
y
2
+

= 0
Unde, S
1
si S
2
sunt solutiile ecuatiei:
S
2
I*S + = 0
Solutiile ecuatiei vor fi:
Delta = I
2
4*1* (1 este coeficientul lui S
2
si mai departe este aplicat formula pt ec de grad 2)
S
1
=
1 * 2
delta I
S
2
=
1 * 2
delta I
Teoreme:
1. Conica are centru daca 0
Centrul conicei va fi:
fx = a
11
x + a
12
y + a
13
= 0
fy = a
12
x + a
22
y + a
23
= 0
2. Conica este degenerata daca = 0
3. Conica este:
- elipsa reala daca > 0 si I * < 0
- elipsa imaginara daca > 0 si I * > 0
- hiperbola daca 0 si < 0
- parabola daca = 0
a
11
x
2
+ a
22
y
2
+ 2a
12
xy + 2a
13
x + 2a
23
y + a
33
= 0
5x
2
+ 8xy + 5y
2
18x 18y + 9 = 0
a
11
= 5
a
12
= 4
a
13
= -9
a
22
= 5
a
23
= -9
a
33
= 9
= |
22 12
12 11
a a
a a
| = |
5 4
4 5
| = (5*5) (4*4) = 25 16 = 9
= |
33 23 13
23 22 12
13 12 11
a a a
a a a
a a a
| = |
9 5 4
9 4 5
9 9 9
9 5 4
9 4 5

| =
= {[5 * 5 * 9] + [4 * (-9) * (-9)] + [(-9) * 4 * (-9)]} {[(-9) * 5 * (-9)] + [(-9) * (-9) * 5] + [9 *
4 * 4]} =
= (225 + 324 + 324) (405 + 405 + 144) = 873 - 954 = -81
I = a
11
+ a
22
I = 5 + 5 = 10
Concluzie: = 9, = -81, I = 10
Forma canonica:
S
1
x
2
+ S
2
y
2
+

= 0
S
1
x
2
+ S
2
y
2
+
9
81
= 0
S
1
x
2
+ S
2
y
2
9 = 0
Unde, S
1
si S
2
sunt solutiile ecuatiei:
S
2
I*S + = 0
S
2
10S +9 = 0
Solutiile ecuatiei vor fi:
Delta = I
2
4*1* (1 coeficientul lui S
2
)
Delta = 10
2
4* 1 * 9 = 100 - 36 = 64
S
1
=
1 * 2
delta I
S
1
=
1 * 2
64 10
=
2
8 10
= 9
S
2
=
1 * 2
delta I
S
2
=
1 * 2
64 10
=
2
8 10
= 1
Forma canonica devine:
9x
2
+ y
2
- 9=0 / :9
x
2
+
9
2
y
1 = 0
CONICE
Forma generala:
a
11
x
2
+ a
22
y
2
+ 2a
12
xy + 2a
13
x + 2a
23
y + a
33
= 0
= |
22 12
12 11
a a
a a
|
= |
33 23 13
23 22 12
13 12 11
a a a
a a a
a a a
|
I = a
11
+ a
22
Forma canonica:
S
1
x
2
+ S
2
y
2
+

= 0
Unde, S
1
si S
2
sunt solutiile ecuatiei:
S
2
I*S + = 0
Solutiile ecuatiei vor fi:
Delta = I
2
4*1* (1 este coeficientul lui S
2
si mai departe este aplicat formula pt ec de grad 2)
S
1
=
1 * 2
delta I
S
2
=
1 * 2
delta I
Teoreme:
1. Conica are centru daca 0
Centrul conicei va fi:
fx = a
11
x + a
12
y + a
13
= 0
fy = a
12
x + a
22
y + a
23
= 0
2. Conica este degenerata daca = 0
3. Conica este:
- elipsa reala daca > 0 si I * < 0
- elipsa imaginara daca > 0 si I * > 0
- hiperbola daca 0 si < 0
- parabola daca = 0
a
11
x
2
+ a
22
y
2
+ 2a
12
xy + 2a
13
x + 2a
23
y + a
33
= 0
5x
2
+ 8xy + 5y
2
18x 18y + 9 = 0
a
11
= 5
a
12
= 4
a
13
= -9
a
22
= 5
a
23
= -9
a
33
= 9
= |
22 12
12 11
a a
a a
| = |
5 4
4 5
| = (5*5) (4*4) = 25 16 = 9
= |
33 23 13
23 22 12
13 12 11
a a a
a a a
a a a
| = |
9 5 4
9 4 5
9 9 9
9 5 4
9 4 5

| =
= {[5 * 5 * 9] + [4 * (-9) * (-9)] + [(-9) * 4 * (-9)]} {[(-9) * 5 * (-9)] + [(-9) * (-9) * 5] + [9 *
4 * 4]} =
= (225 + 324 + 324) (405 + 405 + 144) = 873 - 954 = -81
I = a
11
+ a
22
I = 5 + 5 = 10
Concluzie: = 9, = -81, I = 10
Forma canonica:
S
1
x
2
+ S
2
y
2
+

= 0
S
1
x
2
+ S
2
y
2
+
9
81
= 0
S
1
x
2
+ S
2
y
2
9 = 0
Unde, S
1
si S
2
sunt solutiile ecuatiei:
S
2
I*S + = 0
S
2
10S +9 = 0
Solutiile ecuatiei vor fi:
Delta = I
2
4*1* (1 coeficientul lui S
2
)
Delta = 10
2
4* 1 * 9 = 100 - 36 = 64
S
1
=
1 * 2
delta I
S
1
=
1 * 2
64 10
=
2
8 10
= 9
S
2
=
1 * 2
delta I
S
2
=
1 * 2
64 10
=
2
8 10
= 1
Forma canonica devine:
9x
2
+ y
2
- 9=0 / :9
x
2
+
9
2
y
1 = 0
3x
2
+ 10xy + 3y
2
2x 14y 13 = 0


Centrul conicei va fi:
fx = a11 x + a12 y + a13 = 0
fy = a12 x + a22 y + a23 = 0

a11 = 3
a12 = 5
a13 = -1
a22 = 3
a23 = -7
a33 = -13

3x + 5y 1 = 0 / -5
5x + 3y 7 = 0 / 3

-15x 25y + 5 = 0
15x + 9 y 21 = 0
-16y 16 = 0
-16y = 16
y = -1

3x + 5y 1 = 0
3x + 5 (-1) 1 = 0
3x 6 = 0
3x = 6
x=2
Centrul va fi (2, -1)
CUADRICA

Forma generala:

a
11
x
2
+ a
22
y
2
+ a
33
z
2
+ 2a
12
xy + 2a
13
xz + 2a
23
yz + 2b
1
x + 2b
2
y + 3b
3
z + c = 0


Centrul cuadricei este dat de sistemul:

a
11
x + a
12
y + a
13
z + b
1
= 0

a
21
x + a
22
y + a
23
z + b
2
= 0

a
31
x + a
32
y + a
33
z + b
3
= 0


Facem urmatoarele notatii:

=
33 32 31
23 22 21
13 12 11
a a a
a a a
a a a

1
= |
22 21
12 11
a a
a a
| + |
33 31
13 11
a a
a a
| + |
33 32
23 22
a a
a a
|

2
= a
11
+ a
22
+ a
33



=
c b b b
b a a a
b a a a
b a a a
3 2 1
3 33 32 31
2 23 22 21
1 13 12 11

1
= |
33 32 31
23 22 21
13 12 11
a a a
a a a
a a a
| + |
c b b
b a a
b a a
2 1
2 22 21
1 12 11
| + |
c b b
b a a
b a a
3 1
3 33 31
1 13 11
| + |
c b b
b a a
b a a
3 2
3 33 32
2 23 21
|


Forma canonica:

I. Daca 0

1
x
2
+
2
y
2
+
3
z
2
+

= 0

II. Daca = 0

1. 0

2
y
2
+
3
z
2
2
1

= 0

2. = 0,
1
0

2
y
2
+
3
z
2
+
1
1

= 0
3.
1
0,
1
0

3
z
2
2
1
1

= 0


1. Aproximam integrala j f(x)dx cu metoda sumata a trapezului cu 3 subintervale. Obtinem
( / ( 0) + 2/ ( l ) +2/ ( 2) +/ ( 3) ) / 2
6
2. Aproximam integrala j f(x)dx cu metoda sumata a lui Simpson cu 3 subintervale. Obtinem
( / ( 0 ) + 4 / ( l ) + 2 / ( 2 ) + 4 / ( 3 ) + 2 / ( 4 ) + 4 / ( 5 ) + / ( 6 ) )
-
3
i
3. Aproximati integrala J* 2 x
2
dx cu metoda trapezuluiprod from {j=1 j <> i} to n {(x - x_{j})}
o
1
I
4. Aproximati integrala j 2
X
dx cu metoda trapezului
o
1.5
I
5. Aproximati integrala j 3x
2
dx cu metoda trapezului
o
1.5
I
6. Aproximati integrala J3x
3
dx cu metoda trapezului
o
1.5
I
7. Aproximati integrala J* sin (nx)dx cu metoda trapezului
o
0
I
8. Aproximati integrala j x
2
dx cu metoda trapezului
o
0.5
2
9. Aproximati integrala J3x*dx cu metoda lui Simpson
o
20
2
10. Aproximati integrala jx
3
dx cu metoda lui Simpson
o
4
2
Aproximati integrala j x*dx cu metoda lui Simpson
n [x-xj)
2
11. Aproximati integrala J x
4
c cu metoda lui
o
20/3
12. Ce metoda de interpolare utilizeaza polinoamele /,-(*) =
j = l,j*i
i
{x-Xj)
metoda de interpolare cu polinoame Lagrange
13. Daca f este un polinom de grad 2 cu coeficienti reali atunci metoda de integrare numerica a lui Simpson pe intervalul
b
[a,b] va calcula exact integrala j f(x)dx
a
TRUE
14. In formula de cuadratura a lui Gauss cu doua noduri pe intervalul [-1,1] se folosesc radacinile polinomului lui
Legendre de ordin 2 care sunt egale cu 1/radical3 -1/radi cal 3
15. In formula de cuadratura a lui Gauss-Legendre(spre deosebire de metoda Newton-Cotes) nodurile se aleg depinzand
de functia ce urmeaza a fi integrata.
FALSE
16. Intotdeauna cand f este un polinom de grad 2 metoda trapezului pe intervalul [a,b] va calcula exact integrala
b
j f{x)dx
a
FALSE
ANALIZA NUMERICA LICENTA 2011-2012
17. Metoda lui Ritz se foloseste pentru a calcula inversa unei matrici simetrice pozitiv definite.
TRUE
18. Metoda lui Simpson aproximeaza integrala lui f pe [a, b] cu formula
{b-a){f{b) + 4f{^)+f{a))
6
19. Metoda lui Simpson se incadreaza in metodele de integrare numerica mai generale de tip
Newton-Cotes
20. Metoda trapezului aproximeaza integrala lui f pe [a, b] dupa formula
{b-a){f{b)+f{a))
2
2 - 3 ,
- 2 1
2 - 7
-1 3
1 - 7
sa se
sa se
calculaze \\A\\
c
calculaze \\A\\
a
sa se calculaze \\A\\
0
3
0 2
21. Pentru A =
5
22. Pentru A-
9
23. Pentru A-
8
24. Pentru
4
25. Pentru
4
26. Pentru
12
27. Pentru
10
28. Pentru evaluarea polinomului de interpolare in forma Lagrange se utilizeaza diferente divizate
FALSE
I
29. Polinomul lui Legendre de grad 4, P
4
,este ortogonal pe P(x) = x
2
+ 1, adica J* ( x
2
+ \)P
i
(x)dx = 0
A={1
\0
A
1 2
I
\3 - 1 /
A2 10)
\0
sa se calculaze | | AL
sa se calculaze \A\
a
0 4
sa se
sa se
calculaze ||A|
0
calculaze ||A||
0
- i
TRUE
30. Polinomul lui Lagrange de grad cel mult 2 ce interpoleaza valorile din tabelul
x -1 0
y 2 0
x
2
- x
31. Polinomul lui Lagrange de grad cel mult 2 ce interpoleaza valorile din tabelul
x -1 0
y 2 1
1
2
x
2
+ 1
32. Se aplica metoda iterativa a lui Gauss-Seidel sistemului
x+2y = 3
calculeze urmatoarea iteratie x
1
in metoda lui Gauss-Seidel.
[2
x-y = \
cu predictie initiala x'=f ' )
\1.5J
33. Se aplica metoda iterativa a lui Gauss-Seidel sistemului \"x y_ cu predictie initiala x= f
2
| x
1
0
Sa se
Sa se
calculeze urmatoarea iteratie x
1
in metoda lui Gauss-Seidel. ^
5 Q
75)
34. Se aplica metoda iterativa a lui Gauss-Seidel sistemului
X
ly cu predictie initiala x0=
[x+2y = 3
calculeze urmatoarea iteratie x
1
in metoda lui Gauss-Seidel.
1
x
3
35. Se aplica metoda iterativa a lui Gauss-Seidel sistemului ^ 3 cu predictie initiala x0=
[ x + 2 y = 3
calculeze urmatoarea iteratie x
1
in metoda lui Gauss-Seidel.
1
x
1
36. Se aplica metoda iterativa a lui Gauss-Seidel sistemului
calculeze urmatoarea iteratie x
1
in metoda lui Gauss-Seidel.
0.5
1.25
{2x+x+2 yy== 33
calculeze urmatoarea iteratie x
1
in metoda lui Gauss-Seidel.
X
^ cu predictie initiala x0=
x+2y = 3
- I 0 5 )
\1.25J
37. Se aplica metoda iterativa a lui Gauss-Seidel sistemului cu predictie initiala x =
\0.75i
38. Se aplica metoda iterativa a lui Gauss-Seidel sistemului
calculeze urmatoarea iteratie x
1
in metoda lui Gauss-Seidel.
(2 0,5)
X
ty cu predictie initiala x0=
x+2y=3
Sa se
Sase
Sase
Sa se
Sa se
39. Se aplica metoda iterativa a lui Jacobi sistemului \"
X y
_ cu predictie initiala x0=
urmatoarea iteratie x
1
in metoda lui Jacobi.
(0,5 1)
[x
40. Se aplica metoda iterativa a lui Jacobi sistemului \~
X y
_ cu predictie initiala x0
urmatoarea iteratie x
1
in metoda lui Jacobi.
f
2
| x
0
1
Sa se calculeze
Sa se calculeze
1 _
x
41. Se aplica metoda iterativa a lui Jacobi sistemului
urmatoarea iteratie x
1
in metoda lui Jacobi.
1
X
1
X
1 _
X
1.5
2
42. Se aplica metoda iterativa a lui Jacobi sistemului
urmatoarea iteratie x
1
in metoda lui Jacobi.
43. Se aplica metoda iterativa a lui Jacobi sistemului
urmatoarea iteratie x
1
in metoda lui Jacobi.
X
ly cu predictie initiala x0
[ x + 2 y = 3
X
+ y cu predictie initiala x0=
[ x + 2 y = 3
X
ly cu predictie initiala x0=
[ x + 2 y = 3
Sa se calculeze
Sa se calculeze
Sa se calculeze
0.5
2
44. Se aplica metoda iterativa a lui Jacobi sistemului x*y cu predictie initiala x0=
[x+2y = 3
urmatoarea iteratie x
1
in metoda lui Jacobi.
Sa se calculeze
45. Se aplica metoda iterativa a lui Jacobi sistemului x*
y
3 cu predictie initiala x0=
urmatoarea iteratie x
1
in metoda lui Jacobi.
(1,5 1)
0
Sa se calculeze
46. Se aplica metoda iterativa a lui Jacobi sistemului { x+2 y=3 cu predictie initiala x
0
2 x +y =3
urmatoarea iteratie x
1
in metoda lui Jacobi.
Sa se calculeze
1 _
x
1
47. Se aplica metoda lui Ritz pentru calculul inversei matricii
se calculeaza matricea Ci =
\ - 1 1 j
48. Se aplica metoda lui Ritz pentru calculul inversei matricii
calculeaza matricea d =
. [ 0 0
\0 0.5)
49. Se aplica metoda lui Ritz pentru calculul inversei matricii
se calculeaza matricea Ci =
f 0.5 - 0. 5]
\-0.5 0.5 J
50. Se aplica metoda lui Ritz pentru calculul inversei matricii
calculeaza matricea d =
/0.5 0\
\ 0 0/
51. Se aplica metoda lui Ritz pentru calculul inversei matricii
calculeaza matricea d =
1 1'
1 2]
2 1
,1 2
2 1
,1 2
2 1
,1 2
2 1
1
2
1 1
6 6
1 1
6 6
52. Se aplica metoda lui Ritz pentru calculul inversei matricii
se calculeaza matricea d =
3 1
1 3
La primul pas se alege vector x
= ( 1 )
l "1)
si
La primul pas se alege vector x
1
=
0
si se
x=
(
-1
)
La primul pas se alege vector
1
si
1 = ( 1 )
\ - 1 j
La primul pas se alege vector x
1
=
La primul pas se alege vector x
1
1
1
si se
si se
x=
(
-1
)
La primul pas se alege vector
1
si
\-1)
1 1
4 " 4
1
1
4 4
(
3
2 3
2
)
x=
(
-
1
1
)
53. Se aplica metoda lui Ritz pentru calculul inversei matricii . La primul pas se alege vector
1
si
se calculeaza matricea C
1
=

(-00.5.5 -00.5.5)
2 t
54. Se aplica metoda radacinii patrate matricii A= pentru calculul descompunerii Cholesky A=BB , unde B este
(2 2 5
inferior triunghiulara (toate elementele deasupra diagonalei principale sunt nule) si cu toate elementele diagonale
pozitive. Sa se afle elementul de pe a doua linie si prima coloana din matricea B.
2
(5 100)
55. Se aplica metoda radacinii patrate matricii A = (
5
) pentru calculul descompunerii Cholesky A=BB\ unde B
5 100
este inferior triunghiulara (toate elementele deasupra diagonalei principale sunt nule) si cu toate elementele
diagonale pozitive. Sa se afle elementul de pe a doua linie si prima coloana din matricea B.
5
(2
56. Se aplica metoda radacinii patrate matricii A = (
2
) pentru calculul descompunerii Cholesky A=BB\ unde B
2 2
este inferior triunghiulara (toate elementele deasupra diagonalei principale sunt nule) si cu toate elementele
diagonale pozitive. Sa se afle elementul de pe a doua linie si prima coloana din matricea B.
1
(6 10)
57. Se aplica metoda radacinii patrate matricii A = (
6
) pentru calculul descompunerii Cholesky A=BB', unde B
6 10
este inferior triunghiulara (toate elementele deasupra diagonalei principale sunt nule) si cu toate elementele
diagonale pozitive. Sa se afle elementul de pe a doua linie si prima coloana din matricea B.
3
A=(4
8
)
8 17
58. Se aplica metoda radacinii patrate matricii A = (
8
) pentru calculul descompunerii Cholesky A=BB', unde B
8 17
este inferior triunghiulara (toate elementele deasupra diagonalei principale sunt nule) si cu toate elementele
diagonale pozitive. Sa se afle elementul de pe a doua linie si prima coloana din matricea B.
4
59. Se aplica metoda radacinii patrate matricii A=(140 1206) pentru calculul descompunerii Cholesky A=BB
t
, unde B
este inferior triunghiulara (toate elementele deasupra diagonalei principale sunt nule) si cu toate elementele
diagonale pozitive. Sa se afle elementul de pe a doua linie si prima coloana din matricea B.
5
(
9
3
3
5
)
t
60. Se aplica metoda radacinii patrate matricii A= pentru calculul descompunerii Cholesky A=BB , unde B este
inferior triunghiulara (toate elementele deasupra diagonalei principale sunt nule) si cu toate elementele diagonale
pozitive. Sa se afle elementul de pe a doua linie si prima coloana din matricea B.
1
61. Se considera ecuatia 3 x
3
- x - 1 = 0 . Dorim sa aflam cu aproximatie o solutie a ei pe intervalul [0, 2]. Pentru
aceasta putem aplica metoda bisectiei.
TRUE
x =1. 2
62. Se considera ecuatia 3 x
5
- 2 x
3
- 1 = 0 . Pentru rezolvarea ei ei vom alege
0
si apoi vom defini recursiv
(3 x
n
5
-2x
n
3
-1
(15 x
n
4
-6 x
n
2
metoda lui Newton
63. Se considera ecuatia x
3
-x-2=0 . Dorim sa aflam cu aproximatie o solutie a ei pe intervalul [ -1, 2]. Pentru
aceasta putem aplica metoda bisectiei.
TRUE
x
64. Se considera ecuatia [ x] - = 0 . Dorim sa aflam cu aproximatie o solutie a ei pe intervalul [-1,2]. In formula de
2
mai sus [x] este partea intreaga a numarului real x . Pentru a afla o astfel de solutie putem aplica metoda bisectiei.
FALSE
x
n+1
=x
n
- , n numar natural. Aceasta este
65. Se considera ecuatia f (x) = 3 x
5
- 2 x
3
- l = 0 . Pentru aproximarea unei solutii a ei vom alege x
0
=1. 2 si
{3x1-2x1-1)
apoi vom defini recursiv x
+1
= x-
4
^ , n numar natural. Aceasta este
(15x
H
6xJ
metoda lui Newton
66. Se considera ecuatia / ( x ) = 4 x
5
- 3 x
3
- l = 0 . Pentru aproximarea unei solutii a ei vom alege x
0
=1. 2 si
(4x
5
-3x
3
-l)
apoi vom defini recursiv x.,=x- ^ . Aceasta este
(20x-9x)
metoda lui Newton
67. Se considera ecuatia / ( x ) = [ x ] - | - = 0 . Dorim sa aflam cu aproximatie o solutie a ei pe intervalul [-1,2]. In
formula de mai sus [x] este partea intreaga a numarului real x . Pentru a afla o astfel de solutie putem aplica metoda
bisectiei.
FALSE
68. Se considera functia f(x)= ar
C
tg^
X
' si P(x) polinomul de grad eel mult 1 care interpoleaza valorile lui f pe
n
nodurile 0,1. Cat este atunci P(2)?
0.5
69. Se considera functia / ( x ) = cos ^ si P(x) polinomul lui Lagrange de grad 1 care interpoleaza valorile lui f pe
nodurile 0,1 . Cat este atunci P(2)?
-1
70. Se considera functia / ( x ) = c o s 5 ^ - si P(x) polinomul lui Lagrange de grad 1 care interpoleaza valorile lui f pe
nodurile 0,1 . Cat este atunci P(2)?
-1
71. Se considera functia / ( x ) = s i n R H si P(x) polinomul lui Lagrange de grad eel mult 1 care interpoleaza valorile
lui f pe nodurile 0,1 . Cat este atunci P(2)?
2
72. Se considera functia / ( x ) = ( x - l )
4
si P(x) polinomul de grad eel mult 4 care interpoleaza valorile lui f pe
nodurile 1, 2, 3, 4, 5. Cat este P(0)?
1
73. Se da ecuatia ^^- = x si dorim sa aflam o solutie a ei pe intervalul [0, 1]. Putem folosi metoda aproximatiilor
4
succesive.
TRUE
74. Se da ecuatia ^!-^- = x si dorim sa aflam o solutie a ei pe intervalul [0, 1]. Putem folosi metoda aproximatiilor
4
succesive.
FALSE
75. Se da matricea
l
2 . Pentru a afla inversa ei putem utiliza metoda lui Ritz.
3 1
FALSE
f
2
| x
76. Se da sistemul | "
X
+
y
_ Pentru a aproxima soutia sistemului intr-o toleranta prescrisa putem folosi metoda
iterativa a lui Jacobi.
TRUE
f
2
| x
77. Se da sistemul \"
X
*
y
_ Pentru rezolvarea lui putem folosi metoda eliminarilor succesive a lui Gauss.
TRUE
78. Se da tabelul
x -1 0
y 1 -1 1
Se noteaza cu P polinomul lui Lagrange de grad cel mult 2 ce interpoleaza datele din tabelul de mai sus. Cat este
P(2)?
7
79. Se da tabelul
X -1 0 1
y 2 0 2
Fie P
2
polinomul de grad cel mult 2 interpolant al valorilor din tabel. Cat este P
2
(2)?
8
80. Se da tabelul
X -1 0 1
y 2 1 2
Se noteaza cu P polinomul lui Lagrange de grad cel mult 2 ce interpoleaza datele din tabelul de mai sus. Cat este
P(2)?
5
81. Se da tabelul
X -1 0 1
y 2 1 4
Care este l
2
(x), polinomul lui Lagrange atasat nodului 0?
1 - x
2
82. Se da tabelul
X 1 2 3
y 4 7 6
Sa se calculeze diferenta divizata /[1, 2, 3] corespunzatoare nodurilor 1, 2, 3.
-2
83. Se da tabelul
X 1 2 3
y 4 7 8
Sa se calculeze diferenta divizata f[1, 2] corespunzatoare nodurilor 1, 2.
3
84. Se da tabelul
X 1 2 3 4 5
y 1 3 4 3 1
Sa se calculeze diferenta divizata f[1, 2] corespunzatoare nodurilor 1, 2.
2
85. Se da tabelul
X 1 2 3 4 5
y 2 1 4 1 5
Sa se calculeze diferenta divizata t[2, 3] corespunzatoare nodurilor 2, 3.
3
(x-xj)
86. Se da tabelul Ce metoda de interpolare utlizeaza polinoamele l,(x)=
J=
\
J
'
(x-x)
X Xi x
2
... X
n
y yi y2 ... yn
metoda de interpolare cu polinoame Lagrange
87. Se rezolva cu metoda lui Gauss cu pivotare partiala sistemul cu matricea extinsa
eliminari succesive se ajunge la sistemul cu matrice superior triunghiulara
-2 1 -1
0 -0,5 -0,5
88. Se rezolva cu metoda lui Gauss cu pivotare partiala sistemul cu matricea extinsa
succesive se ajunge la sistemul cu matrice superior triunghiulara
( 2 1 3 )
0 0.5 0.5
( 1 - 1 0)
-2 1 - 1
Dupa
1
(2
2
3)
Dupa eliminari
1 1 2
89. Se rezolva cu metoda lui Gauss cu pivotare partiala sistemul cu matricea extinsa . Dupa eliminari
3 1 4
succesive se ajunge la sistemul cu matrice superior triunghiulara
3 1 4 |3 1 41
90. Se rezolva cu metoda lui Gauss cu pivotare partiala sistemul cu matricea extinsa 3 2 1 . Dupa eliminari
\1 1 0/
succesive se ajunge la sistemul cu matrice superior triunghiulara
3 2 1
0 1/3 -1/3
[ l 2 - l 3 '
91. Se rezolva cu metoda lui Gauss cu pivotare partiala sistemul cu matricea extinsa 2 1 - 1 - 1 .La primul
' 3 2 1 0 ,
pas in aplicarea metodei lui Gauss se permuta liniile
1 si 3
92. Se rezolva cu metoda lui Gauss cu pivotare sistemul cu matricea extinsa \
l
2 3 . Dupa eliminari succesive se
\2 3 5/
ajunge la sistemul cu matrice superior triunghiulara
( 2 3 5 |
\0 0.5 0.5]
93. Se rezolva ecuatia 2 x
2
- 4 x + l = 0 cu metoda lui Newton cu predictie initiala x
0
= 0 . Cat este urmatoarea
iteratie x
x
?
1/4
94. Se rezolva ecuatia 2 x
2
- 2 x + l = 0 cu metoda lui Newton cu predictie initiala x
0
= 0 . Cat este urmatoarea
iteratie x
x
?
0.5
95. Se rezolva ecuatia x
2
-2x + l / 2 = 0 cu metoda lui Newton cu predictie initiala x
0
= 0 . Cat este urmatoarea
iteratie x
x
?
0.25
96. Se rezolva ecuatia x
2
- 4 x +1 = 0 cu metoda lui Newton cu predictie initiala x
0
= 0 . Cat este urmatoarea
iteratie x
x
?
0.25
97. Se rezolva ecuatia (x
2
+1 )/3 = x pe intervalul [0, 1] cu metoda aproximatiilor succesive corespunzatoare functiei
/ ( x ) = ( x
2
+ l ) / 3 . Alegem predictie initiala x
0
= l . Cat este urmatoarea iteratie x
x
conform metodei
aproximatiilor succesive?
2/3
98. Se rezolva ecuatia ( x
2
+1 )/4 = x pe intervalul [0, 1] cu metoda aproximatiilor succesive corespunzatoare functiei
/ ( x ) = ( x
2
+ l ) / 4 . Alegem predictie initiala x
0
= l . Cat este urmatoarea iteratie x
x
conform metodei
aproximatiilor succesive?
1/2
99. Se rezolva ecuatia (x
3
+1 )/4 = x pe intervalul [0, 1] cu metoda aproximatiilor succesive corespunzatoare functiei
/ ( x ) = ( x
3
+ l ) / 4 . Alegem predictie initiala x
0
= l . Cat este urmatoarea iteratie x
x
conform metodei
aproximatiilor succesive?
1/2
100.Se rezolva ecuatia x
3
+ x _ i = o pe intervalul [0,1] cu metoda bisectiei. Prima iteratie x
x
este 0.5. Care este a
doua iteratie x
2
?
0.75
101.Se rezolva ecuatia x
3
+2x-4 = 0 pe intervalul [0,2] cu metoda bisectiei. Prima iteratie x
x
este 1. Care este a
doua iteratie?
1.5
102.Se rezolva ecuatia x
3
+2x-2 = 0 cu metoda lui Newton cu predictie initiala x
0
= 0 . Cat este urmatoarea
iteratie x
x
?
1
103.Se rezolva ecuatia x
3
+ 2 x - 2 = 0 pe intervalul [0,2] cu metoda bisectiei. Prima iteratie x
1
este 1. Care este a
doua iteratie?
0.5
104.Se rezolva ecuatia l x + 2 x +3 ) = x pe jntervalul [0, 1] cu metoda aproximatiilor succesive corespunzatoare
10
functiei f(x)=^
X
+2x+3> . Alegem predictie initiala x
0
=1 . Cat este urmatoarea iteratie x
1
conform
metodei aproximatiilor succesive?
3
5
105.Se rezolva ecuatia x
3
+3 x-3 = 0 pe intervalul [0,2] cu metoda bisectiei. Prima iteratie este 1. Care este a doua
iteratie?
0.5
106.Se rezolva ecuatia x
3
+3x-1 = 0 pe intervalul [0,1] cu metoda bisectiei. Prima iteratie x
1
este 0.5. Care este a
doua iteratie x
2
?
0.25
107.Se rezolva ecuatia x
3
+ 5 x - 1 0 = 0 cu metoda lui Newton cu predictie initiala x
0
= 0 . Cat este urmatoarea
iteratie x
1
?
2
108.Se rezolva ecuatia l x + 2 x + 1 ) = x pe jntervalul [0, 1] cu metoda aproximatiilor succesive corespunzatoare
10
functiei f(x)=^
X
+2x+1> . Alegem predictie initiala x
0
= 0 . Cat este urmatoarea iteratie x
1
conform
metodei aproximatiilor succesive?
1
10
109.Se rezolva numeric ecuatia diferentiala - ^ = 2 x , y ( 1 ) = 1 , cu metoda lui Euler cu pas h = 1. Observati ca solutia
exacta este y{x) = x
2
. Care este aproximatia produsa de metoda pentru y(2)?
3
110.Se rezolva numeric ecuatia diferentiala -j-=f(x,y),y(0)=1 , unde f(x,y) = 2y + x . Se fixeaza pasul h =
O.I. La primul pas se calculeaza ^ 1 = 1 + / i / ( 0 , 1 ) si apoi succesiv y
n+1
= y
n
+h f{nh,y
n
) , pentru n = 1, 2,
3, ... Aceasta este metoda lui
Euler
111. Se rezolva numeric ecuatia diferentiala -^- = x + ^-,y(1 ) = 1 , cu metoda lui Euler cu pas h = 1. Observati ca
solutia exacta este >>(x) = x
2
. Care este aproximatia produsa de metoda pentru y(2)?
3
112.Se rezolva numeric ecuatia diferentiala -j- = y,y(0)=1 , cu metoda lui Euler cu pas h = 1. Observati ca solutia
exacta este y{x) = e
x
. Care este aproximatia produsa de metoda pentru y(1)?
2
113.Se rezolva numeric ecuatia diferentiala -J~ = y, y{ 1 ) = 1 cu metoda lui Euler cu pas h = 1. Observati ca solutia
exacta este ^ ( x ) = x
2
. Care este aproximatia produsa de metoda pentru y(2)?
3
1 2 3 4
()
114.Se rezolva sistemul algebric liniar cu matricea extinsa 0 1 2 4 . Pentru rezolvarea acestui sistem putem
1 2 1 3
aplica
Metoda eliminarilor succesive a lui Gauss
(1 2 3 4)
0 1 2 4
( 1 2 1 3 /
115.Urmarim a aplica metoda de integrare numerica a lui Newton-Cotes pentru a aproxima J* x
3
dx prin utilizarea a 3
- i
i
noduri echidistante -1,0,1. Conform metodei Newton-Cotes J* x
3
dx este aproximata de J* P
2
(x)dx unde P
2
- i - i
este un anumit polinom de grad eel mult 2. Cat este P
2
?
x
I
116.Urmarim a aplica metoda de integrare numerica a lui Newton-Cotes pentru a aproxima J* x*dx prin utilizarea a 3
- i
i i
noduri echidistante -1,0,1. Conform metodei Newton-Cotes J* x
A
dx este aproximata de j P
2
(x)dx unde P
2
- i - i
este un anumit polinom de grad eel mult 2. Cat este P
2
?
x
2
i
117.Urmarim a aplica metoda de integrare numerica a lui Newton-Cotes pentru a calcula j x
3
dx prin utilizarea a 2
- i
noduri echidistante -1,1, si integrarea pe [-1,1] a polinomului interpolant al lui x
3
pe nodurile -1,1. Aceasta metoda de
integrare este
Metoda trapezului
i
118.Urmarim a aplica metoda de integrare numerica a lui Newton-Cotes pentru a calcula J* x
3
dx prin utilizarea a 3
- i
noduri echidistante -1,0,1, si integrarea pe [-1,1] a polinomului interpolant al lui x
3
pe nodurile -1,0,1. Aceasta metoda
de integrare cu trei noduri se numeste
Metoda lui Simpson
2
119.Urmarim a aplica metoda de integrare numerica a lui Newton-Cotes pentru a calcula j f(x)dx prin utilizarea a 2
o
2
noduri echidistante 0,2. Conform metodei Newton-Cotes J* f(x)dx = A
0
f{0)+A
1
f{2) . Cat este A?
o
1
2
120.Urmarim a aplica metoda de integrare numerica a lui Newton-Cotes pentru a calcula J* f(x)dx prin utilizarea a 3
o
2
noduri echidistante 0,1,2. Conform metodei Newton-Cotes f f(x)dx = A
0
f{0)+A
1
f{l)+A
2
f{2) . Cat este
o
A0?
1/3
I
Edited by Foxit Reader
Copyright(C by Foxit Software Company,2005-2006
For Evaluation Only.
Multiple Choice
Identify the letter of the choice that best completes the statement or answers the question.
B 1. Polinomul lui Lagrange de ordin 2 ce interpoleaza valorile din tabelul
X -1 0 1
y 0 2 0
este
a. 2x
b.
20- *
3
)
c.
d.
o - i r - i
(*-2)
2
2. Se aplica metoda radacinii patrate matricii A= pentru calculul descompunerii Cholesky A=BB
unde B este inferior triunghiulara(toate elementele deasupra diagonalei principale sunt nule). Sa se afle
elementul de pe a doua linie si prima coloana din matricea B.
a. 2 d. 1
b. 5 e. 4
c. 3
3. Se rezolva cu metoda lui Gauss cu pivotare sistemul cu matricea extinsa
Dupa eliminari succesive se ajunge la sistemul cu matrice superior triunghiulara
4 1 5
a.
b.
c.
d.
4. Se rezolva ecuatia x + 6x- 12 = 0 cu metoda lui Newton cu predictie initiala x$ = 0. Cat este urmatoarea
iteratie x-y?
a. 0
b. 3
c. -1
d. 1
e. 2
5. Se rezolva cu metoda lui Gauss cu pivotare sistemul cu matricea extinsa
Dupa eliminari succesive se ajunge la sistemul cu matrice superior triunghiulara
2 3 5
1 2 3
a.
b.
c.
d.
6. Se rezolva ecuatia (x + x + 1) iA=x pe intervalul [0,1] cu metoda aproximatiilor succesive corespunzatoare
functiei fix) = (x + x+ 1) / 4. Alegem predictie initiala x$ = 1. Cat este urmatoarea iteratie x
x
conform
metodei aproximatiilor succesive?
a. 1/8 d. 2/5
b. 3/4 e. 1/10
c. 3/5
B 7. Se rezolva numeric ecuatia diferentiala
y=y+x, y(0)=l
cu metoda lui Euler-Cauchy cu pas h=l . Notam X^ 0,j/g 1. Care este aproximatia produsa de
aceasta metoda pentru y(l ), unde y este solutia exacta a ecuatiei diferentiale de mai sus?
a. 2
b. 3
8. Se da tabelul
c. 1
d. 4
X 1 2 3
y 4 7 8
Sa se calculeze diferenta divizata f [ 2, 3] .
a. 3 c. 4
b. 1 d. 2
D 9. Se aplica metoda iterativa a lui Jacobi sistemului cu predictie initiala
Sa se calculeze urmatoarea iteratie x in metoda lui Jacobi.
d.
e.
Edited by Foxit Reader
) by Foxit Software Company,2005-2006
For Evaluation Only.
c.
^ 10. Se aplica metoda iterativa a lui Jacobi sistemului cu predictie initiala
Sa se calculeze urmatoarea iteratie x in metoda lui Jacobi.
d.
e.
" 11. Se aplica metoda radacinii patrate matricii A= pentru calculul descompunerii Cholesky A=BB
unde B este inferior triunghiulara(toate elementele deasupra diagonalei principale sunt nule). Sa se afle
elementul de pe a doua linie si prima coloana din matricea B.
a. 2 d. 4
b. 1 e. 5
c. 3
12. In formula de cuadratura a lui Gauss cu doua noduri pe intervalul [-1,1] se folosesc radacinile
polinomului lui Legendre de ordin 2 care sunt egale cu
a. 1 1
~2' 2
b. 1 1
c.
1 1
42' 42
d. -1,1
A/3 ' S
U 13. Se rezolva numeric ecuatia diferentiala
y=2y+3x, y(0)=l
cu metoda lui Euler cu pas h=l . Notam X^ 0,j/g = 1. Care este aproximatia produsa de aceasta
metoda pentru y(l), unde y este solutia exacta a ecuatiei diferentiale de mai sus?
a. 4
b. 1
U 14. Aproximati integrala
c. 2
d. 3
J 3.x dx
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2006
For Evaluation Only.
cu metoda lui Simpson.
a. 10
b. 25
B 15. Se da tabelul
X 1 2 3
y 4 7 4
c. 15
d. 20
Sa se calculeze diferenta divizata f[l ,2,3]
a. -1
b. -3
^ 16. Aproximati integrala
c. -4
d. -2
cu metoda trapezului.
a. 0.5
b. 1.5
" 17. Se da tabelul
X 1 2 3
y 4 7 8
c. 2
d. 1
Sa se calculeze diferenta divizata f[l ,2,3]
a. -1
b. -2
U 18. Pentru A=
a. 13
b. 10
c. 11
sa se calculeze
U 19. Se rezolva numeric ecuatia diferentiala
c. -4
d. -3
d. 12
e. 14
y=y+2x, y(0)=l
cu metoda lui Euler-Cauchy cu pas h=l. Notam X^ 0,j/g 1. Care este aproximatia produsa de
aceasta metoda pentru y(l), unde y este solutia exacta a ecuatiei diferentiale de mai sus?
a. 4.5
b. 2.5
c. 1.5
d. 3.5
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2006
For Evaluation Only.
D 20. Se aplica metoda iterativa a lui Gauss-Seidel sistemului cu predictie initiala
Sa se calculeze urmatoarea iteratie x in metoda lui Gauss-Seidel.
d.
e.
21. Se rezolva ecuatia (x + 3x + 1) / %=x pe intervalul [0,1] cu metoda aproximatiilor succesive corespunzatoare
functiei J{x) = (x + 3x + 1) / 8. Alegem predictie initiala x
0
= 0. Cat este urmatoarea iteratie x^ conform
metodei aproximatiilor succesive?
a. 3/4 d. 1/10
b. 2/5 e. 1/8
c. 3/5
^ 22. Pentru A= sa se calculeze
a. 4
b. 10
c. 7
d. 6
e. 5
w 23. Se rezolva ecuatia (x + 2x+ 3)1 \Q=x pe intervalul [0,1] cu metoda aproximatiilor succesive corespunzatoare
functiei J{x) = (x + 2x+ 3) 110. Alegem predictie initiala x
0
= 1. Cat este urmatoarea iteratie x^ conform
metodei aproximatiilor succesive?
a. 1/8 d. 3/4
b. 1/10 e. 2/5
c. 3/5
U 24. Se rezolva numeric ecuatia diferentiala
y=y, y(0)=l
cu metoda lui Euler cu pas h=l . Notam X^ Q
7
y$ 1. Calculati aproximatia produsa de aceasta
metoda pentru y(l ) unde y(x) e solutia exacta a ecuatiei de mai sus.
a. 3
b. 1
U 25. Aproximati integrala
c. 4
d. 2
\
l
3x'dx
Edited b Foxit Reader
Copyright(C) by Foxit Software Company,2005-2006
For Evaluation Only.
cu metoda trapezului.
a. 1
sa se calculeze
b. 0.5
U 26. Pentru A=
a. 7
b. 10
c. 4
^ 27. Pentru A=
a. 5
b. 6
c. 10
A 28. Se rezolva numeric ecuatia diferentiala
c. 2
d. 1.5
d. 5
e. 6
sa se calculeze
d. 7
e. 4
y=y+8x, y(0)=l
cu metoda lui Euler cu pas h=l . Notam Xg 0,j/g = 1. Care este aproximatia produsa de aceasta
metoda pentru y(l), unde y este solutia exacta a ecuatiei diferentiale de mai sus?
a. 2
b. 4
c. 1
d. 3
29. Se aplica metoda iterativa a lui Gauss-Seidel sistemului cu predictie initiala
Sa se calculeze urmatoarea iteratie x in metoda lui Gauss-Seidel.
d.
e.
** 30. Se aplica metoda iterativa a lui Gauss-Seidel sistemului cu predictie initiala
Sa se calculeze urmatoarea iteratie x in metoda lui Gauss-Seidel.
Edited y Foxit Reader
Copyright(C) by Foxit Software Company,2005-2006
For n Only.
a.
b.
c.
d.
e.
^ 31. Se rezolva ecuatia x + Ax- 1=0 pe intervalul [0,1] cu metoda bisectiei. Prima iteratie x\ este
0.5. Care este a doua iteratie?
a. 0.5 d. 1.25
b. 1.5 e. 0.25
c. 0.75
32. Se aplica metoda iterativa a lui Jacobi sistemului cu predictie initiala
Sa se calculeze urmatoarea iteratie x in metoda lui Jacobi.
d.
e.
" 33. Se rezolva ecuatia x + Ax- A = 0 cu metoda lui Newton cu predictie initiala x$ = 0. Cat este urmatoarea
iteratie x-y?
a. 1
b. 2
c. 3
d. 0
e. -1
C 34. Se rezolva ecuatia (x + 2x+ 1)/10=* pe intervalul [0,1] cu metoda aproximatiilor succesive corespunzatoare
functiei fix) = (x + 2x+ 1) /10. Alegem predictie initiala x
0
= 0. Cat este urmatoarea iteratie Xj conform
metodei aproximatiilor succesive?
a. 1/8 d. 2/5
b. 3/4 e. 3/5
c. 1/10
^ 35. Se rezolva ecuatia x + x! 2- 1=0 pe intervalul [0,1] cu metoda bisectiei. Prima iteratie x\ este
0.5. Care este a doua iteratie?
a. 0.5 d. 1.25
b. 0.25 e. 0.75
Edited by Foxit Reader
) by Foxit Software Company,2005-2006
For Evaluation Only.
c. 1.5
U 36. Aproximati integrala
I x dx
cu metoda lui Simpson.
a. 7
b. 19/3
c. 17/3
d. 20/3
^ 37. Se aplica metoda lui Ritz pentru calculul inversei matricii
si se calculeaza matricea C\ =
a.
b.
c.
d.
e.
La primul pas se alege vector
P 38. Se aplica metoda lui Ritz pentru calculul inversei matricii La primul pas se alege vector
si se calculeaza matricea C\ =
a.
b.
c.
d.
e.
U 39. Se aplica metoda radacinii patrate matricii A= pentru calculul descompunerii Cholesky A=BB
unde B este inferior triunghiulara(toate elementele deasupra diagonalei principale sunt nule). Sa se afle
elementul de pe a doua linie si prima coloana din matricea B.
a. 4
b. 3
c. 2
U 40. Se da tabelul
d. 1
e. 5
X -1 0 1
y 2 1 2
Se noteaza cu P(x) polinomul lui Lagrange de grad cel mult 2 ce interpoleaza datele din tabelul de
mai sus. Cat este P(2)?
a. 4
b. 3
c. 2
d. 5
L* 41. Se da tabelul
X 1 2 3
y 4 7 6
Sa se calculeze diferenta divizata f[l ,2,3]
a. -3 c. -4
b. -1 d. -2
P 42. Aproximati integrala
2 6
I X c&c
cu metoda lui Simpson.
a. 64/3 c. 33
b. 68/3 d. 31
^ 43. Se rezolva numeric ecuatia diferentiala
y=y-x, y(0)=l
cu metoda lui Euler-Cauchy cu pas h=l. Notam XQ
=
OSJ^Q
=
1. Care este aproximatia produsa de
aceasta metoda pentru y(l), unde y este solutia exacta a ecuatiei diferentiale de mai sus?
a. 1
b. 3
c. 2
d. 4
r\ 44. Se aplica metoda iterativa a lui Gauss-Seidel sistemului cu predictie initiala
Sa se calculeze urmatoarea iteratie x in metoda lui Gauss-Seidel.
Only
a.
b.
c.
^ 45. Se da tabelul
d.
e.
X -1 0 1
y 1 -1 1
Se noteaza cu P(x) polinomul lui Lagrange de grad cel mult 2 ce interpoleaza datele din tabelul de
mai sus. Cat este P(2)?
a. 6
b. 5
c. 4
d. 7
P 46. Pentru A= sa se calculeze
a. 7
b. 6
c. 5
d. 4
e. 10
A 47. Se rezolva numeric ecuatia diferentiala
y=y-x, y(0)=l
cu metoda lui Euler cu pas h=l . Notam Xg 0,j/g 1. Care este aproximatia produsa de aceasta
metoda pentru y(l), unde y este solutia exacta a ecuatiei diferentiale de mai sus?
a. 2
b. 3
c. 1
d. 4
48. Se rezolva ecuatia x + 5x- 10 = 0 cu metoda lui Newton cu predictie initiala x
0
= 0. Cat este urmatoarea
iteratie x-y?
a. -1
b. 3
c. 1
A 49. Aproximati integrala
d. 0
e. 2
{ 2x
2
dx
cu metoda trapezului.
a. 1
b. 1.5
c. 0.5
d. 2
Edited by Foxit Reader
) by Foxit Software Company,2005-2006
For Evaluation Only.
P 50. Se da tabelul
X 1 2 3
y 4 7 8
Sa se calculeze diferenta divizata f [ l ,2]
a. 4
b. 3
" 51. Se da tabelul
c. 2
d. 1
X -1 0 1
y 2 0 0
Se noteaza cu P(x) polinomul lui Lagrange de grad cel mult 2 ce interpoleaza datele din tabelul de
mai sus. Cat este P(2)?
a. 5 c. 6
b. 2 d. 7
52. Se rezolva ecuatia x + 3x- 1 = 0 cu metoda lui Newton cu predictie initiala x$ = 0. Cat este urmatoarea
iteratie Xj?
a. 3/2 d. 1/4
b. 1/3 e. 0
c. 1/2
P 53. Pentru A= sa se calculeze
a. 4
b. 5
c. 7
A 54. Aproximati integrala
d. 6
e. 10
2 . 3
{ x dx
cu metoda lui Simpson.
a. 4 c. 6
b. 7 d. 5
P 55. Se rezolva ecuatia x + 2x- 2 = 0 cu metoda lui Newton cu predictie initiala x
0
= 0. Cat este urmatoarea
iteratie Xj?
a. -1 d. 2
b. 1 e. 0
c. 3
Company,2005-2006
Only
" 56. Se aplica metoda iterativa a lui Jacobi sistemului cu predictie initiala
Sa se calculeze urmatoarea iteratie x in metoda lui Jacobi.
d.
e.
^
" 57. Se rezolva ecuatia x + 3x- 1=0 pe intervalul [0,1] cu metoda bisectiei. Prima iteratie x\ este
0.5. Care este a doua iteratie?
a. 1.5 d. 1.25
b. 0.25 e. 0.5
c. 0.75
P 58. Aproximati integrala
2 . 5
{ x dx
cu metoda lui Simpson.
a. 16 c. 11
b. 12 d. 10
P 59. Se rezolva cu metoda lui Gauss cu pivotare sistemul cu matricea extinsa
Dupa eliminari succesive se ajunge la sistemul cu matrice superior triunghiulara
c.
d.
60. Se rezolva ecuatia (x + 2x + 1)/ 10=x pe intervalul [0,1] cu metoda aproximatiilor succesive corespunzatoare
functiei fix) = (x + 2x+ 1) /10. Alegem predictie initiala x$ = 1. Cat este urmatoarea iteratie x
x
conform
metodei aproximatiilor succesive?
a. 2/5 d. 3/5
b. 3/4 e. 1/8
c. 1/10
Edited by Foxit Reader
) by Foxit Software Company,2005-2006
For Evaluation Only.
** 61. Se aplica metoda radacinii patrate matricii A= pentru calculul descompunerii Cholesky A=BB
unde B este inferior triunghiulara(toate elementele deasupra diagonalei principale sunt nule). Sa se afle
elementul de pe a doua linie si prima coloana din matricea B.
a. 2 d. 3
b. 1 e. 4
c. 5
A 62. Se rezolva ecuatia x + 2x- 1=0 pe intervalul [0,1] cu metoda bisectiei. Prima iteratie x\ este
0.5. Care este a doua iteratie?
a. 0.25
b. 0.5
c. 1.25
d. 1.5
e. 0.75
^ 63. Pentru A= sa se calculeze
a. 5
b. 4
c. 6
d. 7
e. 10
U 64. Se aplica metoda iterativa a lui Gauss-Seidel sistemului cu predictie initiala
a.
b.
c.
Sa se calculeze urmatoarea iteratie x in metoda lui Gauss-Seidel.
d.
e.
>^ 65. Se rezolva cu metoda lui Gauss cu pivotare sistemul cu matricea extinsa
Dupa eliminari succesive se ajunge la sistemul cu matrice superior triunghiulara
1 2 3
2 3 5
a.
b.
c.
d.
d by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2006
For Evaluation Only.
U 66. Aproximati integrala
cu metoda trapezului.
a. 1 c. 0.5
b. 2 d. 1.5
A 67. Se rezolva cu metoda lui Gauss cu pivotare sistemul cu matricea extinsa
Dupa eliminari succesive se ajunge la sistemul cu matrice superior triunghiulara
c. a.
b. d.
U 68. Aproximati integrala
{ 2x*dx
cu metoda trapezului.
a. 2
b. 0.5
P 69. Se rezolva numeric ecuatia diferentiala
c. 1.5
d. 1
y=3y+x, y(0)=l
cu metoda lui Euler cu pas h=l . Notam X^ Q
7
y$ 1. Care este aproximatia produsa de aceasta
metoda pentru y(l), unde y este solutia exacta a ecuatiei diferentiale de mai sus?
a. 2 c. 1
b. 4 d. 3
<-* 70. Se rezolva ecuatia x + x - 1=0 pe intervalul [0,1] cu metoda bisectiei. Prima iteratie x \ este
0.5. Care este a doua iteratie?
a. 0.5 d. 0.75
b. 1.25 e. 1.5
c. 0.25
Actorul pentru care cazul de utilizare produce un rezultat observabil se numeste
A. actor primar
B. actor secundar
Actorii sunt rezidenti in afara sistemului.
A. Adevarat
B. Fals
Atributele publice sunt atribute vizibile, pot fi folosite si in alte clase si sunt precedate de semnul :
A. "+"
B. "-"
C. "#"
Atributele private pot fi accesate numai in clasa respectiva si sunt precedate de semnul :
A. "+"
B. "-"
C. "#"
Atributele protejate pot fi accesate de clasa care le-a definit, precum si de generalizarile sau specializarile
ei si sunt precedate de semnul :
A. "+"
B. "-"
C. "#"
1.
2.
3.
4.
5.
Ce tip de restrictie se foloseste pentru a indica faptul ca o clasa poate participa la cel mult o asociere la un
moment dat :
A. {incomplete}
B. {XOR}
C. {subset}
Cazurile de utilizare sunt rezidente in afara sistemului.
A. Adevarat
B. Fals
Ce tipuri de evenimente pot exista (intr-o diagrama de stare) ?
A. apel de operatie
B. semnale
C. schimbarea conditiilor
D. scurgerea unui interval de timp
E. toate variantele de mai sus
Ce tip de eveniment standard, ce poate declansa actiuni starilor, se foloseste atunci cind obiectul paraseste
starea respectiva ?
A. entry
B. exit
C. do
Ce tip de eveniment standard, ce poate declansa actiuni starilor, se foloseste atunci cind obiectul intra in
starea respectiva ?
A. entry
B. exit
C. do
Ce tip de eveniment standard, ce poate declansa actiuni starilor, se foloseste atunci cind obiectul se afla in
starea respectiva ?
A. entry
B. exit
C. do
6.
7.
8.
9.
10.
11.
Cineva din organizatie care are un interes de afaceri direct in construirea sistemului sau produsului si care
va fi recompensat pentru succes si criticat pentru esec se numeste...
A. actor
B. stakeholders
Ce inseamna acronimul UML ?
A. Uniform Model Language
B. Unified Modelling Language
C. Unified Molding Language
Ce termen se foloseste pentru a descrie folosirea UML ca schite, cand diagrama UML se construieste dintr-
un cod existent, in ideea de a ajuta la intelegerea lui ?
A. forward - engineering
B. reverse - engineering
Ce termen se foloseste pentru a descrie folosirea UML ca schite, cand diagrama UML se deseneaza
inainte de a scrie codul ?
A. forward - engineering
B. reverse - engineering
Ce reprezinta acronimul OMG ?
A. Object Management Group
B. Organization Management Group
C. Object Method Group
D. Organism Modified Genetically
Care este cel mai rapid (din punct de vedere al duratei) proces software ?
A. Modelul secvential liniar.
B. Modelul prototipului.
C. Modelul RAD
D. Modelul spiral WINWIN
Cati actori pot initia un caz de utilizare ?
A. niciunul
B. unul
C. doi
D. mai mult de doi
Cum este indicat un stereotip ?
A. printr-un dreptunghi
B. printr-o lista de siruri de caractere intre acolade
C. printr-un oval
D. printr-un cuvant intre paranteze unghiulare duble
12.
13.
14.
15.
16.
17.
18.
19.
Cum sunt indicate proprietatile unui element UML
A. printr-un dreptunghi
B. printr-o lista de siruri de caractere intre acolade
C. printr-un oval
D. printr-un cuvant intre paranteze unghiulare duble
Cu ce simbol se reprezinta o stare in UML ?
A. elipsa
B. dreptunghi
C. dreptunghi cu colturile rotunjite
D. romb
E. cerc ingrosat
Cu ce simbol se reprezinta o clasa ?
A. dreptunghi
B. dreptunghi cu coltul dreapta, sus indoit
C. paralelipiped
D. dreptunghi cu colturi rotunjite
Cu ce simbol se reprezinta un actor ?
A. linie dreapta
B. un omulet
C. dreptunghi cu colturi rotunjite
D. elipsa
Cu ce simbol se reprezinta un caz de utilizare ?
A. dreptunghi
B. cub in spatiu
C. elipsa
D. linie dreapta cu romb
Cu ce simbol se reprezinta un nod ?
A. linie dreapta cu sageata plina
B. linie dreapta
C. elipsa
D. paralelipiped
Cu ce simbol se reprezinta o nota ?
A. dreptunghi
B. dreptunghi cu coltul dreapta, sus indoit
C. dreptunghi cu colturi rotunjite
D. cerc ingrosat
20.
21.
22.
23.
24.
25.
26.
Cu ce simbol se reprezinta o dependenta ?
A. linie punctata cu o sageata aratand spre elementul de care depinde
B. linie dreapta
C. linie dreapta cu romb
D. linie punctata, ingrosata cu triunghi
Cu ce simbol se reprezinta o asociere ?
A. linie dreapta
B. linie dreapta cu romb
C. line dreapta cu romb innegrit
D. dreptunghi
Cu ce simbol se reprezinta o compunere ?
A. linie dreapta cu romb innegrit
B. linie dreapta
C. linie dreapta cu romb
D. linie punctata, ingrosata cu triunghi
Cu ce simbol se reprezinta un pachet ?
A. elipsa
B. dreptunghi cu coltul dreapta, sus indoit
C. paralelipiped
D. un dreptunghi mare si un dreptunghi mic lipit de el, deasupra, in stanga
Cum se specific pe diagrama cazurilor de utilizare actorii secundari ?
A. Pe cat posibil, pe partea stanga
B. Pe cat posibil, pe partea dreapta
Cum se specific pe diagrama cazurilor de utilizare actorii primari ?
A. Pe cat posibil, pe partea stanga
B. Pe cat posibil, pe partea dreapta
27.
28.
29.
30.
31.
32.
Diagramele statice (structurale) ...
A. descriu structura, responsabilitatile sistemului informatic, componentele executabile ale sistemului,
locatiile fizice de executie si nodurile de stocare a datelor.
B. descriu comportamentul si interactiunile dintre diverse entitati ale sistemului informatic
Diagramele dinamice (comportamentale) ...
A. descriu structura, responsabilitatile sistemului informatic, componentele executabile ale sistemului,
locatiile fizice de executie si nodurile de stocare a datelor.
B. descriu comportamentul si interactiunile dintre diverse entitati ale sistemului informatic
Diagramele claselor, ale obiectelor, ale cazurilor de utilizare, ale componentelor si diagramele de
exploatare fac parte din categoria diagramelor ...
A. Statice (structurale)
B. Dinamice (comportamentale)
Diagramele de secventa, de colaborare, de stare si de activitate fac parte din categoria diagramelor ...
A. Statice (structurale)
B. Dinamice (comportamentale)
Diagramele de secvente sunt utile pt a arata cum se implementeaza liniile de cod ?
A. Adevarat
B. Fals
Diagrama de secvente arata starea unui obiect in diferite cazuri de utilizare.
A. Adevarat
B. Fals
Diagrama care descrie structura unui sistem, in general iar in componenta ei intra clase, stereotipuri si
relatiile dintre acestea este...
A. diagrama obiectelor
B. diagrama cazurilor de utilizare
C. diagrama claselor
D. diagrama componentelor
E. diagrama de desfasurare
Diagrama care descrie structura unui sistem la un anumit moment si este o varianta a diagramei claselor,
care, in locul unei clase, prezinta mai multe instante ale ei si este formata din obiecte si relatiile (legaturile)
dintre ele este...
A. diagrama obiectelor
B. diagrama cazurilor de utilizare
C. diagrama claselor
D. diagrama componentelor
E. diagrama de desfasurare
33.
34.
35.
36.
37.
38.
39.
40.
Diagrama care descrie functionalitatea unui sistem, prezinta actorii externi, cazurile de utilizare identificate
numai din punct de vedere al actorilor (comportamentul sistemului, asa cum este perceput de utilizatorii lui),
nu si din interior, precum si relatiile dintre actori si cazurile de utilizare si reflecta modul static de vizualizare
a cazurilor de utilizare asupra sistemului (diferite tipuri de relatii intre cazurile de utilizare ) dar si modul de
organizare si de modelare a comportamentului unui sistem este...
A. diagrama obiectelor
B. diagrama cazurilor de utilizare
C. diagrama claselor
D. diagrama componentelor
E. diagrama de desfasurare
Diagrama care descrie structura fizica a codului in termenii componentelor de cod si relatiile dintre acestea,
are legatura cu diagrama claselor, reflecta vederea statica de implementare asupra sistemului, este
cunoscuta si ca diagrama de implementare este...
A. diagrama obiectelor
B. diagrama cazurilor de utilizare
C. diagrama claselor
D. diagrama componentelor
E. diagrama de desfasurare
Diagrama care indica arhitectura fizica pe care este implementat sistemul, calculatoarele, device-urile
(noduri ale sistemului) si conexiunile dintre ele este...
A. diagrama obiectelor
B. diagrama cazurilor de utilizare
C. diagrama claselor
D. diagrama componentelor
E. diagrama de desfasurare
Diagrama care prezinta colaborarea dinamica dintre un numar de obiecte, punand accentul pe secvente de
mesaje trimise intre acestea pe masura scurgerii timpului si are doua axe : timpul, pe axa verticala si setul
de obiecte pe axa orizontala este...
A. diagrama de secventa
B. diagrama de colaborare
C. diagrama de stare
D. diagrama de activitate
Diagrama care pe langa interactiunea dintre obiecte (schimbul de mesaje), prezinta si obiectele si legaturile
dintre ele este...
A. diagrama de secventa
B. diagrama de colaborare
C. diagrama de stare
D. diagrama de activitate
41.
42.
43.
44.
45.
Diagrama care descrie ciclul de viata al unui element (al obiectelor, al subsistemelor si al sistemelor), prin
specificarea starilor in care se gaseste un element si a evenimentelor (mesaje, erori, conditii care devin
adevarate) care ii modifica starea (tranzitie) este...
A. diagrama de secventa
B. diagrama de colaborare
C. diagrama de stare
D. diagrama de activitate
Diagrama care prezinta activitatile si responsabilitatile elementelor sistemului, are ca elemente constitutive
stari de actiune si mesaje care vor fi trimise sau receptionate ca parte a actiunii realizate este...
A. diagrama de secventa
B. diagrama de colaborare
C. diagrama de stare
D. diagrama de activitate
Diagramele de secventa difera de diagramele de colaborare. Alegeti enuntul potrivit.
A. diagramele de secventa sunt diagrame de interactiune, pe cand cele de colaborare nu
B. diagramele de secventa reprezinta o ordonare in timp, diagramele de colaborare reprezinta clase si
mesaje, timpul nefind implicat deloc
C. ordinea temporala e indicata prin numerotarea diagramelor de secventa
D. nici o afirmatie nu este adevarata
Daca o valoare de atribut sau legatura inserata nu poate fi actualizata sau stearsa , dar pot fi adaugate
valori sau legaturi atributului, respectiv asocierii, atunci se indica acest lucru folosind restrictia :
A. {frozen}
B. {xor}
C. {addOnly}
D. {incomplete}
Daca o valoare de atribut sau legatura inserata nu poate fi actualizata sau stearsa si nici nu pot fi adaugate
valori sau legaturi atributului, respectiv asocierii, atunci se indica acest lucru folosind restrictia :
A. {frozen}
B. {xor}
C. {addOnly}
D. {incomplete}
Daca un obiect e atat creat cat si distrus in timpul interactiunii, se foloseste constrangerea :
A. {create}
B. {destroyed}
C. {transient}
D. {createDistroyed}
46.
47.
48.
49.
50.
51.
Diagramele de activitate pot fi folosite pentru a modela comportamentul intern al unei metode.
A. Adevarat
B. Fals
Diagramele de secventa nu se folosesc pentru a modela o comportare asincrona. A/F Adev
Mostenire? Adev Generalizarea inseamna
Fiecare functionalitate a sistemului trebuie sa fie reprezentata de un caz de utilizare? A/F?
A
Generalizarea inseamna?
polimorfism/
asociere/
mostenire/ Adev
compunere
Diferenta dintre clase si componente este si aceea ca clasele au operatii si atribute, pe cand componentele nu au decat operatii. A (Curs)
52.
53.
54.
55.
56.
57.
Ingineria software cuprinde metodele, instrumentele si tehnicile folosite pentru dezvoltarea software.
A. Adevarat
B. Fals
In UML, un model ...
A. este o reprezentare a unui sistem.
B. defineste un mecanism de organizare a elementelor in grupuri legate semantic.
C. cuprinde ipotezele si deciziile aplicate in timpul analizei si al proiectarii (echivalentul comentariilor din
limbajele de programare). Contine orice informatie si se poate folosi in orice tip de diagrame.
D. permite extinderea elementelor de baza pentru a crea noi elemente. Reprezinta un inteles specific
asociat unui element. Transforma un element in altul cu un inteles nou.
In UML, un pachet ...
A. este o reprezentare a unui sistem.
B. defineste un mecanism de organizare a elementelor in grupuri legate semantic.
C. cuprinde ipotezele si deciziile aplicate in timpul analizei si al proiectarii (echivalentul comentariilor din
limbajele de programare). Contine orice informatie si se poate folosi in orice tip de diagrame.
D. permite extinderea elementelor de baza pentru a crea noi elemente. Reprezinta un inteles specific
asociat unui element. Transforma un element in altul cu un inteles nou.
In UML, o nota ...
A. este o reprezentare a unui sistem.
B. defineste un mecanism de organizare a elementelor in grupuri legate semantic.
C. cuprinde ipotezele si deciziile aplicate in timpul analizei si al proiectarii (echivalentul comentariilor din
limbajele de programare). Contine orice informatie si se poate folosi in orice tip de diagrame.
D. permite extinderea elementelor de baza pentru a crea noi elemente. Reprezinta un inteles specific
asociat unui element. Transforma un element in altul cu un inteles nou.
In UML, proprietatile ...
A. sunt o reprezentare a unui sistem.
B. definesc un mecanism de organizare a elementelor in grupuri legate semantic.
C. cuprind ipotezele si deciziile aplicate in timpul analizei si al proiectarii (echivalentul comentariilor din
limbajele de programare). Contin orice informatie si se pot folosi in orice tip de diagrame.
D. permit extinderea elementelor de baza pentru a crea noi elemente. Reprezinta un inteles specific
asociat unui element. Transforma un element in altul cu un inteles nou.
Intr-o diagrama a cazurilor de utilizare, trebuie sa existe numai actori pincipali.
A. Adevarat
B. Fals
In diagramele de clasa, singurele elemente dinamce se realizeaza prin intermediul operatiilor.
A. Adevarat
B. Fals
58.
59.
60.
61.
62.
63.
64.
In cazul atributelor prefixate de slash ("/") inseamna ca :
A. atributul este optional
B. atributul este rezultatul impartirii a doua entitati, separate de slash ("/")
C. atributul este derivat
D. nu are nici o semnificatie
in UML notiunea de componenta poate sa desemneze atat un tip (o categorie) de obiecte cat si fiecare
obiect din tipul respectiv (instanta tipului).
A. Adevarat
B. Fals
Intr-o relatie de dependenta, sageata puncteaza spre
a) Cazul de utilizare de baza
b) Cazul de utilizare extins
65.
66.
67.
La fiabilitatea sistemelor, ce termen se foloseste pentru a desemna o decizie gresit luata in timpul
dezvoltarii software ?
A. Failure
B. Fault
C. Error
La fiabilitatea sistemelor, ce termen se foloseste pentru a desemna o problema care face ca software-ul sa
se indeparteze de comportarea dorita ?
A. Failure
B. Fault
C. Error
La fiabilitatea sistemelor, ce termen se foloseste pentru a desemna un eveniment care face ca software-ul
sa se indeparteze de comportarea dorita ?
A. Failure
B. Fault
C. Error
Mesajul la care obiectul care trimite mesajul asteapta raspuns, se numeste :
A. mesaj asincron
B. mesaj simplu
C. mesaj de raspuns
D. mesaj sincron
Mesajul la care obiectul care trimite mesajul nu asteapta raspuns si ramane activ se numeste :
A. mesaj asincron
B. mesaj simplu
C. mesaj de raspuns
D. mesaj sincron
Mesajul la care obiectul care trimite mesajul nu asteapta raspuns iar obiectul pierde controlul se numeste :
A. mesaj asincron
B. mesaj simplu
C. mesaj de raspuns
D. mesaj sincron
68.
69.
70.
71.
72.
73.
O "harta" a drumului ce trebuie urmat pentru construirea unui produs sau sistem, de calitate crescuta si intr-
un timp dat se numeste...
A. bloc de decizie
B. sintaxa
C. nivel proces
D. proces software
O diagrama de secvente este un exemplu de...
A. diagrama de stare
B. diagrama de activitate
C. diagrama de interactiune
D. diagrama de desfasurare
O diagrama de colaborare este un exemplu de...
A. diagrama de secventa
B. diagrama de clasa
C. diagrama de activitate
D. diagrama de interactiune
O diagrama de secventa este un exemplu de...
A. diagrama de colaborare
B. diagrama de interactiune
C. diagrama de clasa
D. diagrama a cazurilor de utilizare
O diagrama de clasa este o vedere dinamica asupra sistemului.
A. Adevarat
B. Fals
O clasa care contine informatii despre alta clasa se numeste ...
A. clasa secundara
B. metaclasa
C. alfaclasa
D. clasa primara
O diferenta intre clase si componente este : clasele au atribute si operatii, pe cand componentele au numai
operatii, accesibile numai prin intermediul interfetelor lor.
A. Adevarat
B. Fals
O conditie inaintea unui mesaj se reprezinta :
A. intre paranteze colante
B. intre paranteze drepte
C. intre acolade
D. intre paranteze unghiulare
74.
75.
76.
77.
78.
79.
80.
81.
O diagrama de stare poate avea :
A. 0 stari initiale
B. o stare initiala
C. un numar infinit de stari initiale
D. un numar finit (cel putin 3) de stari initiale
E. cel putin 5 si cel mult 10 stari initiale
O tranzitie de la o stare sursa la o stare tinta se reprezinta astfel :
A. printr-o linie dreapta cu romb innegrit
B. elipsa
C. printr-o sageata solida, de la starea sursa spre starea tinta, etichetata cu numele evenimentului si al
actiunii, separate prin caracterul slash (/)
D. dreptunghi cu coltul dreapta, sus indoit
O actiune initiala se reprezinta :
A. sub forma unei elipse
B. printr-un cerc plin
C. prin doua cercuri concentrice, din care cel interior este plin
D. un dreptunghi cu colturile rotunjite
O actiune finala se reprezinta :
A. sub forma unei elipse
B. printr-un cerc plin
C. prin doua cercuri concentrice, din care cel interior este plin
D. un dreptunghi cu colturile rotunjite
O subclasa nu trebuie sa includa nici o restrictie asupra proprietatilor supraclasei.
A. Adevarat
B. Fals
O clasa pentru care nu se poate crea nici o instanta concreta se numeste :
A. Superclasa
B. Clasa privata
C. Clasa protejata
D. Clasa abstracta
O subclasa poate avea acces la atributele private ale superclasei.
A. Adevarat
B. Fals
82.
83.
84.
85.
86.
87.
88.
Rolul unui actor este implicit principal ?
A. Adevarat
B. Fals
Pentru sistemele de mari dimensiuni se recomanda urmatorul model de proces :
A. modelul prototipului
B. modelul RAD
C. modelul Spirala
D. modelul WINWIN
Pe o asociere este indicat, in partea actorului, "secondary". Aceasta inseamna ca :
A. actorul e implicat in al doilea caz de utilizare
B. actorul e secundar
C. actorul e al doilea actor principal
D. nu inseamna nimic
Orice clasa trebuie sa aiba si atribute publice? A / F Fals
O relatie de extindere ( specificata de stereotipul <<extend>>) e folosita pentru modelarea
caracteristicilor optionale ale sistemului. A/F Fals
O clasa copil poate avea doar o clasa parinte. A/F Adev
O clasa de asociere (association classe) se refera la o clasa de legatura (linking class)
A/F Adev
89.
90.
91.
92.
93.
94.
SO, baze de date, compilatoare fac parte din...
A. Software-ul de aplicatie
B. Software-ul de sistem
Software-ul de control in avioane, software-ul pentru e-mail, editoarele de texte fac parte din...
A. Software-ul de aplicatie
B. Software-ul de sistem
Scopurile pe care ingineria software cauta sa le indeplineasca sunt
A. Satisfacerea cerintelor utilizatorilor, livrare la timp
B. Cost redus de realizare a software-ului, cost redus de mentenanta
C. Performanta inalta, portabilitate, fiabilitate sporita
D. A+B+C
E. B
F. A+C
Se considera urmatorul simbol in UML

Ce reprezinta ?
A. o clasa
B. o interfata
C. o desfasurare
D. o componenta
Se considera urmatorul simbol in UML
Ce reprezinta ?
A. un pachet
B. un caz de utilizare
C. o activitate
D. o colaborare
Se considera urmatorul simbol in UML
Ce reprezinta ?
A. un nod
B. un pachet
C. o componenta
D. un actor
95.
96.
97.
98.
99.
100.
Se considera urmatorul simbol in UML
Ce rprezinta ?
A. un pachet
B. o clasa
C. un actor
D. o componenta
Se considera urmatorul simbol in UML
Ce reprezinta ?
A. un actor
B. un pachet
C. o realizare
D. o nota
Se considera urmatorul simbol in UML
Ce reprezinta ?
A. un actor
B. o colaborare
C. o activitate
D. o realizare
Se considera urmatorul simbol in UML
Ce reprezinta ?
A. o constrangere
B. o nota
C. o stare
D. o activitate
101.
102.
103.
104.
Se considera urmatorul simbol in UML
Ce reprezinta
A. un caz de utilizare
B. o nota
C. o colaborare
D. o stare
Se considera urmatorul simbol in UML
Ce reprezinta ?
A. un stereotip
B. o clasa
C. o activitate
D. o asociere
Se considera urmatorul simbol in UML
Ce reprezinta ?
A. un caz de utilizare
B. o dependenta
C. un stereotip
D. un actor
Se considera simbolul in UML
Ce reprezinta ?
A. un mesaj sincron
B. un mesaj asincron
C. un mesaj simplu
D. un mesaj de raspuns
Se considera simbolul in UML
Ce reprezinta ?
A. un mesaj sincron
B. un mesaj asincron
C. un mesaj simplu
D. un mesaj de raspuns
105.
106.
107.
108.
109.
Se considera simbolul in UML
Ce reprezinta ?
A. un mesaj sincron
B. un mesaj asincron
C. un mesaj simplu
D. un mesaj de raspuns
Se considera simbolul in UML
Ce reprezinta ?
A. un mesaj sincron
B. un mesaj asincron
C. un mesaj simplu
D. un mesaj de raspuns
Se considera simbolul in UML
Ce reprezinta ?
A. stare initiala
B. stare finala
Se considera simbolul in UML
Ce reprezinta ?
A. stare initiala
B. stare finala
Semnalele pot avea parametrii, care se scriu intre paranteze rotunde.
A. Adevarat
B. Fals
Se considera urmatoarea diag.
1
Care enunt se potriveste cel mai bine pentru a descrie daigrama?
A. tara are o capitala
B. tara are cel putin o capitala
C. tara are cel mult o capitala
1
110.
111.
112.
113.
114.
Se considera urmatoarele enunturi:
I generalizarea se refera la subtipuri
II clasificarea se refera la subtipuri
III generalizarea se refera la instantele obiectelor
IV clasificarea se refera la instantele obiectelor
alegeti raspunsul correct
a) II si III sunt adevarate Corect
b) I si IV sunt false
c) II si III sunt false
Tipurile simple si complexe trebuie modelate astfel:
a) ca atribute
b) drept clase de asociere
c) atribute si clase de asociere
d) tipurile simple ca atribute, iar cele complexe ca asocieri
Se considera diagrama:
Ce tip de asociere este reprezentata?
Tara--------------suprafata
o agregare
o compunere
o generalizare
Tipurile simple si complexe trebuie modelate astfel:
a. ca atribute,
b. drept clase de asociere,
c. atribute si clase de asociere,
d. tipurile simple ca atribute, iar cele complexe ca asociere(d)
115.
116.
117.
118.
UML este un limbaj de modelare grafica, care ajuta la descrierea si design-ul sistemelor software, in
particular al sistemelor software construite folosind stilul orientat-obiect.
A. Fals
B. Adevarat
UML se poate folosi ca...
A. schita
B. plan
C. limbaj de programare
D. A+B+C
E. A+B
F. nici una din variantele de mai sus
Un model bun UML va contine cel putin o diagrama de fiecare tip ?
A. Da
B. Nu
Un actor poate fi doar o persoana ?
A. Da.
B. Nu, un actor poate fi orice sau oricine interacioneaz cu sistemul (trimite sau recepioneaz mesaje
de la sistem sau schimb informaii cu acesta).
UML se poate folosi numai ca schita.
A. Adevarat
B. Fals
Un model UML descrie...
A. ce trebuie sa faca un sistem
B. cum sa se implemeteze sistemul
Un caz de utilizare poate interaciona cu cel mult 2 actori.
A. Adevarat
B. Fals
Un caz de utilizare trebuie sa interactioneze cu cel putin un actor.
A. Adevarat
B. Fals
Un server de baze de date e un exemplu de nod ?
A. Adevarat
B. Fals
119.
120.
121.
122.
123.
124.
125.
126.
127.
Un nod poate reprezenta (alegeti varianta completa) :
A. un computer
B. orice dispozitiv fizic
C. un server de aplicatie
D. toate de mai sus
Un nod reprezinta intotdeauna un dispozitiv fizic (physical device) ?
A. Adevarat
B. Fals
Un bloc de decizie se reprezinta :
A. sub forma unei elipse
B. sub forma unei cerc innegrit
C. un romb
D. un dreptunghi cu colturile rotunjite
Un bun design trebuie sa contina simultan diagrame de secventa si diagrame de colaborare
A
F
Un calificativ (qualifier) al asocierii:
a. e folosita ca o preconditie a asocierii
b. joaca rolul parametrului folosit sa deturneze un obiect unic
c. e folosit ca o postconditie a asocierii
d. e acelasi lucru ca o asociere directionata (directed associon) Adev
128.
129.
130.
131.
132.
1) Fie A o matrice cu 10 linii si 20 de coloane. In cadrul vectorului obtinut prin
linearizarea coloana a matricii, elementul A(7, 8) are rangul:
10 linii L1
20 de coloane - C1
7 linii - L1 : n-1 = 7 1 = 6
8 de coloane - C2 : n-1 = 8 1 = 7




A =




2) Fie A o matrice cu 20 de linii si 10 coloane, stocata intr-un vector obtinut prin
linearizarea linie a acesteia. In cadrul acestui vector, rangul elementului A(13, 7) este:

20 linii L1
10 de coloane - C1
13 linii - L1 : n-1 = 13 1 = 12
7 de coloane - C2 : n-1 = 7 1 = 6




A =




3) Fie A o matrice cu 23 de linii i 7 coloane, stocat ntr-un vector obinut prin
linearizarea linie a acesteia. n cadrul acestui vector, rangul elementului A(13, 7) este
23 linii L1
7 de coloane - C1
13 linii - L1 : n-1 = 13 1 = 12
7 de coloane - C2 : n-1 = 7 1 = 6




A =

LINII COLOANE
10 20
7 8
L1 X C2+ L2
10 20
6 7
10 X 7 + 6 = 76
LINII COLOANE
20 10
13 7
L2 X C1 + C2
20 10
12 6
12 X 10 + 6 = 126
LINII COLOANE
23 7
13 7
L2 X C1 + C2
23 7
12 6
12 X 7 + 6 = 90
Denumire: Licenta-Informatica-3-ani-2011
Starea: Completat
Rezultatul: 46 din 100 puncte


ntrebarea nr. 1
6 din 6 puncte

Care vor fi valorile continute intr-o stiva (de la baza catre varf), initial vida, daca se
efectueaza urmatoarele operatii, in aceasta ordine:
- se introduc, in ordine: 5, 7, 23, 15, 12
- se extrag trei elemente
- se introduc, in ordine: 17, 42, 25
- se extrag doua elemente
- se introduc, in ordine: 13, 2, 45
Answer

Selected Answer: b.
5, 7, 17, 13, 2, 45


ntrebarea nr. 2
0 din 6 puncte

Se numeste arbore binar complet un arbore binar in care fiecare nod, cu exceptia
nodurilor terminale, are exact doi descendenti, si toate nodurile terminale se afla pe
acelasi nivel. Numarul total de noduri ale unui arbore binar complet cu n noduri
terminale este:
Answer

Selected Answer: d.
2
n
- 1


ntrebarea nr. 3
6 din 6 puncte

Cifrele ce constituie CNP-ul dvs. sunt elementele unui vector cu lungimea data de
numarul cifrelor din CNP. Presupunem ca acest vector s-a obtinut prin linearizarea
diagonala a unei matrici superior k-diagonale cu n linii si n coloane. Sa se indice valoarea
maxima pe care o poate avea n, asa incat sa fie suficiente informatiile furnizate de vector
pentru reconstituirea integrala a matricii.
Answer

Selected Answer: c.
13


ntrebarea nr. 4
0 din 6 puncte

Se da urmatorul tabel:
ANGAJATI(id_ang#, nume, data_ang, data_nast, salariu, comision, functia).
Stiind ca exista salariati cu functia Programator IT, care dintre variantele de mai jos
afiseaza numele, functia, salariu pentru acei angajati care au salariul mai mare decat al
oricarui Programator IT?
Answer

Selected Answer: c.
SELECT nume, functia, salariu
FROM angajati
WHEE salariu > ANY(SELECT salariu FROM angajati
WHERE functia=Programator IT);


ntrebarea nr. 5
6 din 6 puncte

Se da urmatorul tabel:
ANGAJATI(id_angajat#, nume, prenume, salariu, functia, data_angajarii).
Se doreste ca pentru fiecare angajat sa se obtina numele, functia, salariul, respectiv
salariul pe care l-ar primi daca s-ar realiza urmatoarele mariri salariale:
- pentru agentii imobiliari o marire de 20%;
- pentru consultanti o marire de 30%;
- pentru manageri o marire de 50%.
Pentru angajatii cu alte functii se pastreaza salariu vechi.
Alegeti comanda care nu obtine acest rezultat.
Answer

Selected Answer: c.
SELECT nume, functia, salariu,
DECODE functia WHEN agent_imobiliar THEN 1.20*salariu
WHEN consultant THEN 1.30*salariu
WHEN manager THEN 1.50*salariu
ELSE salariu
END AS salariu_nou
FROM angajati;


ntrebarea nr. 6
6 din 6 puncte

Pe tabelul de mai jos
MELODII(id_melodie#, titlu, textier, compozitor, gen, durata)
este definita urmatoarea vizualizare:
CREATE VIEW v_melodii AS

SELECT id_melodie, titlu, textier, compozitor, durata, gen
FROM melodii
WHERE gen != clasic
WITH CHECK OPTION;
Care dintre urmatoarele comenzi nu este permisa asupra vizualizarii definite?
Answer
Selected Answer: c.
INSERT INTO v_melodii(id_melodie, titlu, compozitor, gen)
VALUES (101, Dunarea Albastra, Johann Strauss, clasic);


ntrebarea nr. 7
10 din 10 puncte

Doriti un punct din oficiu?
Answer

Selected Answer: True

ntrebarea nr. 8
0 din 6 puncte

Sa se precizeze natura cuadricei

Answer

Selected Answer: a.
paraboloid hiperbolic


ntrebarea nr. 9
0 din 6 puncte

Analizati cu atentie urmatorul fragment de cod sursa. Precizati ce catitate de memorie, in
octeti, se aloca pentru clasa care urmeaza? Ce se va afisa pe ecran?

class Empty
{
typedef long Int;
public:
Empty(){}
~Empty(){}
};


int main()
{

std::cout << sizeof(Empty);
return 0;
}
Answer
Selected Answer: 16

ntrebarea nr. 10
0 din 6 puncte

Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este ordinea de apel
a constructorilor si destructorilor. Ce se va afisa pe ecran?
class Baza
{
public:
Baza(){ cout<<"B::B()"<<endl;}
virtual ~Baza(){ cout<<"B::~B()"<<endl;}

};
class Derivat:public Baza
{
public:
Derivat(){ cout<<"D::D()"<<endl;}
~Derivat(){ cout<<"D::~D()"<<endl;}
};
int main (int argc, char* argv[])
{

Baza *s = new Derivat();
delete s;
return 0;
}
Answer

Selected Answer: a.
B::B()
D::D()
B::~B()


ntrebarea nr. 11
0 din 6 puncte

O baza a subspatiului vectorial definit de submultimea:
este formata din vectorul:
Answer

Selected Answer: d.



ntrebarea nr. 12
6 din 6 puncte

Complementul ortogonal al subspatiului vectorial :
este subspatiul vectorial generat de vectorul:
Answer

Selected Answer: b.
u=(1,-1,-1)


ntrebarea nr. 13
6 din 6 puncte

Diagramele de interactiune (in UML) includ:
Answer

Selected Answer: b.
Diagramele de colaborare si diagramele de secventa


ntrebarea nr. 14
0 din 6 puncte

Se aplica metoda iterativa a lui Gauss-Seidel sistemului cu predictie
initiala
. Sirul de iteratii construit cu metoda lui Gauss-Seidel va converge catre
Answer

Selected Answer: b.





ntrebarea nr. 15
0 din 6 puncte

Fie f o functie reala definita pe [0,3]. Se stie ca polinomul Lagrange de interpolare al lui
f pe nodurile 0,1,2,3 este . Atunci diferenta divizata f[1,2] a lui f
corespunzatoare nodurilor 1,2 este

este
Answer

Selected Answer: d.
1


ntrebarea nr. 16
0 din 6 puncte

Fie P o functie reala definita pe [0,2] asa ca P(0)=0, P(2)=4. Atunci aproximarea produsa
de metoda trapezului pentru integrala

este
Answer

Selected Answer: d.
2


04 iulie 2011

Licenta vara 2011 iarna 2012
Capitole speciale de matematica


MULTIPLE CHOICE

1. Fie grupul simetric ( )
3
, S . Atunci numrul subgrupurilor lui
3
S este
a. 1
b. 2
c. 4
d. 6




2. Fie grupul simetric ( )
3
, S . Atunci numrul subgrupurilor normale ale lui
3
S este
a. 1
b. 2
c. 3
d. 4




3. Fie grupul ( ) , Z + si multimea { }
5 5 Z m m Z = . Care din urmatoarele afirmatii este
adevarat?

a.
5Z este subgrup al grupului ( ) , Z + , dar nu este normal
b.
5Z este subgrup normal al grupului ( ) , Z +
c.
5Z nu este subgrup al grupului ( ) , Z +




4. Fie ( )
2
M R multimea matricilor cu dou linii, dou coloane si elemente din multimea
numerelor reale. Multimea
0 0
, I a b R
a b
| |
=
`
|
\ )
este
a.
ideal la stnga al inelului ( ) ( )
2
, , M R + , dar nu este ideal la dreapta al acestui inel
b.
ideal la dreapta al inelului ( ) ( )
2
, , M R + , dar nu este ideal la stnga al acestui inel
c.
ideal bilateral al inelului ( ) ( )
2
, , M R +




5. Fie
( ) { }
2 2 , Q a b a b Q = + . Atunci
( ) ( )
2 , , Q + este
a. inel comutativ fr divizori ai lui zero
b. inel comutativ cu divizori ai lui zero
c. corp comutativ
d. corp necomutativ




6. Fie

[ ]
4
2 2 f X Z X = + . Atunci
a.
( ) [ ] ( ) ( )
4
, 0 g X Z X f X g X


b.
( ) [ ] ( ) ( )
4
, 0 g X Z X g X f X


c.
( ) [ ]
4
g X Z X astfel nct ( ) ( ) 0 f X g X =






7. Fie A un inel si I, J, L ideale bilaterale n A astfel nct I J A + = si I JL . Atunci
a.
I J
b. I J
c. I J




8. Fie permutarea
9
123456789
,
469732185
S
| |
=
|
\
. Descompunerea acestei permutri n produs de ciclii
disjuncti este

a. (1,4,7)(2,6,)(3,9,5)(8)
b. (1,5,4)(3,6,9,2)(7,8)
c. (2,6,7)(1,4,9,3)(5,8)
d. nici una din variantele de mai sus




9. Care din polinoamele urmtoare este ireductibil ?
a.
[ ]
3
2
1 X X Z X + +
b.
[ ]
5
3
1 X Z X +
c.
[ ]
4
7
1 X Z X
d. nici unul din polinoamele de mai sus




10. Fie permutarea
6
123456
,
512436
S
| |
=
|
\
. Atunci ordinul permutrii
2
este
a. 6
b. 12
c. 2
d. 3




11. Fie ( )
3
, S grupul permutarilor de ordin 3 si H un subgrup cu 3 elemente al acestui grup. Cte
elemente are grupul factor
3
/ S H ?

a. 3
b. 2
c. 4
d. 1




12. Fie permutarea
6
123456
,
512436
S
| |
=
|
\
. Atunci ordinul permutrii
1

este
a. 6
b. 4
c. 2
d. 3




13. Fie permutarea are descompunerea
a.

c.

b.

d.





14. Fie permutarea are descompunerea
a.

c.

b.

d.





15. Elementele inversabile ale inelului sunt
a.

c.

b.

d.





16.
Fie Determinai mulimea elementelor sale inversabile,
.

a. c.
b. d.




17. Daca definim aZ + bZ ={x+y | x aZ, y bZ}, unde prin Z am notat multimea numerelor
intregi, atunci 25Z + 20Z este egal cu :

a. 45Z

c. 20Z

b. 25Z

d. 5Z




18. Se considera permutarea S
10
,
|
|

\
|
=
9 6 2 8 10 7 4 1 5 3
10 9 8 7 6 5 4 3 2 1
. Ordinul
permutarii este :

a. infinit c. 12
b. 10 d. 4




19. Se considera permutarile , S
5
,
|
|

\
|
=
5 1 2 4 3
5 4 3 2 1
,
|
|

\
|
=
3 1 4 5 2
5 4 3 2 1
. Permutarea
x S
3
cu proprietatea ca x o = este :

a.
|
|

\
|
=
5 1 2 4 3
5 4 3 2 1
x
c.
|
|

\
|
=
3 5 2 4 1
5 4 3 2 1
x
b.
|
|

\
|
=
1 3 4 5 2
5 4 3 2 1
x
d.
|
|

\
|
=
5 4 3 2 1
5 4 3 2 1
x




20. Se considera permutarile , S
4
, . Sa se rezolve
ecuatia

a.

c.

b.

d.





21. Se considera permutarea S
5
,
|
|

\
|
=
5 1 2 4 3
5 4 3 2 1
. Atunci
120
este egala cu:

a. c.
2

b. permutarea identica d.
-1





22. Solutiile ecuatiei 3x
2
4x + 1 =0 in Z
5
sunt :

a.
x
1
= 1

, x
2
= 3



c.
x
1
= 1

, x
2
= 2


b.
x
1
= 2

, x
2
= 3






23. Solutiile ecuatiei x
2
x + 5 =0 in Z
17
sunt :

a.
x
1
= 4

, x
2
= 3



c.
x
1
= 4

, x
2
= 4

1
b.
x
1
= 2

, x
2
= 4

1




24. Care este polinomul g Z
8
[X] astfel incat 1

) 3

( = + g X

a.
g(X) = 3

2
+ + X X
c.
g(X) = 3

2
+ + X X

b.
g(X) = 3

2
+ + X X




25. Solutiile ecuatiei 3x
2
4x + 1 =0 in Z
19
sunt :

a.
x
1
= 1

, x
2
= 3

1
c.
x
1
= 1

, x
2
= 2


b.
x
1
= 2

, x
2
= 3

1




26. Stabiliti daca .... in
a.

c.

b.






27.
Sa se afle
7
a Z astfel incat polinomul [ ]
6
7
5 X aX Z X + +

sa fie ireductibil

a.
2 a =
c.
5 a =


b.
3 a =


d. nu exista




28.
Fie polinomul
3
1 f X X = + . Care din urmatoarele afirmatii este adevarata?

a. polinomul are radacini ntregi c. polinomul are radacini rationale
b. polinomul nu are radacini ntregi




29.
Fie matricea
3 2 1
6 4 2
9 6 3
A
| |
|
=
|
|
\
. Rangul matricei este

a. 0 c. 2
b. 1 d. 3






30. Determinati parametrii a si b reali astfel ncat matricea de mai jos sa aiba rangul 2:
|
|
|

\
|
4 2 2 1
3 2 1
4 2 1
b
b
a

a. a=1, b = 1/2
b. a = 1, b = 1
c. a = 0, b = 1
d. a = b = 0




31. Care dintre urmatoarele valori pentru parametrii a si b reali fac ca matricea de mai jos sa nu aiba rangul
3:
|
|
|

\
|
4 2 2 1
3 2 1
4 2 1
b
b
a

a. a = 1, b = 0
b. a = 1, b = 1/2
c. a = b = 1
d. a = 0, b = 1




32. Care este rangul matricii:
|
|
|
|
|
|

\
|

5 6 6 12 4
17 5 2 3 1
1 1 2 3 1
9 16 12 0 0
8 3 0 3 1

a. 1
b. 2
c. 3
d. 4
e. 5




33. Care este rangul matricii:
|
|
|
|
|

\
|

4 4 6 12 5
2 2 3 6 3
0 2 2 4 2
2 0 1 2 1

a. 1
b. 2
c. 3
d. 4
e. 5




34. Determinati a real astfel ncat matricea de mai jos sa nu fie inversabila:
|
|
|

\
|
2 0 1
3 1
0 1 2
a
a. a = 1/2
b. a = 3/4
c. a = 2/3
d. a = -1/2




35. Fie grupul permutarilor de grad , grupul altern de grad , si permutarea identica.
Se considera , unde este signatura permutarii . Care este imaginea lui ?
a.

b.
c.
d.




36. Elementul zero al inelului
8
Z Z este

a.
( ) 0 , 0


c.

b.

d.




1. Se considera functia . Atunci derivata mixta de ordin 2 data de
este egala cu
a.

c. 1
b.

d. 2y




2. Derivata partiala de ordin 2 a lui in raport cu variabila y este egala cu
a.

c.

b. d. 6y




3. Derivata partiala la lui in raport cu variabila x este egala cu
a.

c.

b. d.




4. Derivata partiala a lui in raport cu variabila y este egala cu
a.

c.

b.

d.





5. Se considera functia . Atunci punctele stationare(numite deasemenea puncte
critice) ale lui f(x,y)
sunt
a. (0,0) c. (1,1,),(0,0)
b. (1,0),(0,1) d. nu exista puncte stationare




6. Se considera functia . Atunci punctele stationare(numite
deasemenea puncte critice) ale lui f(x,y) sunt
a. (0,0) c. (1,2)
b. (1,2),(0,0) d. nu exista puncte stationare




7. Se considera functia . Atunci punctele stationare(numite
deasemenea puncte critice) ale lui f(x,y) sunt
a. (0,0) c. (2,3)
b. (2,3),(0,0) d. nu exista puncte stationare




8. Se considera functia . Atunci
punctul (-2,-2) este un punct
a. de minim local pentru f(x,y) c. nu este punct de extrem local
b. de maxim local pentru f(x,y)




9. Care din urmatoarele functii are o o infinitate de puncte stationare
a. f(x,y)=x+y c. f(x,y)=x+2y
b. f(x,y)=sin(x) d.





10. Se considera functia . Atunci
punctul (-5,-2) este un punct
a. de minim local pentru f(x,y)
b. de maxim local pentru f(x,y)
c. nu este puncte de extrem local




11. Sa se calculeze derivatele partiale de ordinul intai pentru urmatoarea functie:
( )
2 2
, = 2 f x y x xy y +

a.
( ) ( ) ( , ) 2 ; ( , ) 2
x y
f x y x y f x y x y = + =
/ /

c.
( ) ( ) ( , ) 2 2 ; ( , ) 2
x y
f x y x y f x y x y = + =
/ /

b.
( ) ( ) ( , ) 2 2 ; ( , ) 2
x y
f x y x y f x y x y = = +
/ /

d. alt raspuns.




12. Scrieti diferentiala de ordinul intai a functiei
1 1
( , ) 2( 1) f x y x y
x y
= + + +


a.

c.

b.

d.





13. Se da functia de doua variabile y x y xy x y x f 3 3 ) , (
2 2
+ + = .Derivata partiala de ordinul al
doilea a lui f in raport cu x este:

a.
( )
2
, 2
x
f x y =
//

c.
( )
2
, 0
x
f x y =
//

b.
( )
2
, 1
x
f x y =
//

d.
( )
2
, 2
x
f x y x =
//





14. Se da functia de doua variabile y x y xy x y x f 3 3 ) , (
2 2
+ + = .Alege valoarea corecta pentru
( ) ,
xy
f x y
//


a.
( ) , 0
xy
f x y =
//

c.
( ) ,
xy
f x y xy =
//

b.
( ) ,
xy
f x y
//
nu exista
d.
( ) , 1
xy
f x y =
//





15. Se da functia de doua variabile
2 2
) 6 ( ) 1 ( ) , ( + + = y x y x f .
Functia are punct stationar pe:

a. M(1,-6)

c. M(0,0)

b. M(-1,6)

d. M(1,0)





16.
Fie f(x,y) = 10x + 4y + 2xy +
xy
400
, x >0, y >0 . Derivatele partiale de ordin I sunt:

a.

+ =
+ =
2
'
2
'
400
2 4 ) , (
400
2 10 ) , (
xy
x y x f
y x
y y x f
y
x

c.

+ + =
+ + =
2 2
'
2 2
'
400
2 4 ) , (
400
2 10 ) , (
y x
x y x f
y x
y y x f
y
x

b.

+ + =
+ + =
2 2
'
'
400
2 10 ) , (
2 4 10 ) , (
y x
y x y x f
y x y x f
y
x

d.

+ + =
+ + =
2
'
2
'
400
2 4 ) , (
400
2 10 ) , (
xy
x y x f
xy
y y x f
y
x





17. Functia f (x,y)= arctg( + ) verifica


a.
y f
'
x
(x ,y) + xf
'
y
(x ,y) = 0

b.
y f
'
x
(x ,y) - xf
'
y
(x ,y) = 0

c.
f
'
x
(x ,y) + f
'
y
(x ,y) = 0

d.
2x f
'
x
(x ,y) - 2yf
'
y
(x ,y) = 0





18. Se da functia de doua variabile xy y x f = ) , ( .
Diferentiala de ordinul I a lui f este

a. dy dx df + = c. dy ydx df + =
b. xdy dx df + = d. xdy ydx df + =




19. Se da functia de doua variabile
2 2
) , ( y x y x f + =
Diferentiala de ordinul I a lui f este

a.
dy y dx x df
2 2
+ =
c. 0 = df
b. dy dx df + = d. ydy xdx df 2 2 + =




20. Pentru functia , punctul M(5,2) este
a. punct sa;
b. punct de maxim local;
c. punct de minim local.




21. Calculeaza ( eventual folosind proprietatile integralelor euleriene )
a.

b.

c.

d.





22. Aria domeniului plan marginit de curbele si , este:
a. ;
b.
;
c.
;
d.
.




23. Se considera unde . Valoarea lui I
este:
a.
;
b.
;
c.
;
d.
.




24. Valoarea integralei duble , unde , este
a. 1;
b. 2;
c. 3;
d. 4.




25. Prin calcul direct sau folosind formula lui Green rezulta ca integrala unde
, cu si este egala cu
a.
;
b.
;
c.
;
d.
.




26. Valoarea integralei , unde este
a. 0;
b. 1;
c. 2;
d. 3.




27. Sa se calculeze , unde .
a.
;
b.
;
c.
;
d.
.




28. Folosind o schimbare de variabila adecvata, sa se calculeze integrala dubla , unde este
domeniul marginit de elipsa .
a.
;
b.
;
c.
;
d.
.




29. Calculeaza integrala .
a.
;
b.
;
c.
;
d.
.




30. Calculeaza integrala .
a.
;
b.
;
c.
;
d.





31. Ecuatiile curbelor care delimiteaza domeniul pe care se calculeaza integrala dubla
sunt
a.

b.

c.





32. Schimbati ordinea de integrare in integrala dubla
a.

b.

c. alt raspuns




33. Fie unde , . Valoarea lui este
a. 0;
b.
;
c.
.




34. Fie , unde . Valoarea lui este
a.
;
b.
;
c.
;
d.
.




35. Fie . Valoarea lui I este
a.
;
b.
;
c.
.




36. Valoarea integralei curbilinii de tipul al doilea , unde
este
a.
;
b.
;
c.
;
d. 0.




37. Valoarea integralei curbilinii de tipul al doilea , unde
este
a.
;
b.
;
c.
;
d.
.




38. Fie integrala curbilinie de tipul al doilea , unde C este curba simpla si rectificabila
care are ca imagine portiunea din parabola , cuprinsa intre punctele si , care are
primul capat in B. Valoarea ei este
a.
;
b.
;
c.
;
d. .




39. Fie unde C este conturul dreptunghiului ale carui varfuri sunt .
Valoarea lui I este
a. 22
b. 23
c. 24




40. Calculeaza , unde C este circumferinta , .
a.

b.

c.



ntrebarea nr. 2 3 din 3 puncte
Fie Determinai mulimea elementelor sale inversabile, .
6x

Rspunsul selectat:



ntrebarea nr. 30 3 din 3 puncte



Rspunsul selectat:


ntrebarea nr. 2 3 din 3 puncte
Solutiile ecuatiei in sunt :

2x
Rspunsul selectat:




ntrebarea nr. 2 3 din 3 puncte
Solutiile ecuatiei in sunt :


5x
Rspunsul selectat:


ntrebarea nr. 4 3 din 3 puncte
Fie . grupul permutarilor de ordin 3 si H un subgrup cu 3 elemente al acestui grup.
Cte
elemente are grupul factor 3 S / H ?

2x

Rspunsul selectat: 2


ntrebarea nr. 30 3 din 3 puncte
Care din polinoamele urmtoare este ireductibil ?

2x

Rspunsul selectat:





ntrebarea nr. 7 3 din 3 puncte
Se considera functia . Atunci punctele stationare(numite
deasemenea puncte critice) ale lui f(x,y) sunt


Rspunsul selectat:
(2,3)


ntrebarea nr. 7 3 din 3 puncte
Se considera functia . Atunci punctele stationare(numite
deasemenea puncte critice) ale lui f(x,y) sunt
4x

Rspunsul selectat: (1,2)

ntrebarea nr. 7 3 din 3 puncte
Se considera functia . Atunci
punctul (-2,-2) este un punct
3x

Rspunsul selectat:
nu este punct de extrem local


ntrebarea nr. 6 3 din 3 puncte
Se considera functia . Atunci derivata mixta de ordin 2 data de

este egala cu 3x

Rspunsul selectat:





ntrebarea nr. 5 3 din 3 puncte
Scrieti diferentiala de ordinul intai a functiei
4x


Rspunsul selectat:



ntrebarea nr. 6 3 din 3 puncte
Calculeaza ( eventual folosind proprietatile integralelor euleriene )
2x

Rspunsul selectat:


ntrebarea nr. 26 0 din 3 puncte
3x

Rspunsul selectat: 4


5x


ntrebarea nr. 3 3 din 3 puncte
Fie permutarea . Descompunerea acestei
permutri n produs de ciclii disjuncti este
3x

Rspunsul selectat:
(1,4,7)(2,6)(3,9,5)(8)


ntrebarea nr. 3 3 din 3 puncte
Fie permutarea are descompunerea
4x

Rspunsul selectat:

??? de ce asa???

ntrebarea nr. 5 3 din 3 puncte
Care din urmatoarele functii are o o infinitate de puncte stationare
Rspunsul selectat:
f(x,y)=sin(x)


ntrebarea nr. 4 3 din 3 puncte
Fie permutarea . Atunci ordinul permutrii este

Rspunsul selectat:
2




ntrebarea nr. 4 3 din 3 puncte
Fie grupul simetric . Atunci numrul subgrupurilor normale ale lui este

2x
Rspunsul selectat:
3









(
1 6 3
0 5 3
0 6 4

)
Matricea Jordan:
(

0 0
0 0
0 0
)
4 6 0
-3 -5 0
-3 -6 1
(4-) * (-5 - ) * 1- ) = - 18 * (1-)
(4-) * (-5 - ) * (1-) + 18(1-) = 0
(-20 -4 + 5 +
2
) * (1-) + 18(1-) = 0
(-20 + +
2
) * (1-) + 18(1-) = 0
-20 +20 + -
2
+
2
-
3
+ 18(1-) = 0
-20 + 21 -
3
+ 18(1-) = 0
-20 + 21 -
3
+ 18 - 18 = 0
-2 + 3 -
3
= 0
-
3
+ 3 - 2 = 0 \ *(-1)

3
- 3 + 2 = 0
(
2
3) = -2
= -2
1
= -2

2
- 3 = -2

2
= 1
2
= 1

3
= -1 nu verifica ecuatia, nu va fi folosit
Matricea Jordan:
(
1 0 0
0 1 0
0 0 2
)
Pregtirea lotului naional de informatic
Alba Iulia 2004

Permutri
Prof. Nistor Mo

1. Noiuni introductive

Se numete permutare o funcie bijectiv p:AA.

De obicei se consider A={1,2,,n} i permutarea se scrie sub forma

) ( ... ) 3 ( ) 2 ( ) 1 (
... 3 2 1
n p p p p
n
dar toate rezultatele rmn valabile dac se
nlocuiete mulimea {1,2,n} cu orice mulime cu n elemente (evident, n
programare nu se lucreaz cu mulimi infinite).
De asemenea ordinea numerelor din primul rnd este neesenial, de exemplu
permutarea

3 1 4 2
4 3 2 1
poate fi scris i

3 2 1 4
4 1 3 2
, n ambele cazuri p(1)=2,
p(2)=4, etc.
Vom nota mulimea permutrilor lui {1,2,,n} cu S
n
.

Se numete permutarea identic (i se noteaz de obicei cu e) funcia identic a
mulimii A (1
A
) adic permutarea p n care p(1)=1, p(2)=2,,p(n)=n.

Se numete punct fix al unei permutri pS
n
un numr x{1,2,,n} pentru care
avem p(x)=x. Evident permutarea identic are n puncte fixe

Se numete transpoziie o permutare pS
n
cu n2 puncte fixe. Dac p(i)=j i
p(j)=i, restul valorilor fiind puncte fixe, transpoziia se mai noteaz i (i j).

Operaia de baz n mulimea S
n
este compunerea permutrilor, o vom nota cu o
permutrile fiind funcii este vorba despre compunerea funciilor. Se cunosc
proprietile :
compunerea este asociativ adic (poq)or=po(qor)
compunerea nu este comutativ - adic n general poq qop
permutarea identic este element neutru adic poe=p i eop=p
fiecare permutare are o permutare invers astfel nct compunnd cele dou
permutri obinem permutarea identic - pop
1
= e i p
1
op = e. Inversa unei permutri
se poate obine inversnd cele dou rnduri, apoi eventual reordonnd tabloul n
ordinea cresctoare a numerelor de pe primul rnd. Pentru exemplul de mai sus
inversa este

2 4 1 3
4 3 2 1

O transpoziie compus cu ea nsi d permutarea identic, deci este propria ei
invers.

Problema 1.
Calculai cte cifre are numrul de permutri pentru n1000000000.

Pregtirea lotului naional de informatic
Alba Iulia 2004
Rezolvarea se poate face folosind proprietile logaritmilor : lg n! = lg 1 + lg 2 +
+ lg n, partea ntreag a logaritmului zecimal +1 ne va da numrul de cifre. Dar un
for mergnd de la 1 la 1000000000 depete timpul normal pentru execuia unui
program (dac calculatorul adun 10.000.000 logaritmi pe secund vor fi necesare
100 secunde !). Exist o formul celebr (formula lui Stirling) ce aproximeaz foarte
bine (pentru numere mari) pe n!, pentru n>100 numrul de cifre va fi dat fr eroare
de aceast formul, chiar i primele cifre sunt date corect. Formula este :
n
e
n
n
n
2 !

= (n formul apar dou numere iraionale e2,71 i 3,14)


Cu aceast formul logaritmul lui n! se calculeaz imediat n(lg nlg e)+(lg n+lg
2)/2.

2. Inversiuni
Se numete inversiune a unei permutri pS
n
o pereche (i,j) cu 1i<jn i
p(i)>p(j). Numrul inversiunilor unei permutri joac un rol important n multe
aplicaii ale permutrilor.

Problema 2. (din lista lui Frncu)
Se dau doua numere naturale N si K, 1<=N<=45, 0<=K<=N*(N-1)/2. Sa se tipareasca
numarul de permutari ale multimii {1, 2, ..., N} in care exista K inversiuni.

INTRAREA: Fisierul perm.in contine o singura linie pe care se afla valorile lui N
si K, despartite printr-un spatiu.
IESIREA: n fiierul perm.out se va afisa un singur numar (nimic altceva, svp)
respectiv numarul de permutari cu K inversiuni.
EXEMPLE:
perm.in perm.out
3 0 1
perm.in perm.out
4 2 5
COMPLEXITATE RECOMANDATA: O(N^2*C), unde C este numarul de cifre al
raspunsului.


BREVIAR: PERMUTARI (pentru cei mici)
Permutarile unei multimi sunt toate ordinile posibile in care putem aseza elementele
acelei multimi. De exemplu, permutarile multimii {1, 2, 3} sunt: 123, 132, 213,
231, 312, 321
Se poate arata ca numarul permutarilor unei multimi cu N elemente este egal cu N!.
Dandu-se o permutare P, numarul de inversiuni al ei este numarul de perechi (i,j)
pentru care i<j si P[i]>P[j]. De exemplu, pentru
permutarea cu 5 elemente: P=52314, perechile (i,j) in dezordine sunt:
(1,2): 1<2 dar 5>2
(1,3): 1<3 dar 5>3
(1,4): 1<4 dar 5>1
(1,5): 1<5 dar 5>4
(2,4): 2<4 dar 2>1
(3,4): 3<4 dar 3>1
Asadar permutarea in cauza are 6 inversiuni. Numarul minim de
Pregtirea lotului naional de informatic
Alba Iulia 2004
inversiuni al unei permutari de N elemente este 0 (pentru permutarea
1 2 3 ... N-1 N), iar numarul maxim de inversiuni este N*(N-1)/2
(pentru permutarea N N-1 ... 3 2 1).
Cam atat ajunge, pentru inceput. Mai am in minte o problema cu permutari.
Rezolvarea este tot pe lista lui Frncu, se bazeaz pe o formul de recuren.
n [1] pag. 51 exist un exerciiu care d cteva formule pentru calculul
rezultatului cerut de problem.
La conursul de programare Agora organizat de GInfo s-a dat problema urmtoare
(existent n [2], pag. 16) :

Problema3.
Se d un vector a care conine n (2n10000) elemente i se cere determinarea
numrului de perechi (i,j) cu proprietatea c i<j i a[i]>a[j] (timp de execuie 1s !)

Problema e rezolvat i comentat n GInfo 11/5, an 2001.

3. Ordinul unei permutri
Se numete ordinul permutrii pS
n
cel mai mic numr nN* cu proprietatea c
p
n
=e (prin p
n
nelegnd popopop, p compus cu el nsui de n ori)
Demonstrarea existenei unui astfel de numr :
Considerm irul p,p
2
,p
3
,p
100
, .Cum exist doar un numr finit de permutri n
S
n
(adic n!) irul scris trebuie s conin permutri care se repet de mai multe ori,
fie p
a
= p
b
(a>b). Atunci p
ab
= e, prin compunere cu p
b
(adic inversul lui p
b
sau
(p
1
)
b
).
Noiunea e necesar n rezolvarea unor probleme de genul :

Problema 4.
Fie pS
n
o permutare i kN*. Determinai p
k
. Fiierul de intrare PERM.IN
conine pe prima linie numerele n i k, iar pe linia a doua cele n numere ce formeaz
permutarea. {n fiierul PERM.OUT se va scrie rspunsul sub forma unui ir de
numere scrise pe o linie cu cte un spaiu ntre numere. 2n1000, 1k1000000000.
Pentru determinarea ordinului unei permutri se folosete descompunerea
permutrii n cicluri.
S pornim de la un exemplu. Fie

=
4 5 2 1 3
5 4 3 2 1
p . Avem p(1)=3, p
2
(1) =
p(p(1))=p(3)=2, p
3
(1)=p(p(p(1)))=p(2)=1, deci dup 3 permutri 1 a ajuns pe poziia
1, parcurgnd ciclul 1321. S observm c 2 i 3 urmeaz un drum analog :
2132 i 3213. Asementor gsim ciclul 454. Deducem c dac 1,2
i 3 ajung n poziiile 1,2,3 la p
3
, p
6
, p
9
, adic din 3 n 3 permutri iar 4 i 5 ajung pe
poziiile 4, respectiv 5, la p
2
, p
4
, ordinul permutrii va fi cmmmc al numerelor 2 i
3, adic 6. S menionm c ciclurile se scriu asemntor transpoziiilor, n cazul
nostru (1 3 2) respectiv (4 5). Se numete lungimea unui ciclu numrul elementelor
(distincte) ce alctuiesc ciclul. Un punct fix formeaz un ciclu de lungime 1, o
transpoziie, un ciclu de lungime 2.
Cum determinm deci ordinul unei permutri ? Se pornete de la 1, parcurgnd
vectorul ce reprezint permutarea i marcnd elementele 1, p[1], p[p[1]], pn
ajungem la un element marcat (adic la 1), numrnd numrul de pai n l1. Cutm
primul element nemarcat din vector i relum parcurgerea, efectund l2 pai. Cnd nu
mai avem elemente nemarcate calculm cmmmc al numerelor l1,l2,lk. Marcarea se
poate face schimbnd semnul numerelor din vector, iar cmmmc se poate calcula la
Pregtirea lotului naional de informatic
Alba Iulia 2004
fiecare pas, fr a mai fi necesar memorarea n alt vector a numerelor l1,l2,l3,
dup regula cmmmc(x
1
,x
2
,x
3
,,x
n
) = cmmmc(cmmmc(x
1
,x
2
,x
n1
),x
n
).
Problema urmtoare cere determinarea ordinului unor permutri particulare i este
inspirat dintr-o problem clasic prezentat n [3], surs de inspiraie pentru multe
probleme interesante de informatic.

Problema 5. propus la O.J.I. Brila 1998
Un exerciiu militar cere soldailor s se aeze n ir indian, apoi fiecare al doilea trece
n spatele celui dinaintea lui; n continuare rndul din spate efectueaza o manevr de
ocolire sub conducerea fostului ultim soldat, trecnd naintea celorlalti :
din 1 2 3 4 5 6 7 8 se obine : 1 3 5 7 apoi 8 6 4 2 1 3 5 7
2 4 6 8
Se presupune c numrul soldailor este par i ei pot efectua manevra de cte ori
dorete comandantul lor (dei e evident c dup un anumit numr de operaii se
ajunge la poziia iniial).
Problema cere ca pentru dou numere naturale pare 5000 reprezentnd numrul
soldailor a dou companii s determinai care trebuie s efectueze mai multe astfel de
manevre pentru a ajunge la poziia iniial.
Atenie! nu e deloc obligatoriu ca pentru un numr mai mare de soldai s fie
nevoie de mai multe manevre: pentru 10 soldai snt necesare 6 manevre, pentru 16
soldai numai 5 .
Datele de intrare se citesc de la tastatur (dou numere indeplinind condiiile date)
iar rezultatele se afiseaza pe ecran tot dou numere, reprezentnd numrul de
manevre al fiecrei companii pn la revenirea n poziia iniial a ambelor companii,
cu semnul < sau > ntre ele.

4. Funcii nebijective
Ceva asemntor se ntmpl n cazul funciilor f:AA, nebijective (A={1,2,n}
i aici putem considera irul de funcii obinut prin compunerea lui f cu el nsui :
f, f
2
,f
3
,Numrul total de funcii e mai mare ca la permutri (este n
n
), dar tot un
numr finit va fi, ceea ce nseamn c vor exista numerele naturale 0<p<q astfel ca f
p

= f
q
(a nu se confunda f
p
cu ridicarea la putere, adic nmulirea lui f cu el nsui, e
posibil ca ff s nu fie o funcie :AA). Dar atenie, dac f nu e bijectiv nu vom
obine niciodat funcia identic. Totui se poate pune problema gsirii celor mai mici
numere p i q (p<q) pentru care f
p
=f
q
. n irul de funcii va exista o parte neperiodic
f,f
2
,f
3
,,f
p1
dup care urmeaz partea periodic f
p
,f
p+1
,,f
q1
care se va repeta :
f
q
,f
q+1
, ,f
q1+(qp)
din qp n qp ori.

Problema 6.
1. In tara Maniaro birocratia este foarte bine organizata, dimineata se prezinta la
ghisee (ghisee numerotate cu numere de la 1 la N, N<=5000) N persoane, cate o
persoana la fiecare ghiseu. Instructiunile prevad clar ce trebuie sa faca functionarul de
la ghiseul i cu un eventual solicitant : sa-l trimita la ghiseul j (1<=i,j<=N).
Consideram ca deplasarile de la un ghiseu la altul se fac intr-o unitate de timp. Cititi
din fisierul p1.in numarul N si un sir de N numere separate prin spatii (numarul de pe
pozitia i arata unde va fi trimisa persoana de la ghiseul i). Va trebui sa scrieti
in fisierul p1.out doua numere naturale p,q (p<q) reprezentand cele mai mici valori
pentru care dupa p si dupa q unitati de timp cele n persoane se afla la aceleasi ghisee.
Exemplu :
n=5 3,1,4,3,2 => raspunsul 3,5
Pregtirea lotului naional de informatic
Alba Iulia 2004

Problema a fost prezentat la o edin de pregtire cu lotul de informatic anul trecut
la Slatina

5. Probleme de numrare
Se pun uneori probleme n care se cere numrarea unor permutri cu diverse
proprieti. Exemplificm cu dou astfel de probleme

Problema 7.
Se da n<=100. Cate permutari p din Sn verifica p*p=e
Se va deduce relaia de recuren T(n)=T(n1)+(n1)*T(n2) astfel : Permutarea
trebuie s conin numai cicluri de lungime 1 sau 2. Dac p(n)=n cele n1 numere din
faa lui n pot fi aezate n T(n1) moduri pentru a obine o permutare cu proprietatea
din enun. Dac p(n)n, va exista k<n astfel ca p(n)=k i p(k)=n (altfel n ar face parte
dintr-un ciclu de lungime >2). Numerele din{1,2,3,,n}-(k,n} pot fi aezate in T(n
2) moduri i cum k poate fi oricare din cele n1 numere avem (n1)*T(n2) permutri
ce verific relaia cerut n care p(n)n. Totalul va fi dat de suma celor doi termeni.
Ca observaie pentru obinerea rspunsului corect e necesar implementarea
operaiilor cu numere mari, chiar dac numrul cerut este o fraciune foarte mic din
totalul permutrilor (de exemplu o milionime), totui pentru n>50 rezultatul depete
numrul de cifre exacte ale tipurilor numerice cunoscute.

Problema 8.
Considerm n persoane numerotate de la 1 la n (n1000) care iau masa zilnic,
aezai la o mas circular. Dorim s aezm persoanele astfel nct n fiecare zi s
aib vecini diferii.
a) Afiai numrul maxim de zile n care niciunul din vecinii vreunei persoane n-a
mai fost vecin n zilele anterioare i dai un exemplu de astfel de aezare
b) Gsii numrul maxim de zile dac n fiecare zi trebuie s fie cel puin un vecin
diferit fa de zilele precedente (adic numrul maxim de aranjri diferite)
Exemplu : pentru n=5 a) dou zile : 1-2-3-4-5, 1-4-2-5-3
b) 6 zile
Rezolvarea prin generarea tuturor aranjamentelor este evident ineficient.

6. Probleme cu inegaliti
Se cunosc din celebrele culegeri de probleme de algebr (gen Nstsescu&Ni)
exerciii de genul :
Pentru ce permutare pS
n
suma 1/p(1)+2/p(2)++n/p(n) este minim / maxim?
Pentru ce permutare suma |1-p(1)| + |2-p(2)| + + |n-p(n)| este minim / maxim
Se dau numerele x
1
<x
2
<<x
n
. Gsii permutarea p pentru care suma (x
1
x
p(1)
)
2
+
(x
2
x
p(2)
)
2
+ + (x
n
x
p(n)
)
2
este minim/maxim.
La aceste ntrebri rspunsul este de obicei permutarea identic pentru minim i
permutarea

1 ... 2 1
... 3 2 1
n n n
n
pentru maxim sau invers.
Un exemplu clasic :
Se d un ir de n numere reale pozitive (n10000), x
1
,x
2
,x
n
. Gsii o permutare
pS
n
pentru care suma x
1
p(1)+x
2
p(2)++x
n
p(n) este maxim.
Nu ntotdeauna rspunsul la astfel de probleme este una din cele dou permutri.

Pregtirea lotului naional de informatic
Alba Iulia 2004

Problema 9.
Determinai permutarea p din Sn pentru care |p1-p2|+|p2-p3|+...+|pn-p1| este maxim
Sol. pt n par avem p(2k+1)=n/2-k, p(2k+2)=n-k (k=0,1,..n/2-1)
pt. n impar p(2k+1)=[n/2]-k, p(2k+2)=n-k (k=0,1,...[n/2]+1)

sau Problema 9.
Determinai permutarea p din S
n
pentru care p
1
p
2
+p
2
p
3
++p
n
p
1
este maxim
Sol. permutarea pentru maxim este (1,2,4,6,,7,5,3) iar pt. minim (1,n,2,n-2,5,n-
3,3,n-1)
Soluia de la prob.9 amintete de o foarte actual problem (dat la Olimpiada-on-
line, etapa 15 oct 14 nov. 2001) n care se cere numrul permutrilor n zig-zag.

Considerm funcia E:S
n
N, E(p)= 1*p(1)+2*p(2)++n*p(n).
Este funcia E injectiv sau surjectiv ?
- Injectiv nu este deoarece E(p) = E(p
1
)
- E ia valoarea maxim pentru p=e i valoarea minim pentru p=

1 ... 2 1
... 3 2 1
n n n
n

deci ia valori ntre min=n (n+1)(n+2)/6 i max=n (n+1) (2n+1)/6, aadar funcia nu
e nici surjectiv. Dar dac restrngem codomeniul la intervalul [min, max] putem
demonstra c E ia toate valorile din acest interval ? Pentru un SN* putem gsi pS
n

astfel ca E(p)=S ?
Acesta este enunul foarte puin modificat al unei probleme date la barajul pentru
lotul internaional n 2001 la Bacu

Problema 10 Potrivire (Baraj ONI 2001)
Se consider dou numere naturale nenule N i S.
Cerinta
Determinai numerele distincte x
1
, x
2
, ... , x
N
aparinnd mulimii {1, 2, , N} astfel
nct: 1 * x
1
+ 2 * x
2
+ ... + N * x
N
= S.
Date de intrare
Fiier de intrare: POTRIV.IN
Linia 1: N S
doua numere naturale nenule, separate printr-un spatiu, reprezentand numarul
de numere, respectiv suma ce trebuie obtinuta.
Date de iesire
Fiier de ieire: POTRIV.OUT
Linia 1: x
1
x
2
... x
N

N numere naturale nenule, separate prin cate un spatiu, reprezentand solutia
problemei. Daca nu exista solutie, pe aceasta linie se va scrie numarul 0.
Restrictii
2 <= N <= 1000
1 <= S <= 1000000000 (un miliard)
Dac exist mai multe soluii, n fiier se va scrie una singur.
Exemplu
POTRIV.IN
4 26
POTRIV.OUT
3 2 1 4
Pregtirea lotului naional de informatic
Alba Iulia 2004
Explicaie
1*3 + 2*2 + 3*1 + 4*4 = 26

Rezolvare (propusa de reprezentantul judeului Brila la baraj)
Dac S nu este n intervalul [min,max] nu exist soluie. Altfel pornim cu permutarea
identic, care d suma maxim i facem transpoziii pn ajungem la suma S. Fiecare
transpoziie micoreaz suma (notat anterior cu E(p)). Dac schimbm p(i) cu p(j),
restul elementelor rmnnd neschimbate, suma scade cu (ij)*(p(i)p(j). De aici mai
e un pas (dar nu banal) pn la obinerea soluiei.

7. Codul Gray
Considerm graful n care nodurile sunt permultri din S
n
iar ntre dou permutri
avem muchie dac permutrile difer doar n dou poziii adiacente (de ex. n S
5
avem
muchie ntre (13524) i (13254), dar nu ntre (13524) i (12534)).Gsii un ciclu
hamiltonian n acest graf.
Cu alte cuvinte s generm permutrile ntr-o ordine asemntoare codului Gray
(chiar mai restrictiv), pornind de la permutarea identic i interschimbnd de fiecare
data cte dou valori alturate. Faptul c e posibil acest lucru rezult prin inducie:
presupunnd c am generat un astfel de ir al permutrilor din S
n1
, pentru generarea
permutrilor din S
n
trebuie doar s adugm pe n n mod convenabil.
Exemplificm pentru n=4. Aezm pe primul rnd al unei matrice irul de
permutri generat pentru 3 (adic 123, 132, 312, 321, 231, 213) iar pe fiecare coloan
intercalm pe 4 n toate poziiile pornind de la sfrit:
1234 1324 3124 3214 2314 2134
1243 1342 3142 3241 2341 2143
1423 1432 3412 3421 2431 2413
4123 4132 4312 4321 4231 4213
Acum parcurgnd matricea pe coloane alternativ (de sus n jos apoi de jos n sus
etc) obinem irul de permutri dorit.
O legtur mai strns cu codul Gray se obine numrnd inversiunile fiecrei
permutri. Se obine codul Gray pentru baza mixt 1,2,3,4.
Algoritmul de generare de mai sus
P1: c=(0,0,0,,0); d=(1,1,1,,1) (vectorul c pentru inversiuni, d pt. direcie)
P2: viziteaza permutarea a
1
a
2
a
n

P3: j=n; s=0 (s este numrul indicilor k>j pt. care c
k
=k1)
P4: q=c
j
+d
j
. Dac q<0 mergi la P7, dac q=j mergi la P6
P5: schimb a
jcj+s
<-> a
j-q+s
; c
j
=q; mergi la P2
P6: dac j=1 stop altfel s=s+1
P7: d
j
=d
j
; j=j1; mergi la P4

Problema 11
Se d o permutare din S
n.
A cta este generat de procedeul anterior?

Mergnd pe ideea de mai sus, cu graful avnd S
n
ca mulime de noduri, fie Q={p
1
,
p
2
, p
k
} o mulime de permutri. Vom lega prin muchii fiecare permutare p cu cele
k permutri pop
1
, pop
2
, pop
k
. Mai putem gsi un ciclu hamiltonian? n general nu.

Pregtirea lotului naional de informatic
Alba Iulia 2004
8. Probleme finale
ncheiem cu dou probleme, una uoar, legat tot de descompunerea unei
permutri n cicluri i o problem frumoas, dar grea, dat la Olimpiada Internaional
de Informatic din China n 2000.

Problema 12.
Rezolvai ecuaia x
3
= y, x i y fiind permutri din S
n
(n1000).
n fiierul de intrare EC.IN e scris pe prima linie numrul n, iar pe linia
urmtoare numerele y(1),y(2),y(n) cu cte un spaiu ntre ele. {n fiierul de ieire
EC.OUT trebuie s scriei permutarea x, numerele x(1),x(2),x(n) fiind scrise pe o
linie, cu spaii ntre ele. Dac sunt mai multe soluii, se va scrie una singur, dac nu
exist soluii se va scrie numrul 0.
Problema se poate rezolva prin ncercri, se obine un algoritm cubic, acceptabil
pentru valori mai mici ale lui n. Pentru valori mari apelm din nou la descompunerea
n cicluri. Fie

=
4 2 1 6 5 3
6 5 4 3 2 1
p = (1 3 6 4)(2 5). Avem p
3
=(1 4 6 3)(2 5).
Se observ c un ciclu de lungime l>3, l nedivizibil cu 3, compus de 3 ori cu el nsui
d tot un ciclu de lungime l. Afirmaia e valabil i pentru cicluri de lungime 1 sau 2.
Pentru ciclurile de lungime l divizibil cu 3, prin compunerea de 3 ori se obin 3
cicluri de lungime l/3. Reconstituirea, dac e posibil se face destul de uor.
O varianta mai literara:

Cea de-a doua problem final difer de cele de pn aici nu numai prin gradul de
dificultate i prin modul de obinere a datelor de intrare sau de ieire.
Problema cere n fond identificarea termenului median dintr-o permutare pS
n

(n<1500), adic p
1
((n+1)/2) Singura problem e c nu se d permutarea ci un
dispozitiv (o funcie) care ne spune pentru 3 numere a,b,c{1,2,n} care din
numerele p(a), p(b), p(c) este ntre celelalte dou. Dispozitivul (funcia) poate fi apelat
de max. 7777 ori. Enunul complet este :

Problema 13. Puterea median, IOI 2000
Un experiment implic N obiecte, etichetate de la 1 la N. Se tie c N este impar.
Fiecrui obiect i se ataeaz o informaie (numit putere) care este necunoscut i care
este exprimat printr-un numr natural; puterile obiectelor sunt distincte. Fiecare
putere P satisface relaia 1PN. Obiectul de putere median este obiectul X cu
proprietatea c numrul de obiecte cu puterea mai mic dect puterea lui X este egal
cu numrul de obiecte cu putere mai mare dect puterea lui X. Scriei un program care
determin obiectul de putere median. Din nefericire, singurul mod de a compara
puterile este bazat pe un dispozitiv care, pentru 3 obiecte distincte date, determin pe
acela dintre ele care are puterea median.
Biblioteci
Este dat biblioteca device care conine 3 subprograme :
GetN trebuie apelat o singur dat, la nceput, nu are argumente i returneaz
valoarea N
Med3 trebuie apelat cu etichetele a 3 obiecte distincte ca argumente i
returneaz eticheta obiectului de putere median
Answer trebuie apelat o singur dat la sfrit i are ca argument eticheta unui
obiect; acest obiect ar trebui s fie cel care are puterea median; aceast operaie
este cea care ncheie executarea programului.
Pregtirea lotului naional de informatic
Alba Iulia 2004
Biblioteca device este folosit pentru a crea dou fiiere text MEDIAN.OUT i
MEDIAN.LOG. Prima linie a fiierului MEDIAN.OUT conine un ntreg indicnd
eticheta obiectului transmis ca parametru n apelarea subprogramului Answer. A doua
linie conine un numr ntreg care indic numrul de apeluri ale subprogramului Med3
efectuate de programul dumneavoastr. Dialogul ntre program i bibliotec este
memorat n fiierul MEDIAN.LOG.
Programatorii n Pascal trebuie s include n codul surs instruciunea uses device;
Programatorii n C/C++ trebuie s include n codul surs instruciunea #include
device.h.
Trebuie creat proiectul MEDIAN.PRJ i apoi adugate fiierele MEDIAN.C
(MEDIAN.CPP) i DEVICE.OBJ n acest proiect.
Experimentare
Lucrul cu biblioteca se poate experimenta crend un fiier text DEVICE.IN.
Fiierul trebuie s conin dou linii. Prima linie conine un ntreg: numrul N al
obiectelor. A doua linie conine numere ntregi de la 1 la N ntr-o ordine oarecare, al i-
lea ntreg reprezentnd puterea obiectului etichetat cu i.
Exemplu
DEVICE.IN
5
2 5 4 3 1
Fiierul descrie o intrare cu 5 obiecte i puterile lor.
Etichet : 1 2 3 4 5
Putere : 2 5 4 3 1
O secven este format din urmtoarele 5 apeluri :
1. GetN (n Pascal) sau GetN() (n C/C++) returneaz 5
2. Med3(1,2,3) returneaz 3
3. Med3(3,4,1) returneaz 4
4. Med3(4,2,5) returneaz 4
5. Answer(4).
Restricii
Numrul N al obiectelor este impar i 5N1499
Orice etichet i satisface relaia 1iN
Orice putere satisface relaia 1YN; puterile sunt distincte
Numele bibliotecii Pascal este DEVICE.TPU
Declaraiile subprogramelor Pascal sunt :
function GetN : Integer;
function Med3(x,y,z:Integer) : Integer;
procedure Answer(m:integer);
Numele bibliotecilor C/C++: DEVICE.H, DEVICE.OBJ (folosii modelul de
memorie large)
Header-ele funciilor C/C++ sunt :
int GetN(void);
int Med3(int x, int y, int z);
void Answer(int n);
La o rulare sunt permise cel mult 7777 de apeluri ale subprogramului Med3
Programul dumneavoastr nu trebuie s conin instruciuni explicite de
citire/scriere din/n vreun fiier; citirile/scrierile se realizeaz prin intermediul
subprogramelor din biblioteci.


Pregtirea lotului naional de informatic
Alba Iulia 2004

9. Tem
1. Citii enunul i rezolvarea problemei 13 de pe site-ul
http://olympiads.win.tue.nl/ioi
2. Rezolvai ecuaia y
3
= x, unde x,y S
n
(n<=1000) (problema 12)
3. Rezolvai problema 10 (problema lui Mihai Stroe de la Baraj)
4. Gsii p
n
pentru n mare (problema 2)




BIBLIOGRAFIE

1. I. Tomescu Probleme de combinatoric i teoria grafurilor, Ed.Didactic i
Pedagogic - Bucureti 1981
2. T. Cormen, C. Leiserson, R. Rivest Introducere n algoritmi, Ed. Computer
Libris Agora Cluj Napoca 2000
3. A. P. Domoread Jocuri i probleme distractive de matematic, Ed. Didactic i
Pedagogic - Bucureti 1965
4. D. Knuth Arta programrii calculatoarelor vol.1, Ed. Tehnic Bucureti 1977
5. V. Mitrana Provocarea algoritmilor, Editura Agni Bucureti 1994
6. C. Nstsescu, C. Ni, M. Brandiburu, D. Joia Exerciii i probleme de
algebr, Ed. Didactic i Pedagogic - Bucureti 1983
7. I. Tomescu Introducere n combinatoric, Ed. Tehnic - Bucureti 1972
8. Seria GInfo numerele 8/1 10/8, 1998-2001.
Structuri de Date
Number: 000-000
Passing Score: 600
Time Limit: 120 min
File Version: 1.0
Exam A
QUESTION 1
A.
B.
C.
D.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 2
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 3
A.
B.
C.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 4
A.
B.
C.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 5
A.
B.
C.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 6
A.
B.
C.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 7
A.
B.
C.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 8
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 9
A.
B.
C.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 10
A.
B.
C.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 11
A.
B.
C.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 12
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 13
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 14
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 15
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 16
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 17
A.
B.
C.
D.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 18
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 19
A.
B.
C.
D.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 20
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 21
A.
B.
C.
D.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 22
A.
B.
C.
D.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 23
A.
B.
C.
D.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 24
A.
B.
C.
D.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 25
A.
B.
C.
D.
Answer: D
Section: (none)
Explanation/Reference:
QUESTION 26
A.
B.
C.
D.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 27
A.
B.
C.
D.
Answer: D
Section: (none)
Explanation/Reference:
QUESTION 28
A.
B.
C.
D.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 29
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 30
A.
B.
C.
D.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 31
A.
B.
C.
D.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 32
A.
B.
C.
D.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 33
A.
B.
C.
D.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 34
A.
B.
C.
D.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 35
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 36
A.
B.
C.
D.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 37
A.
B.
C.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 38
A.
B.
C.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 39
A.
B.
C.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 40
A.
B.
C.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 41
A.
B.
C.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 42
A.
B.
C.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 43
A.
B.
C.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 44
A.
B.
C.
D.
Answer: D
Section: (none)
Explanation/Reference:
QUESTION 45
A.
B.
C.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 46
A.
B.
C.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 47
A.
B.
C.
Answer: A
Section: (none)
Explanation/Reference:
QUESTION 48
A.
B.
C.
D.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 49
A.
B.
C.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 50
A.
B.
C.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 51
A.
B.
Answer: B
Section: (none)
Explanation/Reference:
QUESTION 52
A.
B.
C.
Answer: C
Section: (none)
Explanation/Reference:
QUESTION 53
A.
B.
C.
Answer: B
Section: (none)
Explanation/Reference:
ntrebarea nr. 1
6 din 6 puncte

Care dintre urmatoarele afirmatii este falsa?
Answer

Selected
Answer:
d.
Algoritmul de cautare binara a unei valori date, intr-un vector ale carui elemente sunt
ordonate crescator, presupune construirea arborelui binar de cautare asociat vectorului dat.


ntrebarea nr. 2
0 din 6 puncte

Se numeste arbore binar strict un arbore binar cu proprietatea ca fiecare nod, cu exceptia nodurilor terminale,
are exact doi descendenti. Care dintre urmatoarele afirmatii este adevarata?
Answer

Selected Answer: a.
Orice arbore binar strict are toate frunzele pe acelasi nivel.


ntrebarea nr. 3
6 din 6 puncte

Inaltimea maxima pe care o poate avea arborele binar avand nodurile: 1, 4, 5, 10, 16, 17, 21 este:
Answer

Selected Answer: c.
7


ntrebarea nr. 4
0 din 6 puncte

Precizati ecuatia redusa si tipul conicei este:
Answer

Selected Answer: a.
hiperbola


ntrebarea nr. 5
6 din 6 puncte

O baza a subspatiului vectorial definit de submultimea: este formata din
vectorul:
Answer

Selected Answer: b.



ntrebarea nr. 6
0 din 6 puncte

Vectorul propriu asociat valorii proprii corespunzatoare aplicatia liniara , a carei matrice

intr-o baza oarecare a lui este este
Answer
Selected Answer: c.



ntrebarea nr. 7
10 din 10 puncte

Doriti un punct din oficiu?
Answer

Selected Answer: True

ntrebarea nr. 8
6 din 6 puncte

Care este aproximarea produsa de metoda lui Simpson pentru integrala
?
Answer

Selected Answer: e.
16


ntrebarea nr. 9
0 din 6 puncte

Se aplica metoda lui Ritz pentru calculul inversei matricii . La primul pas se alege vector si
se calculeaza matricea
Answer

Selected Answer: e.



ntrebarea nr. 10
0 din 6 puncte

Fie P o functie reala definita pe [0,2] asa ca P(0)=0, P(1)=1, P(2)=4. Atunci aproximarea produsa de metoda
lui Simpson pentru integrala

este
Answer

Selected Answer: b.
5/3


ntrebarea nr. 11
6 din 6 puncte

O clasa poate sa includa o restrictie asupra proprietatilor supraclasei
Answer

Selected Answer: False

ntrebarea nr. 12
0 din 6 puncte

Se dau urmatoarele doua tabele:
TABLOU(id_tablou#, titlu, an_creatie, id_pictor, id_sala)
SALA(id_sala#, denumire, capacitate)
Alegeti comanda care afiseaza toate salile in care nu sunt expuse tablouri.
Answer

Selected Answer: b.
SELECT denumire
FROM sala s
WHERE NOT IN (SELECT 1
FROM tablou
WHERE id_sala = s.id_sala);


ntrebarea nr. 13
6 din 6 puncte

Se da urmatorul tabel, care contine date despre locuintele de inchiriat, aflate in baza de date a unei firme
imobiliare:
LOCUINTE(id_locuinta#, nr_camere, suprafata, tip, pret, etaj, nr_balcoane)
Care varianta afiseaza numarul mediu de balcoane pentru fiecare tip de locuinta care are cel putin un balcon?
Answer

Selected Answer: b.
SELECT tip, AVG(NVL(nr_balcoane,0)) medie_nr_balcoane
FROM locuinte
GROUP BY tip
HAVING AVG(NVL(nr_balcoane,0)) > 0;



ntrebarea nr. 14
6 din 6 puncte

Pe tabelul de mai jos
MELODII(id_melodie#, titlu, textier, compozitor, gen, durata)
este definita urmatoarea vizualizare:
CREATE VIEW v_melodii AS
SELECT id_melodie, titlu, textier, compozitor, durata, gen
FROM melodii
WHERE gen != clasic
WITH CHECK OPTION;
Care dintre urmatoarele comenzi nu este permisa asupra vizualizarii definite?
Answer

Selected Answer: c.
INSERT INTO v_melodii(id_melodie, titlu, compozitor, gen)
VALUES (101, Dunarea Albastra, Johann Strauss, clasic);




ntrebarea nr. 15
0 din 6 puncte

Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este ordinea de apel a destructorilor. Ce
se va afisa pe ecran?

class Clasa1
{
public:
virtual ~Clasa1(){ cout<<"C1::~C1()"<<endl; }
};
class Clasa2
{
public:
virtual ~Clasa2(){ cout<<"C2::~C2()"<<endl;}
};
class System
{
Clasa2 ob1;
Clasa1 ob2;
public:
System():ob1(),ob2(){ }
virtual ~System(){ cout<<"S::~S()"<<endl;}

};
int main (int argc, char* argv[])
{
System a;
return 0;
}
Answer

Selected Answer: e.
C1::~C1()
C2::~C2()
S::~S()




















ntrebarea nr. 16
6 din 6 puncte

Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este ordinea de apel a constructorilor si
destructorilor. Ce se va afisa pe ecran?
class Baza
{
public:
Baza(){ cout<<"B::B()"<<endl;}
virtual ~Baza(){ cout<<"B::~B()"<<endl;}

};
class Derivat:public Baza
{
public:
Derivat(){ cout<<"D::D()"<<endl;}
~Derivat(){ cout<<"D::~D()"<<endl;}
};
int main (int argc, char* argv[])
{

Baza *s = new Derivat();
delete s;
return 0;
}
Answer

Selected Answer: b.
B::B()
D::D()
D::~D()
B::B()



Tehnici de proiectare i programare orientat pe obiecte











R=?










False



False


ntrebarea nr. 11

Care dintre urmatoarele afirmatii e adevarata?
Answer


b. Diagramele de activitate pot fi folosite pentru a arata intregul flux al unui caz de utilizare








R=?










ntrebarea nr. 14
0 din 6 puncte


Identificati care dintre elementele de modelare UML urmatoare NU este asociat cu diagramele cazurilor de utilizare (Use-case Diagrams)?
Answer

Selected Answer: b. Extend relationships (relatii de tip Extend)



R=?

ntrebarea nr. 8
0 din 6 puncte


Care dintre urmatoarele elemente de modelare NU este asociat cu diagramele de activitate (Activity Diagrams) in UML?
Answer

Selected Answer: a. fork nodes si join nodes (noduri de bifurcare si noduri de imbinare)



R=?

ntrebarea nr. 11
6 din 6 puncte

Diagramele de interactiune (in UML) includ:

d. Diagramele de colaborare si diagramele de secventa



ntrebarea nr. 9
Care din urmatoarele afirmatii este falsa

b. Orice arbore binar are un numar impar de noduri.







ntrebarea nr. 5
0 din 6 puncte


Analizati cu atentie urmatorul fragment de cod sursa. Alegeti observatia corecta ?

class Sir
{
int len;
char *p;
public:
Sir(char * s=NULL)
{
p = NULL;
len =0;

if(s)
{
len = strlen(s);
p = new char[len+1];
strcpy_s(p,len+1, s);

}
}
~Sir(){ if (p) delete p; }

};

int main(int argc, char* argv[])
{

while(true)
{
Sir * ps = new Sir("Programare in C++");
delete ps;
}
return 0;
}
Answer

Selected Answer:


b. codul este corect, se compileaza dar nu se executa








x. 16
R=?


R=????

ntrebare nr. 27

R= B::B() ; D::D() ; D::~D() ; B::B().








a. 0






R=?


R=?







0
R=?








R=?







R= C nu sunt sigur



R=?
ntrebarea nr. 6
6 din 6 puncte


Analizati cu atentie urmatorul fragment de cod sursa. Se doreste introducerea in definitia sablonului de clasa Vector a unui operator de extractie care sa permita o
extractie inlantuita, precizati care este declaratia corecta ?

template<typename T=int, int dim=100>
class Vector
{
T v[dim];
public:
Vector(){ memset(v,0,sizeof(v)); }
~Vector(){}
T &operator[](int i){ return v[i];}


//alegeti declaratia operatorului de insertie in flux
};
Answer

Selected Answer:
b.
template<typename T, int dim>
friend istream & operator>>(istream &, Vector<T,dim>&);





R=?



c. Programare in C++, codul este corect dar incomplet, se compileaza dar pentru a functiona corect necesit a un constructor de copiere

R=?


Selected Answer: x c.
B::B()
B::B(B&)
B::B(B&)
R=?

1234

R=?



ntrebarea nr. 5


Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este ordinea de apel a constructorilor. Ce se va afisa pe ecran?
class Clasa1
{
public:
Clasa1(){ cout<<"C1::C1()"<<endl;}

};
class Clasa2
{
public:
Clasa2() { cout<<"C2::C2()"<<endl;}
};
class System
{
Clasa2 ob1;
Clasa1 ob2;
public:
System():ob2(), ob1() { cout<<"S::S()"<<endl;}
};
int main (int argc, char* argv[])
{
System a;
return 0;
}

Answer
Selected Answer: b.
C1::C1()
C2::C2()
S::S()




R=?






ntrebarea nr. 6
6 din 6 puncte


Analizati cu atentie urmatorul fragment de cod sursa. Precizati ce catitate de memorie se aloca pentru clasele care urmeaza? Ce se va afisa pe ecran?

class Empty
{
int null;
public:
Empty(){}
~Empty(){}
};

class EmptyToo : public Empty
{
public:
EmptyToo(){}
virtual ~EmptyToo(){}
};

class EmptyThree : public EmptyToo
{
public:
EmptyThree(){}
~EmptyThree(){}
};

int main()
{
std::cout << sizeof(EmptyThree);


return 0;
}
Answer
Selected Answer:
8



















































Baze de date



ntrebarea nr. 9
0 din 6 puncte


Se da urmatorul tabel:
ANGAJATI(id_ang#, nume, data_ang, data_nast, salariu, comision, functia).
Stiind ca exista salariati cu functia Programator IT, care dintre variantele de mai jos afiseaza numele, functia, salariu pentru acei angajati care au salariul mai mare
decat al oricarui Programator IT?
Answer

Selected Answer: a.
SELECT nume, functia, salariu
FROM angajati
WHEE salariu > ANY(SELECT salariu FROM angajati
WHERE functia=Programator IT);



R=?
ntrebarea nr. 10
0 din 6 puncte


Sa da urmatorul tabel:
ANGAJATI(id_ang#, nume, data_ang, data_nast, salariu, comision, functia, id_sef).
Alegeti comanda care obtine ordonat crescator dupa cod numele fiecarui angajat impreuna cu numele sefului sau, incluzand in rezultat si angajatii care nu au sef.
Answer

Selected Answer: b.
SELECT a.nume angajat, b.nume sef
FROM angajati a, angajati b
WHERE a.id_sef(+)=b.id_ang
ORDER BY a.id_ang;



R=?








ntrebarea nr. 16


Se da urmatorul tabel:
ANGAJATI(id_ang#, nume, data_ang, data_nast, salariu, comision, functia, id_sef).
Presupunand ca nu exista doi angajati cu acelasi nume, care dintre variante nu afiseaza angajatii care nu sunt sefi?
Answer

Selected Answer: a.
SELECT nume
FROM angajati
WHERE nume NOT IN (SELECT b.nume FROM angajati a, angajati b
WHERE a.id_sef=b.id_ang);


R=?















































Intrebarea 5.
Se dau urmatoarele trei tabele:
VANZATOR(id_vanzator#, nume, prenume, data_angajarii)
VINDE(id_vanzator#,id_produs#, data#, cantitate)
PRODUS(id_produs#, denumire, culoare, stoc_initial, pret_unitar)
Alegeti comanda care obtine denumirea produselor care au stocul epuizat.

GRESIT a. SELECT denumire
FROM produs
WHERE stoc_initial IN (SELECT SUM(cantitate)
FROM vind GROUP BY id_produs);

R=?

















ntrebarea nr. 5
0 din 6 puncte


Pe tabelul de mai jos
MELODII(id_melodie#, titlu, textier, compozitor, gen, durata),
este definita urmatoarea vizualizare:
CREATE VIEW melodii_clasice AS
SELECT id_melodie, titlu, textier, compozitor, durata
FROM melodii
WHERE gen = clasic
WITH READ ONLY;
Care dintre urmatoarele comenzi este permisa asupra vizualizarii definite?
Answer

Selected Answer: b.
INSERT INTO melodii_clasice(id_melodie, titlu, compozitor)
VALUES (101, Dunarea Albastra, Johann Strauss);





R=?





;







ntrebarea nr. 16
6 din 6 puncte


Se da urmatorul tabel, care contine date despre locuintele ce pot fi inchiriate, aflate in baza de date a unei firme imobiliare:
LOCUINTE(id_locuinta#, nr_camere, suprafata, tip, pret, etaj, an).
Care varianta afiseaza pentru fiecare etaj pretul mediul al locuintelor care au mai mult de o camera si pentru care pretul mediu obtinut este cel mult 800?
Answer
Selected Answer:
c.
SELECT etaj, ROUND(AVG(pret),2)
FROM locuinte
WHERE nr_camere > 1
GROUP BY etaj
HAVING ROUND(AVG(pret),2) < 800;











R=?
ntrebarea nr. 7
Se dau urmatoarele doua tabele:
CLIENTI(id_client#, nume, prenume, id_adresa)
ADRESE(id_adresa#, strada, numar, bloc, apartament, judet, localitate, tara)
Alegeti comanda care nu obtine numele, prenumele si adresa pentru fiecare client.

Corect b. SELECT nume, prenume, strada, numar, bloc, apartament, judet, localitate, tara
FROM clienti NATURAL JOIN adrese
ON(id_adresa);





ntrebarea nr. 13

Se dau urmatoarele doua tabele:
CLIENTI(id_client#, nume, prenume, id_adresa, id_ang)
AGENTI_IMOBILIARI(id_ang#, nume, salariu, comision)
Se cere sa se obtina pentru fiecare client numele si prenumele sau, respectiv codul si numele agentului corespunzator, incluzand in rezultat toti agentii, chiar daca acestia nu au
asociat niciun client.
Care varianta nu realizeaza acest lucru?



Corect b. SELECT c.nume client, a.id_ang, a.nume agent
FROM clienti c LEFT OUTER JOIN agenti_imobiliari a
ON(c.id_ang = a.id_ang);

































Raspuns corect "c"

ntrebarea nr. 4
6 din 6 puncte


O constangere de validare
Answer

Selected Answer:
b.
defineste explicit o conditie ce trebuie satisfacuta de fiecare linie a tabelului.




R=?

c. Constrangerea de cheie externa implementeaza o relatie de tip one-to-many intre doua tabele.

R=?

ntrebarea nr. 14
O subcerere care intoarce cel putin doua linii nu poate fi utilizata intr-o comanda SELECT in clauza:
Selected Answer: d. FROM

R=?



R=?








































Algoritmi si structuri de date































c. 8
R=?





R=?



























R=?


























































Analiza numerica











Se rezolva ecuatia = pe intervalul [0,1] cu metoda aproximatiilor succesive corespunzatoare functiei . Alegem
predictie initiala . Cat este urmatoarea iteratie conform metodei aproximatiilor succesive?
Answer

Selected Answer:
b. 1/4






R=?


Raspuns corect c. 2


Raspuns corect c. 1




Raspuns corect a. 1


Se aplica metoda radacinii patrate matricii A= pentru calculul descompunerii Cholesky A=BB , unde B este inferior triunghiulara(toate elementele
deasupra diagonalei principale sunt nule). Sa se afle elementul de pe a doua linie si a doua coloana din matricea B.
Answer

Selected Answer: a. 2


R=1


R=?




Problema nr.1
























R=?













R=1




R=?






R=?



R=?






































































Algebra liniara si geometrie analitic






























R=?








R=?

R=ROTATIE











R=126


a. 30x+17y-6z-107=0


R=?


ntrebarea nr. 12
0 din 6 puncte

Ecuatia planului determinat de dreptele paralele
Selected Answer: a. x+y-3z-3=0


R=?

R=?



R=?

b.














R=?






R=?

R=?













R=?










ntrebarea nr. 1
0 din 6 puncte
Se da urmatorul tabel
PRODUS(id#, denumire, culoare, pret_unitar, stoc_curent, categorie,
depozit).
Alegeti comanda care obtine numarul de depozite in care se afla mai mult de
5000 de produse diferite.
Answer
Selected Answer: b.
SELECT COUNT(depozit)
FROM produs
GROUP BY depozit
HAVING COUNT(*) > 5000;
ntrebarea nr. 2
0 din 6 puncte
Se da urmatorul tabel:
ANGAJATI(id_ang#, nume, data_ang, data_nast, salariu, comision, functia,
id_sef).
Presupunand ca nu exista doi angajati cu acelasi nume, care dintre variante nu
afiseaza angajatii care nu sunt sefi?
Answer
Selected
Answer:
a.
SELECT nume
FROM angajati
WHERE nume NOT IN (SELECT b.nume FROM angajati a,
angajati b
WHERE a.id_sef=b.id_ang);
ntrebarea nr. 3
6 din 6 puncte
Se da urmatorul tabel
PRODUS(id#, denumire, culoare, pret_unitar, stoc_curent, categorie,
depozit).
Alegeti comanda care determina afisarea urmatoarelor informatii:
- valoarea totala a produselor din fiecare depozit distribuita pe categorii;
- valoarea totala a produselor din fiecare depozit;
- valoarea totala a tuturor produselor.
Answer
Selected Answer: b.
SELECT depozit, categorie, SUM(pret_unitar*stoc_curent)
FROM produs
GROUP BY ROLLUP (depozit, categorie);
ntrebarea nr. 4
6 din 6 puncte
Fie subspatiile vectoriale:
U:=subspatiul vectorial generat de vectorii si
.
Atunci:
Answer
Selected Answer: c.
ntrebarea nr. 5
0 din 6 puncte
Nucleul aplicatia liniara , a carei matrice intr-o baza oarecare a lui
este este:
Answer
Selected Answer: d.
ntrebarea nr. 6
0 din 6 puncte
Se da sirul: 34, 72, 81, 96, 102, 373, 482, 793. Care din urmatoarele afirmatii este
falsa?
Answer
Selected
Answer:
a.
Exista un arbore binar de cautare prin a carui parcurgere in
inordine sa se obtina sirul de numere indicat mai sus si in care 793
sa nu fie nod frunza.
ntrebarea nr. 7
6 din 6 puncte
Cifrele ce constituie CNP-ul dvs. sunt elementele unui vector cu lungimea data
de numarul cifrelor din CNP. Presupunem ca acest vector s-a obtinut prin
linearizarea diagonala a unei matrici superior k-diagonale cu n linii si n coloane.
Sa se indice valoarea maxima pe care o poate avea n, asa incat sa fie suficiente
informatiile furnizate de vector pentru reconstituirea integrala a matricii.
Answer
Selected Answer: a.
13
ntrebarea nr. 8
0 din 6 puncte
Metoda optimala de determinare a celui mai mare element al unui arbore binar de
cautare, stiind ca acesta nu se afla in radacina arborelui, presupune ca:
Answer
Selected
Answer:
a.
plecand din radacina, sa se faca o parcurgere optimala a
intregului subarbore drept
ntrebarea nr. 9
10 din 10 puncte
Doriti un punct din oficiu?
Answer
Selected Answer: True
ntrebarea nr. 10
6 din 6 puncte
Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este ordinea
de apel a constructorilor. Ce se va afisa pe ecran?
class Clasa1
{
public:
Clasa1(){ cout<<"C1::C1()"<<endl;}
};
class Clasa2
{
public:
Clasa2() { cout<<"C2::C2()"<<endl;}
};
class System
{
Clasa2 ob1;
Clasa1 ob2;
public:
System():ob2(), ob1() { cout<<"S::S()"<<endl;}
};
int main (int argc, char* argv[])
{
System a;
return 0;
}
Answer
Selected Answer: b.
C2::C2()
C1::C1()
S::S()
ntrebarea nr. 11
0 din 6 puncte
Analizati cu atentie urmatorul fragment de cod sursa. Alegeti observatia corecta ?
class Sir
{
int len;
char *p;
public:
Sir(char * s=NULL)
{
p = NULL;
len =0;
if(s)
{
len = strlen(s);
p = new char[len+1];
strcpy_s(p,len+1, s);
}
}
~Sir(){ if (p) delete p; }
};
int main(int argc, char* argv[])
{
while(true)
{
Sir * ps = new Sir("Programare in C++");
delete ps;
}
return 0;
}
Answer
Selected Answer: e.
codul este corect , se compileaza dar ruleaza la infinit
ntrebarea nr. 12
6 din 6 puncte
O subclasa nu poate avea acces la membrii privati ai superclasei
Answer
Selected Answer: True
ntrebarea nr. 13
0 din 6 puncte
Ecuatia planului determinat de dreptele paralele si
Answer
Selected Answer: c.
x+y-3z-3=0
ntrebarea nr. 14
6 din 6 puncte
Se da tabelul
x -1 0 1
y 2 1 0
Se noteaza cu P(x) polinomul lui Lagrange de grad cel mult 2 ce interpoleaza
datele din tabelul de mai sus. Cat este P(2)?
Answer
Selected Answer: d.
-1
ntrebarea nr. 15
6 din 6 puncte
Fie o functie reala derivabila si numar dat. Se doreste a se rezolva
numeric ecuatia g(x)=0. Formula iterativa este specifica
metodei
Answer
Selected Answer: c.
lui Newton
ntrebarea nr. 16
6 din 6 puncte
Fie P o functie reala definita pe [0,2] asa ca P(0)=0, P(2)=4. Atunci aproximarea
produsa de metoda trapezului pentru integrala
este
Answer
Selected Answer: d.
4
04 iulie 2011 12:12:47 EEST
ntrebarea nr. 1
10 din 10 puncte
Doriti un punct din oficiu?
Answer
Selected Answer: True
ntrebarea nr. 2
0 din 6 puncte
Orice clasa trebuie sa aiba si atribute publice?
Answer
Selected Answer: True
ntrebarea nr. 3
0 din 6 puncte
Indicati complexitatea algoritmului de determinare a lungimii unei liste dublu
inlantuite, unde n este numarul de noduri din lista.
Answer
Selected Answer: c.
O(2n)
ntrebarea nr. 4
0 din 6 puncte
Care dintre urmatoarele afirmatii este falsa?
Answer
Selected
Answer:
b.
Algoritmul de cautare binara a unei valori date intr-un vector ale
carui elemente sunt ordonate crescator are la baza principiul
dividae et impera.
ntrebarea nr. 5
6 din 6 puncte
Metoda optimala de determinare a celui mai mare element al unui arbore binar de
cautare, stiind ca acesta nu se afla in radacina arborelui, presupune ca:
Answer
Selected
Answer:
a.
plecand din radacina, sa se faca o parcurgere pe legatura
dreapta pana la nivel de frunza
ntrebarea nr. 6
0 din 6 puncte
Analizati cu atentie urmatorul fragment de cod sursa. Se doreste introducerea in
definitia sablonului de clasa Vector a unui operator de acces indexat care sa
permita modificarea elementelor vectorului, precizati care este declaratia corecta
?
template<typename T=int, int dim>
class Vector
{
T v[dim];
public:
Vector(){ memset(v,0,sizeof(v)); }
~Vector(){}
//alegeti declaratia operatorului de acces indexat
};
Answer
Selected Answer: c.
T operator[](int i);
ntrebarea nr. 7
0 din 6 puncte
Analizati cu atentie urmatorul fragment de cod sursa. Precizati ce se va afisa pe
ecran?
template <int T>
struct X
{
enum val {v = X<T-2>::v + X<T-1>::v };
};
template <>
struct X<0>
{
enum val {v = 1 };
};
template <>
struct X<1>
{
enum val {v = 1 };
};
int main()
{
cout<< X<7>::v ;
}
Answer
Selected Answer: 7
ntrebarea nr. 8
0 din 6 puncte
Pentru ce valori ale lui , conica de ecuatie: este o elipsa?
Answer
Selected Answer: d.
ntrebarea nr. 9
0 din 6 puncte
O baza a subspatiului vectorial definit de
submultimea: este formata din vectorul:
Answer
Selected Answer: b.
ntrebarea nr. 10
0 din 6 puncte
Aplicatia liniara , a carei matrice intr-o baza oarecare a lui este
are valorile proprii egale cu:
Answer
Selected Answer: a.
ntrebarea nr. 11
6 din 6 puncte
Care este aproximarea produsa de metoda trapezului pentru integrala
?
Answer
Selected Answer: a.
1.5
ntrebarea nr. 12
0 din 6 puncte
Care este aproximarea produsa de metoda lui Simpson pentru integrala
?
Answer
Selected Answer: b.
20
ntrebarea nr. 13
0 din 6 puncte
Calculati valoarea absoluta a erorii comise in aproximarea integralei
cu metoda trapezului.
Answer
Selected Answer: c.
1/2
ntrebarea nr. 14
0 din 6 puncte
O constangere de validare
Answer
Selected Answer: a.
poate fi declarata doar ulterior crearii tabelului.
ntrebarea nr. 15
0 din 6 puncte
Se da urmatorul tabel, care contine date despre locuintele de inchiriat, aflate in
baza de date a unei firme imobiliare:
LOCUINTE(id_locuinta#, nr_camere, suprafata, tip, pret, etaj, nr_balcoane)
Care varianta afiseaza numarul mediu de balcoane pentru fiecare tip de locuinta
care are cel putin un balcon?
Answer
Selected
Answer:
c.
SELECT tip, AVG(NVL2(nr_balcoane, nr_balcoane,nu are
balcoane)) medie_nr_balcoane
FROM locuinte
GROUP BY tip
HAVING AVG(NVL(nr_balcoane,0)) > 0;
ntrebarea nr. 16
0 din 6 puncte
Se dau urmatoarele doua tabele:
PRODUS(id_produs#, denumire, pret_unitar, cod_categorie)
CATEGORIE(id_categorie#, denumire)
Comanda urmatoare
UPDATE produs
SET pret_unitar = pret_unitar * 0.5
WHERE cod_categorie IN (SELECT id_categorie
FROM categorie
WHERE denumire IN ( IT, PAPETARIE);
determina
Answer
Selected
Answer:
b.
marirea cu 50% a preturilor tuturor produselor ce fac parte din
categoria IT si din categoria PAPETARIE.
ntrebarea nr. 1
0 din 6 puncte
Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este ordinea
de apel a constructorilor si destructorilor. Ce se va afisa pe ecran?
class Baza
{
public:
Baza(){ cout<<"B::B()"<<endl;}
~Baza(){ cout<<"B::~B()"<<endl;}
};
class Derivat:public Baza
{
public:
Derivat(){ cout<<"D::D()"<<endl;}
~Derivat(){ cout<<"D::~D()"<<endl;}
};
int main (int argc, char* argv[])
{
Baza *s = new Derivat();
delete s;
return 0;
}
Answer
Selected Answer: b.
B::B()
D::D()
D::~D()
B::B()
ntrebarea nr. 2
0 din 6 puncte
Fie urmatoarea specificare de clasa:
class AbstractList{
public:
virtual void erase()=0;
virtual void put(AbstractElem* ae){}
virtual AbstractElem* get(){}
virtual int isEmpty(){}
virtual int isFull(){}
};
Care afirmatie este corecta:
Answer
Selected
Answer:
c.
obiectele clasei pot fi construite cu
AbstractList()
ntrebarea nr. 3
6 din 6 puncte
Fie f o functie reala definita pe [0,3]. Se stie ca polinomul Lagrange de
interpolare al lui f pe nodurile 0,1,2,3 este . Atunci diferenta divizata
f[0,1] a lui f corespunzatoare nodurilor 0,1 este
este
Answer
Selected Answer: a.
1
ntrebarea nr. 4
6 din 6 puncte
Se rezolva ecuatia cu metoda lui Newton cu predictie initiala .
Cat este urmatoarea iteratie ?
Answer
Selected Answer: a.
2
ntrebarea nr. 5
6 din 6 puncte
Fie o functie reala derivabila si numar dat. Se doreste a se rezolva
numeric ecuatia g(x)=0. Formula iterativa este specifica
metodei
Answer
Selected Answer: d.
lui Newton
ntrebarea nr. 6
0 din 6 puncte
Sa se determine valorile si astfel incat dreapta de sa
fie perpendiculara pe planul
Answer
Selected Answer: c.
ntrebarea nr. 7
10 din 10 puncte
Doriti un punct din oficiu?
Answer
Selected Answer: True
ntrebarea nr. 8
6 din 6 puncte
Complementul ortogonal al subspatiului vectorial
: este subspatiul vectorial generat de
vectorul:
Answer
Selected Answer: a.
u=(1,-1,-1)
ntrebarea nr. 9
0 din 6 puncte
Pentru ce valoare a lui vectorii: NU
formeaza o baza a spatiului vectorial :
Answer
Selected Answer: d.
ntrebarea nr. 10
6 din 6 puncte
Se considera lista:
i. when()
ii. if()
iii. close()
iv. after()
Care dintre aceste elemente sunt evenimente valide intr-o diagrama de stare din
UML (alegeti combinatia corecta)?
Answer
Selected Answer: c.
i si iv
ntrebarea nr. 11
0 din 6 puncte
Se da urmatorul tabel:
STUDENT(id_student#, nume, prenume, an_nastere, oras, cod_camin);
Comanda urmatoare
INSERT INTO student
VALUES (100, Popescu, Andrei, 1980, Bucuresti);
Answer
Selected
Answer:
b.
determina adaugarea unei linii in tabelul student cu informatiile
date, iar pentru coloana cod_camin utilizeaza valoarea null doar
daca aceasta coloana nu are definita o valoare implicita.
ntrebarea nr. 12
6 din 6 puncte
Se dau entitatile studenti si proiecte. Stiind ca un student poate participa la
mai multe proiecte, iar la un proiect pot participa mai multi studenti, alegeti
varianta corecta de implementare a acestei scheme:
Answer
Selected
Answer:
b.
CREATE TABLE proiect(
id_proiect NUMBER(4) PRIMARY KEY,
denumire VARCHAR2(20),
data_inceput DATE,
data_starsit DATE);
CREATE TABLE student (
id_student NUMBER(4) PRIMARY KEY,
nume VARCHAR2(20),
prenume VARCHAR2(20));
CREATE TABLE participa(
id NUMBER(4) PRIMARY KEY,
cod_student NUMBER(4) REFERENCES
student(id_student),
cod_proiect NUMBER(4) REFERENCES
proiect(id_proiect));
ntrebarea nr. 13
6 din 6 puncte
Se da urmatorul tabel:
ANGAJATI(id_ang#, nume, data_ang, data_nast, salariu, comision, functia).
Presupunand ca nu exista doi angajati cu acelasi nume, care dintre variante
afiseaza numele, si data angajarii pentru salariatii angajati dupa angajatul cu
numele David?
Answer
Selected
Answer:
a.
SELECT nume, data_ang
FROM angajati WHERE data_ang > (SELECT data_ang
FROM angajati
WHERE nume='David);
ntrebarea nr. 14
6 din 6 puncte
Se da sirul: 34, 72, 81, 96, 102, 373, 482, 793. Care din urmatoarele afirmatii este
falsa?
Answer
Selected
Answer:
a.
Nu se poate construi un arbore binar de cautare prin a carui
parcurgere in inordine sa se obtina sirul de numere indicat mai
sus.
ntrebarea nr. 15
0 din 6 puncte
Care dintre urmatoarele afirmatii este falsa?
Answer
Selected
Answer:
d.
Algoritmul de cautare binara a unei valori date intr-un vector ale
carui elemente sunt ordonate crescator are complexitatea O(logn),
unde n este numarul elementelor vectorului.
ntrebarea nr. 16
0 din 6 puncte
Determinati complexitatea algoritmului de identificare a celui mai mare element
al unei liste circulare ce contine n noduri este:
Answer
Selected Answer: a.
O(2n)
Matrici
(Operatii cu matrici , Inversa unei matrici , Ecuatii matriceale)
1.1. Despre matrici
Acest concept l-am ntalnit nca din primul an de liceu, atunci cnd s-a pus problema
rexolvarii unui sistem de dou ecuaii cu dou necunoscute x, y, de forma

= +
= +
' ' '
c y b x a
c by ax
.
Acestui sistem i-am asociat un teblou ptratic, care conine coeficienii necunoscutelor (n
prima linie sunt coeficienii lui x, y din prima ecuaie, iar in a doua linie figureaz coeficienii lui x,
y din ecuaia a doua):
|
|
.
|

\
|
' '
b a
b a
.
Am numit acest tablou matrice ptratic (sau matricea sistemului). Pe cele dou coloane ale
matricei figureaz coeficienii lui x (pe prima coloan a,
'
a ) i respectiv coeficienii lui y (pe a doua
coloan b,
'
b ).
Definiie. Se numete matrice cu m linii i n coloane (sau de tip n m ) un tablou cu m linii
i n coloane
|
|
|
|
|
.
|

\
|
mn m m
n
n
a a a
a a a
a a a
...
... ... ... ...
...
...
2 1
2 22 21
1 12 11
ale crui elemente
ij
a sunt numere complexe.
Uneori aceast matrice se noteaz i ,
j i
a A = unde m i , 1 = i n j , 1 = . Pentru elementul
ij
a ,
indicele i arat linia pe care se afl elementul, iar al doilea indice j indic pe ce coloan este situat.
Mulimea matricilor de tip n m cu elemente numere reale se noteaz prin , R
n m,
M .
Aceleai semnificaii au i mulimile , Z
n m,
M , , Q
n m,
M , , C
n m,
M .
Cazuri particulare
1) O matrice de tipul n 1 (deci cu o linie i n coloane) se numete matrice linie i are forma
,
n
a a a A ...
2 1
= .
2) O matrice de tipul 1 m (cu m linii i o coloan) se numete matrice coloan i are forma
|
|
|
|
|
.
|

\
|
=
m
a
a
a
B
...
2
1
.
3) O matrice de tip n m se numete nul (zero) dac toate elementele ei sunt zero. Se noteaz cu O
|
|
|
|
|
.
|

\
|
=
0 ... 0 0
... ... ... ...
0 ... 0 0
0 ... 0 0
O .
4) Dac numrul de linii este egal cu numrul de coloane, atunci matricea se numete ptratic.
|
|
|
|
|
.
|

\
|
=
nn n n
n
n
a a a
a a a
a a a
A
...
... ... ... ...
...
...
2 1
2 22 21
1 12 11
.
Sistemul de elemente ,
nn
a a a ...
22 11
reprezint diagonala principal a matricii A, iar
suma acestor elemente
nn
a a a ...
22 11
+ + + se numete urma matricii A notat Tr(A)
_
=
=
n
i
i i
a
1
.
Sistemul de elemente ,
1 1 2 1
...
n n n
a a a

reprezint diagonala secundar a matricii A.
Mulimea acestor matrici se noteaz , C
n
M . Printre aceste matrici una este foarte important
aceasta fiind
|
|
|
|
|
.
|

\
|
=
1 ... 0 0
... ... ... ...
0 ... 1 0
0 ... 0 1
n
I
i se numete matricea unitate (pe diagonala principal are toate elementele egale cu 1, iar n rest
sunt egale cu 0).
Opera ii cu matrici
Egalitatea a dou matrici
Definiie. Fie ,
j i
a A = , ,
j i
b B = e , C
n m,
M . Spunem c matricile A, B sunt egale i scriem
A = B dac
j i
a =
j i
b , , m i , 1 = , , n j , 1 = .
Exemplu: S se determine numerele reale x, y astfel nct s avem egalitatea de matrici
|
|
.
|

\
|


=
|
|
.
|

\
|

+ +
x
x
y x
y x x
2 9 0
1 2
2 0
1
.
R. Matricile sunt egale dac elementele corespunztoare sunt egale, adic:

=
=
= +
= +
. 2 9 2
0 0
1
2 1
x y x
x y x
x
Rezolvnd acest sistem gsim soluia x = 1, y = -3.
Adunarea matricilor
Definiie. Fie ,
j i
a A = , ,
j i
b B = , ,
j i
c C = e , C
n m,
M . Matricea C se numete suma
matricilor A, B dac:
j i
c =
j i
a +
j i
b , , m i , 1 = , , n j , 1 = .
Observaii
1) Dou matrici se pot aduna dac sunt de acelai tip, adic dac au acelai numr de linii i acelai
numr de coloane, deci A, B e , C
n m,
M .
2) Explicit adunarea matricilor A, B nseamn:
|
|
|
|
|
.
|

\
|
mn m m
n
n
a a a
a a a
a a a
...
... ... ... ...
...
...
2 1
2 22 21
1 12 11
+
|
|
|
|
|
.
|

\
|
mn m m
n
n
b b b
b b b
b b b
...
... ... ... ...
...
...
2 1
2 22 21
1 12 11
=
|
|
|
|
|
.
|

\
|
+ + +
+ + +
+ + +
mn mn m m m m
n n
n n
b a b a b a
b a b a b a
b a b a b a
...
... ... ... ...
...
...
2 2 1 1
2 2 22 22 21 21
1 1 12 12 11 11
.
Exemplu: S se calculeze A + B pentru:
1.
|
|
.
|

\
|
=
|
|
.
|

\
|
=
5 1 10
3 5 0
,
1 0 3
2 1 1
B A ;
2. .
0 1
1 0
,
1 1
1 1
|
|
.
|

\
|
=
|
|
.
|

\
|

= B A
R. 1. Avem
|
|
.
|

\
|
=
|
|
.
|

\
|
+ + +
+ +
=
|
|
.
|

\
|
+
|
|
.
|

\
|
= +
6 1 13
1 4 1
5 1 1 0 10 3
3 - 2 5 1 - 0 1
5 1 10
3 5 0
1 0 3
2 1 1
B A
2. Avem
|
|
.
|

\
|
=
|
|
.
|

\
|
+ +
+ +
=
|
|
.
|

\
|
+
|
|
.
|

\
|

= +
1 0
2 1
0 1 1 1
1 1 0 1
.
0 1
1 0
1 1
1 1
B A .
Proprieti ale adunrii matricilor
1
A (Asociativitatea adunrii). Adunarea matricilor este asociativ, adic:
, , C B A C B A + + = + + , , A, B, C e , C
n m,
M .
2
A (Comutativitatea adunrii). Adunarea matricilor este comutativ, adic:
A B B A + = + , , A, Be , C
n m,
M .
3
A (Element neutru). Adunarea matricilor admite matricea nul ca element neutru, adic
-
n m
O
,
e , C
n m,
M astfel nct A +
n m
O
,
= A, , Ae , C
n m,
M .
4
A (Elemente opuse). Orice matrice Ae , C
n m,
M are un opus, notat A , astfel nct
,
n m
O A A
,
= + .
nmulirea cu scalari a matricilor
Definiie.Fie eC i A =,
j i
a e , C
n m,
M . Se numete produsul dintre scalarul eC i
matricea A, matricea notat A e , C
n m,
M definit prin A =,
j i
a .
Obs.: A nmuli o matrice cu un scalar revine la a nmuli toate elementele matricii cu acest scalar.
Deci A =
|
|
|
|
|
.
|

\
|
mn m m
n
n
a a a
a a a
a a a



...
... ... ... ...
...
...
2 1
2 22 21
1 12 11
.
Exemplu Fie
|
|
|
|
.
|

\
|

=
1
3
2
0
5 3
2
1
A . Atunci 6A =
|
|
.
|

\
|
6 4 0
30 18 3
.
Proprieti ale nmulirii matricilor cu scalari
1
S , , A A = , , , eC, , Ae , C
n m,
M ;
2
S , B A B A + = + , , eC, , A, Be , C
n m,
M ;
3
S , A A A + = + , , , eC, , Ae , C
n m,
M ;
4
S A A = 1 ,1eC, , Ae , C
n m,
M ;
nmulirea matricilor
Definiie. Fie A =,
i k
a e , R
n m,
M , B =,
j i
b e , R
p n,
M . Produsul dintre matricile A i B
(n aceasta ordine), notat AB este matricea C =,
j k
c e , R
p m,
M definit prin
_
=
=
n
i
j i i k j k
b a c
1
, , m k , 1 = , , n j , 1 = .
Observaii
1) Produsul AB a dou matrici nu se poate efectua ntotdeauna dect dac Ae , R
n m,
M ,
Be , R
p n,
M , adic numrul de coloane ale lui A este egal cu numrul de linii ale lui B, cnd se
obine o matrice C = ABe , R
p m,
M .
2) Dac matricile sunt ptratice A, Be , R
n
M atunci are sens ntotdeauna att AB ct i BA, iar, n
general, AB= BA adic nmulirea matricilor nu este comutativ.
Proprieti ale nmulirii matricilor
1
I (Asociativitatea nmul irii). nmul irea matricilor este asociativ, adic
, , BC A C AB = , , Ae , C
n m,
M , , Be , C
p n,
M , , Ce , C
s p,
M .
2
I (Distributivitatea nmul irii n raport cu adunarea). nmul irea matricilor este
distributiv n raport cu adunarea matricilor, adic
, , , , CB CA B A C BC AC C B A + = + + = + , A, B, C matrici pentru care
au sens operaiile de adunare i nmulire.
3
I Dac
n
I e , C
n
M este matricea unitate, atunci
, A AI A I
n n
= = , Ae , C
n
M .
Se spune c
n
I este element neutru n raport cu operaia de nmulire a matricilor.
Puterile unei matrici
Definiie. Fie Ae , C
n
M . Atunci A A =
1
, A A A =
2
, A A A =
2 3
, , A A A
n n
=
1
, ,
ne
*
N . (Convenim
2
0
I A = ).
INVERSA UNEI MATRICI
Definiie. Fie Ae , C
n
M . Matricea A se numete inversabil dac exist matricea
Be , C
n
M cu proprietatea c
n
I A B B A = = ,
n
I fiind matricea unitate.
Matricea B din definiie se numete inversa matricii A i se noteaz
1
= A B . Deci
n
I A A A A = =
1 1
.
Teorem. Matricea Ae , C
n
M este inversabil dac i numai dac , . 0 det = A O astfel de
matrice se numete nesingular.
Construcia lui
1
A presupune urmtorii pai:
Pasul 1. (Construc ia transpusei)
Dac
|
|
|
|
|
.
|

\
|
=
nn n n
n
n
a a a
a a a
a a a
A
...
... ... ... ...
...
...
2 1
2 22 21
1 12 11
,
atunci construim transpusa lui A
|
|
|
|
|
.
|

\
|
=
nn n n
n
n
t
a a a
a a a
a a a
A
...
... ... ... ...
...
...
2 1
2 22 12
1 12 11
.
Pasul 2. (Construc ia adjunctei)
Matricea
, , ,
, , ,
, , ,
|
|
|
|
|
.
|

\
|



=
+ + +
+ + +
+ + +
nn
n n
n
n
n
n
n
n
n
n
D D D
D D D
D D D
A
1 ... 1 1
... ... ... ...
1 ... 1 1
1 ... 1 1
2
2
1
1
2
2
22
2 2
21
1 2
1
1
12
2 1
11
1 1
*
obinut din A
t
, inlocuin fiecare element cu complementul su algebric se numete adjuncta
matricii A.
Pasul 3. (Construc ia inversei) Se ine cont de teorema precedent i se gsete c:
,
... 0 0 0
... ... ... ... ...
0 ... 0 0
0 ... 0 0
* *
|
|
|
|
|
.
|

\
|
= =
d
d
d
A A A A iar de aici .
1 1
* *
n
I A
d
A A A
d
=
|
.
|

\
|
=
|
.
|

\
|
Ultimele egaliti arat c
Ecuaii matriciale
Voi prezenta n continuare o tehnic de rezolvare a unor ecuaii de forma C AX = , C XA = ,
C AXB = , unde A, B, C sunt matrici cunoscute, iar X este matricea de aflat. Astfel de ecuaii se
numesc ecua ii matriciale.
Astfel de ecuaii se pot rezolva numai atunci cnd A, B sunt matrici ptratice inversabile.
Pentru rezolvarea ecuaiei C AX = nmulim la stnga egalitatea cu
1
A i avem:
, , C A X C A IX C A X A A C A AX A
1 1 1 1 1 1
= = = = .
Deci soluia ecuaiei date este C A X
1
= .
Pentru determinarea soluiei ecuaiei C XA = vom nmuli la dreapta cu
1
A i analog vom
gsi
1
= CA X , soluia ecuaiei matriciale.
,
* 1
det
1
A
A
A =

Pentru gsirea soluiei ecuaiei C AXB = nmulim egalitatea la stanga cu


1
A i la dreapta
cu
1
B i obinem
1 1
= CB A X .
APLICA II
Aflati x ,y stiind ca are loc egalitatea:
1)
|
|
.
|

\
|
=
|
|
.
|

\
|
+

0 19
11 1
0 6 7
3 2 1 x y
y x
y x

=
= = = + = +

= +

= = =
=

0 0
2 20 10 57 18 28 77 19 6
3
11 4
7 19 6 7
3
11 4
11 4 3 11 3 2
1 1
y y y y y
y
y x
y
x y x x y y x
1
3
11 8
2 dar
3
11 4
=

=
x x
y
y
x
2)
|
|
.
|

\
|

+
=
|
|
.
|

\
|

+
y
y y
x y x
y x x
4 5
8 3
2 7
3 2

= =
=
= +
= = + = + =

y x y x
y x
y y x
y y y y y x
2 4 2
5 7
8 3
1 3 3 3 2 2 3 2
2
1 dar
2
=
)
`

=
=
x
y
y x
3)
|
|
.
|

\
| +
=
|
|
.
|

\
|

+
6 3
1 1
3
1 3
2
x
x y
x y

+ = =
=
=
= + = + + + = +

x y x y
x x x x x x x y
6 6
3 3
1 1
0 5 4 1 3 6 1 3
2 2 2
, , , , 5 0 1 5 0 5 5 0 5 5 0 5 4
1
2 2
= = + = + = + = x x x x x x x x x x x
1
2
= x
I. dac 5 = x , atunci 11 = y
II. dac 1 = x , atunci 5 = y
4)
|
|
.
|

\
|


=
|
|
.
|

\
|
+ zy
xz
zx yx yz
xy
4
0 5
3
0
,
,
,
y x y
y x
z y x z zy zx
x y y x
y x
xy x
y
y x
x y z x y yx yz
z y x xz xy
4 4 3
3
0 3 3
4
3
4
3
0 4 4
0 0
0 5 5
2 2
2
+ = +

+
= = + =
+ =
|
|
.
|

\
|
+
+ +
=
|
|
.
|

\
|
+
+ = + = +
=
= + + =

1. S se calculeze B A+ n cazurile:
1)
|
|
.
|

\
|
=
4 0
3 1
A ,
|
|
.
|

\
|

=
3 5
4 2
B .
|
|
.
|

\
|

= +
|
|
.
|

\
|
+ +
+ +
= +
1 5
1 3
) 3 ( 4 ) 5 ( 0
4 3 2 1
B A B A
2)
|
|
.
|

\
|

+
=
i i
i i i
A
1 0
3 1
,
|
|
.
|

\
|
+
+
=
i i i
i i
B
1
1 2 3 1
|
|
.
|

\
| +
= +
|
|
.
|

\
|
+ + + +
+ + + + +
= +
0 0
1 3 2 2
) ( 1 1 0
1 3 2 ) 3 1 ( 1
i
i i
B A
i i i i i
i i i i i
B A
2. Se consider matricile
|
|
|
.
|

\
|


=
1 12 10 2
5 2 1 4
2 2 2
m
m
A ,
|
|
|
.
|

\
|



=
0 6 5 1
3 6 0 4
1 1 m n
B ,
|
|
|
.
|

\
|



=
1 6 5
2 1 0
1 1 4 1
p
m C .
S se determine m, n, p astfel nct C B A = + .

= =
= +
= = = +
= = +
1 1 2
6 2
2 4 2 4
3 1 2
p p
m m
m m m m
n n
.
Deci

=
=
=
1
2
3
p
m
n
1. Se consider matricile ) ( ,
3 , 2
C B A e .
|
|
.
|

\
|
=
i
i
A
3 2 0
1 1
,
|
|
.
|

\
|
+

=
1 1
0 1
i i
i
B .
S se calculeze: iB A 2 3 , B iA 2 + .
|
|
.
|

\
|
+

=
|
|
.
|

\
|


+
|
|
.
|

\
|
=
|
|
.
|

\
|
+

|
|
.
|

\
|
=
2 7 8 2
3 1
2 2 2 2
0 2 2
9 6 0
3 3 3
1 1
0 1
2
3 2 0
1 1
3 2 3
i i
i
i i
i
i
i
i i
i
i
i
i
iB A
|
|
.
|

\
|


=
|
|
.
|

\
|
+

+
|
|
.
|

\
|


=
|
|
.
|

\
|
+

+
|
|
.
|

\
|
= +
1 2 4 2
1
2 2 2 2
0 2 2
3 2 0
1
1 1
0 1
2
3 2 0
1 1
2
i i
i i
i i
i
i
i i
i i
i
i
i
i B iA
1. Calculai produsele de matrici B A , unde
a)
|
|
.
|

\
|
=
1 0 3
1 1 2
A i
|
|
|
.
|

\
|
=
0 1
1 2
1 3
B
|
|
.
|

\
|
=
|
|
.
|

\
|
+ + + +
+ + + +
=
3 10
3 9
0 0 3 1 0 9
0 1 2 1 2 6
AB
b)
|
|
|
.
|

\
|
=
3
1
2
A
i , 3 2 1 = B
|
|
|
.
|

\
|
=
9 6 3
3 2 1
6 4 2
AB
c)
|
|
.
|

\
|

=
0 2
1
i
i
A i
|
|
.
|

\
|
=
1 0
3i i
B
,
|
|
.
|

\
|

=
|
|
.
|

\
|
+ +
+ +
=
6 2
2
1 0 3 2 0 0 2
1 1 3 0 1 i i
i i i i
i i i i
AB
d)
|
|
|
.
|

\
|


=
7 2 5
6 4 3
1 2 4
A i
|
|
|
.
|

\
|
=
5
4
2
B
|
|
|
.
|

\
|

=
33
52
5
AB
e)
|
|
|
.
|

\
|
=
5 3 5
6 1 5
9 4 3
A
i
|
|
|
.
|

\
|

=
3 5 4
7 9 8
4 6 5
B
|
|
|
.
|

\
|
=
26 32 29
17 27 22
13 9 11
AB
2. S se calculeze , A f , dac:
|
|
.
|

\
|
=
1 2
1 1
A ;
2
2
7 5 ) ( I X X X f + =
|
|
.
|

\
|


=
|
|
.
|

\
|

|
|
.
|

\
|
= =
1 4
2 1
1 2
1 1
1 2
1 1
2
A A A
|
|
.
|

\
|

=
=
|
|
.
|

\
|
+
|
|
.
|

\
|

=
=
|
|
.
|

\
|
+
|
|
.
|

\
|

+
|
|
.
|

\
|


=
=
|
|
.
|

\
|
+
|
|
.
|

\
|

|
|
.
|

\
|


=
1 6
3 1
7 0
0 7
6 6
3 6
7 0
0 7
5 10
5 5
1 4
2 1
1 0
0 1
7
1 2
1 1
5
1 4
2 1
) ( A f
3. Fie
|
|
.
|

\
|
=
1 0
1 1
A . S se calculeze
n
A ,
*
N n e .
|
|
.
|

\
|
=
|
|
.
|

\
|

|
|
.
|

\
|
= =
1 0
2 1
1 0
1 1
1 0
1 1
2
A A A
|
|
.
|

\
|
=
|
|
.
|

\
|

|
|
.
|

\
|
= =
1 0
3 1
1 0
1 1
1 0
2 1
2 3
A A A
|
|
.
|

\
|
=
1 0
1 n
A
n

Inducie matematic ) 1 ( ) ( + k P k P
|
|
.
|

\
| +
=
+
1 0
1 1
1
n
A
n
|
|
.
|

\
| +
=
|
|
.
|

\
|

|
|
.
|

\
|
= =
+
1 0
1 1
1 0
1 1
1 0
1
1
n n
A A A
n n
(A)
Deci
|
|
.
|

\
|
=
1 0
1 n
A
n
.
2.
1. S se determine matricea X din ecuaia
|
|
|
.
|

\
|

+
|
|
|
.
|

\
|

=
|
|
|
.
|

\
|


+
0 3
3 9
6 3
6 2
4 7
3 1
2
3 2
2 1
3 2
3X
|
|
|
.
|

\
|

|
|
|
.
|

\
|

+
|
|
|
.
|

\
|

=
3 2
2 1
3 2
0 3
3 9
6 3
12 4
8 14
6 2
3X
|
|
|
.
|

\
|

+
|
|
|
.
|

\
|

=
3 2
2 1
3 2
12 1
11 5
12 1
3X
|
|
|
.
|

\
|

=
15 3
9 6
15 3
3X
|
|
|
.
|

\
|

=
5 1
3 2
5 1
X
2. a) Gsii matricea X ) (
2
R e astfel nct
|
|
.
|

\
|
=
|
|
.
|

\
|

+
|
|
.
|

\
|
1 3
2 1
3 3
1 2
1 0
2 1
X
b) S se determine m R e astfel nct sistemul urmtor s fie compatibil i apoi
rezolvai-l:

= +
=
= +
m y x
y x
y x
3
1 2
1
a)
|
|
.
|

\
|
=
|
|
.
|

\
|

+
|
|
.
|

\
|
1 3
2 1
3 3
1 2
1 0
2 1
X

|
|
.
|

\
|


+
|
|
.
|

\
|
=
|
|
.
|

\
|

|
|
.
|

\
|

|
|
.
|

\
|
=
|
|
.
|

\
|

3 3
1 2
1 3
2 1
1 0
2 1
3 3
1 2
1 3
2 1
1 0
2 1
X X

|
|
.
|

\
|
=
|
|
.
|

\
|
+
+

|
|
.
|

\
|
=
|
|
.
|

\
|
+ +
+ +

|
|
.
|

\
|
=
|
|
.
|

\
|
=
|
|
.
|

\
|

4 0
1 3
2 2
2
4 0
1 3
1 2 0 2
1 2 0 1
4 0
1 3
1 0
2 1
t z z
y x x
t z t z
y x y x
t z
y x
X
X

= = +
= = + = +
= =
=

4 4 2
5 1 6 1 2
0 0 2
3
t t z
y y y x
z z
x
Deci
|
|
.
|

\
|
=
4 0
5 3
X .
b)

= +
=
= +
m y x
y x
y x
3
1 2
1
y x y x = = + 1 1
3
2
2 3 1 2 1 1 2 = = = = y y y y y x
3
1
3
2
1 1 = = = x y x
3
5
3
2
1
3
2
3
1
3 3 = + = = + = + m m m m y x
3. a) Fie matricea A ) (
2
R e ;
|
|
.
|

\
|
=
1 0
1 a
A , 0 = a . S se calculeze
2
A i
3
A i
apoi s se determine
n
A ,
*
N n e n funcie de n.
b) S se afle , , , , v u y x numere reale astfel nct
|
|
.
|

\
|
=
|
|
.
|

\
|
|
|
.
|

\
|
1 1
0 1
1 0
1 1
v u
y x
a)
|
|
.
|

\
|
=
|
|
.
|

\
|
+ +
+ +
=
|
|
.
|

\
|

|
|
.
|

\
|
= =
1 0
2 1
0 1 1 1 0 1 0
1 1 0 1 1
1 0
1
1 0
1
2
a
a
a a a a a
A A A
|
|
.
|

\
|
=
|
|
.
|

\
|
+ +
+ +
=
|
|
.
|

\
|

|
|
.
|

\
|
= =
1 0
3 1
0 1 1 1 0 1 0
1 2 1 0 2 1 1
1 0
1
1 0
2 1
2 3
a
a
a a a a a
A A A
|
|
.
|

\
|
=
1 0
1 na
A
n

Inducie matematic ) 1 ( ) ( + k P k P
|
|
.
|

\
| +
=
+
1 0
) 1 ( 1
1
a n
A
n
|
|
.
|

\
| +
=
|
|
.
|

\
|
+ +
+ +
=
|
|
.
|

\
|

|
|
.
|

\
|
= =
+
1 0
) 1 ( 1
0 1 1 1 0 1 0
1 1 0 1 1
1 0
1
1 0
1
1
a n
a
na a na a na
A A A
n n
(A)
Deci
|
|
.
|

\
|
=
1 0
1 na
A
n
.
b)

=
=
= = +
= = +

|
|
.
|

\
|
=
|
|
.
|

\
| + +

|
|
.
|

\
|
=
|
|
.
|

\
|
|
|
.
|

\
|
1
1
1 0
0 1
1 1
0 1
1 1
0 1
1 0
1 1
v
u
y v y
x u x
v u
v y u x
v u
y x
Deci
|
|
.
|

\
|
=
|
|
.
|

\
|
1 1
1 0
v u
y x
.
4. a) S se determine , , , , v u y x astfel nct:
|
|
.
|

\
|

=
|
|
.
|

\
|

|
|
.
|

\
|
+

2 8
1 3
2 1 3 1 u v
x y
v u
y x
b) S se detrmine matricea A astfel nct:
.
4 21 4
2 5 1
15 1 12
11 1 7
3 12 6
5 10 4
2
|
|
.
|

\
|
+
|
|
.
|

\
|
=
|
|
.
|

\
|

+ A
a)
|
|
.
|

\
|

=
|
|
.
|

\
|


+
|
|
.
|

\
|
+

|
|
.
|

\
|

=
|
|
.
|

\
|

|
|
.
|

\
|
+

2 8
1 3
1 2 3 1 2 8
1 3
2 1 3 1 u v
x y
v u
y x
u v
x y
v u
y x

= +
= +
=
= + = +

|
|
.
|

\
|

=
|
|
.
|

\
|
+ +

2 1 2
8 1 3
1
3 3 ) (
2 8
1 3
1 2 3 1
v u
v u
x y
y x y x
u v v u
x y y x

=
=

=
=

= +
=

=
=

1
2
3
4 2
1 3
3
1
3
x
y
y x
y
y y
y x
x y
y x

=
=

= = +
=

= +
= +

0
3
21 7 3 ) 9 3 ( 2
9 3
2 1 2
8 1 3
u
v
v v v
v u
v u
v u
b)
|
|
.
|

\
|
+
|
|
.
|

\
|
=
|
|
.
|

\
|

+
4 21 4
2 5 1
15 1 12
11 1 7
3 12 6
5 10 4
2A

|
|
.
|

\
|


+
|
|
.
|

\
|
=
|
|
.
|

\
|

|
|
.
|

\
|
=
3 12 6
5 10 4
19 22 16
13 4 8
2
3 12 6
5 10 4
19 22 16
13 4 8
2 A A
|
|
.
|

\
|
=
|
|
.
|

\
|
=
11 5 5
9 3 2
22 10 10
8 1 6 4
2 A A .
Calulati inversa matricilor:
a)A=

\
|
3
1
|
|
.
|
4
2
detA = -2 0 =
A
*
=
|
|
.
|

\
|


1 3
2 4
Deci A
1
=
|
|
.
|

\
|

=
|
|
.
|

\
|


=
2 / 1 2 / 3
1 2
1 3
2 4
2
1
det
1
*
A
A
b)
B= 0 2
6 5
4 3
det
6 5
4 3
= = =
|
|
.
|

\
|
B
B
|
|
.
|

\
|

=
|
|
.
|

\
|

= =

2 / 3 2 / 5
2 3
3 5
4 6
2
1
det
1
* 1
B
B
c)
|
|
|
.
|

\
|
=
6 3 1
3 2 1
1 1 1
A
det A= 0 1
6 3 1
3 2 1
1 1 1
= =
A
|
|
|
.
|

\
|
=
33 23 13
32 22 12
31 21 11
*
A A A
A A A
A A A
A =
11
3 3
12
= A 1
13
= A 3
21
= A 5
22
= A
2 23 =
A 1
31
= A 2
32
= A 1
33
= A
Deci A
|
|
|
.
|

\
|



=
1 2 1
2 5 3
1 3 3
*
Deci
|
|
|
.
|

\
|



= =

1 2 1
2 5 3
1 3 1
det
1
* 1
A
A
A
3.
|
|
|
|
|
.
|

\
|



=
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
A det 0 16
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
= =
|
|
|
|
|
.
|

\
|



= A
|
|
|
|
|
.
|

\
|
=
44 34 24 14
43 33 23 13
42 32 22 12
41 31 21 11
*
A A A A
A A A A
A A A A
A A A A
A , 4
1 1 1
1 1 1
1 1 1
1
1 1
11
=



=
+
A
, 4
1 1 1
1 1 1
1 1 1
1
1 2
21
=

=
+
A
, 4
1 1 1
1 1 1
1 1 1
1
1 3
31
=

=
+
A
S.A.M.D
|
|
|
|
|
.
|

\
|




=
4 4 4 4
4 4 4 4
4 4 4 4
4 4 4 4
*
A
Deci
|
|
|
|
|
.
|

\
|



=
|
|
|
|
|
.
|

\
|



= =

1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
4
1
4 4 4 4
4 4 4 4
4 4 4 4
4 4 4 4
16
1
det
1
* 1
A
A
A
Ecuatii matriceale:
Sa se rezolve ecuatile :
a)
|
|
.
|

\
|
=
|
|
.
|

\
|
8 6
6 5
3 2
1 2
X
Fie a inversabil A A = = =
|
|
.
|

\
|
= 0 4
3 2
1 2
det
3 2
1 2
|
|
|
|
.
|

\
|

=
|
|
.
|

\
|

2
1
2
1
4
1
4
3
2 2
1 3
4
1
1
A Inmultind la stanga ambii memebi ai ec cu
1
A , obtinem
|
|
|
|
.
|

\
|
=
|
|
.
|

\
|
|
|
|
|
.
|

\
|

=
|
|
.
|

\
|
|
|
.
|

\
|
=

1
2
1
2
5
4
9
8 6
6 5
2
1
2
1
4
1
4
3
8 6
6 5
3 2
1 2
1
X
b)
|
|
.
|

\
|

=
|
|
.
|

\
|
5 3
2 7
8 5
2 1
X
Fie iversabila B B = =

=
|
|
.
|

\
|
= 0 2
8 5
2 1
det
8 5
2 1
|
|
.
|

\
|

=
|
|
.
|

\
|

=

2
1
2
5
1 4
1 5
2 8
2
1
1
B Inmultind la dreapta ambii memebri ai ec cu
1
B obtinem :
|
|
.
|

\
|

=
|
|
.
|

\
|

|
|
.
|

\
|

=
|
|
.
|

\
|
|
|
.
|

\
|

=

2
11
4
49
6 23
2
1
2
5
1 4
5 3
2 7
8 5
2 1
5 3
2 7
1
X
c)
|
|
|
.
|

\
|

=
|
|
|
.
|

\
|
5 4 3
1 1 2
3 5 1
1 2 1
2 1 0
3 2 1
X
Fie a inversabil A A = =

=
|
|
|
.
|

\
|

= 0 4
1 2 1
2 1 0
3 2 1
det
1 2 1
2 1 0
3 2 1
|
|
|
.
|

\
|

` 4 1
2 4 2
1 4 3
4
1
1
A Inmultind la dreapta ambii mambri ai ec cu
1
A obtinem :
|
|
|
.
|

\
|

|
|
|
.
|

\
|

=
1 4 1
2 4 2
1 4 3
5 4 3
1 1 2
3 5 1
4
1
X
|
|
|
|
.
|

\
|

=
|
|
|
.
|

\
|



=
4 6 1
4
1
4
4
9
2 1 1
16 24 4
1 16 9
8 4 4
4
1
STRUCTURI DE DATE
1. Se considera lista circulara simplu inlantuita ce contine celulele cu numerele 1, 2, 3, 4 (in
aceasta ordine). Fiecare element memoreaza in campul INF un numar intreg, iar in campul
ADR adresa elementului urmator din lista.Variabila START indica nodul ce contine numarul 1.
Definim prin trecere prelucrarea realizata prin secventa urmatoare:
p = START;
do {
if (p->INF > START->INF) p->INF = p->INF -1;
p = p -> ADR;
} while (p != START);
Cate treceri sunt necesare pentru ca toate elementele din lista sa ajunga egale?
R: 3
2. Fie A un arbore oarecare. Denim nivelul unui nod recursin astfel:
- Nivelul nodului rdcin este 1:
- Nivelul oricrui nod diferit de nodul rdcin este cu unu mai mare decat nivelul tatalui
su. Notm cu n(x) nivelul nodului etichetat prin x. nalimea arborelui este maximum dintre
nivelele nodurilor terminale. Notrn cu h(A) inlimea arborelui A.
Fie arborele:
i S = n(5)+n(10)+h(A). Atunci S =
R: 11
3. Intr-o lista simplu inlantuita, alocata dinamic, fiecare element retine in campul URM adresa
urmatorului nod din lista, iar in campul NR un numar intreg. Adresa primului element al listei
este memorata in variabila START. Se stie ca lista are cel putin 3 noduri. Care dintre
urmatoarele secvente de instructiuni elimina corect penultimul element al listei?
R: {
p = START;
while (p->URM->URM->URM) p = p->URM;
p->URM=p->URM->URM;
}
STRUCTURI DE DATE
4. Se considera o coada in care initial au fost introduse, in aceasta ordine, elementele care
stocheaza numerele 150 si 201. Daca se noteaza cu INS(x) operatia prin care se adauga un
element cu informatia x in coada, si cu REM() operatia prin care se elimina un element din
coada, sa se precizeze rezultatul executarii secventei urmatoare:
{
REM(); INS(314) ;
REM(); INS(437) ;
INS(521) ;
}
R: 314, 437, 521
5. Intr-o lista circulara simplu inlantuita, U este adresa unui nod din lista si campul LEG
memoreaza pentru fiecare nod adresa nodului urmator din lista. Pentru a numara elementele
listei se utilizeaza secventa (variabila V este de acelasi tip cu variabila U):
R: V = U;
k = 1;
while (V -> next != U) {
k++;
V = V -> next;
}
6. Explorarea unui arbore oarecare in lime utilizeaz o structur de date de tip :
R: FIFO
7. In lista circulara simplu inlantuita ce contine numerele 1, 2, 3, 2, 3 in aceasta ordine, iar U
este adresa nodului ce contine primul numar 2 (fiecare nod are un camp INF ce contine un
numar intreg si un camp ADR care indica adresa elementului urmator in lista). Prin executarea
secventei
while (U -> INF > 0) {
U -> INF = U -> INF -1;
U = U -> ADR;
}
continutul listei, citit de la adresa de start va fi:
R: 0, 1, 0, 1, 0
8. Se considera o stiva in care initial au fost introduse, in aceasta ordine, valorile 101 si 253.
Daca se noteaza cu PUSH(x). operatia prin care se insereaza valoarea x in varful stivei si POP()
operatia prin care se extrage elementul din varful stivei, care este continutul stivei in urma
secventei de apeluri:
{
POP(); PUSH(312);
POP(); PUSH(435);
PUSH(537); }
R: 537
435
101
STRUCTURI DE DATE
9. Intr-o lista liniara simplu inlantuita, fiecare element retine in campul LEG adresa
urmatorului nod din lista, iar in campul INF un numar intreg. Adresa primului element al listei
este retinuta in variabila U. Daca in lista sunt memorate, in aceasta ordine, numerele: 52, 97, 31,
si 56 (56 fiind ultimul element), in urma executarii secventei de instructiuni (U indica, initial,
nodul cu numarul 52:
{
V = U -> LEG -> LEG;
U->LEG -> LEG = V -> LEG;
V->LEG = U -> urm;
U -> LEG = V;
}
in lista vor fi in ordine numerele:
R: 52, 31, 97, 56
10. Intr-o lista liniara, simplu inlantuita, alocata dinamic, fiecare element retine in campul
LEG adresa urmatorului nod din lista, iar in campul NR in numar intreg. Adresa primului
element al listei este memorata in variabila START. Lista contine cel putin 3 noduri. Care este
efectul executarii urmatoarei secvente de program
{
U = START;
V = U->LEG -> LEG ;
while ( V-> LEG ) {
U = U->LEG ;
V = V-> LEG ;
}
U -> LEG = V;
}
R: Eliminarea penultimei celule
11. Se consider o stiv implementat prin intermediul tabloului unidimensional A cu
elementele
A [ 0] = 0,
A [ 1] = 10,
A [ 2 ] = 20,
A [ 3 ] = 30,
A [ 4 ] = 40,
A [ 5 ] = 50.
Dac cel de-al doilea element
:
incepnd de la baza stivei este 10 atunci primul element care
iese din stiv este:
R: a[5]
12. Se considera ca variabilele U si V memoreaza adresa primului, respectiv ultimului element
al unei liste liniare nevide dublu inlantuite. Elementele listei retin in campul NXT adresa
elementului urmator, iar in campul BCK adresa elementului anterior. Stabiliti care este numarul
de noduri din lista daca
STRUCTURI DE DATE
U -> NXT -> NXT
si
V -> BCK -> BCK
indica acelasi nod al listei.
R: 5
13. Fiecare element al unei liste liniare simplu inlantuite alocata dinamic retine in campul
LEG adresa elementului urmator din lista. Daca U retine adresa primului element, iar lista are
cel putin doua elemente, care dintre urmatoarele secvente de instructiuni realizeaza stergerea
celui de-al doilea element al listei?
R: V = U->adru;
U->LEG = V -> LEG;
free(V);
14. Intr-o lista dublu inlantuita care incepe cu elementul memorat la adresa U si contine cel
putin 4 elemente, fiecare element retine in campul FWD adresa elementului urmator, in campul
BCK adresa elementului precedent, iar in campul NR o valoare intreaga. Care dintre
urmatoarele variante tipareste valoarea celui de-al treilea element al listei?
R: printf (%d , U->FWD -> FWD -> FWD -> BCK -> NR);
15. Fie secvena de cod
#inc1ude<stdio.h>
struct node{
int data;
struct node *right, *1eft;
} *root, *p, *q;
void h (struct node *r){
if(r!=NULL) {
h (r->1eft);
h (r->right);
printf ("\ t %d" , r->data);
}
}
Funcia h implementeaz o metod pentru:
R: Explorarea in postordine a arborelui cu radacina r
16. Fie arborele binar:
STRUCTURI DE DATE
Prin explorarea n postordine a arborelui se obine urmtoarea list de numere
R: 21, 26, 32, 25, 52, 41, 83, 95, 92, 91, 76, 38
17. Se consider arborele binar:
i secvena: Aceasta reprezint rezultatul
parcurgerii arborelui:
R: in preordine
18. Intr-o lista simplu inlantuita, cu cel putin 4 celule, fiecare celula retine in campul LEG
adresa urmatoarei celule din lista. Daca U, V si W sunt adresele a trei celule din lista astfel
incat:
U -> LEG == V -> LEG -> LEG
si
W->LEG == V,
atunci ordinea logica a celulelor in lista (celulele fiind identificate prin adrese) este:
R: W, V, U
19. Se considera o lista circulara cu 8 elemente numerotate cu 1, 2, 3, 4, 5, 6, 7, 8. Mai intai se
elimina elementul numerotat cu 3, apoi se elimina fiecare al treilea element din lista, numararea
continuandu-se cu succesorul elementului eliminat, pana cand lista va mai contine un singur
element. Care va fi numarul de ordine al elementului ramas?
R: 7
STRUCTURI DE DATE
20. Se consider arborele:
Care este numrul care apare n mijlocul irului rezultat prin explorarea n preordine a
acestui arbore?
R: 44
21. Intr-o lista circulara simplu inlantuita alocata dinamic cu cel putin un element, fiecare
element retine in campul INF un numar intreg si in campul ADR adresa urmatorului element
din lista. Stiind ca variabila U retine adresa unui element din lista si variabila V este de acelasi
tip cu U, stabiliti care dintre urmatoarele secvente afiseaza toate valorile memorate in nodurile
listei, fiecare valoare fiind afisata exact odata.
R: V = U;
do{
printf(%d , V -> INF;}
V = V->ADR;
} while(V != U);
22. Se consider arborele oarecare:
Prin explorarea n adncime. cu vizitarea nti a descendenilor i apoi a rdcinii, se obine
secvena:
R: K, B, H, I, J, C, E, G, F, D, A
Cuadric
Cuadrice nedegenerate.
Elipsoid
[5]
Sferoid (caz particular al
elipsoidului)
Sfer (caz particular al
sferoidului)
Paraboloid eliptic
[6]
Paraboloid de rotaie (caz particular
al paraboloidului eliptic)
Paraboloid hiperbolic
[7]
Hiperboloid cu o pnz
[5]
Hiperboloid cu dou pnze
[6]
Cuadrice nedegenerate.
Con
[7]
Con de rotaie (caz particular al
conului)
Cilindru eliptic
[8]
Cilindru de rotaie (caz particular al
cilindrului eliptic)
Cilindru hiperbolic
[8]
Cilindru parabolic
[9]
Fie A o matrice cu 20 de linii si 10 coloane, stocata intr-un vector obtinut prin
linearizarea linie a acesteia. In cadrul acestui vector, rangul elementului A(13, 7) este:
Answer
Selected Answer: 126
0 1 2 3 4 5 6 7 8 9
10
20
30
40
50
60
70
80
90
100
110
120 121 122 123 124 125 126
130
140
150
160
170
180
190
Fie A o matrice cu 10 linii si 20 de coloane. In cadrul vectorului obtinut prin
linearizarea coloana a matricii, elementul A(7, 8) are rangul:
Answer
Selected Answer: 76
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
20
40
60
80
100
120
140
160
180
Fie A o matrice superior triunghiulara cu 10 linii si 10 coloane. Numarul de elemente
ale vectorului obtinut prin linearizarea coloana a matricii, intr-o stocare optimala a
acesteia, este:
Answer: gresit - 100
0 1 2 3 4 5 6 7 8 9
10
20
30
40
50
60
70
80
90
ALGEBRA VECTORIALA
1.
Fie punctele A(2,4,1),B(3,7,5,)si C (4,10,9).Sa se calculeze X .
=0
2.
Fie punctele A(1,-1,2),B(5,-6,2,)si C (1,3-1). =15i+12j+16k
3.
Determinati scalarii , R astfel incat punctele
A(2,,1),B(3,5,7),C(,10,9) sa fie coliniare
==4,=1
4.
Fie punctele A(1,2,-1,),B(0,1,5,), C (1,3-1) si D(2,1,3)Sa se calculeze
produsul mixt, , .
=0 sunt coplanare
5.
Fie punctele A(2,3,1,),B(4,1,-2,), C (6,3,7), D(-5,-4,8)Sa se calculeze
produsul mixt, , .
=308
6.
Fie punctele A(2,3,1),B(4,1,-2), C (6,3,7).Sa se calculeze distanta de la
XC la AB, notata d(C,AB).
=
7.
Fie punctele A(2,3,1,),B(4,1,-2,), C (6,3,7), D(-5,-4,8)Sa se calculeze
distanta de la C la planul (ABC) notata d(C,(ABC)).
=11
8.
Fie punctele A(1,1,-3),B(2,-1,1), C (3,3,1), D(-1,4,2).Sa se calculeze
produsul mixt, , .
=-16 +4 +6
9.
Fie punctele A(1,1,-3),B(2,-1,1)si C (3,3,1).Sa se calculeze aria
triunghiului ABC
=
10.
Fie punctele A(-1,1,2),B(2,3,-1)si C (1,-2,0).Sa se calculeze aria
triunghiului ABC
=
11.
Fie punctele A(-1,1,2),B(2,3,-1)si C (1,-2,0).Sa se calculeze cosinusul
unghiului A.
=
12.
Fie punctele A(2,-1,1),B(5,5,4)si C (3,2,-1).Sa se calculeze aria
triunghiului ABC
=
13.
Fie punctele A(2,-1,1),B(5,5,4)si C (3,2,-1).
=
14.
Fie punctele A(2,-1,1),B(5,5,4)si C (3,2,-1).Sa se calculeze cosinusul
unghiului A.
=
15.
Fie punctele A(2,-1,1),B(5,5,4)si C (3,2,-1),D(4,1,3)Sa se calculeze
distanta de la D la planul (ABC) .
==
16.
Fie punctele A(1,2,3),B(2,2,2), C (1,2,4).Sa se calculeze modulul
produsului vectorial .
=1
17.
Fie punctele A(1,2,3),B(2,2,2), C (1,2,4). Sa se calculeze aria triunghiului
ABC. =
18.
Fie punctele A(1,2,3),B(2,2,2), C (1,2,4). Sa se calculeze perimetrul
triunghiului ABC.
=
19.
Fie punctele A(-1,2,0),B(3,1,-2), C (0,-3,4). Sa se calculeze aria
triunghiului ABC.
=
20.
Fie punctele A(-1,2,0),B(-3,1,-2), C (0,-3,4). Sa se calculeze perimetrul
triunghiului ABC.
=
21.
Fie punctele A(-1,2,0),B(-3,1,-2), C (0,-3,4). Sa se calculeze modulul
produsului vectorial .
=
22.
Fie punctele A(1,-1,2),B(5,-6,2), C (1,3,-1). Sa se calculeze modulul
produsului vectorial .
=25
23.
Fie vectorii + si +3 ,, .Determinati
, astfel incat vectorii sa fie coliniare.
==1,=3

24.
Fie vectorii -3 si
+ , + ,
3
, unde , sunt
necoplanari.Sa se precizeze care din afirmatiile de mai
jos sunt adevarate:
=pentru ,, numere reale a.i.
+ + =0 ==0
25.
Fie trei vectori V
3
.Notam prin
( )
def
= .Sa se calculeze
v=( )
=v=
26.
Vectorii si formeaza intre ei un unghi de masura
= si au lungimile egale respectiv cu =5 si
I I=8 calculati p= si q= .
=p=
27.
Vectorii si formeaza intre ei un unghi de masura
= si au lungimile egale respectiv cu =5 si
I I=12 calculati p= si q= .
=p=13,q=13
28.
Vectorii si formeaza intre ei un unghi de masura
= si au lungimile egale respectiv cu =3 si
I I=5 calculati p= si q= .
= p=
29.
Fie R a.i. - = .Sa se
calculeze .

==2
30.
Fie R a.i. = .Sa se calculeze
.
= =2
31.
Se dau vectorii si avand lungimile respectiv =13,
=19 si =24.Sa se calculeze .
=22
32.
Se dau vectorii si avand lungimile respectiv =13,
=19 si =22.Sa se calculeze .
=24
33.
Se dau vectorii si avand lungimile respectiv =11,
=23 si =30.Sa se calculeze .
=20
34.
Se dau vectorii si avand lungimile respectiv =13,
=19 si =24.Sa se calculeze .
=22
35.
Fie vectorii -2 , +1 .Sa se calculeze
proiectia vectorului pe axa Ox.
=1
36.
Fie vectorii -2 , +1 .Sa se calculeze
proiectia vectorului pe axa Ox.
=5
37.
Fie vectorii -2 , +1 .Sa se calculeze
proiectia vectorului pe axa yOz.
=8
38.
Fie vectorii -2 , +1 .Sa se calculeze
aria paralelogramului construit pe laturile vectorilor si
.
=
39.
Sa se determine scalarii R pentru care vectorii
+3 si -6 +2 sunt coliniari.
==4,=-1
40.
Sa se determine scalarii R pentru care vectorii
+3 si -6 +2 sunt necoliniari.
= 4,-1
41.
Sa se determine scalarii R pentru care vectorii
+3 si -6 +2 .Atunci:
= R
42.
Sa se determine scalarii ,, R pentru care vectorii
+3 si -6 +2 si c=- sa
fie coplanari.Atunci:
=, ;
43.
Fie vectorii +3 , -6 +2 si c=-
.Sa se determine ,, R astfel incat
vectorii sa fie necoplanari.
= necoplanari
44.
Fie vectorii -2 , + -2 si
c=2 .Sa se descompuna vectorul
dupa directiile vectorilor .
= +
45.
Fie vectorii -2 si + -2 si
c=11 .Sa se descompuna vectorul
dupa directiile vectorilor .
= +
46.
Se da triunghiul ABC in care AB= si AC= si M [BC].Sa
se calculeze AM. =
47.
Se da triunghiul ABC in care AB= si AC= si AD
bisectoarea unghiului A unde D [BC].Sa se calculeze
AD.
=AD=
48.
Se da triunghiul ABC in care AB= si AC= si M [BC] a.i.
alculeze AM.
=(1- )a+k
49.
Se da triunghiul ABC in care AB= si AC= si M [BC] a.i.
alculeze AM.
=
50.
Se da triunghiul ABC in care AB= si AC= si M [BC] a.i.
alculeze AM.
=
51.
Se da triunghiul ABC in care AB= si AC= si M [BC] a.i.
alculeze AM.
=k +(1-k)
52.
Se dau vectorii , si care fac intre ei doi cate doi un
unghi de masura 60.Sa se determine modulul vectorului
= + + stiind ca =4, =2 si =6.
=
53.
Se dau vectorii , si care satisfac
conditia + + =0.Sa se calculeze =
stiind ca =3, =1 si =4.
==
54.
Se dau vectorii , si care satisfac
conditia + + =0.Sa se calculeze =
==
55.
Ce conditie trebuie sa indeplineasca vectorii , si din =vectorii independenti, V
3
R
3
diferiti de vectorul pentru ca sa existe egalitatea
( )= .
56.
Fie vectorii si necoliniari.Sa se stabileasca pozitia
vectorului = - fata de vectorii si .
=coliniar cu
57.
Fie vectorii , si necoplanari. Sa se stabileasca
pozitia vectorului = ( )- ( ) fata de vectorii
si .
=se vor intersecta
58.
Fie vectorii -2 , -3 +2 si
c=6 .Sa se determine proiectia vectorului pe
dreapta suport a vectorului .
=
59.
Fie punctele A(1,1,0),B(1,0,1)si C (0,1,1),D(1,1,1)Sa se
calculeze distanta h de la punctul D la planul (ABC)
utilizand doar operatiile cu vectori .
=
60.
Fie punctele A(1,0,0),B(0,1,0)si C (0,0,1),D(1,1,1)Sa se
calculeze distanta h de la punctul D la planul (ABC)
utilizand doar operatiile cu vectori .
=2
61.
Sa se determine sinusul unghiului format de vectorii
-4 si +6 . =sinx=
62.
Sa se determine parametrul real pentru care vectorii
sunt perpendiculari. -3 si .
=-6
63.
Sa se determine parametri reali si pentru care
==;=
vectorii sunt perpendiculari. -3 si
.
64.
Sa se gaseasca un vector coliniar cu vectorul
astfel incat =3
=x=
65.
Se dau vectorii - si -3 .
Determinati vectorul stiind ca este ortogonal pe axa
Oz si verifica relatiile: =9, =-4.
=

66.
Se dau vectorii - , +2 si =3 .
Determinati vectorul stiind ca verifica relatiile: =-5, =-
11, =20
=
67.
Sa se determine proiectia vectorului - pe dreapta de ecuatie x=y=z
=
68.
Sa se determine proiectia vectorului + pe dreapta avand cosinusii
directori ,- .
=0
69.
Sa se determine proiectia vectorului - pe dreapta care face cu axele
Ox,Oz respectiv unghiurile =45,=60 iar cu axa Oy un unghi ascutit.
=
70.
Sa se determine proiectia vectorului + pe dreapta care face cu axele
Ox,Oz respectiv unghiurile =45,=60 iar cu axa Oy un unghi ascutit .
=0
71.
Sa se determine proiectia vectorului terminat de punctele A(3,-4,-2) si
B(2,5,-2) pe dreapta care face cu axele Ox,Oy respectiv unghiurile =60,
=120, iar cu axa Oz un unghi obtuz .
=0
72.
Calculati proiectia vectorului +2 pe dreapta suport a vectorului
+2 .
=6
73.
Se dau vectorii +2 , -5 si =3 .Calculati
( + )

=-4
74.
Se dau vectorii -3 , +2 si =- .Calculati
=5
( )
75.
Se dau punctele A(-2,3,-4),B(3,2,5), C (1,-1,2), D(3,2,-4)Sa se calculeze
proiectia vectorului AB pe directia vectorului CD. =AB=
76.
Se dau vectorii si care formeaza intre ei un unghi de masura = .Sa se
determine stiind ca =6 si =5.
= =15
77.
Se dau =10, =2 si =12.Calculati . = =16
78.
Se dau =3, =26 si =72.Calculati . = =30
79.
Vectorii si sunt ortogonali.Sa se calculeze p= si q=
stiind ca =3 si =4.
=p=24,q=60
80.
Vectorii si formeaza intre ei un unghu de = .alculati numerele
p= si q= , r= stiind ca =1 si =2.
=p=3,q=27,r=300
81.
Fie vectorii si necoliniari a.i. + = .Sa se
calculeze .
=1
82.
Fie vectorii si su p= - .Sa se calculeze p.
=p0
83.
Fie vectorii si a.i. .Sa se stabileasca pozitia vectorului
fata de vectorul .
=ortogonali
84.
Se dau vectorii oarecare , .Sa se demonstreze ca vectorii
= , = sunt coplanari.
=F (necoplanari)
85.
Se dau vectorii oarecare , si care verifica egalitatea + = .Sa se
demonstreze ca = = .
=F
( ) =0
86.
Se dau vectorii oarecare , , si care verifica egalitatea
Sa se verifice daca vectorii si sunt coliniari ,respectiv
coplanari.
=coplanari

87.
Se dau vectorii oarecare , , si care verifica egalitatea
= = Sa se verifice daca vectorii si
sunt coliniari ,respectiv coplanari.
=coliniari
88.
Fie vectorii - si +2 - .Sa se
calculeze= , (,)
=( ) ()
==+ +, +
89.
Se dau punctele A(2,-1,2),B(1,2,-1), C (3,2,1).Calculati
=AB , CB.
==-4
+,
90.
Se dau punctele A(1,2,0),B(3,0,-3), C (5,2,6).Calculati aria triunghiului =14
ABC.
91.
Se dau punctele A(1,-1,2),B(5,-6,2), C (1,3,-1).Calculati lungimea inaltimi
duse din B pe latura BC.
=
92.
Calculati sinusul unghiului format de vectorii - si +3 +6 .
=sin =
93.
Vectorul este ortogonal pe vectorii - si +3 si formeaza cu
axa Oy un unghi obtuz.Determinati coordonatele vectorului stiind ca
I I=26.
= = -24
94.
Un vectorul este ortogonal pe axa Oz si pe vectorul -15
formeaza cu axa Ox un unghi ascutit.Determinati coordonatele vectorului
stiind caI I=51
= = -24
95.
Determinati un vectorul ,perpendicular pe vectorii - si -
2 +3 , care satisface conditia ( )=10
= =
96.
Fie vectorii - , +2 si = .Sa se calculeze
p=( ),q=( )
= =-42, =42
97.
Fie vectorii - , +2 si = .Sa se calculeze
= , =
= =-
=10
98.
Fie un triedru avand ca directii vectorii , ortogonali doi cate
doi.Calculati produsul mixt ( ) stiind ca =4, =2 si =3.
=24
99.
Vectorul este ortogonal pe vectorii care formeaza intre ei un
unghi de masura .Calculati produsul mixt ( ) stiind ca =6, =3
si =3.
=27
100.
Fie trei vectori si ( ) produsul mixt al lor.Notam:
p= - .Sa se stabileasca semnul lui p.
=p0
101.
Fie trei vectori iar, ( ) si ( ) produsul scalar, respectiv
produsul mixt al lor.Sa se calculeze p=( )( ),, R
=p=( )
102.
Fie trei vectori iar + + .Stabiliti ce implica .
=
doua cate doua
103.
Sa se dea o conditie necesara si suficienta ca vectorii sa fie
coplanari.
=sa existe ,,, nu toti nuli a.i.
=
104.
Fie trei vectori arbitrari iar p=( ).Sa se arate ca
p=( )=
=F,p=2
105.
Fie trei vectori - , + si =.Sa se determine
p=( )-
=p=0
106.
Sa se verifice daca punctele A(1,2,-1),B(0,1,5), C (-1,2,1) si D(2,1,3) sunt
coplanare.
=Adevarat
107.
Fie vectorii + , +3 si = .Stabiliti
pozitiile vectorilor .
= - coplanari
108.
Fie vectorii -2 , +2 si =.Stabiliti pozitiile
vectorilor .
= -necomplementari
109.
Fie vectorii - , si =.Stabiliti pozitiile
vectorilor .
= -coplanari
110.
Fie punctele A(2,3,1),B(4,1-2), C (6,3,7),D(-5,-4,8)Sa se calculeze distanta
de la punctul D la planul (ABC) .
=11
111.
Se da tetraedul [ABCD] de volum V=5.Se dau coordonatele varfurilor
A(2,1-1),B(3,0,1),C(2,-1,3).Sa se determine coordonatele punctului D
stiind ca este situat pe axa OZ.
=D
1
(0,8,0);D
2
(0,7,0)
112.
Sa se determine scrierea vectorului 5 - in functie de vectorii
si -
= =3 -2
113.
Sa se determine descompunerea vectorului -
+ dipa directiile vectorilor + ,
+3
= +
114.
Sa se determine descompunerea vectorului + dipa directiile
vectorilor + , +3 si .
= +2 +4

CORECTE
ntrebarea nr. 1



Fie punctele A(1,2,-1), B(0,1,5),C(-1,2,1), D(2,1,3).
Sa se calculeze produsul mixt .
Answer

Selected Answer: b.
=0

ntrebarea nr. 2



Sa se precizeze natura cuadricei

Answer

Selected Answer: b.
hiperbolid cu doua panze


ntrebarea nr. 3


Imaginea aplicatiei , data de matricea este:
Answer

Selected Answer: c.
un subspatiu vectorial de dimensiune 2 generat de vectorii: v=(4,1,11) si u=(1,-2,-4),


ntrebarea nr. 4
10 din 10 puncte


Fie vectorii . Sa se descompuna vectorul
dupa directiile vectorilor .
Answer

Selected Answer: b.



ntrebarea nr. 5


Sa se formeze ecuatia planului ce trece prin punctul si este perpendicular pe planele:
si
Answer

Selected Answer: c.



ntrebarea nr. 6


Sa se scrie ecuatia planului ce contine dreapta

si este perpendiculara vectorul , de extremitati
.
Answer

Selected Answer: b.



ntrebarea nr. 7


Sa se reduca la forma canonica conica

Answer

Selected Answer: c.



ntrebarea nr. 8


Cuadrica de ecuatie

reprezinta
Answer

Selected Answer: b.
un hiperboloid cu o panza


ntrebarea nr. 9
ntrebarea nr. 10


Sa se scrie ecuatiile canonice ale dreptei ce trece prin punctul si este paralela cu dreapta

Answer

Selected Answer: b.


ntrebarea nr. 11


Sa se reduca conica la forma canonica
.
Answer

Selected Answer: c.




ntrebarea nr. 12


In spatiul vectorial consideram urmatoarea baza Scris ca o
combinatie liniara de de vectori din baza B, vectorul are urmatoarea forma:
Answer

Selected Answer: c.



ntrebarea nr. 13


Fie punctele A(2,3,1), B(4,1,-2),C(6,3,7).
Sa se calculeze distanta de la C la AB, notata d(C,AB).
Answer

Selected Answer: c.
d(C,AB)=






ntrebarea nr. 14


Sa se scrie ecuatia planului perpendicular pe planul si taie axele si in punctele
respectiv, .
Answer

Selected Answer: b.



ntrebarea nr. 15


Cuadrica de ecuatie

reprezinta
Answer

Selected Answer: a.
un paraboloid eliptic



ntrebarea nr. 16


Aplicatia liniara , a carei matrice intr-o baza oarecare a lui este reprezinta din
punct de vedere geometric o:
Answer

Selected Answer: c.
PROIECTIE


ntrebarea nr. 17


Sa se formeze ecuatia planului ce trece prin origine si este perpendicular pe planele:
,
Answer

Selected Answer: c.



ntrebarea nr. 18


Sa se reduca la forma canonica conica


Answer

Selected Answer: c.



ntrebarea nr. 19


ntrebarea nr. 20


Fie vectorii . Atunci aria paralelogramului construit pe laturile vectorilor
este
Answer

Selected Answer: c.



ntrebarea nr. 21


Sa se scrie ecuatia planului care trece prin dreapta si este paralel cu dreapta

Answer

Selected Answer: b.
7x+10y-3z-5=0




ntrebarea nr. 22


Aplicatia liniara , a carei matrice intr-o baza oarecare a lui este reprezinta
din punct de vedere geometric o:
Answer

Selected Answer: b.
ROTATIE


ntrebarea nr. 23
ntrebarea nr. 24




ntrebarea nr. 25


Sa se formeze ecuatia planului ce trece prin punctul si are normala data de directia dreaptei:

Answer

Selected Answer: c.



ntrebarea nr. 26


Determinati valorile parametrilor si a.i. planele:
si
sa fie paralele.
Answer
Selected Answer: b.



Intrebarea Nr. 27

Intrebarea Nr. 28

Intrebarea Nr. 29

Intrebarea Nr. 30






Intrebarea Nr. 31

Intrebarea Nr. 32

Intrebarea Nr. 33

Intrebarea Nr. 34

Intrebarea Nr. 35

Intrebarea Nr. 36

INCORECTE

ntrebarea nr. 9


Fie conica


Sa se precizeze natura conicei si sa se reduca la forma canonica
Answer

Selected Answer: a.
Conica nedegenerata de tip hiperbola;
,



ntrebarea nr. 9


Sa se reduca la forma canonica conica


Answer

Selected Answer: b. a.




ntrebarea nr. 2



O baza a subspatiului vectorial definit de submultimea: este formata din
vectorul:
Answer

Selected Answer: a.


ntrebarea nr. 3



Aplicatia liniara , a carei matrice intr-o baza oarecare a lui este reprezinta din punct
de vedere geometric o:
Answer

Selected Answer: c.
SIMETRIE

ntrebarea nr. 4



In spatiul vectorial , pornind de la baza:
gasim urmatoarea baza ortonormata
Answer

Selected Answer: a.



ntrebarea nr. 5



Sa se determine descompunerea vectorului dupa directiile vectorilor
si .
Answer

Selected Answer: d.




ntrebarea nr. 7



Sa se scrie ecuatia planului ce contine dreapta de interesectie a planelor
,
si este perpendiculara pe planul
.
Answer

Selected Answer: c.





ntrebarea nr. 8



Sa se calculeze distanta d de la punctul la planul ce trece prin punctele ,
.
Answer

Selected Answer: a.



ntrebarea nr. 3


Fie aplicatia liniara , a carei matrice intr-o baza oarecare a lui este .Ce reprezinta
din punct de vedere geometric ?
Answer

Selected Answer: c.
un punct




ntrebarea nr. 4


Fie subspatiile vectoriale:
U:=subspatiul vectorial generat de vectorii si
.
O baza a subspatiului vectorial este reprezentata de :
Answer

Selected Answer: c.




ntrebarea nr. 6

Fie punctele A(2,4,1), B(3,7,5) si C(4,10,9).
Sa se calculeze .
Answer
Selected Answer: a.




ntrebarea nr. 2

Fie subspatiile vectoriale:
U:=subspatiul vectorial generat de vectorii si
.
Atunci:
Answer

Selected Answer: a.



ntrebarea nr. 3

Aplicatia liniara , a carei matrice intr-o baza oarecare a lui este reprezinta din
punct de vedere geometric o:
Answer

Selected Answer: a.
SIMETRIE


ntrebarea nr. 4

Aplicatia liniara , a carei matrice intr-o baza oarecare a lui este reprezinta din
punct de vedere geometric o:
Answer

Selected Answer: a.
ROTATIE



ntrebarea nr. 6

Fie punctele A(1,2,3), B(2,2,2),C(1,2,4),
Sa se calculeze modulul produsului vectorial .
Answer

Selected Answer: b.



ntrebarea nr. 7

Sa se determine planul care taie axele de coordonate in punctele in care planele , intersecteaza
respectiv, aceste axe.
Answer

Selected Answer: c.



ntrebarea nr. 10

Cuadrica de ecuatie

reprezinta

Answer
Selected Answer: e.
o cuadrica degenerata


ntrebarea nr. 2


ntrebarea nr. 4


Fie aplicatia liniara , a carei matrice intr-o baza oarecare a lui este .Ce reprezinta
din punct de vedere geometric ?
Answer

Selected Answer: b.
un plan


ntrebarea nr. 5


Fie vectorii coplanari. Atunci:
Answer

Selected Answer: a.
si


ntrebarea nr. 7


Sa se formeze ecuatia planului ce trece prin origine si este paralel cu planul:

Answer

Selected Answer: c.



ntrebarea nr. 2


Aplicatia liniara , a carei matrice intr-o baza oarecare a lui este reprezinta din
punct de vedere geometric o:
Answer

Selected Answer: b.
ROTATIE
c. PROIECTIE AMBELE GRESITE

ntrebarea nr. 4


Fie U si V doua subspatii vectoriale oarecare ale unui spatiu vectorial real
Care din urmatoarele submultimi NU este un subspatiu vectorial:
Answer

Selected Answer: b.



ntrebarea nr. 5


Fie punctele A(1,-1,2), B(5,-6,2) si C(1,3,-1).
Sa se calculeze .
Answer

Selected Answer: d.



ntrebarea nr. 6


Fie vectorii .Atunci vectorii sunt
Answer

Selected Answer: c.
coplanari


ntrebarea nr. 2


Pentru ce valoare a lui vectorii: NU formeaza o baza a spatiului
vectorial :
Answer

Selected Answer: a.




ntrebarea nr. 4


Complementul ortogonal al subspatiului vectorial : este subspatiul
vectorial generat de vectorul:
Answer

Selected Answer: c.
u=(7,8,9)


ntrebarea nr. 2


Fie aplicatia liniara , a carei matrice intr-o baza oarecare a lui este .Ce
reprezinta din punct de vedere geometric ?
Answer

Selected Answer: a.
un plan


ntrebarea nr. 8


Sa se scrie ecuatia planului ce contine dreapta

si este paralela cu dreapta

Answer

Selected Answer: b.



ntrebarea nr. 9


Sa se reduca la forma canonica conica


Answer

Selected Answer: c.



ntrebarea nr. 4


Complementul ortogonal al subspatiului vectorial : este subspatiul
vectorial generat de vectorul:
Answer

Selected Answer: a.
u=(1,2,3)





























































Matrice i aplicaii



1. Proprietile transpusei unei matrice ptratice
a) ( )
t t t
B A B A + = + ;
b) ( )
t t
aA aA = ;
c) ( )
t t t
A B AB = .

2. O matrice ( ) C
n
M A se numete simetric dac n j i a a
ji ij
, 1 , , = = .
O matrice ( ) C
n
M A se numete nilpotent dac i numai dac exist
*
N n , astfel
nct
2
O A
n
= .
O matrice ( ) C
n
M A se numete involutiv dac i numai dac
n
I A =
2
.

3. Dac ( )
|
|

\
|
=
d c
b a
A M A ,
2
C , atunci ( ) bc ad A = det i d a trA + = .
Propoziie:
a) ( ) ( ) ( ) C
2
, , det det det M B A B A AB = ;
b) ( ) ( ) ( )
*
2
, , det det N C = n M A A A
n n
;
c) tr(AB)=tr(BA).
d) ( ) ( ) ( ) B tr A tr B A tr + = +
e) ( ) ( ) A atr aA tr = .

Teorema lui Cayley-Hamilton (cazul n=2). Fie ( ) C
2
M
d c
b a
A
|
|

\
|
= , atunci
( ) ( )
2 2
2
0 det = + I A A TrA A , unde d a TrA + = i bc ad A = det .

I. Ridicarea la putere a unei matrice de ordinul doi

1. ( ) A trA A A
n n 1
0 det

= =
2.
( )
( )

+ =
=
= =
1 2 , det
2 , det
0
2
k n I A
k n A A
A trA
k
k
n

3. 0 , 0 det trA A

Teorem: Dac ( ) C
2
M
d c
b a
A
|
|

\
|
= , atunci pentru orice numr natural
*
N n , exist
dou iruri ( )
1 n n
x i ( )
1 n n
y astfel nct
2
I y A x A
n n
n
+ = .

II. Ecuaii matriciceale binome n ( ) C
2
M

Definiie: Ecuaia matriceal A X
n
= , unde ( ) C
2
M A este o matrice dat se numete
ecuaie matriceal binom .

a) 0 det = A i 0 trA
din( ) ( ) ( )
n n n n
trX trA X trX X X A X = = = = =
1
0 det 0 det det i deci
{ }
n
t t t trX ,..., ,
2 1
, unde
n
t t t ,..., ,
2 1
sunt rdcinile ecuaiei trA z
n
= , de unde obinem c
ecuaia admite n soluii n i A
t
X
n
i
k
, 1 ,
1
1
= =

.
b) 0 det = A i 2 , 0 0 0 0 0
2 2 2
= = = = = n X X X A trA
n n
, deci dac
2
0 A ecuaia nu are soluii, iar dac
2
0 = A ecuaia este 0 =
n
X

Aplicaii
1. Fie matricea ( )
|
|

\
|

=
8 4
5 1
,
2
A M A R . S se calculeze
*
, N n A
n
.

2. S se arate c dac ( ) R
2
M A , atunci exist 3 n astfel nct
2
O A
n
= dac i numai
dac
2
2
O A = .
3. Dac { } 1 \
*
N n s se rezolve ecuaia
|
|

\
|
=
4 2
2 1
n
X .
4. Pentru n natural nenul, s se determine ( ) R
2
M X astfel nct
|
|

\
|
=
1 1
0 1
n
X .
5. Fie matricea
|
|

\
|
=
x x
x x
A
2 2
2 2
cos sin
sin cos
. S se calculeze
n
A .
6. Fie 3 , n n N . S se rezolve ecuaia
|
|

\
|


= +

1 1
1 1
2 n n
X X .
7. Fie 0 , , , , , +
|
|

\
|
= d a d c b a
d c
b a
A R . S se arate c ( ) R
2
M B comut cu A dac
i numai dac B comut cu
2
A .

8. Fie matricea
|
|

\
|

=
a b
b a
A de numere reale astfel nct 1
2 2
< + b a . S se arate c
|
|

\
|

=
n n
n n n
a b
b a
A , cu ( ) ( )
1 1
,
n n n n
b a sunt convergente cu limita egal cu 0.


9. Se d matricea ( ) R
2
M
a b
b a
A
|
|

\
|

= . S se arate c urmtoarele afirmaii sunt


echivalente:
a) Exist
*
N n astfel nct
2
I A
n
= .
b) Exist
*
Q q astfel nct q a cos = i q b sin = .

10. Dac ( ) BA AB M B A = , ,
2
R , atunci ( ) 0 det
2 2
+ B A .

11. S se arate c funcia ( ) ( ) ( )
2
2
2 2
, : cI bX aX X f M M f + + = R R , unde 0 > a
i 0 4
2
< ac b , nu este surjectiv.

12. S se arate c funcia ( ) ( ) ( )
3
2 2
, : X X f M M f = R R nu este surjectiv.

13. S se arate c ecuaia
2 2
3
O I x x = + + nu are soluii n ( ) Z
2
M .

14. Fie matricele ( ) C
2
, M B A i 2 n astfel nct BA AB i ( ) ( )
n n
BA AB = . S se
arate c ( )
2
aI AB
n
= , cu C a .
15. S se rezolve n ( ) R
2
M ecuaia
|
|

\
|
= +
10 5
20 10
5 4
2 3
X X X .

16. Fie ( ) C
2
, M B A i
*
N n fixat cu proprietatea c
n n n n
A B B A = . S se
demonstreze c ( )( ) 0 =
q n n q n p p n
A B B A A B B A oricare ar fi
*
, N q p .

17. S se determine Z a tiind c ecuaia
|
|

\
|
=
a
X
7 3
3 1
2
are exact dou soluii n
( ) C
2
M .

18. Fie ( ) R
2
, M B A i [ ] BA AB B A = , . S se arate c oricare ar fi
( ) R
2
, , , M D C B A , matricea [ ]
2
2
, I B A = i c [ ][ ] [ ][ ] B A D C D C B A , , , , + comut cu
orice matrice din ( ) R
2
M

19. S se determine toate matricele ( ) R
2
M A , cu ( ) X A X A det det det + = + , oricare ar
fi ( ) R
2
M X .

20. S se rezolve n ( ) Z
2
M ecuaia ( ) X X
t
2
2
= .

21. Fie ( ) C
2
, M B A i
*
N k . Decidei cu justificare dac urmtoarea afirmaie este
adevrat:
( ) ( )
2 2
0 0 = =
k k
BA AB .
22. Fie ( ) C
2
, M B A i 2 k un numr natural .
a) S se arate c dac ( )
2
O AB
k
= , atunci ( )
2
O BA
k
= .
b) S se arate c dac ( )
2
I AB
k
= , atunci ( )
2
I BA
k
= .
c) Dac BA AB , s se afle toate matricele ( ) C M C cu proprietatea c
( ) C AB
k
= implic ( )
2
I BA
k
= .

23. Fie ( ) R
2
, M B A astfel nct A BA AB = . S se arate c
2
2
O A = .

24. S se determine toate matricele ( ) R
2
M
d c
b a
A
|
|

\
|
= , astfel nct
( ) 1 ,
|
|

\
|
= n
d c
b a
A
n n
n n
n
.









GRESIT X c. SELECT depozit, categorie culoare
SUM (pret_unitar*stoc_curent)
FROM produs
GROUP BY ROLLUP (depozit, categorie), (depozit, categorie));

GRESIT x b. SELECT functia, count(*)
FROM angajati
WHERE MIN (salariu)>4000 AND MAX (salariu)<20000
GROUP BY functie;





Gresit X c. valoarea totala a tuturor facturilor emise la o data egala cu data sistemului.
GRESIT X d. valoarea totala a fiecarui facturi emise la data egala cu data curenta



GRESIT X d. numarul de autori de nationalitate Romana din tabelul "autor"

GRESIT b. SELECT denumire
FROM produs
WHERE stoc_initial IN (SELECT SUM(cantitate)
FROM vind GROUP BY id_produs);

GRESIT X c. SELECT nume, id_produs, denumire
FROM vanzator, vinde, produs
WHERE vinde.id_vanzator=vanzator.id_vanzator
AND vinde.id_produs=produs.id_produs;





GRESIT x c. SELECT denumire
FROM album
WHERE numar_exemplare>1000
UNION
SELECT denumire
FROM album a, inclusa i
WHERE a.id_album=i.id_album
GROUP BY denumire
HAVING COUNT(*)>=10;




ntrebarea nr. 7
6 din 6 puncte


Se dau urmatoarele doua tabele:
CLIENTI(id_client#, nume, prenume, id_adresa)
ADRESE(id_adresa#, strada, numar, bloc, apartament, judet, localitate, tara)
Alegeti comanda care nu obtine numele, prenumele si adresa pentru fiecare client.
Answer

Selected Answer: b.
SELECT nume, prenume, strada, numar, bloc, apartament, judet, localitate, tara
FROM clienti NATURAL JOIN adrese
ON(id_adresa);
X c.
SELECT nume, prenume, strada, numar, bloc, apartament, judet, localitate, tara
FROM clienti c JOIN adrese a
USING (id_adresa)

ntrebarea nr. 8
6 din 6 puncte


Se dau urmatoarele doua tabele din baza de date a unei firme de vanzari locuinte:
LOCUINTE(id_locuinta#, nr_camere, suprafata, tip, pret, an, clasa_imbunatatire)
IMBUNATATIRI(clasa_imbunatatire#, descriere)
In functie de imbunatatirile pe care le au locuintele, se cere sa se obtina pretul minim corespunzator acelor locuite,
luand in considerare doar locuintele al caror pret depaseste 50000.
Care dintre variante nu realizeaza acest lucru?
Answer

Selected Answer: d.
SELECT i.id_imbunatatire, b.pretmin
FROM imbunatatiri i JOIN (SELECT id_imbunatatire, MIN(pret) pretmin
FROM locuinte GROUP BY id_imbunatatire
HAVING MIN(pret) >50000) b
ON(id_imbunatatire);

ntrebarea nr. 9
6 din 6 puncte


Se da urmatorul tabel:
ANGAJATI(id_ang#, nume, data_ang, data_nast, salariu, comision, functia, id_sef).
Alegeti comanda care obtine toti sefii impreuna cu numarul de angajati din subordine.
Answer

Selected Answer: d.
SELECT a.nume, b.nr_ang
FROM angajati a, (SELECT id_sef, COUNT(*) nr_ang FROM angajati
GROUP BY id_sef ) b
WHERE a.id_ang=b.id_sef;

















Problema nr.2



Problema nr.3


ntrebarea nr. 16
6 din 6 puncte


Se da urmatorul tabel, care contine date despre locuintele ce pot fi inchiriate, aflate in baza de date a unei firme
imobiliare:
LOCUINTE(id_locuinta#, nr_camere, suprafata, tip, pret, etaj, an).
Care varianta afiseaza pentru fiecare etaj pretul mediul al locuintelor care au mai mult de o camera si pentru care pretul
mediu obtinut este cel mult 800?
Answer
Selected Answer: c.
SELECT etaj, ROUND(AVG(pret),2)
FROM locuinte
WHERE nr_camere > 1
GROUP BY etaj
HAVING ROUND(AVG(pret),2) < 800;


ntrebarea nr. 9
0 din 6 puncte


Se da urmatorul tabel:
ANGAJATI(id_ang#, nume, data_ang, data_nast, salariu, comision, functia).
Stiind ca exista salariati cu functia Programator IT, care dintre variantele de mai jos afiseaza numele, functia, salariu
pentru acei angajati care au salariul mai mare decat al oricarui Programator IT?
Answer

Selected Answer: a.
SELECT nume, functia, salariu
FROM angajati
WHEE salariu > ANY(SELECT salariu FROM angajati
WHERE functia=Programator IT);


ntrebarea nr. 10
0 din 6 puncte


Sa da urmatorul tabel:
ANGAJATI(id_ang#, nume, data_ang, data_nast, salariu, comision, functia, id_sef).
Alegeti comanda care obtine ordonat crescator dupa cod numele fiecarui angajat impreuna cu numele sefului sau,
incluzand in rezultat si angajatii care nu au sef.
Answer

Selected Answer: b.
SELECT a.nume angajat, b.nume sef
FROM angajati a, angajati b
WHERE a.id_sef(+)=b.id_ang
ORDER BY a.id_ang;

ntrebarea nr. 13
0 din 6 puncte


Se dau urmatoarele doua tabele:
CLIENTI(id_client#, nume, prenume, id_adresa, id_ang)
AGENTI_IMOBILIARI(id_ang#, nume, salariu, comision)
Se cere sa se obtina pentru fiecare client numele si prenumele sau, respectiv codul si numele agentului corespunzator, incluzand in rezultat toti
agentii, chiar daca acestia nu au asociat niciun client.
Care varianta nu realizeaza acest lucru?
Answer

Selected Answer: a.
SELECT c.nume client, a.id_ang, a.nume agent
FROM clienti c
LEFT OUTER JOIN agenti_imobiliari a
ON(c.id_ang = a.id_ang);
Gresit
b.
SELECT c.nume client, a.id_ang, a.nume agent
FROM clienti c, agenti_imobiliari a
WHERE c.id_ang (+) = a.id_ang;



ntrebarea nr. 4
6 din 6 puncte


O constangere de validare
Answer

Selected Answer: b.
defineste explicit o conditie ce trebuie satisfacuta de fiecare linie a tabelului.



ntrebarea nr. 5
0 din 6 puncte


Pe tabelul de mai jos
MELODII(id_melodie#, titlu, textier, compozitor, gen, durata),
este definita urmatoarea vizualizare:
CREATE VIEW melodii_clasice AS
SELECT id_melodie, titlu, textier, compozitor, durata
FROM melodii
WHERE gen = clasic
WITH READ ONLY;
Care dintre urmatoarele comenzi este permisa asupra vizualizarii definite?
Answer

Selected Answer: b.
INSERT INTO melodii_clasice(id_melodie, titlu, compozitor)
VALUES (101, Dunarea Albastra, Johann Strauss);










Selected Answer: c.
Constrangerea de cheie externa implementeaza o relatie de tip one-to-many intre doua tabele.















Raspuns corect "c"





ntrebarea nr. 14

O subcerere care intoarce cel putin doua linii nu poate fi utilizata intr-o comanda SELECT in clauza
Answer

Selected Answer: d.
FROM






ntrebarea nr. 16


Se da urmatorul tabel:
ANGAJATI(id_ang#, nume, data_ang, data_nast, salariu, comision, functia, id_sef).
Presupunand ca nu exista doi angajati cu acelasi nume, care dintre variante nu afiseaza angajatii care nu sunt sefi?
Answer

Selected Answer: a.
SELECT nume
FROM angajati
WHERE nume NOT IN (SELECT b.nume FROM angajati a, angajati b
WHERE a.id_sef=b.id_ang);





GRILA PENTRU LICENTA VARA 2011
1. A doua forma normala rezolva anomaliile cauzate de
a. Grupurile repetitive
b. Dependentele partiale de cheia primara
c. Grupurile repetitive si atributele multivaloare
d. Dependentele tranzitive
2. A treia forma normala rezolva anomaliile cauzate de
a. Dependentele partiale de cheia primara
b. Grupurile repetitive
c. Dependentele tranzitive
d. Atributele multivaloare
3. Care este comanda corecta care afiseaza daca exista angajati care nu lucreaza in
departamentul Contractari si al caror salariu coincide cu salariul unui angajat din
departamentul Contractari?

a. SELECT nume, salariu, cod_depart
FROM salariati
WHERE salariu IN (SELECT salariu FROM salariati , department d
WHERE s.cod_depart = d.cod_depart AND nume_depart <> Contractari)
AND cod_depart= (SELECT cod_depart FROM department
WHERE nume_depart = Contractari);

b. SELECT nume, salariu, cod_depart
FROM salariati
WHERE salariu IS IN (SELECT salariu FROM salariati , department
WHERE s.cod_depart = d.cod_depart , nume_depart = Contractari)
AND cod_depart<> (SELECT cod_depart FROM department
WHERE nume_depart = Contractari);

c. SELECT nume, salariu, cod_depart
FROM salariati
WHERE (salariu) IN (SELECT salariu FROM salariati s, department d
WHERE s.cod_depart = d.cod_depart AND nume_depart = Contractari)
AND cod_depart<> (SELECT cod_depart FROM department
WHERE nume_depart = Contractari);
4. Care este comanda corecta care afiseaza numele si salariul angajatilor condusi direct de
Ionescu Mihai?
a. SELECT nume, salariu
FROM salariati
WHERE cod_sef != (SELECT cod_angajat FROM salariati
WHERE nume ='Ionescu' AND prenume ='Mihai' );
b. SELECT nume, salariu
FROM salariati
WHERE cod_sef = (SELECT cod_angajat FROM salariati
WHERE nume ='Ionescu', prenume ='Mihai' );
c. SELECT nume, salariu
FROM salariati
WHERE cod_sef = Ionescu Mihai';
d. SELECT nume, salariu
FROM salariati
WHERE cod_sef = (SELECT cod_angajat FROM salariati
WHERE nume ='Ionescu' AND prenume ='Mihai' );
5. Care este comanda corecta care listeaza numele functiilor salariatilor care lucreaza in
departamentul 30, fara duplicate?
a. SELECT DISTINCT nume_functie
FROM salariati s, functii f
WHERE cod_functie=cod_functie
AND cod_departament= 30;
b. SELECT DISTINCT nume_functie
FROM salariati s, functii f
WHERE s.cod_functie=f.cod_functie
AND cod_departament= 30;
c. SELECT DISTINCT nume_functie
FROM salariati, functii
WHERE s.cod_functie=f.cod_functie
AND cod_departament= 30;
d. SELECT nume_functie
FROM salariati s, functii f
WHERE s.cod_functie=f.cod_functie
AND cod_departament= 30;
6. Care este comanda corecta care obtine titlurile cartilor care momentan sunt
imprumutate (inca nu au fost restituite)? Dataef reprezinta data la care cititor a restituit
efectiv cartea.
a. SELECT titlu
FROM carte
WHERE cod_carte IN
(SELECT DISTINCT cod_carte
FROM imprumuta
WHERE dataef IS NULL);
b. SELECT titlu
FROM carte
WHERE cod_carte NOT IN
(SELECT DISTINCT cod_carte
FROM imprumuta
WHERE dataef IS NULL);
c. SELECT titlu
FROM carte
WHERE cod_carte IN
(SELECT DISTINCT cod_carte
FROM imprumuta
WHERE dataef IS NOT NULL);
7. Care este comanda corecta care obtine titlurile cartilor care au toate exemplarele
imprumutate (coloana dataef reprezinta data la care cititorul a restituit efectiv cartea)?
SELECT titlu
FROM carte
WHERE nrex = (SELECT COUNT(*)
FROM imprumuta
WHERE cod_carte = carte.cod_carte
AND dataef IS NULL);

8. Care este comanda corecta prin care se adauga constrangerea de cheie primara
tabelului
IMPRUMUTA (cod_cititor, cod_carte, data_imprumut, data_restituire)?
a. ALTER TABLE IMPRUMUTA
ADD PRIMARY KEY cod_cititor, PRIMARY KEY cod_carte, PRIMARY KEY
data_imprumut;
b. ALTER TABLE IMPRUMUTA
ADD PRIMARY KEY cod_cititor, cod_carte, data_imprumut;
c. ALTER TABLE IMPRUMUTA
ADD CONSTRAINT cp PRIMARY KEY (cod_cititor, cod_carte, data_imprumut);
d. ALTER TABLE IMPRUMUTA
ADD CONSTRAINT PRIMARY KEY (cod_cititor, cod_carte, data_imprumut);
9. Care este comanda corecta care obtine numele cititorilor si titlurile cartilor imprumutate de
acestia in anul 2008?
a. SELECT nume, titlu
FROM cititor, carte, imprumuta
WHERE imprumuta.cod_carte= carte.cod_carte
AND TO_CHAR(data_imprumut,yyyy) = 2008;
b. SELECT nume, titlu
FROM cititor, carte, imprumuta
WHERE imprumuta.cod_carte= carte.cod_carte
AND imprumuta.cod_cititor= cititor.cod_cititor
AND TO_CHAR(data_imprumut,yyyy) = 2008;
c. SELECT nume, titlu
FROM cititor, carte, imprumuta
WHERE imprumuta.cod_carte= carte.cod_carte
AND imprumuta.cod_cititor= cititor.cod_cititor
AND TO_CHAR(data_imprumut,2008) = 2008;
10. Care comanda care afiseaza numarul de angajati din fiecare departament?
a. SELECT cod_departament, COUNT(*)
FROM salariat;
b. SELECT cod_departament, SUM(cod_angajat)
FROM salariat
GROUP BY cod_departament;
c. SELECT cod_departament, COUNT(*)
FROM salariat
GROUP BY cod_departament;
d. SELECT cod_departament, COUNT()
FROM salariat
GROUP BY cod_departament;
11. Care comanda listeaza numele tuturor angajatilor care au a treia litera din nume 'a'?
a. SELECT nume
FROM salariat
WHERE nume LIKE '__a$';
b. SELECT nume
FROM salariat
WHERE nume LIKE '%a%';
c. SELECT nume
FROM salariat
WHERE nume LIKE '__a%';
12. Care dintre urmatoarele afirmatii nu este adevarata?
Intr-o comanda CREATE TABLE o constrangere de tip NOT NULL poate fi declarata doar la
nivel de tabel.
13. Care dintre urmatoarele afirmatii nu este adevarata?
O comanda INSERT asupra unei vizualizari complexe (extrage date din mai multe tabele,
contine functii sau grupari de date) are efect intotdeauna asupra tabelelor de baza.
14. Care dintre urmatoarele comenzi intoarce numarul zilei din luna carespunzator datei curente?
a. SELECT TO_CHAR(SYSDATE,DDD)
FROM dual;
b. SELECT TO_CHAR(SYSDATE,DAY)
FROM dual;
c. SELECT TO_CHAR(SYSDATE,D)
FROM dual;
d. SELECT TO_CHAR(SYSDATE,DD)
FROM dual;
15. Care este comanda care afiseaza codul departamentelor pentru care salariul minim depaseste
5000?
SELECT cod_departament
FROM salariat
GROUP BY cod_departament
HAVING MIN(salariu)>5000

SELECT cod_departament
FROM salariat
WHERE MIN(salariu) > 5000
GROUP BY cod_departament
16. Care este comanda care afiseaza corect numele, prenumele artistilor precum si titlurile oprelor
lor, deasemenea artistii fara opere expuse si titlurile operelor al caror autor este necunoscut
SeLECT nume, pren , titlu
FROM opera o
FULL OUTER JOIN artist a ON
WHERE o.cod_artist= a.cod_artist;
17. Care este comanda care determina afisarea numarului de angajati care sunt manageri?
SELECT COUNT(distinct cod_manager)
FROM angajati;
18. Care este comanda care determina afisarea numarului de angajati care au manageri?
SELECT COUNT(cod_manager)
FROM angajati;

SELECT COUNT(distinct
cod_manager)
FROM angajati;
19. Care este comanda care determina stergerea tuturor operelor de arta care se afla expuse intr-o
galerie al carei nume contine sirul de caractere arta?
DELETE FROM opera
WHERE cod_galerie IN(SELECT cod_galerie
FROM galerie
WHERE nume_galerie LIKE '%arta%');
20. Care este comanda care nu elimina simultan spatiile de la inceputul si sfarsitul coloanei nume?
a. SELECT TRIM(nume)
FROM salariat;
b. SELECT RTRIM(LTRIM(nume))
FROM salariat;
c. SELECT LTRIM(RTRIM(nume))
FROM salariat;
d. SELECT LTRIM(nume)
FROM salariat;
21. Care este comanda care obtine fiecare carte, codul sau numarul de exemplare care nu au fost
inca restituite?
a. SELECT codc
FROM IMPRUMUTA
WHERE dataef IS NULL
GROUP BY codc

b. SELECT COUNT(*)
FROM IMPRUMUTA
GROUP BY codc

c. SELECT codc, COUNT(*)
FROM IMPRUMUTA
WHERE dataef IS NULL
GROUP BY codc

d. SELECT COUNT(*)
FROM IMPRUMUTA
WHERE dataef =0
GROUP BY codc
22. Care este comanda care sterge toti angajatii din departamentul 80 care nu au comision?
a. DELETE FROM angajati
WHERE comision IS NULL
OR cod_departament = 80;
b. DELETE FROM angajati
WHERE comision IS NULL
AND cod_departament = 80;
c. DELETE FROM angajati
WHERE comision = NULL
AND cod_departament = 80;
23. Care este comanda corecta care afiseaza codul departamentelor pentru care salariul minim
depaseste 5000?
a. SELECT cod_departament
FROM salariat
WHERE MIN(salariu)>5000
GROUP BY cod_departament;
b. SELECT cod_departament
FROM salariat
GROUP BY cod_departament
HAVING MIN(salariu)>5000;
c. SELECT cod_departament
FROM salariat
GROUP BY cod_departament
MIN(salariu)>5000;
24. Care este comanda corecta care afiseaza codul, numele si prenumele artistilor care au cel putin
trei opere de arta expuse n muzeu?
a. SELECT cod_artist, nume, prenume
FROM artist a
WHERE 3 <= (SELECT COUNT(*)
FROM opera);
b. SELECT cod_artist, nume, prenume
FROM artist a
WHERE 3 <= (SELECT COUNT(*)
FROM opera
WHERE cod_artist = a.cod_artist);
c. SELECT cod_artist, nume, prenume
FROM artist a
WHERE 3 <= (SELECT SUM(cod_opera)
FROM opera
WHERE cod_artist = a.cod_artist);
25. Care este comanda corecta care afiseaza informatii referitoare la operele de arta, artistii care
le-au creat si galeriile n care sunt expuse?
a. SELECT cod_opera, titlu, data_crearii, a.cod_artist, nume, prenume,
g.cod_galerie, nume_galerie, adresa
FROM opera o, galerie g, artist a
WHERE o.cod_artist = a.cod_artist;
b. SELECT cod_opera, titlu, data_crearii, a.cod_artist, nume, prenume,
g.cod_galerie, nume_galerie, adresa
FROM opera, galerie, artist
WHERE opera.cod_artist = artist.cod_artist
AND o.cod_galerie = g.cod_galerie;
c. SELECT cod_opera, titlu, data_crearii, a.cod_artist, nume, prenume,
g.cod_galerie, nume_galerie, adresa
FROM opera o, galerie g, artist a
WHERE o.cod_artist = a.cod_artist
AND o.cod_galerie = g.cod_galerie;

26. Care este comanda corecta care afiseaza informatii referitoare la titlul operelor de arta expuse
n galeriile avnd codul 20 sau 40, respectiv numele si prenumele artistilor care le-au realizat?
a. SELECT titlu, nume, prenume
FROM opera JOIN artist
WHERE cod_galerie IN (20, 40);
b. SELECT titlu, nume, prenume
FROM opera NATURAL JOIN artist
WHERE cod_galerie IN (20, 40);
c. SELECT titlu, nume, prenume
FROM opera NATURAL JOIN artist USING cod_artist
WHERE cod_galerie IN (20, 40);
d. SELECT titlu, nume, prenume
FROM opera JOIN artist ON (cod_artist)
WHERE cod_galerie IN (20, 40);
27. Care este comanda corecta care afiseaza informatii referitoare la artisti si operele acestora,
inclusiv cei care nu au opere expuse n cadrul muzeului?
a. SELECT nume, prenume, titlu
FROM opera o
RIGHT OUTER JOIN artist a ON (o.cod_artist = a.cod_artist);
b. SELECT nume, prenume, titlu
FROM opera o
LEFT OUTER JOIN artist a ON (o.cod_artist = a.cod_artist);
c. SELECT nume, prenume, titlu
FROM opera o, artist
WHERE o.cod_artist = a.cod_artist(+);
d. SELECT nume, prenume, titlu
FROM opera o
FULL OUTER JOIN artist a ON o.cod_artist = a.cod_artist;
28. Care este comanda corecta care afiseaza informatii referitoare la titlurile operelor de arta si
firmele la care acestea sunt asigurate? Se vor lua n considerare si operele de arta pentru care
nu au fost ncheiate polite de asigurare.
SELECT titlu, firma
FROM opera o
LEFT OUTER JOIN polita_asig p ON (o.cod_opera = p.cod_opera);

SELECT titlu, firma
FROM opera o, polita
WHERE o.cod_opera(+) = p.cod_opera;
29. Care este comanda corecta care afiseaza jobul pentru care salariul mediu este minim?
a. SELECT cod_job, AVG(salariu)
FROM angajati
GROUP BY cod_job
HAVING AVG(salariu)=(SELECT MIN(salariu)
FROM angajati
GROUP BY cod_job);
b. SELECT cod_job, AVG(salariu)
FROM angajati
GROUP BY cod_job
HAVING AVG(salariu)=(SELECT MIN(AVG(salariu))
FROM angajati
GROUP BY cod_job);
c. SELECT cod_job, AVG(salariu)
FROM angajati
GROUP BY cod_job
HAVING MIN(salariu)=(SELECT AVG(MIN(salariu))
FROM angajati
GROUP BY cod_job);
30. Care este comanda corecta care afiseaza numarul total al cartilor imprumutate in anul 2009?
a. SELECT COUNT()
FROM imprumuta
WHERE TO_CHAR(data_imprumutului,yyyy)=2009;
b. SELECT COUNT(*)
FROM imprumuta
WHERE TO_CHAR(data_imprumutului,yyyy)=2009;
c. SELECT COUNT(*)
FROM imprumuta
WHERE data_imprumutului=2009;
d. SELECT COUNT(*)
FROM imprumuta
WHERE TO_CHAR(data_imprumutului,yy)=2009;
31. Care este comanda corecta care afiseaza numarul total de carti imprumutate si restituite pentru
fiecare cititor al unei biblioteci?
a. SELECT cod_cititor, COUNT()
FROM imprumuta
WHERE data_restituirii NOT NULL
GROUP BY cod_cititor;
b. SELECT cod_cititor, COUNT(*)
FROM imprumuta
WHERE data_restituirii IS NOT NULL;
c. SELECT cod_cititor, COUNT(*)
FROM imprumuta
GROUP BY cod_cititor;
d. SELECT cod_cititor, COUNT(*)
FROM imprumuta
WHERE data_restituirii IS NOT NULL
GROUP BY cod_cititor;
32. Care este comanda corecta care afiseaza numele salariatilor care castiga mai mult decat
salariul mediu pe companie, in ordine crescatoare a salariului?
a. SELECT nume
FROM salariati
WHERE salariu >AVG(salariu);
b. SELECT nume
FROM salariati
WHERE salariu > (SELECT AVG(salariu) FROM salariati)
ORDER BY salariu;
c. SELECT nume
FROM salariati
WHERE salariu > (SELECT AVG(salariu) FROM salariati
ORDER BY salariu);
d. SELECT nume
FROM salariati
WHERE salariu > (SELECT AVG(salariu) FROM salariati)
ORDER BY 1;
33. Care este comanda corecta care afiseaza numele salariatilor si numele departamentelor in care
lucreaza, inclusiv departamentele in care nu lucreaza salariati?
a. SELECT nume_salariat, nume_departament
FROM salariati s, departamente d
WHERE s.cod_departament = d.cod_departament;
b. SELECT nume_salariat, nume_departament
FROM salariati s, departamente d
WHERE s.cod_departament(+) = d.cod_departament;
c. SELECT nume_salariat, nume_departament
FROM salariati s, departamente d
WHERE s.cod_departament = d.cod_departament(+);
d. SELECT nume_salariat, nume_departament
FROM salariati s, departamente d
WHERE s.cod_departament(+) = d.cod_departament(+);
34. Care este comanda corecta care afiseaza numele si prenumele artistilor, precum si titlurile
operelor create de acestia? Se vor afisa si artistii care nu au opere expuse n cadrul muzeului,
precum si titlurile operelor al caror autor este necunoscut.
a. SELECT nume, prenume, titlu
FROM opera o
RIGHT OUTER JOIN artist a ON (o.cod_artist = a.cod_artist);
b. SELECT nume, prenume, titlu
FROM opera o, artist a
WHERE o.cod_artist(+) = a.cod_artist(+);
c. SELECT nume, prenume, titlu
FROM opera o
FULL OUTER JOIN artist a ON (o.cod_artist = a.cod_artist);
d. SELECT nume, prenume, titlu
FROM opera o
LEFT OUTER JOIN artist a ON (o.cod_artist = a.cod_artist);
35. Care este comanda corecta care afiseaza pentru fiecare artist titlul si valoarea celei mai ieftine
opere de arta expuse n muzeu?
a. SELECT titlu, cod_artist, valoare
FROM opera
WHERE valoare IN (SELECT MIN(valoare)
FROM opera
GROUP BY cod_artist);
b. SELECT titlu, cod_artist, valoare
FROM opera
WHERE valoare = (SELECT MIN(valoare)
FROM opera);
c. SELECT titlu, cod_artist, valoare
FROM opera
WHERE valoare = (SELECT MIN(valoare)
FROM opera
ORDER BY cod_artist);
36. Care este comanda corecta care afiseaza pentru fiecare artist titlul si valoarea celei mai ieftine
opere de arta expuse de in muzeu?
SELECT titlu, cod_artist, valoare
FROM opera o
WHERE valoare = (SELECT MIN(valoare)
FROM opera
WHERE cod_artist = o.cod_artist);
37. Care este comanda corecta care afiseaza titlul tuturor cartilor imprumutate?
SELECT titlu
FROM carte
WHERE nrex=(SELECT COUNT(*)
FROM imprumuta
WHERE cod_carte=carte.cod_carte
AND dataef IS NULL
38. Care este comanda corecta care afiseaza titlul, codul artistului si valoarea operelor create de
artistul caruia i apartine opera avnd codul 200 si care se afla expuse n aceeasi galerie cu
operele al caror cod este 100 sau 110? Se presupune ca o opera are un singur autor.
a. SELECT titlu, cod_artist, valoare
FROM opera
WHERE cod_artist != (SELECT MAX(cod_artist)
FROM opera WHERE cod_opera = 200)
AND cod_galerie IN (SELECT cod_galerie
FROM opera WHERE cod_opera IN (100, 110));
b. SELECT titlu, cod_artist, valoare
FROM opera
WHERE cod_artist = (SELECT cod_artist
FROM opera WHERE cod_opera = 200)
AND cod_galerie IN (SELECT cod_galerie
FROM opera WHERE cod_opera IN (100, 110));
c. SELECT titlu, cod_artist, valoare
FROM opera
WHERE cod_artist = (SELECT cod_artist
FROM opera WHERE cod_opera = 200)
AND cod_galerie NOT IN (SELECT cod_galerie
FROM opera WHERE cod_opera IN (100,
110));
39. Care este comanda corecta care afiseaza toate departamentele care platesc salariatilor lor o
suma totala mai mare decat 20000?
SELECT nume_departament
FROM departament a
WHERE 20000 <
(SELECT sum(salariu) FROM salariat b
WHERE a.cod_departament=b.cod_departament);

SELECT nume_departament
FROM departament
WHERE 20000 <
(SELECT sum(salariu) FROM salariat
WHERE a.cod_departament=b.cod_departament);
40. Care este comanda corecta care afiseaza toate functiile pe care nu lucreaza angajati?
a. SELECT cod_functie
FROM functii
WHERE cod_functie IN
(SELECT cod_functie FROM salariati WHERE cod_functie IS NOT NULL);
b. SELECT cod_functie
FROM functii
WHERE cod_functie NOT IN
(SELECT cod_functie FROM salariati WHERE cod_functie IS NULL);
c. SELECT cod_functie
FROM functii
WHERE cod_functie NOT IN
(SELECT cod_functie FROM salariati);
d. SELECT cod_functie
FROM functii
WHERE cod_functie NOT IN
(SELECT cod_functie FROM salariati WHERE cod_functie IS NOT NULL);
41. Care este comanda corecta care afiseaza:
- codurile departamentelor in care lucreaza cel putin un angajat, iar pentru fiecare dintre
acestea si pentru fiecare manager care lucreaza in departamentul respectiv numarul de
salariati;
- numarul de salariati pentru fiecare departament indiferent de manager;
- numarul total de angajati din companie?
a. SELECT cod_depart, cod_manager, COUNT(*)
FROM salariati
GROUP BY CUBE (cod_depart, cod_manager);
b. SELECT cod_depart, cod_manager, COUNT(*)
FROM salariati
GROUP BY cod_depart, cod_manager;
c. SELECT cod_depart, cod_manager, COUNT(*)
FROM salariati
GROUP BY ROLLUP (cod_depart, cod_manager);
42. Care este comanda corecta care afiseaza:
- valoarea totala a operelor de arta ale unui autor, expuse n cadrul fiecarei galerii;
- valoarea totala a operelor din fiecare galerie, indiferent de autor;
- valoarea totala a operelor fiecarui autor, indiferent de galerie;
- valoarea totala a operelor.
a. SELECT cod_galerie, cod_artist, SUM(valoare)
FROM opera
GROUP BY cod_galerie, cod_artist;
b. SELECT cod_galerie, cod_artist, SUM(valoare)
FROM opera
GROUP BY ROLLUP(cod_galerie, cod_artist);
c. SELECT cod_galerie, cod_artist, SUM(valoare)
FROM opera
GROUP BY CUBE(cod_galerie, cod_artist);
43. Care este comanda corecta care afiseaza:
- valoarea totala a operelor de arta ale unui autor, expuse n cadrul fiecarei galerii;
- valoarea totala a operelor din fiecare galerie, indiferent de autor;
- valoarea totala a operelor.
a. SELECT cod_galerie, cod_artist, SUM(valoare)
FROM opera
GROUP BY cod_galerie, cod_artist;
b. SELECT cod_galerie, cod_artist, SUM(valoare)
FROM opera
GROUP BY ROLLUP(cod_galerie, cod_artist);
c. SELECT cod_galerie, cod_artist, SUM(valoare)
FROM opera
GROUP BY CUBE(cod_galerie, cod_artist);
44. Care este comanda corecta care afiseza:
- codurile departamentelor in care lucreaza cel putin un angajat, iar pentru fiecare
dintre acestea si pentru fiecare manager care lucreaza in departamentul respectiv numarul
de salariati;
- numarul de salariati pentru fiecare departament indiferent de manager;
- numarul de angajati subordonati unui manager indiferent de department;
- numarul total de angajati din companie?
a. SELECT cod_depart, cod_manager, COUNT(cod_angajat)
FROM salariati
GROUP BY CUBE (cod_depart, cod_manager);
b. SELECT cod_depart, cod_manager, COUNT(cod_angajat)
FROM salariati
GROUP BY cod_depart, cod_manager;
c. SELECT cod_depart, cod_manager, COUNT(cod_angajat)
FROM salariati
GROUP BY ROLLUP (cod_depart, cod_manager);
45. Care este comanda corecta care determina artistul pentru care valoare medie a operelor sale de
arta este minima?
SELECT cod_artist, AVG(valoare)
FROM opera
GROUP BY cod_artist
HAVING AVG(valoare) = (SELECT MIN(AVG(valoare))
FROM opera
GROUP BY cod_artist);
46. Care este comanda corecta care determina stergerea tuturor angajatiilor din departamentul 80
care nu au comision?
DELETE FROM angajati
WHERE comision IS NULL
AND cod_departament = 80;
47. Care este comanda corecta care listeaza fara duplicate, codul operelor de arta (numeric), codul
(numeric) si numele artistilor (sir de caractere)?
a. SELECT cod_opera, cod_artist, null nume
FROM opera
UNION ALL
SELECT null, cod_artist, nume
FROM artist;
b. SELECT cod_opera, cod_artist, TO_CHAR(null) nume
FROM opera
UNION
SELECT TO_NUMBER(null), cod_artist, nume
FROM artist;
c. SELECT cod_opera, cod_artist, nume
FROM opera
UNION
SELECT cod_artist, nume
FROM artist;
48. Care este comanda corecta care obtine codurile cartilor care se gasesc in biblioteca in mai
putin de 20 exemplare si care au fost mprumutate de cel putin trei ori?
a. SELECT codcarte FROM carte
WHERE nrex < 20
MINUS
SELECT codcarte FROM imprumuta
GROUP BY codcarte
HAVING COUNT(*) > 3;
b. SELECT codcarte FROM carte
WHERE nrex < 20
INTERSECT
SELECT codcarte FROM imprumuta
GROUP BY codcarte
HAVING COUNT(*) > 3;
c. SELECT codcarte FROM carte
WHERE nrex < 20
UNION
SELECT codcarte FROM imprumuta
GROUP BY codcarte
HAVING COUNT(*) > 3;
49. Care este comanda corecta care obtine numele angajatilor care castiga salariul maxim in
departamentul
in care lucreaza?
a. SELECT nume
FROM salariati s
WHERE salariu =(SELECT MIN(salariu)
FROM angajati );
b. SELECT nume
FROM salariati
WHERE salariu =(SELECT salariu
FROM salariati
WHERE salariu = MIN(salariu));
c. SELECT nume
FROM salariati s
WHERE salariu =(SELECT MIN(salariu)
FROM angajati
WHERE cod_departament=s.cod_departament);
50. Care este comanda corecta care obtine numele cititorilor care sunt in intarziere cu predarea
cartilor (dataef reprezinta data la care cititorul a restituit efectiv cartea, datares este data la care
cititorul trabuia sa restituie cartea)?
SELECT nume
FROM cititor
WHERE cod_cititor IN (SELECT DISTINCT cod_cititor
FROM imprumuta
WHERE dataef IS NULL
AND datares<SYSDATE);
51. Care este comanda corecta care obtine numele primilor trei angajati care au cele mai mari
salarii?
a. SELECT nume
FROM angajati a
WHERE 3>(SELECT COUNT(*)
FROM angajati
WHERE salariu > a.salariu);
b. SELECT nume
FROM angajati a
WHERE COUNT(*) >(SELECT 3
FROM angajati
WHERE salariu > a.salariu);
c. SELECT nume
FROM angajati
WHERE 3>(SELECT COUNT(*)
FROM angajati);
52. Care este comanda corecta care pentru fiecare facultate, insereaza in tabelul
TOTALURI(cod_fac, nr_prof, total_sal_fac) numarul de profesori si suma salariilor pe care
facultatea o plateste profesorilor sai?
a. INSERT TO TOTALURI
SELECT COD_FAC, COUNT(*) , SUM(SALARIU)
FROM PROF
ORDER BY COD_FAC;
b. INSERT INTO TOTALURI
SELECT COD_FAC, COUNT(*) , SUM(SALARIU)
FROM PROF ;
c. INSERT INTO TOTALURI
SELECT COD_FAC, COUNT(*) , SUM(SALARIU)
FROM PROF
GROUP BY COD_FAC;
d. INSERT INTO TOTALURI
SELECT COD_FAC, SUM(COD_PROF), SUM(SALARIU)
FROM PROF
GROUP BY COD_FAC;
53. Care este comanda corecta ce afiseaza numele si data angajarii pentru salariatii care au fost
angajati dupa angajatul avand codul 10, in ordine descrescatoare a numelui?
SELECT nume nume_angajat, data_angajarii
FROM salariat
WHERE data_angajarii >
(SELECT data_angajarii FROM salariat WHERE cod_angajat = 10)
ORDER BY nume_angajat DESC
54. Care este comanda corecta prin care se adauga tabelului produse doua coloane noi, denumite
categorie si stoc_curent?
b. ALTER TABLE PRODUSE ADD (categorie CHAR(20), stoc_curent NUMBER(2));
55. Care este comanda corecta prin care se elimina din tabelul produse coloanele categorie si
stoc_curent?
ALTER TABLE PRODUSE DROP (categorie, stoc_curent);
56. Care este comanda corecta prin care se modifica salariul si comisionul celui mai prost platit
salariat din firma, astfel incat sa fie egale cu salariul si comisionul angajatului al carui cod este
100?
UPDATE angajati
SET (salariu,comision)= (SELECT salariu, comision
FROM angajati WHERE cod_angjat=100)
WHERE salariu = (select min(salariu) FROM angajati);
57. Care este comanda corecta prin care se obtin angajatii care au avut in trecut si alte joburi fata
de cel curent?
SELECT cod_angajat
FROM angajati
INTERSECT
SELECT cod_angajat
FROM istoric_joburi;

SELECT cod_angajat
FROM angajati
INTERSECT
SELECT cod_angajat
FROM istoric_joburi;

SELECT cod_angajat
FROM istoric_joburi
UNION
SELECT cod_angajat
FROM angajati
58. Care este secventa corecta care afiseaza cate carti au fost imprumutate cel putin de doua ori?
a. SELECT COUNT(COUNT(codcarte))
FROM imprumuta
GROUP BY codcarte
HAVING COUNT(codcarte)>1;
b. SELECT COUNT(codcarte)
FROM imprumuta
GROUP BY codcarte
HAVING COUNT(codcarte)>1;
c. SELECT COUNT(COUNT(codcarte))
FROM imprumuta
WHERE COUNT(codcarte)>1;
d. SELECT COUNT(codcarte)
FROM imprumuta
ORDER BY codcarte
HAVING COUNT(codcarte)>1;
59. Care este secventa corecta care afiseaza numarul de departamente cu cel putin 5 angajati?
SELECT COUNT(COUNT(*))
FROM angajati
GROUP BY cod_departament
HAVING COUNT(*)>5;
SELECT COUNT(cod_angajat)
FROM angajati
GROUP BY cod_departament
HAVING COUNT(cod_angajat)>5;
60. Care este secventa corecta care afiseaza pentru fiecare domeniu de carte, numarul cartilor din
domeniu, media preturilor si numarul total de exemplare?
a. SELECT codcarte, COUNT(*), AVG(pret)
FROM CARTE
GROUP BY codcarte;
b. SELECT coddomeniu, AVG(pret), SUM(nrex)
FROM CARTE
GROUP BY codcarte;
c. SELECT coddomeniu, COUNT(*), AVG(pret), SUM(nrex)
FROM CARTE
GROUP BY coddomeniu;
d. SELECT COUNT(*), AVG(pret), SUM(nrex)
FROM CARTE
ORDER BY codcarte;
61. Care este varianta corecta pentru a crea tabelul CARTE, cu caracteristicile de mai jos (codc
cheie primara, coddom cheie secundara), indicand cheile la nivel de tabel?
(Tabelele DOMENIU_CARTE si CARTE sunt in relatia 1:M).
a. CREATE TABLE CARTE
(codc CHAR(5) PRIMARY KEY,
titlu VARCHAR2(30),
autor VARCHAR2(30),
pret NUMBER(8,2),
nrex NUMBER(3),
coddom CHAR(5) NOT NULL);
b. CREATE TABLE CARTE
(codc CHAR(5) PRIMARY KEY,
titlu VARCHAR2(30),
autor VARCHAR2(30),
pret NUMBER(8,2),
nrex NUMBER(3),
coddom CHAR(5) NOT NULL
REFERENCES DOMENIU(coddom));
c. CREATE TABLE CARTE
(codc CHAR(5),
titlu VARCHAR2(30),
autor VARCHAR2(30),
pret NUMBER(8,2),
nrex NUMBER(3),
coddom CHAR(5) NOT NULL,
PRIMARY KEY (codc),
FOREIGN KEY (coddom) REFERENCES DOMENIU (coddom));
62. Considernd galeriile al caror cod este mai mic decat 50, care este comanda corecta care
calculeaza media valorilor operelor:
- pentru fiecare galerie si, n cadrul acesteia, pentru fiecare artist;
- pentru fiecare artist si, n cadrul acestuia, pentru anii de achizitie corespunzatori.
a. SELECT cod_galerie, cod_artist,
TO_CHAR(data_achizitiei, 'yyyy') "an achizitie",
AVG(valoare) "Valoare medie"
FROM opera WHERE cod_galerie < 50
GROUP BY CUBE (cod_galerie, cod_artist, TO_CHAR(data_achizitiei, 'yyyy'));
b. SELECT cod_galerie, cod_artist,
TO_CHAR(data_achizitiei, 'yyyy') "an achizitie",
AVG(valoare) "Valoare medie"
FROM opera WHERE cod_galerie < 50
GROUP BY GROUPING SETS
((cod_galerie, cod_artist), (cod_artist, TO_CHAR(data_achizitiei, 'yyyy')));
c. SELECT cod_galerie, cod_artist,
TO_CHAR(data_achizitiei, 'yyyy') "an achizitie",
AVG(valoare) "Valoare medie"
FROM opera WHERE cod_galerie < 50
GROUP BY ROLLUP (cod_galerie, cod_artist, TO_CHAR(data_achizitiei, 'yyyy'));
63. Limbajul de definire a datelor (DDL - Data Definition Language) nu include urmatoarea
instructiune
a. INSERT
b. CREATE
c. ALTER
d. DROP
64. Limbajul de manipulare a datelor (DML Data Manipulation Language) nu include
instructiunea
a. INSERT
b. UPDATE
c. DELETE
d. DROP
65. Normalizarea rezolva
a. Anomaliile de stergere, de actualizare si de creare
b. Anomalia de actualizare, de stergere, si de creare
c. Anomalia de inserare, de actualizare si de creare
d. Anomaliile de stergere, de actualizare si de inserare
66. O cheie primara
a. Poate fi compusa numai dintr-un singur atribut
b. Poate fi compusa din mai multe atribute
c. Poate fi compusa dintr-un singur atribut care are si valori NULL
d. Poate fi compusa din zero, unul sau mai multe atribute
67. O uniune (join) fara o clauza WHERE sau o clauza JOIN
a. Nu returneaza nici un rand din setul de rezultate
b. Reprezinta o uniune interna (inner join)
c. Are ca rezultat un produs cartezian
d. Reprezinta o uniune externa (outer join)
68. O uniune externa (outer join) nu
a. Poate fi scrisa in Oracle SQL folosind un simbol (+) in clauza FROM
b. Poate fi scrisa in Oracle SQL folosind un simbol (+) in clauza WHERE
c. Returneaza toate randurile din unul sau din ambele tabele
d. Poate fi catre stanga, catre dreapta sau completa
69. Operatorul UNION
a. Include randurile duplicate in setul de rezultate
b. Combina seturile de rezultate a doua interogari intr-un singur set de rezultate si elimina
randurile duplicate din setul de rezultate
c. Combina doua interogari intr-o singura interogare de tip join
d. Este numit JOIN in unele implementari SQL
70. Pentru profesorii titulari, sa se maresca cumulul cu 10% si sa se rotunjeasca la 2 zecimale.
a. UPDATE PROF SET CUMUL = (CUMUL*1.1)
WHERE TITULAR=Y;
b. MODIFY PROF SET CUMUL = ROUND(CUMUL*1.1,2)
WHERE TITULAR=Y;
c. UPDATE PROF SET CUMUL = ROUND(CUMUL*1.1,2);
WHERE TITULAR=Y;
d. UPDATE PROF SET CUMUL = ROUND(CUMUL*1.1,2);
71. Pentru tabelele
PROFESORI(codp, nume, pren, salariu)
COPII (codc, codp, nume_c, virsta)
care este secventa corecta pentru a afisa profesorii care au copii?
a. SELECT a.nume, a.pren
FROM PROFESORI A
WHERE a.codp IN (SELECT DISTINCT codp
FROM COPII);
b. SELECT a.nume, a.pren
FROM PROFESORI A
WHERE a.codp IN DISTINCT codp
FROM COPII;
c. SELECT a.nume, a.pren
FROM PROFESORI A
WHERE a.codp IN COPII;
72. Pentru tabelele
PROFESORI(codp, nume, pren, salariu)
COPII (codc, codp, nume_c, virsta)
care este secventa corecta pentru a afisa profesorii fara copii?
a. SELECT a.nume, a.pren
FROM PROFESORI A
WHERE a.codp IS NOT (SELECT DISTINCT codp FROM COPII);
b. SELECT a.nume, a.pren
FROM PROFESORI A
WHERE a.codp NOT IN (SELECT DISTINCT codp FROM COPII);
c. SELECT a.nume, a.pren
FROM PROFESORI A
WHERE a.codp NOT IN SELECT codp FROM copii;
73. Pentru tabelele
Angajat(cod_angajat, nume, pren, ..)
Are_functia (cod_angajat, cod_functie, salariu ,..)
Functii(cod_functie, )
care este comanda corecta pentru a calcula suma salariilor angajatului ENE ANA,
care cumuleaza mai multe functii, in diferite compartimente?
a. SELECT COUNT(SALARIU) AS SALARIU_CUMULAT
FROM salariat, are_functia
WHERE s.cod_salariat=a.cod_salariat
AND NUME='ENE' AND PREN='ANA;
b. SELECT Sum(SALARIU) AS SALARIU_CUMULAT
FROM salariat, are_functia
WHERE NUME='ENE' , PREN='ANA;
c. SELECT Sum(SALARIU) AS SALARIU_CUMULAT
FROM salariat s, are_functia a
WHERE s.cod_salariat=a.cod_salariat
AND NUME='ENE' AND PREN='ANA;
74. Prima forma normala rezolva anomaliile cauzate de
a. Grupurile repetitive si atributele multivaloare
b. Dependentele partiale de cheia primara
c. Dependentele tranzitive
d. Relatiile de tip unu-la-mai-multi
75. Relatia m:n devine in modelul relational
a. tabel asociativ cu cheia primara formata numai din doua chei externe pentru cele doua
tabele asociate
b. tabel asociativ cu cheia primara formata din doua chei externe pentru cele doua tabele
asociate plus eventuale coloane aditionale
c. chei externe
d. entitate independenta
76. Sa se creeze tabelul asociativ imprumuta, a carui structura este data mai jos(codc, codcit si
dataim fac parte din cheia primara). Sa se precizeze legatura cu tabelele carte si cititor.
a. IMPRUMUTA (
codc CHAR(5),
codcit CHAR(5),
dataim DATE DEFAULT SYSDATE,
datares DATE,
dataef DATE,
PRIMARY KEY (codc, codcit, dataim),
FOREIGN KEY (codc)
REFERENCES CARTE (codc),
FOREIGN KEY (codcit)
REFERENCES CITITOR(codcit));
b. IMPRUMUTA (
codc CHAR(5) PRIMARY KEY,
codcit CHAR(5) PRIMARY KEY,
dataim DATE DEFAULT SYSDATE PRIMARY KEY,
datares DATE,
dataef DATE,
FOREIGN KEY (codc)
REFERENCES CARTE (codc),
FOREIGN KEY (codcit)
REFERENCES CITITOR(codcit));
c. IMPRUMUTA (
codc CHAR(5) REFERENCES CARTE (codc),
codcit CHAR(5) REFERENCES CITITOR(codcit),
dataim DATE DEFAULT SYSDATE PRIMARY KEY,
datares DATE,
dataef DATE,
PRIMARY KEY (codc, codcit);
77. Sa se creeze tabelul CARTE_INFO(codc, titlu, autor) prin copiere din tabelul
CARTE(codc CHAR(5), titlu VARCHAR2(30), autor VARCHAR2(30),
pret NUMBER(8,2), nrex NUMBER(3), coddom CHAR(5))
selectand cartile care au coddom=I.
a. CREATE TABLE CARTEINFO
(codc CHAR(5),
titlu VARCHAR2(30),
autor VARCHAR2(30),
FROM CARTE
PRIMARY KEY (codc),
FOREIGN KEY (coddom)
REFERENCES DOMENIU (coddom));
b. CREATE TABLE CARTE_INFO
(codc CHAR(5) PRIMARY KEY,
titlu VARCHAR2(30),
autor VARCHAR2(30),
FROM CARTE
WHERE coddom = I;
c. CREATE TABLE CARTE_INFO
AS SELECT codc, titlu, autor
FROM CARTE
WHERE coddom = I;
78. Sa se insereze in tabelul CARTE toate cartile din tabelul CARTE_INFO, presupunand ca
tabelul
CARTE_INFO a fost deja creat.
a. CREATE TABLE CARTE
AS SELECT codc, titlu, autor
FROM CARTE_INFO;
b. INSERT INTO CARTE
SELECT
FROM CARTE_INFO;
c. CREATE TABLE CARTE
AS SELECT *
FROM CARTE_INFO;
d. INSERT INTO CARTE
SELECT *
FROM CARTE_INFO;
79. Sa se modifice pretul cartilor din biblioteca, care se gasesc intr-un numar de exemplare mai
mic decat media numarului de exemplare pe biblioteca. Noua valoare a pretului sa fie
egala cu suma preturilor cartilor scrise de BARBU.
a. UPDATE CARTE
SET pret = (SELECT SUM(pret)
FROM CARTE
WHERE autor = BARBU)
WHERE nrex < (SELECT AVG(nrex)
FROM CARTE);
b. MODIFY CARTE
SET pret = (SELECT SUM(pret)
FROM carte
WHERE autor = BARBU)
WHERE nrex < (SELECT AVG(nrex)
FROM CARTE);
c. UPDATE CARTE
pret = ( SUM(pret)
FROM carte
WHERE autor = BARBU)
WHERE nrex < ( AVG(nrex) FROM CARTE);
d. UPDATE CARTE
pret = (SELECT SUM(pret)
FROM carte
WHERE autor = BARBU and
nrex < ( AVG(nrex) FROM CARTE);
80. Sa se obtina pentru fiecare carte, codul sau si numarul de exemplare care nu au fost inca
restituite.
a. SELECT codc
FROM IMPRUMUTA
WHERE dataef IS NULL
GROUP BY codc;
b. SELECT COUNT(*)
FROM IMPRUMUTA
GROUP BY codc;
c. SELECT codc, COUNT(*)
FROM IMPRUMUTA
WHERE dataef IS NULL
GROUP BY codc;
d. SELECT COUNT(*)
FROM IMPRUMUTA
WHERE dataef =0
GROUP BY codc;
81. Sa se obtina titlurile si preturile cartilor mai scumpe decat cartea avand titlul Baze de date, al
carui autor este Popescu (self join).
a. SELECT x.titlu, x.pret
FROM carte x, y
WHERE x.pret < y.pret
AND y.titlu = Baze de date
AND y.autor = Popescu;
b. SELECT x.titlu, x.pret
FROM carte x, carte y
WHERE x.pret > y.pret
AND y.titlu = Baze de date
AND y.autor = Popescu;
c. SELECT x.titlu, x.pret
FROM carte x, carte y
WHERE x.pret > y.pret
AND titlu = Baze de date
AND autor = Popescu;
d. SELECT x.titlu, x.pret
FROM carte x, carte y
WHERE x.pret > y.pret
AND y.titlu = Baze de date, y.autor = Popescu;
82. Se considera pentru actionarii unei firme, tabelul
ACTIUNI (cod_act number(5), seriain number(8), seriasf number(8), valoare number(8))
(unde seriain si seriasf reprezinta seria de inceput, respectiv de sfarsit al intervalului de actiuni
pe care il are un actionar).
Care este secventa corecta care afiseaza suma necesara firmei pentru plata tuturor
devidentelor (numarul de actiuni inmultit cu valoarea unei actiuni)?
a. SELECT SUM((seriain+seriasf)*valoare))
FROM ACTIUNI;
b. SELECT SUM((seriasf-seriasf)*valoare))
FROM ACTIUNI;
c. SELECT SUM((seriain-seriasf)*valoare))
FROM ACTIUNI;
d. SELECT SUM((seriasf-seriain+1)*valoare))
FROM ACTIUNI;
83. Se considera pentru actionarii unei firme, urmatoarele tabele
ACTIONARI(nume varchar2(20), cod_act number(5))
ACTIUNI (cod_act number(5), seriain number(8), seriasf number(8), valoare number(8))
(unde seriain si seriasf reprezinta seria de inceput, respectiv de sfarsit al intervalului de actiuni
pe care il are un actionar).
Care este secventa corecta care afiseaza pentru un actionar (introdus de la tastatura),
intervalele
seriilor actiunilor sale?
a. SELECT a.seriain, a.seriasf, b.nume
FROM actiuni a, actionari b
WHERE a.cod_act=b.cod_act AND b.nume=&x;
b. SELECT a.seriain, a.seriasf, b.nume
FROM actiuni , actionari
WHERE a.cod_act=b.cod_act AND nume=&x;
c. SELECT a.seriain, a.seriasf, b.nume
FROM actiuni a, actionari b
WHERE a.cod_act=b.cod_act ;
d. SELECT a.seriain, a.seriasf, b.nume
FROM actiuni a, actionari b
WHERE a.cod_act=b.cod_act OR b.nume=&x;
84. Se considera urmatorul tabel:
PROFESORI

cod_prof# cod_fac nume salariu grad_didactic

Care este comanda corecta prin care se afiseaza numarul de profesori pentru care gradul
didactic este cunoscut (a fost introdusa o valoare pentru atributul grad_didactic)?

SELECT COUNT(grad_didactic)
FROM PROFESORI;

SELECT COUNT(*)
FROM PROFESORI
WHERE grad_didactic != NULL;

SELECT
COUNT(cod_prof)
FROM PROFESORI
WHERE grad_didactic = 0
85. Se da tabelul VANZARI cu urmatoarea structura:
cod# cod_produs pret cantitate data
Care este comanda corecta ca afiseaza numarul de bucati vandute pana in prezent din produsul
X?
SELECT SUM(cantitate)
FROM vanzari
WHERE PRODUS = X
86. Se da urmatoarea vizualizare
CREATE VIEW v_angajati
AS
SELECT cod_ang, nume, prenume, salariu, data_angajarii
FROM angajati
WITH READ ONLY;
Care dintre urmatoarele comenzi este corecta?
a. INSERT INTO v_angajati
VALUES (10, Ion, Daniel, 1000,05/12/2009);
b. DELETE FROM v_angajati
WHERE salariu > 1000;
c. SELECT *
FROM v_angajati;
d. UPDATE v_angajati
SET salariu = salariu + 500
WHERE cod_angajat = 10;
87. Se da urmatoarea vizualizare
CREATE VIEW v_angajati
AS
SELECT cod_ang, nume, prenume, salariu, cod_departament
FROM angajati
WHERE cod_departament = 30
WITH CHECK OPTION;
Care dintre urmatoarele comenzi este corecta?
a. INSERT INTO v_angajati
VALUES (10, Ion, Daniel, 1000, 505);
b. SELECT *
FROM v_angajati
WHERE salariu > 505;
c. UPDATE v_angajati
SET cod_departament= 505
WHERE cod_departament = 30;
88. Se da urmatoarea vizualizare
CREATE VIEW v_angajati AS
SELECT cod_ang, nume, prenume, salariu, cod_departament
FROM angajati
WHERE cod_departament = 30
WITH CHECK OPTION;
Care dintre urmatoarele comenzi nu se incheie cu o eroare?
SELECT *
FROM v_angajati
WHERE salariu > 505;

UPDATE v_angajati
SET COD_DEPARTAMENT = 505
WHERE COD_DEPARTAMENT = 30
89. Se da urmatoarea vizualizare
CREATE VIEW v_angajati AS
SELECT cod_ang, nume, prenume, salariu, cod_departament
FROM angajati
WHERE cod_departament = 30
WITH READ ONLY;
Care dintre urmatoarele comenzi este permisa asupra vizualizarii definite?
SELECT *
FROM v_angajati
WHERE salariu > 505;
90. Se da urmatoarea vizualizare
CREATE VIEW v_angajati AS
SELECT cod_ang, nume, prenume, salariu, data_angajarii
FROM angajati;
Care dintre urmatoarele comenzi realizate asupra acestei vizualizari se termina cu o eroare?
ALTER VIEW v_angajati
ADD COLUMN (email VARCHAR2(20));
91. Se da vizualizarea
CREATE VIEW v_angajati AS
SELECT cod_angajat, nume, prenume, salariu, cod_departament
FROM angajati
WHERE cod_departament=30
WHITH CHECH OPTION
Care este comanda corecta?
SELECT *
FROM v_angajati
WHERE salariu>505
92. Sintaxa corecta pentru o restrictie NOT NULL este
a. nume_coloana REFERENCES NOT NULL
b. nume_coloana tip_de_date IS NOT NULL
c. nume_coloana tip_de_date NOT NULL
d. DEFAULT [NULL | NOT NULL]
93. Stiind ca participa_la este o relatie m:n intre entitatile cursanti si cursuri, iar atributele
cod_cursant, cod_curs si data_start identifica in mod unic unic inregistrarile din tabelul
asociativ participa_la, alegeti varianta corecta care determina crearea acestui tabel,
specificandu-se si constrangerile de integritate.

CREATE TABLE PARTICIPA_LA (
cod_cursant NUMBER(2),
cod_curs NUMBER(2),
data_start DATE,
data_end DATE,
CONSTRAINT pk PRIMARY KEY
(cod_cursant, cod_curs, data_start),
FOREIGN KEY (cod_cursant) REFERENCES
CURSANTI (cod_cursant),
FOREIGN KEY (cod_curs) REFERENCES
CURSURI(cod_curs));

CREATE TABLE PARTICIPA_LA (
cod_cursant NUMBER(2),
cod_curs NUMBER(2),
data_start DATE DEFAULT SYSDATE,
data_end DATE,
CONSTRAINT pk PRIMARY KEY (cod_cursant, cod_curs, data_start),
CONSTRAINT fk1 REFERENCES CURSANTI (cod_cursant),
CONSTRAINT fk2 REFERENCES CURSURI(cod_curs));
94. Utilizarile valide ale instructiunii ALTER TABLE nu includ
a. Adaugarea coloanelor
b. Eliminarea unei chei primare
c. Redenumirea unui tabel
d. Adaugarea unei restrictii

GRILA PENTRU LICENTA VARA 2011
1. A doua forma normala rezolva anomaliile cauzate de
a. Grupurile repetitive
b. Dependentele partiale de cheia primara
c. Grupurile repetitive si atributele multivaloare
d. Dependentele tranzitive
2. A treia forma normala rezolva anomaliile cauzate de
a. Dependentele partiale de cheia primara
b. Grupurile repetitive
c. Dependentele tranzitive
d. Atributele multivaloare
3. Care este comanda corecta care afiseaza daca exista angajati care nu lucreaza in
departamentul Contractari si al caror salariu coincide cu salariul unui angajat din
departamentul Contractari?

a. SELECT nume, salariu, cod_depart
FROM salariati
WHERE salariu IN (SELECT salariu FROM salariati , department d
WHERE s.cod_depart = d.cod_depart AND nume_depart <> Contractari)
AND cod_depart= (SELECT cod_depart FROM department
WHERE nume_depart = Contractari);

b. SELECT nume, salariu, cod_depart
FROM salariati
WHERE salariu IS IN (SELECT salariu FROM salariati , department
WHERE s.cod_depart = d.cod_depart , nume_depart = Contractari)
AND cod_depart<> (SELECT cod_depart FROM department
WHERE nume_depart = Contractari);

c. SELECT nume, salariu, cod_depart
FROM salariati
WHERE (salariu) IN (SELECT salariu FROM salariati s, department d
WHERE s.cod_depart = d.cod_depart AND nume_depart = Contractari)
AND cod_depart<> (SELECT cod_depart FROM department
WHERE nume_depart = Contractari);
4. Care este comanda corecta care afiseaza numele si salariul angajatilor condusi direct de
Ionescu Mihai?
a. SELECT nume, salariu
FROM salariati
WHERE cod_sef != (SELECT cod_angajat FROM salariati
WHERE nume ='Ionescu' AND prenume ='Mihai' );
b. SELECT nume, salariu
FROM salariati
WHERE cod_sef = (SELECT cod_angajat FROM salariati
WHERE nume ='Ionescu', prenume ='Mihai' );
c. SELECT nume, salariu
FROM salariati
WHERE cod_sef = Ionescu Mihai';
d. SELECT nume, salariu
FROM salariati
WHERE cod_sef = (SELECT cod_angajat FROM salariati
WHERE nume ='Ionescu' AND prenume ='Mihai' );
5. Care este comanda corecta care listeaza numele functiilor salariatilor care lucreaza in
departamentul 30, fara duplicate?
a. SELECT DISTINCT nume_functie
FROM salariati s, functii f
WHERE cod_functie=cod_functie
AND cod_departament= 30;
b. SELECT DISTINCT nume_functie
FROM salariati s, functii f
WHERE s.cod_functie=f.cod_functie
AND cod_departament= 30;
c. SELECT DISTINCT nume_functie
FROM salariati, functii
WHERE s.cod_functie=f.cod_functie
AND cod_departament= 30;
d. SELECT nume_functie
FROM salariati s, functii f
WHERE s.cod_functie=f.cod_functie
AND cod_departament= 30;
6. Care este comanda corecta care obtine titlurile cartilor care momentan sunt
imprumutate (inca nu au fost restituite)? Dataef reprezinta data la care cititor a restituit
efectiv cartea.
a. SELECT titlu
FROM carte
WHERE cod_carte IN
(SELECT DISTINCT cod_carte
FROM imprumuta
WHERE dataef IS NULL);
b. SELECT titlu
FROM carte
WHERE cod_carte NOT IN
(SELECT DISTINCT cod_carte
FROM imprumuta
WHERE dataef IS NULL);
c. SELECT titlu
FROM carte
WHERE cod_carte IN
(SELECT DISTINCT cod_carte
FROM imprumuta
WHERE dataef IS NOT NULL);
7. Care este comanda corecta care obtine titlurile cartilor care au toate exemplarele
imprumutate (coloana dataef reprezinta data la care cititorul a restituit efectiv cartea)?
SELECT titlu
FROM carte
WHERE nrex = (SELECT COUNT(*)
FROM imprumuta
WHERE cod_carte = carte.cod_carte
AND dataef IS NULL);

8. Care este comanda corecta prin care se adauga constrangerea de cheie primara
tabelului
IMPRUMUTA (cod_cititor, cod_carte, data_imprumut, data_restituire)?
a. ALTER TABLE IMPRUMUTA
ADD PRIMARY KEY cod_cititor, PRIMARY KEY cod_carte, PRIMARY KEY
data_imprumut;
b. ALTER TABLE IMPRUMUTA
ADD PRIMARY KEY cod_cititor, cod_carte, data_imprumut;
c. ALTER TABLE IMPRUMUTA
ADD CONSTRAINT cp PRIMARY KEY (cod_cititor, cod_carte, data_imprumut);
d. ALTER TABLE IMPRUMUTA
ADD CONSTRAINT PRIMARY KEY (cod_cititor, cod_carte, data_imprumut);
9. Care este comanda corecta care obtine numele cititorilor si titlurile cartilor imprumutate de
acestia in anul 2008?
a. SELECT nume, titlu
FROM cititor, carte, imprumuta
WHERE imprumuta.cod_carte= carte.cod_carte
AND TO_CHAR(data_imprumut,yyyy) = 2008;
b. SELECT nume, titlu
FROM cititor, carte, imprumuta
WHERE imprumuta.cod_carte= carte.cod_carte
AND imprumuta.cod_cititor= cititor.cod_cititor
AND TO_CHAR(data_imprumut,yyyy) = 2008;
c. SELECT nume, titlu
FROM cititor, carte, imprumuta
WHERE imprumuta.cod_carte= carte.cod_carte
AND imprumuta.cod_cititor= cititor.cod_cititor
AND TO_CHAR(data_imprumut,2008) = 2008;
10. Care comanda care afiseaza numarul de angajati din fiecare departament?
a. SELECT cod_departament, COUNT(*)
FROM salariat;
b. SELECT cod_departament, SUM(cod_angajat)
FROM salariat
GROUP BY cod_departament;
c. SELECT cod_departament, COUNT(*)
FROM salariat
GROUP BY cod_departament;
d. SELECT cod_departament, COUNT()
FROM salariat
GROUP BY cod_departament;
11. Care comanda listeaza numele tuturor angajatilor care au a treia litera din nume 'a'?
a. SELECT nume
FROM salariat
WHERE nume LIKE '__a$';
b. SELECT nume
FROM salariat
WHERE nume LIKE '%a%';
c. SELECT nume
FROM salariat
WHERE nume LIKE '__a%';
12. Care dintre urmatoarele afirmatii nu este adevarata?
Intr-o comanda CREATE TABLE o constrangere de tip NOT NULL poate fi declarata doar la
nivel de tabel.
13. Care dintre urmatoarele afirmatii nu este adevarata?
O comanda INSERT asupra unei vizualizari complexe (extrage date din mai multe tabele,
contine functii sau grupari de date) are efect intotdeauna asupra tabelelor de baza.
14. Care dintre urmatoarele comenzi intoarce numarul zilei din luna carespunzator datei curente?
a. SELECT TO_CHAR(SYSDATE,DDD)
FROM dual;
b. SELECT TO_CHAR(SYSDATE,DAY)
FROM dual;
c. SELECT TO_CHAR(SYSDATE,D)
FROM dual;
d. SELECT TO_CHAR(SYSDATE,DD)
FROM dual;
15. Care este comanda care afiseaza codul departamentelor pentru care salariul minim depaseste
5000?
SELECT cod_departament
FROM salariat
GROUP BY cod_departament
HAVING MIN(salariu)>5000

SELECT cod_departament
FROM salariat
WHERE MIN(salariu) > 5000
GROUP BY cod_departament
16. Care este comanda care afiseaza corect numele, prenumele artistilor precum si titlurile oprelor
lor, deasemenea artistii fara opere expuse si titlurile operelor al caror autor este necunoscut
SeLECT nume, pren , titlu
FROM opera o
FULL OUTER JOIN artist a ON
WHERE o.cod_artist= a.cod_artist;
17. Care este comanda care determina afisarea numarului de angajati care sunt manageri?
SELECT COUNT(distinct cod_manager)
FROM angajati;
18. Care este comanda care determina afisarea numarului de angajati care au manageri?
SELECT COUNT(cod_manager)
FROM angajati;

SELECT COUNT(distinct
cod_manager)
FROM angajati;
19. Care este comanda care determina stergerea tuturor operelor de arta care se afla expuse intr-o
galerie al carei nume contine sirul de caractere arta?
DELETE FROM opera
WHERE cod_galerie IN(SELECT cod_galerie
FROM galerie
WHERE nume_galerie LIKE '%arta%');
20. Care este comanda care nu elimina simultan spatiile de la inceputul si sfarsitul coloanei nume?
a. SELECT TRIM(nume)
FROM salariat;
b. SELECT RTRIM(LTRIM(nume))
FROM salariat;
c. SELECT LTRIM(RTRIM(nume))
FROM salariat;
d. SELECT LTRIM(nume)
FROM salariat;
21. Care este comanda care obtine fiecare carte, codul sau numarul de exemplare care nu au fost
inca restituite?
a. SELECT codc
FROM IMPRUMUTA
WHERE dataef IS NULL
GROUP BY codc

b. SELECT COUNT(*)
FROM IMPRUMUTA
GROUP BY codc

c. SELECT codc, COUNT(*)
FROM IMPRUMUTA
WHERE dataef IS NULL
GROUP BY codc

d. SELECT COUNT(*)
FROM IMPRUMUTA
WHERE dataef =0
GROUP BY codc
22. Care este comanda care sterge toti angajatii din departamentul 80 care nu au comision?
a. DELETE FROM angajati
WHERE comision IS NULL
OR cod_departament = 80;
b. DELETE FROM angajati
WHERE comision IS NULL
AND cod_departament = 80;
c. DELETE FROM angajati
WHERE comision = NULL
AND cod_departament = 80;
23. Care este comanda corecta care afiseaza codul departamentelor pentru care salariul minim
depaseste 5000?
a. SELECT cod_departament
FROM salariat
WHERE MIN(salariu)>5000
GROUP BY cod_departament;
b. SELECT cod_departament
FROM salariat
GROUP BY cod_departament
HAVING MIN(salariu)>5000;
c. SELECT cod_departament
FROM salariat
GROUP BY cod_departament
MIN(salariu)>5000;
24. Care este comanda corecta care afiseaza codul, numele si prenumele artistilor care au cel putin
trei opere de arta expuse n muzeu?
a. SELECT cod_artist, nume, prenume
FROM artist a
WHERE 3 <= (SELECT COUNT(*)
FROM opera);
b. SELECT cod_artist, nume, prenume
FROM artist a
WHERE 3 <= (SELECT COUNT(*)
FROM opera
WHERE cod_artist = a.cod_artist);
c. SELECT cod_artist, nume, prenume
FROM artist a
WHERE 3 <= (SELECT SUM(cod_opera)
FROM opera
WHERE cod_artist = a.cod_artist);
25. Care este comanda corecta care afiseaza informatii referitoare la operele de arta, artistii care
le-au creat si galeriile n care sunt expuse?
a. SELECT cod_opera, titlu, data_crearii, a.cod_artist, nume, prenume,
g.cod_galerie, nume_galerie, adresa
FROM opera o, galerie g, artist a
WHERE o.cod_artist = a.cod_artist;
b. SELECT cod_opera, titlu, data_crearii, a.cod_artist, nume, prenume,
g.cod_galerie, nume_galerie, adresa
FROM opera, galerie, artist
WHERE opera.cod_artist = artist.cod_artist
AND o.cod_galerie = g.cod_galerie;
c. SELECT cod_opera, titlu, data_crearii, a.cod_artist, nume, prenume,
g.cod_galerie, nume_galerie, adresa
FROM opera o, galerie g, artist a
WHERE o.cod_artist = a.cod_artist
AND o.cod_galerie = g.cod_galerie;

26. Care este comanda corecta care afiseaza informatii referitoare la titlul operelor de arta expuse
n galeriile avnd codul 20 sau 40, respectiv numele si prenumele artistilor care le-au realizat?
a. SELECT titlu, nume, prenume
FROM opera JOIN artist
WHERE cod_galerie IN (20, 40);
b. SELECT titlu, nume, prenume
FROM opera NATURAL JOIN artist
WHERE cod_galerie IN (20, 40);
c. SELECT titlu, nume, prenume
FROM opera NATURAL JOIN artist USING cod_artist
WHERE cod_galerie IN (20, 40);
d. SELECT titlu, nume, prenume
FROM opera JOIN artist ON (cod_artist)
WHERE cod_galerie IN (20, 40);
27. Care este comanda corecta care afiseaza informatii referitoare la artisti si operele acestora,
inclusiv cei care nu au opere expuse n cadrul muzeului?
a. SELECT nume, prenume, titlu
FROM opera o
RIGHT OUTER JOIN artist a ON (o.cod_artist = a.cod_artist);
b. SELECT nume, prenume, titlu
FROM opera o
LEFT OUTER JOIN artist a ON (o.cod_artist = a.cod_artist);
c. SELECT nume, prenume, titlu
FROM opera o, artist
WHERE o.cod_artist = a.cod_artist(+);
d. SELECT nume, prenume, titlu
FROM opera o
FULL OUTER JOIN artist a ON o.cod_artist = a.cod_artist;
28. Care este comanda corecta care afiseaza informatii referitoare la titlurile operelor de arta si
firmele la care acestea sunt asigurate? Se vor lua n considerare si operele de arta pentru care
nu au fost ncheiate polite de asigurare.
SELECT titlu, firma
FROM opera o
LEFT OUTER JOIN polita_asig p ON (o.cod_opera = p.cod_opera);

SELECT titlu, firma
FROM opera o, polita
WHERE o.cod_opera(+) = p.cod_opera;
29. Care este comanda corecta care afiseaza jobul pentru care salariul mediu este minim?
a. SELECT cod_job, AVG(salariu)
FROM angajati
GROUP BY cod_job
HAVING AVG(salariu)=(SELECT MIN(salariu)
FROM angajati
GROUP BY cod_job);
b. SELECT cod_job, AVG(salariu)
FROM angajati
GROUP BY cod_job
HAVING AVG(salariu)=(SELECT MIN(AVG(salariu))
FROM angajati
GROUP BY cod_job);
c. SELECT cod_job, AVG(salariu)
FROM angajati
GROUP BY cod_job
HAVING MIN(salariu)=(SELECT AVG(MIN(salariu))
FROM angajati
GROUP BY cod_job);
30. Care este comanda corecta care afiseaza numarul total al cartilor imprumutate in anul 2009?
a. SELECT COUNT()
FROM imprumuta
WHERE TO_CHAR(data_imprumutului,yyyy)=2009;
b. SELECT COUNT(*)
FROM imprumuta
WHERE TO_CHAR(data_imprumutului,yyyy)=2009;
c. SELECT COUNT(*)
FROM imprumuta
WHERE data_imprumutului=2009;
d. SELECT COUNT(*)
FROM imprumuta
WHERE TO_CHAR(data_imprumutului,yy)=2009;
31. Care este comanda corecta care afiseaza numarul total de carti imprumutate si restituite pentru
fiecare cititor al unei biblioteci?
a. SELECT cod_cititor, COUNT()
FROM imprumuta
WHERE data_restituirii NOT NULL
GROUP BY cod_cititor;
b. SELECT cod_cititor, COUNT(*)
FROM imprumuta
WHERE data_restituirii IS NOT NULL;
c. SELECT cod_cititor, COUNT(*)
FROM imprumuta
GROUP BY cod_cititor;
d. SELECT cod_cititor, COUNT(*)
FROM imprumuta
WHERE data_restituirii IS NOT NULL
GROUP BY cod_cititor;
32. Care este comanda corecta care afiseaza numele salariatilor care castiga mai mult decat
salariul mediu pe companie, in ordine crescatoare a salariului?
a. SELECT nume
FROM salariati
WHERE salariu >AVG(salariu);
b. SELECT nume
FROM salariati
WHERE salariu > (SELECT AVG(salariu) FROM salariati)
ORDER BY salariu;
c. SELECT nume
FROM salariati
WHERE salariu > (SELECT AVG(salariu) FROM salariati
ORDER BY salariu);
d. SELECT nume
FROM salariati
WHERE salariu > (SELECT AVG(salariu) FROM salariati)
ORDER BY 1;
33. Care este comanda corecta care afiseaza numele salariatilor si numele departamentelor in care
lucreaza, inclusiv departamentele in care nu lucreaza salariati?
a. SELECT nume_salariat, nume_departament
FROM salariati s, departamente d
WHERE s.cod_departament = d.cod_departament;
b. SELECT nume_salariat, nume_departament
FROM salariati s, departamente d
WHERE s.cod_departament(+) = d.cod_departament;
c. SELECT nume_salariat, nume_departament
FROM salariati s, departamente d
WHERE s.cod_departament = d.cod_departament(+);
d. SELECT nume_salariat, nume_departament
FROM salariati s, departamente d
WHERE s.cod_departament(+) = d.cod_departament(+);
34. Care este comanda corecta care afiseaza numele si prenumele artistilor, precum si titlurile
operelor create de acestia? Se vor afisa si artistii care nu au opere expuse n cadrul muzeului,
precum si titlurile operelor al caror autor este necunoscut.
a. SELECT nume, prenume, titlu
FROM opera o
RIGHT OUTER JOIN artist a ON (o.cod_artist = a.cod_artist);
b. SELECT nume, prenume, titlu
FROM opera o, artist a
WHERE o.cod_artist(+) = a.cod_artist(+);
c. SELECT nume, prenume, titlu
FROM opera o
FULL OUTER JOIN artist a ON (o.cod_artist = a.cod_artist);
d. SELECT nume, prenume, titlu
FROM opera o
LEFT OUTER JOIN artist a ON (o.cod_artist = a.cod_artist);
35. Care este comanda corecta care afiseaza pentru fiecare artist titlul si valoarea celei mai ieftine
opere de arta expuse n muzeu?
a. SELECT titlu, cod_artist, valoare
FROM opera
WHERE valoare IN (SELECT MIN(valoare)
FROM opera
GROUP BY cod_artist);
b. SELECT titlu, cod_artist, valoare
FROM opera
WHERE valoare = (SELECT MIN(valoare)
FROM opera);
c. SELECT titlu, cod_artist, valoare
FROM opera
WHERE valoare = (SELECT MIN(valoare)
FROM opera
ORDER BY cod_artist);
36. Care este comanda corecta care afiseaza pentru fiecare artist titlul si valoarea celei mai ieftine
opere de arta expuse de in muzeu?
SELECT titlu, cod_artist, valoare
FROM opera o
WHERE valoare = (SELECT MIN(valoare)
FROM opera
WHERE cod_artist = o.cod_artist);
37. Care este comanda corecta care afiseaza titlul tuturor cartilor imprumutate?
SELECT titlu
FROM carte
WHERE nrex=(SELECT COUNT(*)
FROM imprumuta
WHERE cod_carte=carte.cod_carte
AND dataef IS NULL
38. Care este comanda corecta care afiseaza titlul, codul artistului si valoarea operelor create de
artistul caruia i apartine opera avnd codul 200 si care se afla expuse n aceeasi galerie cu
operele al caror cod este 100 sau 110? Se presupune ca o opera are un singur autor.
a. SELECT titlu, cod_artist, valoare
FROM opera
WHERE cod_artist != (SELECT MAX(cod_artist)
FROM opera WHERE cod_opera = 200)
AND cod_galerie IN (SELECT cod_galerie
FROM opera WHERE cod_opera IN (100, 110));
b. SELECT titlu, cod_artist, valoare
FROM opera
WHERE cod_artist = (SELECT cod_artist
FROM opera WHERE cod_opera = 200)
AND cod_galerie IN (SELECT cod_galerie
FROM opera WHERE cod_opera IN (100, 110));
c. SELECT titlu, cod_artist, valoare
FROM opera
WHERE cod_artist = (SELECT cod_artist
FROM opera WHERE cod_opera = 200)
AND cod_galerie NOT IN (SELECT cod_galerie
FROM opera WHERE cod_opera IN (100,
110));
39. Care este comanda corecta care afiseaza toate departamentele care platesc salariatilor lor o
suma totala mai mare decat 20000?
SELECT nume_departament
FROM departament a
WHERE 20000 <
(SELECT sum(salariu) FROM salariat b
WHERE a.cod_departament=b.cod_departament);

SELECT nume_departament
FROM departament
WHERE 20000 <
(SELECT sum(salariu) FROM salariat
WHERE a.cod_departament=b.cod_departament);
40. Care este comanda corecta care afiseaza toate functiile pe care nu lucreaza angajati?
a. SELECT cod_functie
FROM functii
WHERE cod_functie IN
(SELECT cod_functie FROM salariati WHERE cod_functie IS NOT NULL);
b. SELECT cod_functie
FROM functii
WHERE cod_functie NOT IN
(SELECT cod_functie FROM salariati WHERE cod_functie IS NULL);
c. SELECT cod_functie
FROM functii
WHERE cod_functie NOT IN
(SELECT cod_functie FROM salariati);
d. SELECT cod_functie
FROM functii
WHERE cod_functie NOT IN
(SELECT cod_functie FROM salariati WHERE cod_functie IS NOT NULL);
41. Care este comanda corecta care afiseaza:
- codurile departamentelor in care lucreaza cel putin un angajat, iar pentru fiecare dintre
acestea si pentru fiecare manager care lucreaza in departamentul respectiv numarul de
salariati;
- numarul de salariati pentru fiecare departament indiferent de manager;
- numarul total de angajati din companie?
a. SELECT cod_depart, cod_manager, COUNT(*)
FROM salariati
GROUP BY CUBE (cod_depart, cod_manager);
b. SELECT cod_depart, cod_manager, COUNT(*)
FROM salariati
GROUP BY cod_depart, cod_manager;
c. SELECT cod_depart, cod_manager, COUNT(*)
FROM salariati
GROUP BY ROLLUP (cod_depart, cod_manager);
42. Care este comanda corecta care afiseaza:
- valoarea totala a operelor de arta ale unui autor, expuse n cadrul fiecarei galerii;
- valoarea totala a operelor din fiecare galerie, indiferent de autor;
- valoarea totala a operelor fiecarui autor, indiferent de galerie;
- valoarea totala a operelor.
a. SELECT cod_galerie, cod_artist, SUM(valoare)
FROM opera
GROUP BY cod_galerie, cod_artist;
b. SELECT cod_galerie, cod_artist, SUM(valoare)
FROM opera
GROUP BY ROLLUP(cod_galerie, cod_artist);
c. SELECT cod_galerie, cod_artist, SUM(valoare)
FROM opera
GROUP BY CUBE(cod_galerie, cod_artist);
43. Care este comanda corecta care afiseaza:
- valoarea totala a operelor de arta ale unui autor, expuse n cadrul fiecarei galerii;
- valoarea totala a operelor din fiecare galerie, indiferent de autor;
- valoarea totala a operelor.
a. SELECT cod_galerie, cod_artist, SUM(valoare)
FROM opera
GROUP BY cod_galerie, cod_artist;
b. SELECT cod_galerie, cod_artist, SUM(valoare)
FROM opera
GROUP BY ROLLUP(cod_galerie, cod_artist);
c. SELECT cod_galerie, cod_artist, SUM(valoare)
FROM opera
GROUP BY CUBE(cod_galerie, cod_artist);
44. Care este comanda corecta care afiseza:
- codurile departamentelor in care lucreaza cel putin un angajat, iar pentru fiecare
dintre acestea si pentru fiecare manager care lucreaza in departamentul respectiv numarul
de salariati;
- numarul de salariati pentru fiecare departament indiferent de manager;
- numarul de angajati subordonati unui manager indiferent de department;
- numarul total de angajati din companie?
a. SELECT cod_depart, cod_manager, COUNT(cod_angajat)
FROM salariati
GROUP BY CUBE (cod_depart, cod_manager);
b. SELECT cod_depart, cod_manager, COUNT(cod_angajat)
FROM salariati
GROUP BY cod_depart, cod_manager;
c. SELECT cod_depart, cod_manager, COUNT(cod_angajat)
FROM salariati
GROUP BY ROLLUP (cod_depart, cod_manager);
45. Care este comanda corecta care determina artistul pentru care valoare medie a operelor sale de
arta este minima?
SELECT cod_artist, AVG(valoare)
FROM opera
GROUP BY cod_artist
HAVING AVG(valoare) = (SELECT MIN(AVG(valoare))
FROM opera
GROUP BY cod_artist);
46. Care este comanda corecta care determina stergerea tuturor angajatiilor din departamentul 80
care nu au comision?
DELETE FROM angajati
WHERE comision IS NULL
AND cod_departament = 80;
47. Care este comanda corecta care listeaza fara duplicate, codul operelor de arta (numeric), codul
(numeric) si numele artistilor (sir de caractere)?
a. SELECT cod_opera, cod_artist, null nume
FROM opera
UNION ALL
SELECT null, cod_artist, nume
FROM artist;
b. SELECT cod_opera, cod_artist, TO_CHAR(null) nume
FROM opera
UNION
SELECT TO_NUMBER(null), cod_artist, nume
FROM artist;
c. SELECT cod_opera, cod_artist, nume
FROM opera
UNION
SELECT cod_artist, nume
FROM artist;
48. Care este comanda corecta care obtine codurile cartilor care se gasesc in biblioteca in mai
putin de 20 exemplare si care au fost mprumutate de cel putin trei ori?
a. SELECT codcarte FROM carte
WHERE nrex < 20
MINUS
SELECT codcarte FROM imprumuta
GROUP BY codcarte
HAVING COUNT(*) > 3;
b. SELECT codcarte FROM carte
WHERE nrex < 20
INTERSECT
SELECT codcarte FROM imprumuta
GROUP BY codcarte
HAVING COUNT(*) > 3;
c. SELECT codcarte FROM carte
WHERE nrex < 20
UNION
SELECT codcarte FROM imprumuta
GROUP BY codcarte
HAVING COUNT(*) > 3;
49. Care este comanda corecta care obtine numele angajatilor care castiga salariul maxim in
departamentul
in care lucreaza?
a. SELECT nume
FROM salariati s
WHERE salariu =(SELECT MIN(salariu)
FROM angajati );
b. SELECT nume
FROM salariati
WHERE salariu =(SELECT salariu
FROM salariati
WHERE salariu = MIN(salariu));
c. SELECT nume
FROM salariati s
WHERE salariu =(SELECT MIN(salariu)
FROM angajati
WHERE cod_departament=s.cod_departament);
50. Care este comanda corecta care obtine numele cititorilor care sunt in intarziere cu predarea
cartilor (dataef reprezinta data la care cititorul a restituit efectiv cartea, datares este data la care
cititorul trabuia sa restituie cartea)?
SELECT nume
FROM cititor
WHERE cod_cititor IN (SELECT DISTINCT cod_cititor
FROM imprumuta
WHERE dataef IS NULL
AND datares<SYSDATE);
51. Care este comanda corecta care obtine numele primilor trei angajati care au cele mai mari
salarii?
a. SELECT nume
FROM angajati a
WHERE 3>(SELECT COUNT(*)
FROM angajati
WHERE salariu > a.salariu);
b. SELECT nume
FROM angajati a
WHERE COUNT(*) >(SELECT 3
FROM angajati
WHERE salariu > a.salariu);
c. SELECT nume
FROM angajati
WHERE 3>(SELECT COUNT(*)
FROM angajati);
52. Care este comanda corecta care pentru fiecare facultate, insereaza in tabelul
TOTALURI(cod_fac, nr_prof, total_sal_fac) numarul de profesori si suma salariilor pe care
facultatea o plateste profesorilor sai?
a. INSERT TO TOTALURI
SELECT COD_FAC, COUNT(*) , SUM(SALARIU)
FROM PROF
ORDER BY COD_FAC;
b. INSERT INTO TOTALURI
SELECT COD_FAC, COUNT(*) , SUM(SALARIU)
FROM PROF ;
c. INSERT INTO TOTALURI
SELECT COD_FAC, COUNT(*) , SUM(SALARIU)
FROM PROF
GROUP BY COD_FAC;
d. INSERT INTO TOTALURI
SELECT COD_FAC, SUM(COD_PROF), SUM(SALARIU)
FROM PROF
GROUP BY COD_FAC;
53. Care este comanda corecta ce afiseaza numele si data angajarii pentru salariatii care au fost
angajati dupa angajatul avand codul 10, in ordine descrescatoare a numelui?
SELECT nume nume_angajat, data_angajarii
FROM salariat
WHERE data_angajarii >
(SELECT data_angajarii FROM salariat WHERE cod_angajat = 10)
ORDER BY nume_angajat DESC
54. Care este comanda corecta prin care se adauga tabelului produse doua coloane noi, denumite
categorie si stoc_curent?
b. ALTER TABLE PRODUSE ADD (categorie CHAR(20), stoc_curent NUMBER(2));
55. Care este comanda corecta prin care se elimina din tabelul produse coloanele categorie si
stoc_curent?
ALTER TABLE PRODUSE DROP categorie, stoc_curent;
56. Care este comanda corecta prin care se modifica salariul si comisionul celui mai prost platit
salariat din firma, astfel incat sa fie egale cu salariul si comisionul angajatului al carui cod este
100?
UPDATE angajati
SET (salariu,comision)= (SELECT salariu, comision
FROM angajati WHERE cod_angjat=100)
WHERE salariu = (select min(salariu) FROM angajati);
57. Care este comanda corecta prin care se obtin angajatii care au avut in trecut si alte joburi fata
de cel curent?
SELECT cod_angajat
FROM angajati
INTERSECT
SELECT cod_angajat
FROM istoric_joburi;

SELECT cod_angajat
FROM angajati
INTERSECT
SELECT cod_angajat
FROM istoric_joburi;

SELECT cod_angajat
FROM istoric_joburi
UNION
SELECT cod_angajat
FROM angajati
58. Care este secventa corecta care afiseaza cate carti au fost imprumutate cel putin de doua ori?
a. SELECT COUNT(COUNT(codcarte))
FROM imprumuta
GROUP BY codcarte
HAVING COUNT(codcarte)>1;
b. SELECT COUNT(codcarte)
FROM imprumuta
GROUP BY codcarte
HAVING COUNT(codcarte)>1;
c. SELECT COUNT(COUNT(codcarte))
FROM imprumuta
WHERE COUNT(codcarte)>1;
d. SELECT COUNT(codcarte)
FROM imprumuta
ORDER BY codcarte
HAVING COUNT(codcarte)>1;
59. Care este secventa corecta care afiseaza numarul de departamente cu cel putin 5 angajati?
SELECT COUNT(COUNT(*))
FROM angajati
GROUP BY cod_departament
HAVING COUNT(*)>5;
SELECT COUNT(cod_angajat)
FROM angajati
GROUP BY cod_departament
HAVING COUNT(cod_angajat)>5;
60. Care este secventa corecta care afiseaza pentru fiecare domeniu de carte, numarul cartilor din
domeniu, media preturilor si numarul total de exemplare?
a. SELECT codcarte, COUNT(*), AVG(pret)
FROM CARTE
GROUP BY codcarte;
b. SELECT coddomeniu, AVG(pret), SUM(nrex)
FROM CARTE
GROUP BY codcarte;
c. SELECT coddomeniu, COUNT(*), AVG(pret), SUM(nrex)
FROM CARTE
GROUP BY coddomeniu;
d. SELECT COUNT(*), AVG(pret), SUM(nrex)
FROM CARTE
ORDER BY codcarte;
61. Care este varianta corecta pentru a crea tabelul CARTE, cu caracteristicile de mai jos (codc
cheie primara, coddom cheie secundara), indicand cheile la nivel de tabel?
(Tabelele DOMENIU_CARTE si CARTE sunt in relatia 1:M).
a. CREATE TABLE CARTE
(codc CHAR(5) PRIMARY KEY,
titlu VARCHAR2(30),
autor VARCHAR2(30),
pret NUMBER(8,2),
nrex NUMBER(3),
coddom CHAR(5) NOT NULL);
b. CREATE TABLE CARTE
(codc CHAR(5) PRIMARY KEY,
titlu VARCHAR2(30),
autor VARCHAR2(30),
pret NUMBER(8,2),
nrex NUMBER(3),
coddom CHAR(5) NOT NULL
REFERENCES DOMENIU(coddom));
c. CREATE TABLE CARTE
(codc CHAR(5),
titlu VARCHAR2(30),
autor VARCHAR2(30),
pret NUMBER(8,2),
nrex NUMBER(3),
coddom CHAR(5) NOT NULL,
PRIMARY KEY (codc),
FOREIGN KEY (coddom) REFERENCES DOMENIU (coddom));
62. Considernd galeriile al caror cod este mai mic decat 50, care este comanda corecta care
calculeaza media valorilor operelor:
- pentru fiecare galerie si, n cadrul acesteia, pentru fiecare artist;
- pentru fiecare artist si, n cadrul acestuia, pentru anii de achizitie corespunzatori.
a. SELECT cod_galerie, cod_artist,
TO_CHAR(data_achizitiei, 'yyyy') "an achizitie",
AVG(valoare) "Valoare medie"
FROM opera WHERE cod_galerie < 50
GROUP BY CUBE (cod_galerie, cod_artist, TO_CHAR(data_achizitiei, 'yyyy'));
b. SELECT cod_galerie, cod_artist,
TO_CHAR(data_achizitiei, 'yyyy') "an achizitie",
AVG(valoare) "Valoare medie"
FROM opera WHERE cod_galerie < 50
GROUP BY GROUPING SETS
((cod_galerie, cod_artist), (cod_artist, TO_CHAR(data_achizitiei, 'yyyy')));
c. SELECT cod_galerie, cod_artist,
TO_CHAR(data_achizitiei, 'yyyy') "an achizitie",
AVG(valoare) "Valoare medie"
FROM opera WHERE cod_galerie < 50
GROUP BY ROLLUP (cod_galerie, cod_artist, TO_CHAR(data_achizitiei, 'yyyy'));
63. Limbajul de definire a datelor (DDL - Data Definition Language) nu include urmatoarea
instructiune
a. INSERT
b. CREATE
c. ALTER
d. DROP
64. Limbajul de manipulare a datelor (DML Data Manipulation Language) nu include
instructiunea
a. INSERT
b. UPDATE
c. DELETE
d. DROP
65. Normalizarea rezolva
a. Anomaliile de stergere, de actualizare si de creare
b. Anomalia de actualizare, de stergere, si de creare
c. Anomalia de inserare, de actualizare si de creare
d. Anomaliile de stergere, de actualizare si de inserare
66. O cheie primara
a. Poate fi compusa numai dintr-un singur atribut
b. Poate fi compusa din mai multe atribute
c. Poate fi compusa dintr-un singur atribut care are si valori NULL
d. Poate fi compusa din zero, unul sau mai multe atribute
67. O uniune (join) fara o clauza WHERE sau o clauza JOIN
a. Nu returneaza nici un rand din setul de rezultate
b. Reprezinta o uniune interna (inner join)
c. Are ca rezultat un produs cartezian
d. Reprezinta o uniune externa (outer join)
68. O uniune externa (outer join) nu
a. Poate fi scrisa in Oracle SQL folosind un simbol (+) in clauza FROM
b. Poate fi scrisa in Oracle SQL folosind un simbol (+) in clauza WHERE
c. Returneaza toate randurile din unul sau din ambele tabele
d. Poate fi catre stanga, catre dreapta sau completa
69. Operatorul UNION
a. Include randurile duplicate in setul de rezultate
b. Combina seturile de rezultate a doua interogari intr-un singur set de rezultate si elimina
randurile duplicate din setul de rezultate
c. Combina doua interogari intr-o singura interogare de tip join
d. Este numit JOIN in unele implementari SQL
70. Pentru profesorii titulari, sa se maresca cumulul cu 10% si sa se rotunjeasca la 2 zecimale.
a. UPDATE PROF SET CUMUL = (CUMUL*1.1)
WHERE TITULAR=Y;
b. MODIFY PROF SET CUMUL = ROUND(CUMUL*1.1,2)
WHERE TITULAR=Y;
c. UPDATE PROF SET CUMUL = ROUND(CUMUL*1.1,2);
WHERE TITULAR=Y;
d. UPDATE PROF SET CUMUL = ROUND(CUMUL*1.1,2);
71. Pentru tabelele
PROFESORI(codp, nume, pren, salariu)
COPII (codc, codp, nume_c, virsta)
care este secventa corecta pentru a afisa profesorii care au copii?
a. SELECT a.nume, a.pren
FROM PROFESORI A
WHERE a.codp IN (SELECT DISTINCT codp
FROM COPII);
b. SELECT a.nume, a.pren
FROM PROFESORI A
WHERE a.codp IN DISTINCT codp
FROM COPII;
c. SELECT a.nume, a.pren
FROM PROFESORI A
WHERE a.codp IN COPII;
72. Pentru tabelele
PROFESORI(codp, nume, pren, salariu)
COPII (codc, codp, nume_c, virsta)
care este secventa corecta pentru a afisa profesorii fara copii?
a. SELECT a.nume, a.pren
FROM PROFESORI A
WHERE a.codp IS NOT (SELECT DISTINCT codp FROM COPII);
b. SELECT a.nume, a.pren
FROM PROFESORI A
WHERE a.codp NOT IN (SELECT DISTINCT codp FROM COPII);
c. SELECT a.nume, a.pren
FROM PROFESORI A
WHERE a.codp NOT IN SELECT codp FROM copii;
73. Pentru tabelele
Angajat(cod_angajat, nume, pren, ..)
Are_functia (cod_angajat, cod_functie, salariu ,..)
Functii(cod_functie, )
care este comanda corecta pentru a calcula suma salariilor angajatului ENE ANA,
care cumuleaza mai multe functii, in diferite compartimente?
a. SELECT COUNT(SALARIU) AS SALARIU_CUMULAT
FROM salariat, are_functia
WHERE s.cod_salariat=a.cod_salariat
AND NUME='ENE' AND PREN='ANA;
b. SELECT Sum(SALARIU) AS SALARIU_CUMULAT
FROM salariat, are_functia
WHERE NUME='ENE' , PREN='ANA;
c. SELECT Sum(SALARIU) AS SALARIU_CUMULAT
FROM salariat s, are_functia a
WHERE s.cod_salariat=a.cod_salariat
AND NUME='ENE' AND PREN='ANA;
74. Prima forma normala rezolva anomaliile cauzate de
a. Grupurile repetitive si atributele multivaloare
b. Dependentele partiale de cheia primara
c. Dependentele tranzitive
d. Relatiile de tip unu-la-mai-multi
75. Relatia m:n devine in modelul relational
a. tabel asociativ cu cheia primara formata numai din doua chei externe pentru cele doua
tabele asociate
b. tabel asociativ cu cheia primara formata din doua chei externe pentru cele doua tabele
asociate plus eventuale coloane aditionale
c. chei externe
d. entitate independenta
76. Sa se creeze tabelul asociativ imprumuta, a carui structura este data mai jos(codc, codcit si
dataim fac parte din cheia primara). Sa se precizeze legatura cu tabelele carte si cititor.
a. IMPRUMUTA (
codc CHAR(5),
codcit CHAR(5),
dataim DATE DEFAULT SYSDATE,
datares DATE,
dataef DATE,
PRIMARY KEY (codc, codcit, dataim),
FOREIGN KEY (codc)
REFERENCES CARTE (codc),
FOREIGN KEY (codcit)
REFERENCES CITITOR(codcit));
b. IMPRUMUTA (
codc CHAR(5) PRIMARY KEY,
codcit CHAR(5) PRIMARY KEY,
dataim DATE DEFAULT SYSDATE PRIMARY KEY,
datares DATE,
dataef DATE,
FOREIGN KEY (codc)
REFERENCES CARTE (codc),
FOREIGN KEY (codcit)
REFERENCES CITITOR(codcit));
c. IMPRUMUTA (
codc CHAR(5) REFERENCES CARTE (codc),
codcit CHAR(5) REFERENCES CITITOR(codcit),
dataim DATE DEFAULT SYSDATE PRIMARY KEY,
datares DATE,
dataef DATE,
PRIMARY KEY (codc, codcit);
77. Sa se creeze tabelul CARTE_INFO(codc, titlu, autor) prin copiere din tabelul
CARTE(codc CHAR(5), titlu VARCHAR2(30), autor VARCHAR2(30),
pret NUMBER(8,2), nrex NUMBER(3), coddom CHAR(5))
selectand cartile care au coddom=I.
a. CREATE TABLE CARTEINFO
(codc CHAR(5),
titlu VARCHAR2(30),
autor VARCHAR2(30),
FROM CARTE
PRIMARY KEY (codc),
FOREIGN KEY (coddom)
REFERENCES DOMENIU (coddom));
b. CREATE TABLE CARTE_INFO
(codc CHAR(5) PRIMARY KEY,
titlu VARCHAR2(30),
autor VARCHAR2(30),
FROM CARTE
WHERE coddom = I;
c. CREATE TABLE CARTE_INFO
AS SELECT codc, titlu, autor
FROM CARTE
WHERE coddom = I;
78. Sa se insereze in tabelul CARTE toate cartile din tabelul CARTE_INFO, presupunand ca
tabelul
CARTE_INFO a fost deja creat.
a. CREATE TABLE CARTE
AS SELECT codc, titlu, autor
FROM CARTE_INFO;
b. INSERT INTO CARTE
SELECT
FROM CARTE_INFO;
c. CREATE TABLE CARTE
AS SELECT *
FROM CARTE_INFO;
d. INSERT INTO CARTE
SELECT *
FROM CARTE_INFO;
79. Sa se modifice pretul cartilor din biblioteca, care se gasesc intr-un numar de exemplare mai
mic decat media numarului de exemplare pe biblioteca. Noua valoare a pretului sa fie
egala cu suma preturilor cartilor scrise de BARBU.
a. UPDATE CARTE
SET pret = (SELECT SUM(pret)
FROM CARTE
WHERE autor = BARBU)
WHERE nrex < (SELECT AVG(nrex)
FROM CARTE);
b. MODIFY CARTE
SET pret = (SELECT SUM(pret)
FROM carte
WHERE autor = BARBU)
WHERE nrex < (SELECT AVG(nrex)
FROM CARTE);
c. UPDATE CARTE
pret = ( SUM(pret)
FROM carte
WHERE autor = BARBU)
WHERE nrex < ( AVG(nrex) FROM CARTE);
d. UPDATE CARTE
pret = (SELECT SUM(pret)
FROM carte
WHERE autor = BARBU and
nrex < ( AVG(nrex) FROM CARTE);
80. Sa se obtina pentru fiecare carte, codul sau si numarul de exemplare care nu au fost inca
restituite.
a. SELECT codc
FROM IMPRUMUTA
WHERE dataef IS NULL
GROUP BY codc;
b. SELECT COUNT(*)
FROM IMPRUMUTA
GROUP BY codc;
c. SELECT codc, COUNT(*)
FROM IMPRUMUTA
WHERE dataef IS NULL
GROUP BY codc;
d. SELECT COUNT(*)
FROM IMPRUMUTA
WHERE dataef =0
GROUP BY codc;
81. Sa se obtina titlurile si preturile cartilor mai scumpe decat cartea avand titlul Baze de date, al
carui autor este Popescu (self join).
a. SELECT x.titlu, x.pret
FROM carte x, y
WHERE x.pret < y.pret
AND y.titlu = Baze de date
AND y.autor = Popescu;
b. SELECT x.titlu, x.pret
FROM carte x, carte y
WHERE x.pret > y.pret
AND y.titlu = Baze de date
AND y.autor = Popescu;
c. SELECT x.titlu, x.pret
FROM carte x, carte y
WHERE x.pret > y.pret
AND titlu = Baze de date
AND autor = Popescu;
d. SELECT x.titlu, x.pret
FROM carte x, carte y
WHERE x.pret > y.pret
AND y.titlu = Baze de date, y.autor = Popescu;
82. Se considera pentru actionarii unei firme, tabelul
ACTIUNI (cod_act number(5), seriain number(8), seriasf number(8), valoare number(8))
(unde seriain si seriasf reprezinta seria de inceput, respectiv de sfarsit al intervalului de actiuni
pe care il are un actionar).
Care este secventa corecta care afiseaza suma necesara firmei pentru plata tuturor
devidentelor (numarul de actiuni inmultit cu valoarea unei actiuni)?
a. SELECT SUM((seriain+seriasf)*valoare))
FROM ACTIUNI;
b. SELECT SUM((seriasf-seriasf)*valoare))
FROM ACTIUNI;
c. SELECT SUM((seriain-seriasf)*valoare))
FROM ACTIUNI;
d. SELECT SUM((seriasf-seriain+1)*valoare))
FROM ACTIUNI;
83. Se considera pentru actionarii unei firme, urmatoarele tabele
ACTIONARI(nume varchar2(20), cod_act number(5))
ACTIUNI (cod_act number(5), seriain number(8), seriasf number(8), valoare number(8))
(unde seriain si seriasf reprezinta seria de inceput, respectiv de sfarsit al intervalului de actiuni
pe care il are un actionar).
Care este secventa corecta care afiseaza pentru un actionar (introdus de la tastatura),
intervalele
seriilor actiunilor sale?
a. SELECT a.seriain, a.seriasf, b.nume
FROM actiuni a, actionari b
WHERE a.cod_act=b.cod_act AND b.nume=&x;
b. SELECT a.seriain, a.seriasf, b.nume
FROM actiuni , actionari
WHERE a.cod_act=b.cod_act AND nume=&x;
c. SELECT a.seriain, a.seriasf, b.nume
FROM actiuni a, actionari b
WHERE a.cod_act=b.cod_act ;
d. SELECT a.seriain, a.seriasf, b.nume
FROM actiuni a, actionari b
WHERE a.cod_act=b.cod_act OR b.nume=&x;
84. Se considera urmatorul tabel:
PROFESORI

cod_prof# cod_fac nume salariu grad_didactic

Care este comanda corecta prin care se afiseaza numarul de profesori pentru care gradul
didactic este cunoscut (a fost introdusa o valoare pentru atributul grad_didactic)?

SELECT COUNT(grad_didactic)
FROM PROFESORI;

SELECT COUNT(*)
FROM PROFESORI
WHERE grad_didactic != NULL;

SELECT
COUNT(cod_prof)
FROM PROFESORI
WHERE grad_didactic = 0
85. Se da tabelul VANZARI cu urmatoarea structura:
cod# cod_produs pret cantitate data
Care este comanda corecta ca afiseaza numarul de bucati vandute pana in prezent din produsul
X?
SELECT SUM(cantitate)
FROM vanzari
WHERE PRODUS = X
86. Se da urmatoarea vizualizare
CREATE VIEW v_angajati
AS
SELECT cod_ang, nume, prenume, salariu, data_angajarii
FROM angajati
WITH READ ONLY;
Care dintre urmatoarele comenzi este corecta?
a. INSERT INTO v_angajati
VALUES (10, Ion, Daniel, 1000,05/12/2009);
b. DELETE FROM v_angajati
WHERE salariu > 1000;
c. SELECT *
FROM v_angajati;
d. UPDATE v_angajati
SET salariu = salariu + 500
WHERE cod_angajat = 10;
87. Se da urmatoarea vizualizare
CREATE VIEW v_angajati
AS
SELECT cod_ang, nume, prenume, salariu, cod_departament
FROM angajati
WHERE cod_departament = 30
WITH CHECK OPTION;
Care dintre urmatoarele comenzi este corecta?
a. INSERT INTO v_angajati
VALUES (10, Ion, Daniel, 1000, 505);
b. SELECT *
FROM v_angajati
WHERE salariu > 505;
c. UPDATE v_angajati
SET cod_departament= 505
WHERE cod_departament = 30;
88. Se da urmatoarea vizualizare
CREATE VIEW v_angajati AS
SELECT cod_ang, nume, prenume, salariu, cod_departament
FROM angajati
WHERE cod_departament = 30
WITH CHECK OPTION;
Care dintre urmatoarele comenzi nu se incheie cu o eroare?
SELECT *
FROM v_angajati
WHERE salariu > 505;

UPDATE v_angajati
SET COD_DEPARTAMENT = 505
WHERE COD_DEPARTAMENT = 30
89. Se da urmatoarea vizualizare
CREATE VIEW v_angajati AS
SELECT cod_ang, nume, prenume, salariu, cod_departament
FROM angajati
WHERE cod_departament = 30
WITH READ ONLY;
Care dintre urmatoarele comenzi este permisa asupra vizualizarii definite?
SELECT *
FROM v_angajati
WHERE salariu > 505;
90. Se da urmatoarea vizualizare
CREATE VIEW v_angajati AS
SELECT cod_ang, nume, prenume, salariu, data_angajarii
FROM angajati;
Care dintre urmatoarele comenzi realizate asupra acestei vizualizari se termina cu o eroare?
ALTER VIEW v_angajati
ADD COLUMN (email VARCHAR2(20));
91. Se da vizualizarea
CREATE VIEW v_angajati AS
SELECT cod_angajat, nume, prenume, salariu, cod_departament
FROM angajati
WHERE cod_departament=30
WHITH CHECH OPTION
Care este comanda corecta?
SELECT *
FROM v_angajati
WHERE salariu>505
92. Sintaxa corecta pentru o restrictie NOT NULL este
a. nume_coloana REFERENCES NOT NULL
b. nume_coloana tip_de_date IS NOT NULL
c. nume_coloana tip_de_date NOT NULL
d. DEFAULT [NULL | NOT NULL]
93. Stiind ca participa_la este o relatie m:n intre entitatile cursanti si cursuri, iar atributele
cod_cursant, cod_curs si data_start identifica in mod unic unic inregistrarile din tabelul
asociativ participa_la, alegeti varianta corecta care determina crearea acestui tabel,
specificandu-se si constrangerile de integritate.

CREATE TABLE PARTICIPA_LA (
cod_cursant NUMBER(2),
cod_curs NUMBER(2),
data_start DATE,
data_end DATE,
CONSTRAINT pk PRIMARY KEY
(cod_cursant, cod_curs, data_start),
FOREIGN KEY (cod_cursant) REFERENCES
CURSANTI (cod_cursant),
FOREIGN KEY (cod_curs) REFERENCES
CURSURI(cod_curs));

CREATE TABLE PARTICIPA_LA (
cod_cursant NUMBER(2),
cod_curs NUMBER(2),
data_start DATE DEFAULT SYSDATE,
data_end DATE,
CONSTRAINT pk PRIMARY KEY (cod_cursant, cod_curs, data_start),
CONSTRAINT fk1 REFERENCES CURSANTI (cod_cursant),
CONSTRAINT fk2 REFERENCES CURSURI(cod_curs));
94. Utilizarile valide ale instructiunii ALTER TABLE nu includ
a. Adaugarea coloanelor
b. Eliminarea unei chei primare
c. Redenumirea unui tabel
d. Adaugarea unei restrictii

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