Documente Academic
Documente Profesional
Documente Cultură
STRUCTURĂ EVALUARE
SĂPTĂMÂNAL CURS: Examen scris final: 6 întrebări: 60%
2 ore de Curs Testari
LABORATOR: Laborator
2 ore de activităţi aplicative: Laborator 2 testări de Examen 30%
laborator pe scris
(prezența obligatorie: condiționează 60%
parcursul
intrarea în examen) semestrului:
Oficiu
10%
30%
Semestrul II are 14 săptămâni
ISP CURS 1 3 ISP CURS 1 4
Recomandări CONŢINUTURI
• Studiați suportul de curs și de laborator înainte de
fiecare curs și laborator. • Analiza complexităţii algoritmilor
• Implementați efectiv codul în C (mediul Code • Recursivitatea
Blocks) pentru programele furnizate.
Tehnica de programare Divide et Impera
• Notați aspectele neclare legate de ceea ce ați
studiat și testat pe calculator și • Căutarea secvențială
discutați între voi
• Căutarea cu santinelă
cea mai eficientă metodă de a învăța este să îl
înveți pe altul. • Căutarea într-un vector ordonat
sau adresați întrebări la Curs atunci când
dezbatem acel aspect. • Căutarea binară
ISP CURS 1 5 ISP CURS 1 6
ISP Curs 1 1
2/14/2018
CONŢINUTURI CONŢINUTURI
• Sortarea cu metoda bulelor
• Căutarea binară uniformă • Sortarea rapidă
• Căutarea prin interpolare • Sortarea prin selecție directă
• Sortarea Heap
• Selecţia maximului
• Sortarea prin inserție directă
• Selecţia minimului și maximului • Sortarea Shell
• Selecţia celor mai mari k elemente • Sortarea prin fuziune
• Sortarea prin numărare
• Selecţia k-elementului
• Sortarea prin numărarea distribuțiilor
ISP CURS 1 7 ISP CURS 1 8
CONŢINUTURI CONŢINUTURI
• Tehnica de programare backtracking • Tehnica de programare Greedy
Problema reginelor Problema planificării spectacolelor
Structura unei implementări backtracking Problema rucsacului
Generarea permutărilor Problema săriturii calului
Generarea combinărilor Problema comis-voiajorului
Generarea aranjamentelor
• Tehnica programării dinamice
Problema colorării hărţilor
Problema triunghiului
Problema comis-voiajorului
Problema subșirului crescător de lungime
Problema labirintului maximă
Problema săriturii calului Problema rucsacului
ISP CURS 1 9 ISP CURS 1 10
CURS 1
- suport de curs -
12
ISP Curs 1 2
2/14/2018
Analiza complexităţii algoritmilor • Dintre cele două resurse de calcul, spaţiu (memorie)
şi timp (procesor),
cea critică este timpul de execuţie.
• Se defineşte dimensiunea datelor de intrare ca
fiind • În continuare vom analiza doar dependenţa dintre
numărul de valori pentru datele de intrare ale timpul de execuţie (înţeles ca număr de repetări ale
unui algoritm. unor operaţii elementare) al unui algoritm şi
dimensiunea datelor de intrare.
• Pentru compararea timpului de execuţie a doi • În funcţie de complexitatea algoritmului, evaluarea
algoritmi care rezolva aceeaşi problemă, timpului de execuţie se poate face prin:
se va folosi aceeaşi dimensiune a datelor de numărul de operaţii elementare ale algoritmului
intrare.
timpul mediu al algoritmului.
ISP CURS 1 17 ISP CURS 1 18
ISP Curs 1 3
2/14/2018
ISP Curs 1 4
2/14/2018
ISP Curs 1 5
2/14/2018
• Pentru a calcula timpul mediu de calcul, va trebui • Înlocuim pe r în expresia numărului de operaţii
să analizăm toate cazurile posibile elementare executate de al doilea algoritm:
în total n cazuri: 5 + 4*(n-1) + r
1. nicio atribuire max <- x, şi obţinem:
2. o atribuire,
• 5 + 4*(n-1) + (n-1)/2 = 5 + 4,5*(n-1) = 0,5 + 4,5*n
3. două atribuiri,
…………………………., • Eficienţa unui algoritm se notează cu T(n) şi este o
n. n-1 atribuiri. funcţie care depinde de variabila n – dimensiunea
datelor de intrare.
• numărul mediu de operaţii fiind dat de r calculat
astfel: r = (0 + 1 + 2 + … + n-1)/n = (n-1)/2 • Fiind un timp, T(n) se măsoară în unităţi de timp
(e.g. secunde).
ISP CURS 1 31 ISP CURS 1 32
ISP Curs 1 6
2/14/2018
• Ordinul / clasa de complexitate se notează O(f(n)), • Pentru algoritmul cu eficienţa T(n) = 5n3 + 2n2 + 7,
unde f(n) reprezintă termenul determinant din ordinul de complexitate este O(n3)
funcţia T(n).
• În funcţie de ordinul de complexitate, există
• Pentru determinarea ordinului de complexitate, în următoarele tipuri de algoritmi (c = constantă):
funcţia T(n) se realizează următoarele simplificări: Tipul Tipul
Complexitate Complexitate
se păstrează doar termenul determinant deoarece algoritmului algoritmului
ceilalţi termeni au valori neglijabile faţă de O(1) constant O(n2) pătratic
termenul determinant
O(log n) logaritmic O(nc) polinomial
pentru valori foarte mari ale lui n.
O(n) liniar O(cn) exponenţial
conform principiului invarianţei coeficientul
termenului rămas din expresia eficienţei devine 1. O(n*log n) liniar logaritmic O(n!) factorial
ISP CURS 1 39 ISP CURS 1 40
constanta c = 2
ISP Curs 1 7
2/14/2018
ISP Curs 1 8