Elemente de combinatorică: Permutări, Aranjamente, Combinări
Combinatorica este ramura matematicii care se ocupă în principal de numărarea modurilor în care pot fi alese anumite obiecte, respectând anumite condiții. În acest articol voi prezenta cele trei elemente de bază ale combinatoricii, precum și câteva aplicații ale acestora. Pentru simplitate, ne vom referi doar la mulțimi finite de forma cu Dar mai întâi trebuie să amintesc cele două reguli fundamentale folosite în problemele de numărare:
Regula sumei
Dacă avem două mulțimi disjuncte și cu și respectiv elemente, numărul de moduri de a alege un element din sau din este Cu alte cuvinte, reuniunea mulțimilor și are elemente.
Regula produsului
Dacă avem două mulțimi și cu și respectiv elemente, numărul de moduri de a alege un element din și unul din este Cu alte cuvinte, produsul cartezian al mulțimilor și are elemente.
Permutări
Din punct de vedere combinatorial, o permutare a unei mulțimi reprezintă o modalitate de a aranja secvențial elementele acesteia. De exemplu, permutările mulțimii sunt:
Permutările unei mulțimi pot fi privite de asemenea drept totalitatea funcțiilor bijective definite pe cu valori în Asta e ușor de înțeles dacă ne gândim că nu trebuie să fie neapărat o expresie ce-l conține pe ci îl putem defini folosind o înșiruire de pentru-uri. De exemplu, a treia permutare de mai sus reprezintă funcția:
Numărul permutărilor de ordin (permutările unei mulțimi cu elemente) se notează cu și este egal cu (Amintesc că se citește factorial și este egal cu Această relație poate fi demonstrată în mai multe moduri. Să analizăm două dintre ele:
Metoda 1
Atunci când vrem să construim o permutare de ordin pe prima poziție putem pune orice valoare de la la deci avem variante. Pentru a doua poziție, ne-au rămas variante, pentru că deja am folosit una dintre valori pentru prima poziție. Pentru a treia poziție, am rămas cu variante, pentru că deja am folosit două elemente pentru primele două poziții. Generalizând raționamentul, pentru poziția avem variante rămase. Aplicând regula produsului, obținem:
Metoda 2
Vom demonstra prin inducție matematică relația Dacă avem o permutare de ordin și vrem să obținem din aceasta una de ordin nu avem decât să inserăm undeva în ea valoarea Aceasta poate fi inserată înainte de o poziție cu sau după ultima poziție. În total avem poziții posibile pentru noul element. Conform regulii produsului, obținem de unde
Permutări cu repetiție
Când vine vorba să numărăm permutările unui șir ale cărui elemente nu sunt neapărat distincte, formula clasică de la permutări nu mai funcționează. De exemplu, pe o permutare de genul am număra-o de două ori, ca și cum cei doi de ar fi numere diferite. O dată cu primul pe poziția și al doilea pe poziția și o dată cu al doilea pe poziția și primul pe poziția
Deci, dacă notăm cu frecvența (numărul de apariții al) numărului în permutare, atunci pentru fiecare din șirul am numărat de ori mai multe permutări decât trebuia. Așadar, formula pentru numărul de permutări cu repetiție ale unui șir de lungime cu elementele mai mici sau egale cu este:
Aranjamente
Un aranjament de elemente luate câte al mulțimii de cardinal reprezintă o submulțime ordonată a lui de elemente. De exemplu, aranjamentele de luate câte ale mulțimii sunt:
Similar permutărilor, aranjamentele pot fi considerate funcții injective definite pe mulțimea cu valori în Semnificația expresiei este că elementul de pe poziția din aranjament este egal cu Cred că deja e clar că permutările sunt un caz particular de aranjamente: Permutările de ordin sunt aranjamente de luate câte
Numărul aranjamentelor de luate câte se notează cu și este egal cu Din nou, putem demonstra această relație în două moduri:
Metoda 1
Atunci când construim un aranjament de elemente luate câte pe prima poziție putem pune orice valoare, deci avem variante. Pe a doua poziție putem pune orice valoare, mai puțin cea pe care deja am folosit-o, deci am rămas cu variante. Generalizând, obținem:
Metoda 2
Putem construi aranjamentele de elemente luate câte pornind de la permutările de ordin Pentru asta, este de ajuns să ștergem ultimele elemente din fiecare permutare, însă nu vom rămâne cu aranjamente distincte. De exemplu, dacă și permutările care se transformă în aranjamentul sunt:
Se observă ușor că numărul de permutări care generează un anumit aranjament este pentru că ultimele elemente ale lor pot fi aranjate în moduri. Așadar,
Combinări
Combinările de elemente luate câte ale mulțimii de cardinal reprezintă submulțimile cu elemente ale lui De remarcat că submulțimile nu sunt ordonate, ceea ce înseamnă că, în cazul combinărilor, submulțimile și nu sunt diferite. De exemplu, combinările de luate câte ale mulțimii sunt:
Numărul de combinări de luate câte se notează cu și este egal cu Demonstrația este următoarea: Diferența dintre aranjamente și combinări este că aranjamentele sunt submulțimi ordonate. Deci, o combinare de lungime corespunde aranjamentelor de lungime formate permutând elementele respectivei combinări. Numărul acelor permutări este de unde
Cum combinările numără submulțimile unei mulțimi în funcție de cardinalul lor, suma combinărilor de luate câte cu este egală cu numărul total de submulțimi ale unei mulțimi de cardinal Acesta este deoarece pe fiecare element putem fie să-l luăm, fie să nu-l luăm în cadrul submulțimii, așa că pentru fiecare element avem două variante. Aplicând regula produsului, obținem
Triunghiul lui Pascal
Triunghiul lui Pascal se referă la aranjamentul geometric pe care-l obținem când scriem pe fiecare linie numerele unde ia valori pe rând de la la
Acest desen ne ajută să vizualizăm mai ușor diverse proprietăți ale combinărilor. De exemplu, dacă colorăm cu gri combinările pare, obținem Triunghiul lui Sierpinski, ceea ce am ilustrat și în desenul de mai sus. O altă observație este că Poate fi demonstrată imediat folosind formula cu factoriale:
Poate cea mai importantă proprietate a combinărilor ce rezultă din Triunghiul lui Pascal este următoarea relație de recurență:
Ea ne permite să precalculăm toate combinările până la linia în – complexitate, evident, optimă, fiind egală cu dimensiunea output-ului:
comb[0][0] = 1;for (int i = 1; i <= n; i++) { comb[i][0] = 1; for (int j = 1; j <= i; j++) comb[i][j] = comb[i - 1][j - 1] + comb[i - 1][j];}
Recurența poate fi demonstrată relativ ușor folosind din nou formula cu factoriale:
Însă nu e o metodă suficient de interesantă sau de ușoară la calcule. O prefer pe cea constructivă, pentru că ne obișnuiește cu gândirea specifică problemelor de programare dinamică: Fie mulțimile și Putem construi o combinare a lui de elemente, adăugându-l pe la o combinare de elemente a mulțimii Însă, nu toate combinările trebuie sa-l conțină pe Observăm că cele din urmă sunt combinări de elemente ale lui Cum cele două tipuri de combinări menționate sunt numărate de și respectiv de aplicând regula sumei, obținem recurența ce trebuia demonstrată.
O altă formulă ce poate fi dedusă din Triunghiul lui Pascal este aceasta:
Și se demonstrează așa:
Nu știu cât de utilă pare, dar eu chiar am avut nevoie de ea la un moment dat într-o problemă.
Binomul lui Newton
Combinările se mai numesc coeficienți binomiali, deoarece se regăsesc drept coeficienți în descompunerea lui numit Binomul lui Newton:
În ciuda aparențelor, Binomul lui Newton este util și la informatică! L-am folosit odată la problema Scara2 pentru a demonstra că dinamica avea de fapt complexitatea și nu cum credeam inițial.
Demonstrația formulei se bazează pe inducție: Presupunem că are forma de mai sus și demonstrăm că, înmulțind expresia cu obținem o descompunere de aceeași formă:
Grupăm termenii asemenea, aplicăm coeficienților acestora formula de recurență a combinărilor și înlocuim cu și cu căci toate sunt egale cu
Notă: Prin convenție, unde Cea mai simplă explicație este că e elementul neutru la înmulțire. Iar în lipsa acestei convenții, formulele n-ar mai funcționa.
Cam atât despre permutări, aranjamente și combinări. Urmează în curând un articol despre numărul partițiilor unui număr natural! Dacă aveți vreo întrebare despre combinatorică, nu ezitați să o lăsați mai jos, într-un comentariu