Documente Academic
Documente Profesional
Documente Cultură
Curs1 MN PDF
Curs1 MN PDF
Complexitatea algoritmilor
1/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Pseudocodul
Complexitatea algoritmilor
Cuprins
1 Pseudocodul
Definiţii
Sintaxa declaraţiilor
Sintaxa instrucţiunilor
2 Complexitatea algoritmilor
Timp de calcul
Necesar de memorie
2/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Definiţii
Pseudocodul
Sintaxa declaraţiilor
Complexitatea algoritmilor
Sintaxa instrucţiunilor
Algoritm
Metodă de rezolvare a unei probleme bazată pe
descompunerea în etape simple, elementare.
Pseudocod
Metodă de descriere a algoritmilor.
fără sintaxă strictă;
clar, neambiguu;
cuvinte cheie (în limba română.
Alcătuit din doua feluri de linii
declaraţii - descriu datele;
instrucţiuni - descriu acţiunile.
3/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Definiţii
Pseudocodul
Sintaxa declaraţiilor
Complexitatea algoritmilor
Sintaxa instrucţiunilor
Tipuri de date
Fundamentale (simple)
logic, întreg, real, caracter
Agregate
tablou, înregistrare
tablou real V [10]
V (1), V (5) sau
întreg N V1 , V5
tablou real V [N] 4/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Definiţii
Pseudocodul
Sintaxa declaraţiilor
Complexitatea algoritmilor
Sintaxa instrucţiunilor
Tipuri de date
Fundamentale (simple)
logic, întreg, real, caracter
Agregate
tablou, înregistrare
înregistrare punct
punct.polar
logic polar
punct.coord1
real coord1
punct.coord2
real coord2 4/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Definiţii
Pseudocodul
Sintaxa declaraţiilor
Complexitatea algoritmilor
Sintaxa instrucţiunilor
Instrucţiuni de intrare/ieşire
citeşte N
citeşte q, p ; se admite citirea unei liste de variabile
scrie N
scrie q, p ; se admite scrierea unei liste de variabile
5/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Definiţii
Pseudocodul
Sintaxa declaraţiilor
Complexitatea algoritmilor
Sintaxa instrucţiunilor
Instrucţiunea de atribuire
întreg i
real d, x, y
i =i +1
d =√xy + sin(y )
d= d
d2
+ d3
d= 2
1
d 6/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Definiţii
Pseudocodul
Sintaxa declaraţiilor
Complexitatea algoritmilor
Sintaxa instrucţiunilor
real x
real x real x
x =2
x =2 x =2
dacă x < 0
dacă x < 0 dacă x < 0
x =x +3
x =x +3 x =x +3
x = x/2
x = x/2 x = x/2
x = x2
x = x2 x = x2
•
x = 2x x = 2x
x = 2x
7/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Definiţii
Pseudocodul
Sintaxa declaraţiilor
Complexitatea algoritmilor
Sintaxa instrucţiunilor
Decizia cu alternativă
8/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Definiţii
Pseudocodul
Sintaxa declaraţiilor
Complexitatea algoritmilor
Sintaxa instrucţiunilor
întreg N
întreg i
tablou real x[N]
N=3
x1 = 1
x2 = −1
x3 = 2
i =1
cât timp (i ≥ 1) şi (i ≤ N)
dacă xi ≥ 0
scrie "Elementul ", i ," este pozitiv"
•
i=i+1
•
9/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Definiţii
Pseudocodul
Sintaxa declaraţiilor
Complexitatea algoritmilor
Sintaxa instrucţiunilor
întreg N
tablou real x[N]
real s, ε
întreg k
···
k =0
s=0
repetă
k =k +1
s = s + xk
cât timp |xk | ≥ ε
10/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Definiţii
Pseudocodul
Sintaxa declaraţiilor
Complexitatea algoritmilor
Sintaxa instrucţiunilor
întreg N
tablou real x[N]
real s, ε
întreg k
···
k =0
s=0
repetă
k =k +1
s = s + xk
până când |xk | < ε
10/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Definiţii
Pseudocodul
Sintaxa declaraţiilor
Complexitatea algoritmilor
Sintaxa instrucţiunilor
Ciclul cu contor
întreg N
citeşte N
tablou real a[N, N]
întreg i, j
pentru i = 1, N
pentru j = 1, N
citeşte ai,j
11/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Definiţii
Pseudocodul
Sintaxa declaraţiilor
Complexitatea algoritmilor
Sintaxa instrucţiunilor
Rutine: proceduri
Definiţie:
Apel:
12/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Definiţii
Pseudocodul
Sintaxa declaraţiilor
Complexitatea algoritmilor
Sintaxa instrucţiunilor
Rutine: funcţii
Definiţie:
Apel:
13/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Definiţii
Pseudocodul
Sintaxa declaraţiilor
Complexitatea algoritmilor
Sintaxa instrucţiunilor
Exemplu
; program principal
întreg N
citeşte N
tablou real a[N], b[N]
funcţie produs_scalar(N,v,w)
real p
întreg N
citeşte_vector(N,a)
tablou real v [N], w[N]
citeşte_vector(N,b)
întreg i
p = produs_scalar(N,a,b)
real r
scrie p
r =0
pentru i = 1, N
procedură citeşte_vector(N,x)
r = r + vi wi
întreg N
•
tablou real x[N]
întoarce r
întreg i
pentru i = 1, N
citeşte xi
•
14/33
retur Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Pseudocodul Timp de calcul
Complexitatea algoritmilor Necesar de memorie
T = O(?)
Operaţie elementară
operaţia care durează cel mai mult.
15/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Pseudocodul Timp de calcul
Complexitatea algoritmilor Necesar de memorie
p = 0;
pentru i = 1, n
p = p + ai bi T = O(2n) ≈ O(n)
•
16/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Pseudocodul Timp de calcul
Complexitatea algoritmilor Necesar de memorie
pentru i = 1, n
bi = 0
pentru j = 1, n
bi = bi + aij xj T = O(2n2 ) ≈ O(n2 )
•
•
17/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Pseudocodul Timp de calcul
Complexitatea algoritmilor Necesar de memorie
pentru i = 1, n
pentru j = 1, n
cij = 0
pentru k = 1, n
cij = cij + aik bkj
•
•
•
T = O(2n3 ) ≈ O(n3 )
18/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Pseudocodul Timp de calcul
Complexitatea algoritmilor Necesar de memorie
O(1) < O(log n) < O(n) < O(n log n) < O(n2 ) < . . . O(en ) <
O(n!)
19/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Pseudocodul Timp de calcul
Complexitatea algoritmilor Necesar de memorie
P(x) = a0 + a1 x + . . . + an x n . (1)
n
X
P(x) = a0 + ai x i (2)
i=1
; Varianta 1
P = a0 ;
pentru i = 1, n Nr.
Pn de operaţii elementare:
2
t = ai i=1 (i + 1) ≈ n /2
pentru j = 1, i
t =t ∗x
• T1 = O(n2 /2) ≈ O(n2 )
P = P + t;
• 20/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Pseudocodul Timp de calcul
Complexitatea algoritmilor Necesar de memorie
n
X
P(x) = a0 + a1 t1 + a2 t2 + . . . + an tn = a0 + a i ti , (3)
i=1
unde
t1 = x, ti = ti−1 x, i = 2, . . . , n. (4)
; Varianta 2
P = a0 ;
t = 1;
pentru i = 1, n T2 = O(3n) ≈ O(n)
t =t ∗x
P = P + ai ∗ t
•
21/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Pseudocodul Timp de calcul
Complexitatea algoritmilor Necesar de memorie
; Varianta 3
P = an ;
pentru i = n − 1, 0, −1 T3 = O(2n) ≈ O(n)
P = ai + P ∗ x
•
22/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Pseudocodul Timp de calcul
Complexitatea algoritmilor Necesar de memorie
; Varianta A
întreg i, j, n
real a, b
...
tablou real c[n][n]
pentru i = 1, n
pentru j = 1, n
cij = f (i ∗ a) + f (j ∗ b) ; f definită în altă parte
•
•
; Varianta B
întreg i, j, n
real a, b, p
...
tablou real c[n][n]
pentru i = 1, n
p = f (i ∗ a)
pentru j = 1, n
cij = p + f (j ∗ b)
•
•
Notaţie asimptotică O
T = f (n) = O(g(n))
T = O(g(n)) ⇐⇒ ∃ C > 0 şi n0 a.i. T ≤ Cg(n) (∀) n ≥ n0
26/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Pseudocodul Timp de calcul
Complexitatea algoritmilor Necesar de memorie
M = O(?)
27/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Pseudocodul Timp de calcul
Complexitatea algoritmilor Necesar de memorie
; Varianta A
întreg i, j, n
real a, b
...
tablou real c[n][n]
pentru i = 1, n
pentru j = 1, n
cij = f (i ∗ a) + f (j ∗ b) ; f definită în altă parte
•
•
TA = O(2n2 )
MA = O(n2 + 2) ≈ O(n2 ) 28/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Pseudocodul Timp de calcul
Complexitatea algoritmilor Necesar de memorie
; Varianta B
întreg i, j, n
real a, b, p
...
tablou real c[n][n]
pentru i = 1, n
p = f (i ∗ a)
pentru j = 1, n
cij = p + f (j ∗ b)
•
•
Concluzii
Elaborarea unui algoritm nu se face în faţa calculatorului.
De aceea este nevoie de un pseudolimbaj (pseudocod).
Pseudocodul prezentat este cel pe care îl veţi întâni în
îndrumar. Puteţi să îl alteraţi uşor, fără a fi penalizaţi, dacă
el rămâne clar şi neambiguu.
Elaborarea unui algoritm înseamnă întotdeauna stabilirea
unui compromis între timp de calcul şi necesar de
memorie.
31/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Pseudocodul Timp de calcul
Complexitatea algoritmilor Necesar de memorie
32/33
Gabriela Ciuprina Cap.1. Descrierea şi evaluarea algoritmilor
Pseudocodul Timp de calcul
Complexitatea algoritmilor Necesar de memorie
laborator pentru studentii facultatii de Inginerie electrica, Editura Printech, 2013, disponibil la
http://mn.lmn.pub.ro/indrumar/IndrumarMN_Printech2013.pdf
http://www.lmn.pub.ro/∼gabriela/books/AlgNrExMatlab_MatrixRom2013.pdf