Numarare- tehnici de baza
Regula produsului
Sa consideram A o multime cu n elemente si B o multime cu m elemente.
Numarul de posibilitati de a selecta un element din A si un element din B este n*m
Exemplu
Daca avem bluze si perechi de pantaloni exista variante diferite de a ne imbraca.
Generalizare:
Sa consideram A1 A2 An multimi cu L1 L2 Ln elemente.
Numarul de posibilitati de a selecta un element din A1, un element din A2, , un element din An este L1*L2**Ln
(numarul de elemente ale produsului cartezian A1xA2x.xAn
Regula sumei
Sa consideram A o multime cu n elemente si B o multime cu m elemente (A si B disjuncte).
Numarul de posibilitati de a selecta un element din multimea A sau un element din multimea B este n+m
Exemplu
Daca in tema avem 4 exercitii si 5 probleme, iar profesorul spune ca o rezolvare este gresita, exista 4+5=9 posibilitati pentru greseala.
Principiul includerii si al excluderii
Pentru doua multimi
Sa consideram A si B doua multimi nu neaparat disjuncte.
In continuare vom nota cu |X| numarul de elemente ale multimii X
Numarul de posibilitati de a selecta un element din multimea A sau un element din multimea B este |A|+|B|-|A∩B|
Exemplu
Daca 5 elevi din clasa merg la CEX la mate si 7 elevi merg la CEX la info, iar dintre acestia 2 merg si la mate si la info, pentru a selecta elevul care va merge la Concursul centrelor de excelenta la Suceava avem 5+7-2 posibilitati.
Pentru 3 multimi
Fie A, B si C 3 multimi.
Numarul de posibilitati de a selecta un element din multimea A sau un element din multimea B sau un element din multimea C este
|A|+|B|+|C|-|A∩B|-|A∩C|-|C∩B|+|A∩B∩C|
Puteti generaliza pentru 4 multimi?
Atentie!
Evitarea dublei numarari este un aspect delicat al problemelor de combinatorica.
Tehnica bijectiei
O bijectie este o asociere 1:1 pe care o facem intre doua multimi.
Mai exact, prin aceasta asociere fiecarui element din multimea A ii va corespunde un singur element din multimea B si reciproc.
Este evident ca pentru a putea stabili o bijectie intre doua multimi aceastea trebuie sa aiba acela numar de elemente.
Prin urmare, daca reusim sa stabilim o bijectie intre doua multimi, deducem ca ele au acelasi numar de elemente.
Exemplu
Sa consideram multimea tezelor la matematica elevilor clasei a VII-a. Putem stabili o bijectie intre multimea tezelor si multimea elvilor prezenti.
Prin urmare, numarand tezelor, vom determina si numarul elevilor prezenti la teza.
Pentru a utiliza tehnica bijectiei este util sa cunoastem modalitatile de numarare ale unor elemente combinatoriale:
Denumire |
Numar |
Explicatie |
Permutari de ordin n |
n! |
Numarul de posibilitati de a aranja in secventa n obiecte Numarul bijectiilor de la multimea A la multimea B (unde |A|=|B|=n |
Submultimile unei multimi cu n elemente |
2n |
=Numar de siruri binare de lungime n |
Aranjamente de n luate cate k |
n!/(n-k)! |
Numarul de secvente de k elemente ale multimii |
Combinari de n luate cate k |
n!/(k!(n-lk)!) |
Numarul de submultimi de k elemente ale multimii |
Siruri de lungime n formate din elemente ale multimii |
kn |
!Elementele din sir se pot repeta. (functii de la multimea ->) |
Relatii de recurenta
Spunem ca un sir este definit prin relatie de recurenta daca pentru a descrie un termen al sau utilizam o formula in care intervin alti termeni ai sirului.
Exemple
Denumire |
Formula |
Recurenta |
n! |
1*2**(n-1)*n |
n!=n*(n-1)!, n>0 |
xn |
x*x**x |
xn=x*xn-1, n>1 x0=1 |
Fibonacci |
Fib(n)=Fib(n-1)+Fib(n-2), n>1 Fib(0)=0, Fib(1)=1 |
Multe probleme de numarare se pot reduce la o relatie de recurenta.
Din cei n elevi de clasa a XII-a de la Liceul de Informatica, doar k vor sustine examenul de bacalaureat in liceu, ceilalti fiind repartizati la alte centre. Pentru n si k doua numere naturale date de la tastatura (k n<50
Sa se calculeze numarul de posibilitati de a selecta cei k elevi care urmeaza sa sustina bacalaureatul in liceul lor!
Solutie
C(n,n)=1
C(n,0)=1
Triunghiul lui Pascal
Solutia nerecursiva se poate baza pe formula de recurenta alaturata, care sta la baza algoritmului de calcul al combinarilor cunoscut sub denumirea "triunghiul lui Pascal". De exemplu, triunghiul lui Pascal pentru n=5, este
1
1 1
1 2 1
1 3 3 1
Observati ca pe linia i i variind de la la n) in triunghiul lui Pascal se gasesc combinarile de k elemente ale multimii (k variind de la la i
Pentru a rezolva problema nu este necesar sa retinem intr-o matrice triunghiul lui Pascal in intregime, este suficient sa retinem la fiecare pas i i variind de la la n) numai linia curenta si cea precedenta, pe care o vom utiliza pentru determinarea liniei curente.
unsigned long LNou[50], LVechi[50];
unsigned long combinari(unsigned n, unsigned k)
return LNou[k];}
O alta solutie ar putea utiliza definitia:
Dar in acest caz, in urma calcularii factorialelor, se vor obtine erori datorate depasirilor valorilor maxime ce pot fi memorate intr-un tip intreg (pentru n>16 va fi depasita valoarea , maximum pentru long int
Sa ne imaginam o retea planara, formata din noduri situate in punctele de coordonate intregi, fiecare nod fiind unit prin bare paralele cu axele de coordonate de cele 4 noduri vecine. Un paianjen este plasat initial in originea sistemului de coordonate. La fiecare secunda, paianjenul se poate deplasa din nodul in care se afla in unul din nodurile vecine.
| |||||||||||
Scrieti un program care sa determine in cate moduri se poate deplasa paianjenul din pozitia initiala, intr-o pozitie finala data prin coordonatele ei x si y, in timpul cel mai scurt. (ONIG 2001, VII-VIII)
Exemple
Pentru x=1 si y=2, numarul de moduri determinat va fi . Pentru x=2 si y=3, numarul de moduri va fi
Solutie
Cum paianjenul se deplaseaza numai de-a lungul barelor, el poate sa ajunga (in timpul cel mai scurt) in pozitia (x y) numai din pozitia (x-1 y) sau din pozitia (x y-1). Daca notam cu nr(x,y) numarul de modalitati prin care paianjenul poate ajunge in timp minim in pozitia (x y), atunci deducem ca:
nr(0,y)=nr(x,0)=1;
nr(x,y)=nr(x-1,y)+nr(x,y-1), pentru orice x,y>0
#include <iostream.h>
#define NMAX 21
unsigned long nr[NMAX][NMAX];
void main()
Exercitiu
Rezolvati aceasta problema si pentru cazul in care dimensiunea maxima a retelei este . Veti observa ca numarul de modalitati creste foarte rapid si va fi necesar sa implementati adunarea cu numere mari.
Traversare
Pod de lungime n, pasi de lungime 1, 2 3, fara scanduri deteriorate.
Pod
Intre doua maluri ale unei vai adanci s-a construit un pod suspendat format din N bucati de scandura, legate cu liane. Vom considera ca scandurile sunt numerotate de la la N, incepand de pe malul pe care ne aflam. In timp unele bucati de scandura s-au deteriorat, iar altele chiar au disparut. Pentru traversarea podului se stie ca:
se pot face pasi doar de lungime sau
scandurile deteriorate sunt nesigure, deci pe ele si de pe ele se pot face doar pasi de lungime
Evident, nu se poate pasi pe o scandura care lipseste.
Scrieti un program care sa determine numarul de modalitati de traversare a podului (mai exact, de a ajunge pe celalalt mal), precum si o solutie de traversare, daca o astfel de solutie exista.
Date de intrare
Fisierul de intrare POD.IN are structura:
POD.IN |
Semnificatie |
N k s1 s2 sk h d1 d2 dh |
Numarul total de scanduri Numarul de scanduri lipsa si numerele lor de ordine Numarul de scanduri deteriorate si numerele lor de ordine |
Date de iesire
Fisierul de iesire POD.OUT va contine pe prima linie valoarea daca nu este posibil sa traversam podul, respectiv numarul de posibilitati de a traversa podul, daca aceasta este posibil. In cazul in care exista solutii, pe cea de a doua linie va fi afisata o astfel de solutie, prin indicarea, in ordine, a scandurilor pe care se paseste, sub forma:
POD.OUT |
Semnificatie |
Nr p1 p2 pm |
Numarul total de posibilitati Solutia determinata, prin indicarea in ordine a scandurilor pe care se paseste |
Restrictii si precizari
N
k, h N
Nr are cel mult de cifre.
Timp maxim de executie/test: 1 secunda.
Exemplul 1 Exemplul 2 Exemplul 3
POD.IN |
POD.OUT |
POD.IN |
POD.OUT |
POD.IN |
POD.OUT |
||
(ONI, Braila 2002, IX)
De reluat
Generare combinari
Fie n si m doua numere naturale, 1 m n≤20.
Sa se genereze in ordine lexicografica toate submultimile formate din m elemente ale multimii .
Solutie
Vom reprezenta o submultime ca un vector C cu m elemente (elementele submultimii).
Evident, 1≤C[i]≤n.
Deoarece ordinea elementelor intr-o submultime nu conteaza, pentru a nu genera de mai multe ori aceeasi submultime vom conveni ca plasam elementele in submultime in ordine crescatoare: C[i]<C[i+1], pentru orice 1≤i<m.
Vom genera submutimile printr-un algoritm de tip succesor.
Cea mai mica submultime (din pdv lexicografic) este 1, 2, , m.
Cea mai mare submultime este: n-m+1,, n-1, n
Intrebare: care este cea mai mare valoare care poate fi plasata pe pozitia i:
Pozitie |
m |
m-1 |
m-2 |
i | |||
Valoare maxima |
n |
n-1 |
n-2 |
n-m+1 |
Observam ca atunci cand pozitia
scade cu 1, valoarea maxima scade cu 1, deci diferenta dintre
Valoarea maxima si Pozitie este
Valoare_maxima-Pozitie=n-m=?-i.
Deducem ca valoarea maxima care poate fi plasata pe pozitia i este n-m+i.
Pas 1. Initializam vectorul C (C[i]=1, pentru orice 1≤i≤m)
Pas 2. Cat timp este posibil (mai exista succesor)
afisam submultimea curenta;
generam submultimea urmatoare; in acest scop cautam prima componenta (incepand din dreapta catre stanga) care poate fi marita (adica C[i]<n-m+i); daca gasim o astfel de componenta o marim, si repunem pe cea mai mica valoare posibila toate componentele urmatoare (C[j]=C[j-1]+1, i<j≤m); daca nu gasim o astfel de componenta deducem ca generarea s-a incheiat, acesta a fost cea mai mare submultime din punct de vedere lexicografic.
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |