0% found this document useful (0 votes)
37 views60 pages

Curs 01

This document provides an introduction to algorithms and algorithmic languages. It begins by defining an algorithm and explaining some key properties like input, output, termination, and correctness. It then discusses algorithm efficiency and the design of algorithms. The document introduces the concept of data types and some common basic data types. It also presents a simple algorithmic language model involving variables, memory, and basic instructions like assignment. Finally, it provides examples of algorithms and discusses representing algorithms formally, informally, and with pseudocode.

Uploaded by

Brian Andrew
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
37 views60 pages

Curs 01

This document provides an introduction to algorithms and algorithmic languages. It begins by defining an algorithm and explaining some key properties like input, output, termination, and correctness. It then discusses algorithm efficiency and the design of algorithms. The document introduces the concept of data types and some common basic data types. It also presents a simple algorithmic language model involving variables, memory, and basic instructions like assignment. Finally, it provides examples of algorithms and discusses representing algorithms formally, informally, and with pseudocode.

Uploaded by

Brian Andrew
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 60

Algoritmi.

Limbaj algoritmic

SD 2014/2015

Continut

Algoritmi. Introducere

Limbaj algoritmic

Tipuri de date

Tablouri si structuri

FII, UAIC

Curs 1

SD 2014/2015

2 / 55

Exemplu
I

o secventa de numere: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...

FII, UAIC

Curs 1

SD 2014/2015

3 / 55

Exemplu
I

o secventa de numere: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...

secventa Fibonacci

0,
1,
definitia matematica: Fn =

Fn1 + Fn2 ,

FII, UAIC

Curs 1

if n = 0
if n = 1
if n > 1

SD 2014/2015

3 / 55

Exemplu
I

o secventa de numere: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...

secventa Fibonacci

0,
1,
definitia matematica: Fn =

Fn1 + Fn2 ,
I

if n = 0
if n = 1
if n > 1

implemetare C++
int F( int n) {
i f ( n == 0 ) r e t u r n 0 ;
e l s e i f ( n == 1 ) r e t u r n 1 ;
else
r e t u r n F ( n1) + F ( n 2);
}
FII, UAIC

Curs 1

SD 2014/2015

3 / 55

Algoritmi: etimologie

Muhammad ibn Musa al-Khwarizmi - matematician persan; a scris prima


carte de algebra (cca. 830).
I

metode pentru adunarea, nmultirea si mpartirea numerelor.


FII, UAIC

Curs 1

SD 2014/2015

4 / 55

Algoritmi: definit, ie
I

Nu exista o definit, ie standard pentru not, iunea de algoritm.

Cambridge Dictionary:
A set of mathematical instructions that must be followed in a fixed
order, and that, especially if given to a computer, will help to
calculate an answer to a mathematical problem.

Schneider and Gersting 1995 (Invitation for Computer Science):


An algorithm is a well-ordered collection of unambiguous and
effectively computable operations that when executed produces a
result and halts in a finite amount of time.

Gersting and Schneider 2012 (Invitation for Computer Science, 6nd


edition):
An algorithm is ordered sequence of instructions that is guaranteed
to solve a specific problem.
FII, UAIC

Curs 1

SD 2014/2015

5 / 55

Algoritmi: definit, ie

Wikipedia:
In mathematics and computer science, an algorithm is a step-by-step
procedure for calculations. Algorithms are used for calculation, data
processing, and automated reasoning. An algorithm is an effective
method expressed as a finite list of well-defined instructions for
calculating a function. Starting from an initial state and initial input
(perhaps empty), the instructions describe a computation that, when
executed, proceeds through a finite number of well-defined successive
states, eventually producing output and terminating at a final
ending state. The transition from one state to the next is not
necessarily deterministic; some algorithms, known as randomized
algorithms, incorporate random input.

FII, UAIC

Curs 1

SD 2014/2015

6 / 55

Algoritmi: model de calcul, problema rezolvata


Toate definit, iile au ceva n comun:
I

datele/informat, ia s, i procesarea acestora/acesteia n pas, i. Acestea


sunt descrise n general de un model de calcul.
Un model de calcul este format din:
I

memorie - modul de reprezentare a datelor.

instruct, iuni
sintaxa - descrie sintactic pas, ii de procesare;
semantica - descrie pas, ii de procesare realizat, i de execut, ia unei
instruct, iuni; n general este data de o relat, ie de tranzit, ie peste
configurat, ii (sistem tranzit, ional).

un algoritm trebuie sa produca un rezultat, adica un algoritm trebuie


sa rezolve o problem
a.
O problema este n general reprezentata de o pereche
(input, output), unde input reprezinta descrierea datelor de intrare
(instant, a) iar output descrierea datelor de ies, ire (rezultatul).
FII, UAIC

Curs 1

SD 2014/2015

7 / 55

Algoritmi s, i Structuri de date

Algoritm: metoda de rezolvare a unei probleme.

Structuri de date: metoda de a pastra/reprezenta informat, ia.

FII, UAIC

Curs 1

SD 2014/2015

8 / 55

Algoritmi s, i Structuri de date

Algoritm: metoda de rezolvare a unei probleme.

Structuri de date: metoda de a pastra/reprezenta informat, ia.

Algorithms + Data Structures = Programs. Niklaus Wirth

I will, in fact, claim that the difference between a bad programmer and a
good one is whether he considers his code or his data structures more
important. Bad programmers worry about the code. Good programmers
worry about data structures and their relationships. Linus Torvalds

FII, UAIC

Curs 1

SD 2014/2015

8 / 55

Algoritmi: proprietati

input (intrare) zero sau mai multe entitati de date furnizate din
exterior.

output (ies, ire) algoritmul produce informatie.

terminare pentru orice intrare, algoritmul executa un numar finit


de pasi.

corectitudine algoritmul se termina si produce iesirea corecta


pentru orice intrare; spunem ca algoritmul rezolv
a problema data.

FII, UAIC

Curs 1

SD 2014/2015

9 / 55

Algoritmi: eficienta

Un algoritm trebuie sa foloseasca un volum rezonabil de resurse de


calcul: [spat, iu de] memorie si timp [de execut, ie].

Avem nevoie de algoritmi eficienti pentru:


I

a salva timpi de asteptare, spatiu de depozitare, consum energie, etc.;

scalabilitate: putem rezolva probleme de dimensiuni mari cu aceleasi


resurse (CPU, memorie, disc, etc.);

solutii optimizate.

FII, UAIC

Curs 1

SD 2014/2015

10 / 55

Algoritmi: eficienta

timp (secunde)

60

40

Ruby
Scheme
Python
C
Java
C-gcc

20

0
20

25

30

35
n

40

45

50

Figura : Executia algoritmului recursiv F (Fibonacci).

Observat, ie: Comportamentul este diferit n functie de tipul implement


arii; totusi diferentele nu
sunt at
at de substantiale = Problema e algoritmul! (complexitate exponential
a)
FII, UAIC

Curs 1

SD 2014/2015

11 / 55

Proiectarea algoritmilor

Rezolvarea algoritmica a problemelor presupune urmatoarele etape:


I

definirea problemei
I

abstractizeaza detaliile irelevante;

identificarea clasei din care face parte problema s, i a unui algoritm de


construct, ie a solut, iei;

analiza corectitudinii s, i a eficient, ei algoritmului;

implementarea algoritmului;

(optimizare si generalizare).

FII, UAIC

Curs 1

SD 2014/2015

12 / 55

Descrierea algoritmilor
I

informal: limbaj natural.

formal:

notat, ie matematica (mas, ini Turing, lambda-calcul (Church), funct, ii


recursive, etc.);

limbaje de programare: de nivel inalt, de nivel jos, declarative (e.g.,


programare funct, ionala, programare logica). Acesta poate fi s, i un
model informal daca nu exista o semnatica formala pentru limbaj.

semiformal:
I

pseudo-cod: combina notat, ia formala a limbajelor de prgramare cu


limbajul natural;

notat, ie grafica: scheme logice, automate (state machines), diagrame


de activitat, i.

FII, UAIC

Curs 1

SD 2014/2015

13 / 55

Continut

Algoritmi. Introducere

Limbaj algoritmic

Tipuri de date

Tablouri si structuri

FII, UAIC

Curs 1

SD 2014/2015

14 / 55

Limbaj algoritmic

Avem nevoie de un limbaj care este


I

simplu: pentru a fi usor de nteles;

expresiv: pentru a descrie algoritmi;

abstract, n descrierea algoritmului accentul cade pe gandirea


algoritmica si nu pe detaliile de implementare;

un model de calcul adecvat pentru analiza complexitatii algoritmilor,


n special complexitatea timp.

FII, UAIC

Curs 1

SD 2014/2015

15 / 55

Variabila

Nume

Adresa

Atribute (tip de date asociat valorilor memorate)

Instanta a variabilei

FII, UAIC

Curs 1

SD 2014/2015

16 / 55

Modelul de calcul
I

Memoria: structura liniara de celule


I

variabile

pointeri

FII, UAIC

Curs 1

SD 2014/2015

17 / 55

Continut

Algoritmi. Introducere

Limbaj algoritmic

Tipuri de date

Tablouri si structuri

FII, UAIC

Curs 1

SD 2014/2015

18 / 55

Tip de date

Domeniu (colectia de obiecte)

Operatii

Categorii de tipuri de date:


I

Tipuri de date elementare

Tipuri de date structurate de nivel jos


I

operatiile la nivel de component


a

Tipuri de date de nivel nalt


I

FII, UAIC

operatiile implementate de algoritmi utilizator

Curs 1

SD 2014/2015

19 / 55

Tipuri de date elementare

Numere ntregi
I
I

Numere reale
I
I

valori: numere ntregi


operatii: +, -, ...

valori: numere rationale


operatii: +, -, ...

Valori booleene
I
I

valori: true, false


operatii: and, or, not

FII, UAIC

Curs 1

SD 2014/2015

20 / 55

Tipuri de date elementare

Caractere
I
I

valori: a, b, ...
operatii:

Pointeri
I
I
I

valori: adrese de variabile apartinand altui tip, valoarea NULL


operatii:
referire indirecta: *p

FII, UAIC

Curs 1

SD 2014/2015

21 / 55

Tipuri de date elementare

Operatori pentru numere ntregi:


I

aritmetici: a+b, a-b, a*b, a/b, a%b

relationali: a==b, a!=b, a<b, a<=b, a>b, a>=b

operatie
a+b
...

FII, UAIC

timp(operatie)
cost uniform cost logaritmic
O(1)
O(max(loga, logb))

Curs 1

SD 2014/2015

22 / 55

Instructiuni

Expresii

Compuse (bloc): {instructiuni}

Conditionale: if if-else

Iterative: while repeat for

Intreruperea secventei: return

FII, UAIC

Curs 1

SD 2014/2015

23 / 55

Instructiuni

Atribuirea
I

Sintaxa: < variabila >< expresie >

Sematica:
I

se evalueaz
a < expresie > si rezultatul obtinut se memoreaz
a n locatia
desemnat
a de < variabila >
este singura instructiune cu ajutorul c
areia se poate modifica continutul
memoriei

cost uniform O(1), cost logaritmic O(log < expresie >)

FII, UAIC

Curs 1

SD 2014/2015

24 / 55

Atribuirea

Exemplu:
I
Inainte de atribuire:

Dupa atribuirea u v u:

FII, UAIC

Curs 1

SD 2014/2015

25 / 55

Instructiuni

Atribuirea n cazul pointerilor


I

Sintaxa:
< variabila pointer >< expresie >

Sematica:
I

se evalueaz
a < expresie > si rezultatul obtinut se memoreaz
a n locatia
de la adresa stocat
a n < variabila pointer >

Exemplu: p 10

FII, UAIC

Curs 1

SD 2014/2015

26 / 55

Instructiuni
I

if
I

Sintaxa:
if < expresie > then
< secventa instructiuni1 >
else
< secventa instructiuni2 >
if < expresie > then
< secventa instructiuni1 >
Observatie: < expresie > este o expresie cu rezultat boolean dupa
evaluare

Semantica:
I

FII, UAIC

Se evalueaz
a < expresie >. Dac
a rezultatul este true, atunci se execut
a
< secventa instructiuni1 > iar dac
a rezultatul este false, atunci se
execut
a < secventa instructiuni2 > dup
a care instructiunea if se
termin
a
Curs 1

SD 2014/2015

27 / 55

Instructiunea if
I

cost uniform O(1), cost logaritmic O(1)

Exemplu: calcululul minimului a doua numere:


if a < b then
min a
else
min b
sau
min a
if b < a then
min b

FII, UAIC

Curs 1

SD 2014/2015

28 / 55

Instructiuni

while
I

Sintaxa:
while < expresie > do
< secventa instructiuni >

Semantica:
I
I

FII, UAIC

Se evalueaz
a < expresie >
Dac
a rezultatul este true atunci se execut
a < secventa instructiuni >
dup
a care se reia procesul ncep
and cu pasul 1. Dac
a rezultatul este
false atunci executia instructiunii while se termin
a.

Curs 1

SD 2014/2015

29 / 55

Exemplu while

cel mai mic k astfel ncat 7k >= n pentru un n dat


k0
sapte la k 1
while sapte la k < n do
k k +1
sapte la k sapte la k 7

FII, UAIC

Curs 1

SD 2014/2015

30 / 55

Instructiuni
I

repeat
I

Sintaxa:
repeat
< secventa instructiuni >
until < expresie >;

Semantica:
Instructiunea:
repeat
S
until e;
simuleaza executia urmatorului program:
S
while not e do
S

FII, UAIC

Curs 1

SD 2014/2015

31 / 55

Exemplu repeat

cel mai mic k astfel ncat 7k >= n pentru un n dat


k0
sapte la k 1
repeat
k k +1
sapte la k sapte la k 7
until sapte la k >= n;

FII, UAIC

Curs 1

SD 2014/2015

32 / 55

Instructiuni

for
I

Sintaxa:
for < variabila >< expresie1 > to < expresie2 > do
< secventa instructiuni >
sau
for < variabila >< expresie1 > downto < expresie2 > do
< secventa instructiuni >
Observatie: < variabila > este o variabila de tip ntreg, iar
< expresie1 > si < expresie2 > sunt expresii cu rezultat ntreg dupa
evaluare

FII, UAIC

Curs 1

SD 2014/2015

33 / 55

Instructiuni

for
I

Semantica:
for i e1 to e2 do
S
este echivalenta cu:
i e1
temp e2
while i <= temp do
S
i i +1

FII, UAIC

Curs 1

SD 2014/2015

34 / 55

Instructiuni

for
I

Semantica:
for i e1 downto e2 do
S
este echivalenta cu:
i e1
temp e2
while i >= temp do
S
i i 1

FII, UAIC

Curs 1

SD 2014/2015

35 / 55

Subprograme

Limbajul este modular: un program contine un numar de module

Un modul n limbajul prezentat este identificat cu un subprogram

Subprograme:
I
I

Proceduri
Functii

FII, UAIC

Curs 1

SD 2014/2015

36 / 55

Subprograme

Proceduri:
I

Sintaxa:
Procedure nume (lista-parametri-formali)
begin
secventa-instructiuni
end

Apel: NUME(lista-parametri-actuali)
I

FII, UAIC

interfata ntre o procedur


a si modulul care o apeleaz
a se realizeaz
a doar
prin intermediul parametrilor si a variabilelor globale

Curs 1

SD 2014/2015

37 / 55

Proceduri

Exemplu:
Procedure SWAP (x,y)
begin
aux x
x y
y aux
end
Apel:
SWAP(a, b)
SWAP(b, c)

FII, UAIC

Curs 1

SD 2014/2015

38 / 55

Subprograme

Functii:
I

Sintaxa:
Function nume (lista-parametri-formali)
begin
secventa-instructiuni
end
secventa-instructiuni contine macar o instructiune return < expr >

Apel: NUME(lista-parametri-actuali)
utilizat ntr-o expresie: valoarea ntoarsa de functie este cea obtinuta
prin evaluarea < expr >

FII, UAIC

Curs 1

SD 2014/2015

39 / 55

Functii
I

Exemplu:
Function max3(x,y,z)
begin
temp x
if y > temp then
temp y
if z > temp then
temp z
return temp
end
Apel:
max3(a, b, c)
2*max3(a, b, c) > 5

FII, UAIC

Curs 1

SD 2014/2015

40 / 55

Continut

Algoritmi. Introducere

Limbaj algoritmic

Tipuri de date

Tablouri si structuri

FII, UAIC

Curs 1

SD 2014/2015

41 / 55

Tablouri

Ansamblu omogen de variabile numite componentele tabloului

Toate componentele apartin aceluiasi tip

Componentele sunt identificate cu ajutorul indicilor

Tablourile sunt utilizate pentru a reprezenta multimi, secvente


(ordinea elementelor este importanta), matrici

Tablourile pot fi:


I
I

unidimensionale (1-dimensionale)
bidimensionale (2-dimensionale)

FII, UAIC

Curs 1

SD 2014/2015

42 / 55

Tablouri unidimensionale

FII, UAIC

Curs 1

SD 2014/2015

43 / 55

Tablouri unidimensionale

Memoria este o secventa contigua de locatii

Ordinea de memorare ordinea indicilor

Operatiile se realizeaza prin intermediul componentelor


Exemple:
for i 0 to n 1 do
a[i] 0
for i 0 to n 1 do
c[i] a[i] + b[i]

FII, UAIC

Curs 1

SD 2014/2015

44 / 55

Tablouri

Costul operatiilor:
operatie
a[i]
a[i] v

timp(operatie)
cost uniform cost logaritmic
O(1)
O(i + logai )
O(1)
O(i + logv )

unde a este un tablou de dimensiune n, cu valorile a[0], ..., a[n 1]

FII, UAIC

Curs 1

SD 2014/2015

45 / 55

Tablouri bidimensionale

FII, UAIC

Curs 1

SD 2014/2015

46 / 55

Tablouri bidimensionale

I
I

Memorie contigua de mxn locatii


Componentele sunt identificate cu ajutorul a 2 indici:
I
I
I

primul indice are valori {0, 1, . . . , m 1}


al doilea indice are valori {0, 1, . . . , n 1}
variabilele componente :
a[0, 0], a[0, 1], . . . , a[0, n 1], a[1, 0], a[1, 1], . . . , a[1, n 1], . . . , a[m
1, 0], a[m 1, 1], . . . , a[m 1, n 1]

Ordinea de memorare a componentelor este data de ordinea


lexicografica a indicilor

FII, UAIC

Curs 1

SD 2014/2015

47 / 55

Tablouri bidimensionale

Cu analogia de la matrici, un tablou 2-dimensional poate fi privit ca


un tablou 1-dimensional n care fiecare componenta este un tablou
1-dimensional.

Notatie: a[0][0], a[0][1], . . . , a[0][n 1], . . . , a[m 1][0], a[m


1][1], . . . , a[m 1][n 1]

FII, UAIC

Curs 1

SD 2014/2015

48 / 55

Tablouri bidimensionale

Operatiile cu tablori 2-dimensionale se realizeaza prin intermediul


componentelor
for i 0 to m 1 do
for j 0 to n1 do
c[i, j] 0
for k 0 to p1 do
c[i, j] c[i, j] + a[i, k] b[k, j]

FII, UAIC

Curs 1

SD 2014/2015

49 / 55

Siruri de caractere

Pot fi considerate ca fiind tablouri unidimensionale cu elemente de tip


caracter

Constantele sir de caracter se noteaza utilizand :


Sir-de-caractere

Operatii: Concatenarea, notata cu +:


un sir + alt sir = un siralt sir

FII, UAIC

Curs 1

SD 2014/2015

50 / 55

Structuri
I

Structura: ansamblu eterogen de variabile numite campuri.

Structura are un nume si fiecare camp are propriul nume si propriul


tip.

Exemple: o structura pentru a reprezenta puncte n plan are doua


campuri: x s, i y ; o structura pentru a reprezenta o persoana poate
avea trei campuri: nume, varsta, adresa;

Numele complet al unui camp:


punct.x, punct.y
persoana.nume, persoana.varsta, persoana.adresa.strada
daca p este pointer la persoana: p > varsta

FII, UAIC

Curs 1

SD 2014/2015

51 / 55

Structuri

Memoria alocata este o zona contigua; elementele sunt memorate n


ordinea declararii n structura

FII, UAIC

Curs 1

SD 2014/2015

52 / 55

Structuri si pointeri

FII, UAIC

Curs 1

SD 2014/2015

53 / 55

Structuri

Costul operatiilor:
operatie
S.x
S.x v

FII, UAIC

timp(operatie)
cost uniform cost logaritmic
O(1)
O(logSx )
O(1)
O(logv )

Curs 1

SD 2014/2015

54 / 55

Execut, ia unui algoritm

x 0
i 1
while i < 6 do
x x 10 + i
i i +2

FII, UAIC

Pasul
0
1
2
3
4
5
6
7
8
9
10
11
12
Curs 1

Instruct, iunea
x 0
i 1
1<6
x x 10 + i
i i +2
3<6
x x 10 + i
i i +2
5<6
x x 10 + i
i i +2
7<6

1
1
1
3
3
3
5
5
5
7
7

0
0
0
1
1
1
13
13
13
135
135
135

SD 2014/2015

55 / 55

Execut, ia unui algoritm


I

Calcul: succesiunea de pas, i elementari determinat, i de execut, ia


instruct, iunilor ce compun algoritmul.
Configurat, ie: starea memoriei + instruct, iunea curenta;

x 0
i 1
while i < 6 do
x x 10 + i
i i +2

FII, UAIC

Pasul
0
1
2
3
4
5
6
7
8
9
10
11
12
Curs 1

Instruct, iunea
x 0
i 1
1<6
x x 10 + i
i i +2
3<6
x x 10 + i
i i +2
5<6
x x 10 + i
i i +2
7<6

1
1
1
3
3
3
5
5
5
7
7

0
0
0
1
1
1
13
13
13
135
135
135

SD 2014/2015

55 / 55

Execut, ia unui algoritm


I

I
I

Calcul: succesiunea de pas, i elementari determinat, i de execut, ia


instruct, iunilor ce compun algoritmul.
Configurat, ie: starea memoriei + instruct, iunea curenta;
In exemplul de mai jos calculul este dat de secvent, a de configurat, ii
(c0 7 c1 7 . . . 7 c12 ).

x 0
i 1
while i < 6 do
x x 10 + i
i i +2

FII, UAIC

Pasul
0
1
2
3
4
5
6
7
8
9
10
11
12
Curs 1

Instruct, iunea
x 0
i 1
1<6
x x 10 + i
i i +2
3<6
x x 10 + i
i i +2
5<6
x x 10 + i
i i +2
7<6

1
1
1
3
3
3
5
5
5
7
7

0
0
0
1
1
1
13
13
13
135
135
135

SD 2014/2015

55 / 55

You might also like