Upload
feriecsedi
View
256
Download
4
Embed Size (px)
Citation preview
8/19/2019 Algoritmi Combinatoriali
http://slidepdf.com/reader/full/algoritmi-combinatoriali 1/4
ALGORITMI COMBINATORIALI
In foarte multe aplicatii ale matematicii se cere determinarea numaruluide elemente ale unor multimi, numarul submultimilor unei multimi
satisfacand anumite proprietati sau numarul modalitatilor de dispunere a
elementelor multimii intr-o ordine specificata:
In cursul dezvoltrii matematicii s-a conturat o noua ramura a acesteia,
care se ocupa cu aspectele ridicate de operatia de numarare:combinatorica.
Permutarile unei multimi
Fie A={a1, a2, …, an} o multime finita cu n elemente!ultimea A se poate ordona in mai multe moduri
"efinitie
#e numeste permutare a multimii A oricare multime ordonata care se
formeaza cu cele n elemente ale acesteia
$umarul permutarilor unei multimi cu n elemente se noteaza %n
&onvenim ca multimea vida se poate ordona intr-un sin'ur mod si
%(=1
Calculul numerelor P n
#tabilim relatia 'enerala: %n=n%n-1, n)1 *1+
Folosind relatia *1+ se obtine:
%n=n%n-1=n*n-1+%n-2=…=n*n-1+*n-2+…1, deci:
%n=12…*n-1+n
#e foloseste notatia: 12…*n-1+n=n. care se citeste n factorial
#a se 'enereze permutarile unei multimi cu n elemente
Program
/include0stdlib
/include0conio
/include0stdio
int n,3,451(6,contor,m7
int 'asit,pos7
int posibil*int 3+
{
for*int i=17i0=3-17i88+
if*45i6==4536+ return*(+7
1
8/19/2019 Algoritmi Combinatoriali
http://slidepdf.com/reader/full/algoritmi-combinatoriali 2/4
return*1+7
}
void afisare*+
{ 99 m=coloane
contor887
if *contor2+ {
contor=17
m887
if*m==+ {
m=(7
'etc*+7
clrscr*+7
}
}
'oto4;*1(82(m,contor+7
for*int i=17i0=37i88+
printf*<d <,45i6+7
printf*<>n<+7
}
void main *+
{
clrscr*+7
m=contor=(7
printf*<dati n=<+7
scanf*<d<,?n+7
3=17
4536=(7
@ile *3(+
{
'asit=(7
@ile *45360n+ {
4536=4536
817
'asit=posibil*3+7
if *'asit+ brea37
}
if *'asit+ if *3==n+ afisare*+7
else {
3=3817
4536=(7
}
else 3--7
}
'etc*+7
}
Aranjamente si combinari Fie A={a1, a2, …,an} o multime finita cu n elemente si m {(, 1, 2,
…,n} #e stie ca multimea A are in total 2B submultimi
Combinari "efinitie
#ubmultimile multimii A avand fiecare cate m elemente se numesc
combinari de n elemente luate cate m.
$umarul combinarilor de n elemente luate cate m se noteaza &n
2
8/19/2019 Algoritmi Combinatoriali
http://slidepdf.com/reader/full/algoritmi-combinatoriali 3/4
#a se 'enereze combinarile unei multimi cu n elemente luate cate m
Program
/include0stdlib
/include0conio
/include0stdio
int n,m,3,451(6,'asit,pos7
int posibil*int 3+
{ for*int i=17i0=3-17i88+
if*45i6==4536+ return*(+7
return*1+7
}void afisare*+
{ for*int i=17i0=37i88+
printf*<d <,45i6+7
printf*<>n<+7
if *@ere;*+==2+ {
'etc*+7
clrscr*+7
}
}void main*+
{ clrscr*+7
printf*<dati n=<+7
scanf*<d<,?n+7
printf*<dati m=<+7
scanf*<d<,?m+7
if *n0m+ printf*<trebuie ca n sa
fie mai mare ca m<+7
3=17
4536=(7
@ile *3(+
{ 'asit=(7
@ile *45360n+ { 4536=4536817
'asit=posibil*3+7
if *'asit+
brea37
}
if *'asit+ if *3= =m+
afisare*+7
else {
3=3817 4536=453-167}
else 3--7 }
'etc*+7}
Aranjamente "efinitie
#ubmultimile ordonate cu m elemente ale multimii A se numesc
aranCamente de n elemente luate cate m
$umarul aranCamentelor de n elemente luate cate m se noteaza An
Fiecare submultime cu m elemente poate fi ordonata in m. moduri
Dezulta, asadar, ca vom avea de m. ori mai multe aranCamente de n elemente
luate cate m decat combinari de n elemente luate cate m
#e obtin relatiile:An=m.&n sau &n=An9m. *1+
8/19/2019 Algoritmi Combinatoriali
http://slidepdf.com/reader/full/algoritmi-combinatoriali 4/4
Delatiile *1+ permit aflarea unui numar cunoscand celalalt numar dintre
An si &n
Teorema
Fie A o multime finita cu n elemente si ( E m E n un numar natural
Atunci:
An=n.9*n-m+. *2+
Teorema
&n=n.9*n-m+.m.
Formula lui Pascal
&n8&Gn8…8&nB=2B
#a se 'enereze aranCamentele unei multimi cu n elemente luate cate m
Program
/include0stdlib
/include0conio/include0stdio
int n,m,3,451(6,contor7
int 'asit,pos7
int posibil*int 3+
{
for*int i=17i0=3-17i88+
if*45i6==4536+ return*(+7
return*1+7
}
void afisare*+
{
for*int i=17i0=37i88+
printf*<d <,45i6+7
printf*<>n<+7
}
void main *+
{
clrscr*+7
printf*<dati n=<+7 scanf*<d<,?n+7
printf*<dati m=<+7
scanf*<d<,?m+7
if *n0m+ printf*<n trebuie sa fiemai mare decat m<+7
3=17
4536=(7
@ile *3(+
{ 'asit=(7
@ile *45360n+
{
4536=4536817
'asit=posibil*3+7
if *'asit+ brea37
}
if *'asit+ if *3==m+
afisare*+7
else {
3=3817
4536=(7
}
else 3--7
}'etc*+7
}