Documente Academic
Documente Profesional
Documente Cultură
SPORTULUI
COLEGIUL TEHNIC MTSARI
PROF. COORDONATOR:
SCEANU ION
ELEV:
CIORTAN ALEXANDRA
ANDREEA
CLASA a XII-a B
PROFIL: MatematicInformatic
MINISTERUL EDUCAIEI,CERCETRII,TINERETULUI I
SPORTULUI
COLEGIUL TEHNIC MTSARI
PROF. COORDONATOR:
SCEANU ION
ELEV:
CIORTAN ALEXANDRA
ANDREEA
CLASA a XII-a B
PROFIL: MatematicInformatic
Cuprins
Capitolul I.FORMULAREA TEMEI....................................................................3
1.1.ASPECTE GENERALE LEGATE DE TEMA LUCRRII .
DOMENIUL N CARE SE NCADREAZ LUCRAREA.....................................3
1.2.EXPLICAREA PROBLEMEI PROPUSE SPRE REZOLVARE....................3
1.3.EXPLICAII FINALE LEGATE DE TEMA PROPUS
UTILITATEA TEMEI, ASPECTE REZOLVATE DE ACEASTA, POSIBILITI DE
DEZVOLTARE A TEMEI....................................................................................4
ARBORI......................................................................................................5
OPERATII ELEMENTARE..........................................................................6
ARBORI PARTIALI....................................................................................8
ARBORI BINARI.......................................................................................11
ALGORITMI ELEMENTARI.....................................................................14
ARBORI DE SORTARE............................................................................20
EVALUREA EXPRESIILOR ARITMETICE...............................................28
FORMA POLONEZA A EXPRESIILOR ARITMETICE.............................29
BIBLIOGRAFIE.........................................................................................37
acestei
o serie de avantaje
ARBORI
Definiie:Un graf conex i fr circuite se numete
arbore.
Un graf neconex ale crui componente conexe sunt arbori se
numete pdure.
Un arbore pentru care se precizeaz un nod numit rdcin
iar celelalte noduri pot fi repartizate n mulimi disjuncte, astfel
nct n fiecare dintre aceste mulimi exist un nod vecin cu
rdcin iar subgrafurile generate de acestea au aceeai
proprietate
se
numete
arborescen..Dac
ordinea
subgrafurilor are importan atunci arborescena se numete
arbore ordonat.
Grafic nodurile unei arborescene se deseneaz pe
nivele.Rdcina se afl pe nivelul 0, vrfurile vecine pe nivelul 1,
i aa mai departe. Numrul de nivele determin adncimea
arborelui.
Exemple Graful
este un arbore
-nivel 1
-nivel 2
-nivel 3
fig.1
OPERATII ELEMENTARE
Construcia
algoritmului:
arborescenei
se
realizeaz
conform
begin
if p<>nil then
begin write('Nr. de fii ai nodului cu cheia ',p^.cheie,' ');
readln(p^.nrfii);
for i:=1 to p^.nrfii do
begin new(p^.fiu[i]);
write(' Cheia din fiul ',i,' al nodului cu cheia ',p^.cheie,' ');
readln(p^.fiu[i]^.cheie);
end;
for i:=1 to p^.nrfii do constr(p^.fiu[i]);
end
end;
.
...
{programul principal}
new(rad);
write('Cheia din nodul radacina ');readln(rad^.cheie);
constr(rad);
.
Pentru
arborescena
din fig.1 obinem irul:
2,3,1,5,4,6
n lime
Se utilizez o coad n care pstrm pointeri la nodurile de pe
nivelul curent
lista=^nodl;
nodl=record
val:point;
urm:lista
end;
p:=p^.urm;inc(k);
end;
afislista:=k
end;
ARBORI PARTIALI
Definiie:Fie G=(V(G),M(G)) un graf neorientat.Se
numete arbore parial al grafului G, un graf parial care
este arbore.
Din aceast definiie se poate deduce c exist arbori pariali
numai n cazul grafurilor conexe.
Vom considera n continuare graful ponderat.Fiecrei muchii
ij din graf i se asociaz un numr strict pozitiv numit costul
muchiei notat cu cost(ij).Rezult de aici c avem funcia
cost:M(G)->R+
Exemplu:Pentru graful
parial
3
1
1
2
avem initial
.1
componenta
componenta
conex nr.1
conex nr.5
.2
componenta
conex nr.2
4
componenta
conex nr.3
5
componenta
conex nr.4
10
componenta
componenta
conex nr.1
conex nr.5
4
componenta
5
componenta
conex nr.3
conex nr.4
.3
componenta
componenta
conex nr.1
.5
componenta
conex nr.3
conex
nr.5
componenta
conex nr.1
componenta
conex nr.3
11
2
5
12
ARBORI BINARI
Definiie:Un arbore binar este o muime finit A de
noduri care poate fi
a)mulimea vid
b)un arbore ordonat n care fiecare nod are cel
mult doi descendeni.
Pentru fiecare nod dintr-un arbore binar distingem
fiul stng i fiul drept.Fiul stng este rdcina
subarborelui stng iar fiul drept rdcina subarborelui
drept.Reamintim c un nod care nu are fii se numete
frunz.(sau nod pendant).
Vom indica pentru fiecare nod o ,,informaie util i
legturile spre fii.
Un arbore binar n care fiecare nod nependant are
exact doi fii se numete arbore binar complet.
Exemple:
13
un fiu)
frunze
fig.2
Arborele din fig.3 este complet.
fig.3
Un arbore binar n care fiecare nod nependant are
exact doi fii i toate frunzele se gsesc pe acelai nivel se
numete arbore binar plin.
Din aceast definiie rezult c avem 2k-1 noduri dispuse pe
nivelurile 0,1,k-1 i pe fiecare nivel j avem 2j noduri.
Aceast proprietate se demonstreaz foarte simplu prin
inducie.
Pe nivelul 0 avem un singur nod, nodul rdcin.Numrul de
noduri de pe nivelul 0 este egal cu 20.
Presupunem prin inducie c pe fiecare nivel t avem 2 t
noduri,
pentru
tn.Demonstrm
relaia
pentru
nivelul
n+1.Fiecare nod de pe nivelul n are exact doi fii.Rezult de aici c
pe nivelul n+1 avem 2*2n=2n+1 noduri.Rezult de aici
Proprietatea1.Numrul de noduri dintr-un arbore
binar plin de nlime h este egal cu 20+21+22++2h=2h+11.
Exemplu:
14
fig.4
fig.5
Observaii:
Orice arbore binar conine pe nivelul k cel mult 2 k
noduri.
Am demonstrat c un arbore binar plin conine pe fiecare nivel
k exact 2k noduri.Din definiia arborelui binar plin rezult c
acesta este numrul maxim de noduri ce pot exista pe un nivel
k(fiecare nod neterminal are exact 2 descendeni, numr care
este maxim)
Dac arborele binar are f(f>0) frunze atunci exist f1 noduri ce au exact doi fii n arbore.
Dac N este numrul total de noduri din arbore atunci numrul
nodurilor cu doi fii(pe care l notm cu n 2) este egal cu N-f-numrul
nodurilor cu un singur fiu(notat n1).Relaia se scrie N=f+n1+n2.(*).
15
ALGORITMI ELEMENTARI
fig.6
D
S
Cheie
3
2
2
5
4
4
0
6
3
0
0
5
0
0
1
8
7
6
0
0
7
0
0
10
16
Nod
6
1
10
8
17
este
prelucrat
procedure preordine(p:arb);
begin
if p<>nil then begin
write(p^.cheie,' ');
preordine(p^.st);
preordine(p^.dr)
end
end;
18
subarb. drept)
max(nlime
subarb.
stng,
nlime
19
function inaltime(p:arb):integer;
var m,n:integer;
begin
if p<>nil then begin
m:=inaltime(p^.st);
n:=inaltime(p^.dr);
if m>n then inaltime:=m+1
else inaltime:=n+1
end
else inaltime:=-1
end;
20
f ( x) A(n) X n
n0
dac\ `nmul]im
ambiitermeni
ai rela]ieiderecuren]
\ cuXn ob]inem
n
i 1
i 1
i 1
[
A
(
i
1
)
X
]
*
[A(n i ) X n i ]
i 1
n 1
n 1 i 1
1,dac\ n 0saun 1
A(n)
Ceea ce indic
f(x)-A(0)=X*f 2(X).Notm f(x) =t i rezolvm
ecuia de gradul 2 n t
X t2- t+A(0)=0 cu A(0)=1
=1-4X
1 1 4X
t1, 2
2X
Vom aplica dezvoltarea binomial pentru g(x)=(1-4X)1/2.
1
1
1
g ( x) (4) (1 4 X ) 2
2
1
2
2 1 1
g ( x) (4) * 1 (1 4 X ) 2
2 2
1
n
1 1
1
presupunem
prininduc]ieg ( x) ( n ) (4) n * * 1 * ..... * (n 1) (1 4 X ) 2
2 2
2
[i demonstr
\ m rela]iapentrun 1
1
n
1 1
1
(n1)
( n)
n
2
g(x) ( g ( x) ) (4) * * 1 * ..... * (n 1) (1 4 X )
2 2
2
( n1)
1 1
1
ceea ce demonstrea
z \ rela]ia
Pentru aceasta calculm mai nti derivata de ordin n pentru
funcia g(x).
Avem n acest caz
21
1
[1 (1 4 x) ]
2x
1 1
1
( 1)....( (n 1))
1
2
f ( x)
[1 2 2
(4 x) n ]
2x
n!
n0
1 1
1
( 1).......( n 1)
1
2 2
2
f ( x)
( 1) n 1 2 2 n 1 x n
2 x n1
n!
f ( x)
1 1
1
( 1)....( n)
2
A(n) (1) n 2 2 n 1 2 2
(n 1)!
1(1 2)(1 2 2)(1 2 3).....(1 2n)
A(n) (1) n 2 2 n 1
2 n 1 (n 1)!
(2n 1)[ 2(n 1) 1]........( 2 1)
A(n) 2 n
(n 1)!
2 n n!(2n 1)[ 2(n 1) 1].........(2 1)
( n 1)! n!
( 2n)!
1
A(n)
C 2nn
(n 1)!n! n 1
A(n)
A(n)
coeficientul lui Xn din dezvoltare i este egal cu
este
ARBORI DE SORTARE
22
Exemplu:
parcurgerea n in ordine:3 6 7 8 9 10
Operaii elementare
Construcia arborilor binari de sortare
Se realizeaz prin inserarea repetat a valorilor dorite n arborele
de sortare.Iniial acesta este vid.
Dac arborele n care se insereaz nodul de cheie x este vid
atunci rdcina acestui arbore va fi dat de nodul care se
insereaz.
Pentru un arbore nevid de rdcin p se compar cheia rdcinii
cu cheia nodului x.
Avem urmtoarele situaii:
x<cheia rdcinii p =>inserm valoarea x n subarborele
stng
x>cheia rdcinii p => inserm valoarea x n
subarborele drept
procedure inserare(x:tip_cheie;var p:arb);
begin
if p=nil then begin
new(p);
p^.cheie:=x;
p^.st:=nil;p^.dr:=nil
end
else
if p^.cheie>x then inserare(x,p^.st)
else inserare(x,p^.dr)
end;
23
x= 6
x<8
x<7
24
else
if p^.cheie>x then cauta:=cauta(x,p^.st)
else cauta:=cauta(x,p^.dr)
end;
c<10
v
c<7
c=6 i litera=A A
16
15
14
12
15
18
17
19
11
25
nil
nil
Cn
1 n
n
(C k 1 C nk )
n k 1
26
nC n n(n 1) 2 C k 1 (*)
k 1
(n 1)C n 1 (n 1)( n 2) 2 C k 1
k 1
n 1
n
n 1 n
C n 1 C n 2 4
2
n
n 1 n n 1 Scriind ultima relaie pentru n=2,3,,n-1,n i
adunnd relaiile obinute avem:
..
C3 C 2 4 2
4
3 4 3
C 2 C1 4 2
3
2 3 2
n
n
n
Cn
1 n 4
2 1
1
4
2
1
4
1
2
2
n 1 2 2 k 1 2 k 2
n 1 2
n 1 2
k 3 k
3 k
n
n
Cn
1
1
2 2 dx 2 ln n
n 1
x
k 1 k
1
27
28
=>
=>
29
30
31
termen
-
+
-
termen
factor
*
/
constanta
Factor
(
expresie
constant
cifra
cifra
E1
dac expresia este de forma E=+E1 atunci arborele ataat
expresiei E coincide cu cel al expresiei E1
dac expresia este de forma E=E 1 op E2 ,unde op este un
operator binar din lista prezentat anterior atunci arborele
asociat expresiei este
op
32
E1
E2
dac E=(E1), unde E1 este o expresie aritmetic atunci arborele
binar asociat expresiei aritmetice E coincide cu arborele binar
asociat expresiei E1.
*
55 78
*
23
31
34
fig.1
33
fp(+31-23)
fp(34/2*33)+*+6-
=55_78fp(+31)fp(23)-
fp(34/2)fp(3)*+*+6-=
55_78 31 23 -fp(34)fp(2)/3*+*+6- =55_78
31
23
34
3*+*+6-.
Teorem.Parcurgerea n postordine a unui arbore
binar asociat unei expresii aritmetice E construiete forma
polonez postfixat a expresiei E.
Demonstraie.~ntre regulile de constucie a arborelui
binar i definiia formei poloneze exist o coresponden
biunivoc.
Orice expresie aritmetic are una din formele indicate n
definiia
formei
poloneze(E=constanta,E=E1,E=E1
op
E2,E=(E1).Fiecreia dintre aceste forme i corespunde n mod unic
un arbore binar i o form polonez.Parcurgerea arborelui binar
asociat expresiei E n postordine, n cele 4 cazuri , d forma
polonez corespunztoare expresiei E.(E 1-,E1E2op,E1) .Rezult de
aici c parcurgerea arborelui binar asociat expresiei E n
postordine, d forma polonez corespunztoare expresiei E.
Expresia aritmetic se introduce de la tastatur sub forma unui ir
de caractere.
Pentru a construi arborele binar ataat expresiei aritmetice
vom pstra n cmpul v al oricrui nod operatorul curent (atunci
cnd ne aflm pe un caracter diferit de operator punem simbolul
34
35
56
3
56
36
procedure postordine(p:arb);
begin
if p<>nil then begin
postordine(p^.st);postordine(p^.dr);
if p^.v='$' then write(p^.nr:5:2,' ')
else write(p^.v)
end
end;
procedure eroare;
begin
write('Expresie eronata');readln;
halt(0)
end;
procedure citire;
var j:byte;
begin
clrscr;write('Expresia:');readln(exp);
{se elimina spatiile din sir}
j:=0;
while j<length(exp) do
begin inc(j);
if not(exp[j] in m)then eroare;
if exp[j]=' ' then
begin delete(exp,j,1);dec(j)
end
end;
exp:='('+exp+')';writeln(exp);
end;
procedure expresie(var p:arb);forward;
procedure termen(var p:arb);forward;
procedure factor(var p:arb);
{se costruieste nodul teminal p sau subarborele cu radacina p
asociat unei expresii cuprinsa intre paranteze}
var er:integer;
y:string;
begin
if c='(' then
begin inc(i);c:=exp[i];
expresie(p) {c are aici valoarea ')'}
end
else begin
new(p); p^.v:='$';
dec(i);
val(y,p^.nr,er);if er<>0 then eroare
end;
inc(i);c:=exp[i]
end;
procedure termen;
var q:arb;
begin
factor(p);
while c in ['*','/'] do
begin
new(q);q^.v:=c;q^.st:=p;
{se mai citeste un caracter pentru ca operandul 2
incepe dupa c care indica un operator}
37
inc(i);c:=exp[i];
{creeaza si leaga in dreapta nodului q subarborele asociat
operandului 2 al oeratorului c}
factor(q^.dr);
p:=q
end
end;
procedure expresie;
var q:arb;
begin
if c in ['+','-'] then
{- sau + unar}
if c='-' then begin new(p);
p^.v:='_';p^.st:=nil;
inc(i);c:=exp[i];
termen(p^.dr)
end
else begin inc(i);c:=exp[i];
termen(p)
end
else termen(p);
while c in ['+','-'] do begin new(q);
q^.v:=c;q^.st:=p;
inc(i);c:=exp[i];
termen(q^.dr);
p:=q
end
end;
function evaluare(p:arb):real;
var a,b:real;
begin
if p<>nil then begin
a:=evaluare(p^.st);
b:=evaluare(p^.dr);
case p^.v of
'+':evaluare:=a+b;
'-':evaluare:=a-b;
'*':evaluare:=a*b;
'/':evaluare:=a/b;
'$':evaluare:=p^.nr;
'_':evaluare:=-b
end
end
else
evaluare:=0
end;
begin
citire;
readln
end.
38
Cuprins
Capitolul I.FORMULAREA TEMEI....................................................................3
1.1.ASPECTE GENERALE LEGATE DE TEMA LUCRRII .
DOMENIUL N CARE SE NCADREAZ LUCRAREA.....................................3
1.2.EXPLICAREA PROBLEMEI PROPUSE SPRE REZOLVARE....................3
1.3.EXPLICAII FINALE LEGATE DE TEMA PROPUS
UTILITATEA TEMEI, ASPECTE REZOLVATE DE ACEASTA, POSIBILITI DE
DEZVOLTARE A TEMEI....................................................................................4
ARBORI......................................................................................................5
OPERATII ELEMENTARE..........................................................................6
ARBORI PARTIALI....................................................................................8
ARBORI BINARI.......................................................................................11
ALGORITMI ELEMENTARI.....................................................................14
ARBORI DE SORTARE............................................................................20
EVALUREA EXPRESIILOR ARITMETICE...............................................28
FORMA POLONEZA A EXPRESIILOR ARITMETICE.............................29
BIBLIOGRAFIE.........................................................................................37
39
Bibliografie
1.Tudor Sorin-Tehnici
de programare
2.Cristian Udrea-Pascal Teorie si Aplicatii
40