Analiza combinatorică este un domeniu al matematicii care studiază modalitățile de numărare ale elementelor mulțimilor finite, precum și de alegere și aranjare a lor. Numeroase concepte specifice acestui domeniu intervin și în probleme de algoritmică.
Produsul cartezian
Fie
Regula produsului: Dacă mulțimile
Submulțimile unei multimi
Fie n
elemente. Atunci ea are
Exemplu: Mulțimea
, , , ,
Permutări
Se numește permutare o corespondență biunivocă (bijecție) între o mulțime finită și ea însăși.
Altfel spus, se numește permutare a unei mulțimi finite o aranjare a elementelor sale într-o anumită ordine.
Exemplu: permutările mulțimii {1,2,3}
sunt: (1,2,3)
, (1,3,2)
, (2,1,3)
, (2,3,1)
, (3,1,2)
și (3,2,1)
. Într-o altă reprezentare, acestea sunt:
Dacă
Numărul de permutări al unei mulțimi cu
Numărul permutărilor unei mulțimi crește foarte repede. Pentru valori mici ale lui n
, numărul permutărilor depășește domeniul de valori al datelor întregi, fiind necesară implementarea operațiilor pe numere mari.
Permutări cu repetiție
Considerăm un set de 1
, 2
, …, k
și n
obiecte este:
Exemplu: Numărul de anagrame distincte ale cuvântului ABABA
este:
Acestea sunt: AAABB
, AABAB
, AABBA
, ABAAB
, ABABA
, ABBAA
, BAAAB
, BAABA
, BABAA
, BBAAA
.
Aranjamente
Dacă A
este o mulțime cu n
elemente, submulțimile ordonate cu k
elemente ale lui A
, 0 ≤ k ≤ n
se numesc aranjamente a n
elemente luate câte k
.
Numărul de aranjamente de
La fel ca în cazul permutărilor, pentru determinarea numărului de aranjamente poate fi necesară implementarea operațiilor pe numere mari.
Combinări
Pentru o mulțime dată o combinare reprezintă o modalitate de alegere a unor elemente, fără a ține cont de ordinea lor. Se numesc combinări de k
elemente submulțimile cu k
elemente ale mulțimii, presupuse cu n
elemente. Numărul de asemenea submulțimi se numește combinări de n
luate câte k
și se notează
Formule:
; această formulă se regăsește în Triunghiul lui Pascal
Numerele lui Catalan
Termenul general al acestui șir este:
O formulă recursivă:
Pentru
Există numeroase probleme care au ca rezultat numerele lui Catalan. Amintim:
este egal cu numărul de șiruri den
paranteze deschise șin
paranteze închise care se închid corect. Pentrun=3
, avem variante:((()))
,(())()
,()(())
,()()()
și(()())
.- numărul de cuvinte Dyck de lungime
2*n
: formate dinn
caractereX
șin
caractereY
și în orice prefix numărul deX
este mai mare sau egal cu numărul deY
. Pentrun=3
:XXXYYY
,XXYYXY
,XYXXYY
,XYXYXY
,XXYXYY
. - numărul de șiruri formate din
n
de1
șin
de-1
astfel încât toate sumele parțiale să fie nenegative. reprezintă numărul de modalități de a paranteza o expresie formată dinn+1
operanzi ai unei operatii asociative:((ab)c)d
,(a(bc))d
,(ab)(cd)
,a((bc)d)
,a(b(cd))
. reprezintă numărul de modalităti de a desena “șiruri de munți” cun
linii crescătoare șin
linii descrescătoare. Munții încep și se termină la același nivel și nu coboară sub acel nivel:
/\ /\ /\ /\/\ / \ /\/\/\ / \/\ /\/ \ / \ / \
- numărul de drumuri laticiale de la punctul
(0,0)
la(2*n,0)
cu pași din{(1,1),(1,-1)
care nu coboară sub axaOx
. este numărul de modalități de a triangula un poligon cun+2
laturi:
este umărul de drumuri laticiale de la(0,0)
la(n,n)
cu pași din{(0,1),(1,0)}
care nu depășesc prima diagonală . Următoarea imagine conține drumurile pentrun=4
:
- numărul de siruri
cu proprietatea că este . numărul de modalități de a acoperi o scară cun
trepte folosindn
dreptunghiuri. Pentrun=4
:
- pe un cerc sunt
2*n
puncte. Numărul posibilități de a desenan
coarde care nu se intersectează este .
Alte probleme care au care rezultat numărul lui Catalan sunt pe Wikipedia sau în documentul Exercises on Catalan and Related Numbers, Cambridge University Press, Richard P_ Stanley, June 1998.
Partițiile unei mulțimi
Fie
, ,
De exemplu,
, ,
Numărul de partiții cu
Numerele Strirling de speța a doua pe Wikipedia
Numărul total de partiții ale unei mulțimi cu
Începând cu
Numerele Bell pot fi construite cu ajutorul așa-numitului triunghi Bell. Vom construi (parțial) un tablou A[][]
:
A[0][1] = 1
- primul element de pe liniile următoare este egal cu ultimul de pe linia precedentă:
A[i][1] = A[i-1][i]
- celelalte elemente ale fiecărei linii sunt egale cu suma celor după elemnte din stânga (linia curentă și linia precedentă):
A[i][j] = A[i][j-1] + A[i-1][j-1]
, pentruj=2,..., i+1
- primul elelemt de pe fiecare linie este numărul Bell corespunzător:
B
n
=A[n][1]
.
Citește mai departe