4
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 numarului de 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={a 1 , a 2 , …, a n } 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

Algoritmi Combinatoriali

Embed Size (px)

Citation preview

Page 1: Algoritmi Combinatoriali

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

Page 2: Algoritmi Combinatoriali

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

Page 3: Algoritmi Combinatoriali

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+

Page 4: Algoritmi Combinatoriali

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

 }