Curs 3 Permutari cu repetitie. Combinari. Algoritmi de ordonare si generare

Documente similare
Teoria Grafurilor şi Combinatorică recapitulare Principii de numărare Reţineţi că: P (n, r) este numărul de şiruri (sau r-permutări) de forma A 1,...,

ALGORITMICĂ. Seminar 3: Analiza eficienţei algoritmilor - estimarea timpului de execuţie şi notaţii asimptotice. Problema 1 (L) Să se determine număru

Probleme proiect TP BITPERM Implementați un algoritm care citește de la intrarea standard două numere naturale și scrie la ieșirea standard da

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

Metode de sortare - pregătire admitere - Conf.dr. Alexandru Popa Lect. dr. Andrei Pătraşcu Universitatea din Bucureşti 1

Facultatea de Matematică Anul II Master, Geometrie Algebrică Mulţimi algebrice ireductibile. Dimensiune 1 Mulţimi ireductibile Propoziţia 1.1. Fie X u

Logică și structuri discrete Limbaje regulate și automate Marius Minea marius/curs/lsd/ 24 noiembrie 2014

Capitole Speciale de Informatică Curs 2: Determinarea vocabularului de termeni şi a listelor de postări 4 octombrie 2018 Reamintim că listele de indec

Capitole Speciale de Informatică Curs 1: Extragerea informaţiilor. Modelul boolean şi modelul boolean extins 27 septembrie 2018 Extragerea informaţiil

Programarea şi utilizarea calculatoarelor

Analiză statică Analiza fluxului de date 23 octombrie 2014

Microsoft Word - Algoritmi genetici.docx

Microsoft Word - D_ MT1_II_001.doc

Curs 6: Clasificarea surselor de informatii - Clasificarea Bayes Naiva. Modelul Bernoulli

Algoritmi elementari Metode de căutare secvenţială binară Metode de ordonare metoda bulelor metoda inserţiei metoda selecţiei metoda numărării Intercl

Capitole Speciale de Informatică Curs 4: Calculul scorurilor în un sistem complet de extragere a informaţiilor 18 octombrie 2018 Reamintim că în cursu

Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx

LOGICA MATEMATICA SI COMPUTATIONALA Sem. I,

Microsoft Word - Curs1.docx

Backtracking_2018

FIŞA DISCIPLINEI

Logică și structuri discrete Logică propozițională Marius Minea marius/curs/lsd/ 3 noiembrie 2014

Microsoft Word - O problema cu bits.doc

Tablouri unidimensionale Problema 1 Să se determine mulţimea cifrelor unui număr natural n > 0, dat. Exemplu: n= Cifre = {1,2,3,7} Se cere să s

Logică și structuri discrete Relații. Funcții parțiale Marius Minea marius/curs/lsd/ 20 octombrie 2014

SUBPROGRAME

Microsoft PowerPoint - Curs_SDA_10_RO_2019_v1.pptx

ALGORITHMICS

Curs 8: Tehnica divizării (I) Algoritmi si structuri de date - Curs 8 1

Laborator 2: Instrucţiuni Java şi lucru cu şiruri de caractere Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 18 octombrie 2011

SSC-Impartire

E_d_Informatica_sp_SN_2014_bar_10_LRO

Probleme rezolvate informatica: Probleme rezolvate grafuri si a

Capitole Speciale de Informatica - Curs 5: Extragerea informatiilor prin feedback de relevanta. Metode probabiliste de extragere a informatiilor

CURBE BÉZIER În CAGD se utilizează adesea curbele polinomiale, adică acele curbe definite de o parametrizare polinomială: C : [a, b] R 3 C(t) = (x(t),

Microsoft Word - Lab1a.doc

Prelegerea 4 În această prelegere vom învăţa despre: Algebre booleene; Funcţii booleene; Mintermi şi cuburi n - dimensionale. 4.1 Definirea algebrelor

Analiză de flux de date 29 octombrie 2012

Elemente de aritmetica

Spatii vectoriale

Microsoft Word - Software pentru ordonarea multirang a componentelor unei colectivitati.doc

Microsoft Word - CarteC.doc

Microsoft Word - CarteC.doc

Microsoft Word - TIC5

Microsoft Word - cap1p4.doc

Şcoala ………

Ministerul Educatiei, Cercetarii si Tineretului Grup Scolar Gh. Asachi Galati Proiect pentru obtinerea certificatului de competente profesionale Speci

PROGRAMA CONCURSULUI NAŢIONAL

O teoremă de reprezentare (II) Marian TETIVA 1 Abstract. In this paper some (in general well-known) results on complete sequences are exposed, with ap

DAN LASCU ADRIANA-LIGIA SPORIŞ ANDA OLTEANU PAUL VASILIU MATEMATICĂ. CULEGERE DE PROBLEME TIP GRILĂ PENTRU ADMITEREA ÎN ACADEMIA NAVALĂ MIRCEA CEL BĂT

Ecuatii si sisteme de ecuatii neliniare 1 Metoda lui Newton Algorithm 1 Metoda lui Newton pentru ecuaţia f(x) = 0. Date de intrare: - Funcţia f - Apro

Laborator Implementarea algoritmului DES - Data Encryption Standard. Exemplu DES Algoritmul DES foloseşte numere b

Subiectul 1

1. Găsiți k numerele cele mai apropiate într-un şir nesortat Dându-se un şir nesortat și două numere x și k, găsiți k cele mai apropiate valori de x.

1

Slide 1

Managementul Resurselor Umane

Diapositive 1

Operatorii in C Expresii Operatori aritmetici Operatori de asignare Operatori de incrementare si decrementare Operatori relationali Operatori logici O

Declararea variabilelor

Slide 1

Microsoft PowerPoint - ImplementareLimbaj [Read-Only] [Compatibility Mode]

Cursul 8 Funcţii analitice Vom studia acum comportarea şirurilor şi seriilor de funcţii olomorfe, cu scopul de a dezvălui o proprietate esenţială a ac

Aero-BCD, , Prof. L. Costache & M. Olteanu Notițe de Adrian Manea Seminar 5 Șiruri și serii de funcții. Serii de puteri 1 Șiruri de funcții D

D.Rusu, Teoria măsurii şi integrala Lebesgue 6 MĂSURA LEBESGUE Cursul 5 Teorema 6.26 Există submulţimi ale lui R care nu sunt măsurabile Lebesgue. Dem

Examenul de bacalaureat 2012

E_d_Informatica_sp_MI_2015_bar_02_LRO

Calcul Numeric

Logică și structuri discrete Mulțimi Casandra Holotescu

gaussx.dvi

TEORIA MĂSURII Liviu C. Florescu Universitatea Al.I.Cuza, Facultatea de Matematică, Bd. Carol I, 11, R Iaşi, ROMANIA, e mail:

8.1. Elemente de Aritmetică. 8. Aplicatii (15 aprilie 2019) Lema 8.1. Fie (A, +) un grup abelian şi H, K A. Atunci H K şi H + K = {h + k h H şi k K} s

Examen de licenţă Informatică Exemple de întrebări - Structuri discrete şi algoritmi In atenţia studenţilor: Proba scrisă a examenului de licen

CRIPTOSISTEME SIMETRICE I

Microsoft Word - Curs_08.doc

Cursul 14 Mulţimea lui Mandelbrot Mulţimile şi funcţiile cu caracter excepţional (mulţimea lui Cantor, insula lui Koch, funcţiile lui Weierstrass şi T

PowerPoint Presentation

Şiruri de numere reale Facultatea de Hidrotehnică Universitatea Tehnică Gheorghe Asachi Iaşi, 2015 Analiză Matematică Lucian Maticiuc 1 / 29

Lucrarea 7 Filtrarea imaginilor BREVIAR TEORETIC Filtrarea imaginilor se înscrie în clasa operaţiilor de îmbunătăţire, principalul scop al acesteia fi

ALGORITHMICS

Noțiuni de bază ale criptografiei

Microsoft Word - CarteC.doc

Propunator: Morar Florin Colegiul National Silvania Zalau Discipina: Informatica Nivel liceal, cls. XI 1.Fişierul text bac.in conţine cel mult 1000 de

Microsoft Word - Tema 06 - Convertoare analog-numerice.doc

CAPITOLUL I

CLP_UTCN-grila-2012.dvi

tehnologii web

1. Operatii cu matrici 1 Cerinte: Sa se realizeze functii pentru operatii cu matrici patratice (de dimensiune maxima 10x10). Operatiile cerute sunt: A

OPERATII DE PRELUCRAREA IMAGINILOR 1

Examen de licenţă Informatică Exemple de întrebări - Structuri discrete şi algoritmi In atenţia studenţilor: Proba scrisă a examenului de licen

Curs8

Lucrarea nr. 4 - Algoritmi de sortare şi ordonare Breviar teoretic Un algoritm de sortare este o metoda prin care se aranjează elementele unui tablou

Microsoft PowerPoint - Curs_SDA_4_RO_2019_v2.pptx

Propunator: Morar Florin Colegiul National Silvania Zalau Discipina: Informatica Nivel liceal, cls. XII 1.Să se scrie în limbajul C/C++ definiţia comp

Algebra si Geometri pentru Computer Science

Clasa IX 1. O lăcustă face salturi, fiecare salt în linie dreaptă şi de două ori mai lung ca precedentul. Poate vreodată lăcusta să revină în punctul

Analiz¼a Matematic¼a - Curs 6 M¼ad¼alina Roxana Buneci

Probleme date la examenul de logică matematică şi computaţională. Partea a II-a Claudia MUREŞAN Universitatea din Bucureşti Facultatea de Matematică ş

Grile si probleme siruri de caractere in C++ ŞIRURI DE CARACTERE Itemii următori sunt preluaţi din variantele de bacalaureat În secvenţa de i

Transcriere:

Curs 3 Permutări cu repetiţie. Combinări. Algoritmi de ordonare şi generare Octombrie 2015

Cuprins Algoritmi de ordonare şi generare pentru permutări cu repetiţie Reprezentarea binară a submulţimilor Algoritmi de ordonare şi generare Generarea rapidă a combinărilor Coduri Gray; propertăţi Submulţimi ordonate lexicografic Generarea -combinărilor

Permutări cu repetiţie r-permutările cu repetiţie ale unui alfabet A = {a 1,..., a n } sunt secvenţele ordonate de forma unde x 1,..., x r A. x 1,..., x r Acelaşi simbol poate să apară de mai multe ori în o r-permutare cu repetiţie Conform regulii produsului, există n r r-permutări cu repetiţie

Permutări cu repetiţie Algoritmi de ordonare şi generare în ordine lexicografică r-permutările cu repetiţie pot fi ordonate lexicografic, la fel ca şi r-permutările obişnuite. Exemplu (A = {a 1, a 2 } cu a 1 < a 2, r = 3 r-permutare cu repetiţie a lui A rang a 1, a 1, a 1 0 a 1, a 1, a 2 1 a 1, a 2, a 1 2 a 1, a 2, a 2 3 a 2, a 1, a 1 4 a 2, a 1, a 2 5 a 2, a 2, a 1 6 a 2, a 2, a 2 7 Definiţie (Ordonare lexicografică x 1,..., x r < y 1,..., y r dacă există {1,..., n} astfel încât x < y şi x i = y i pentru toţi 1 i <.

Ordonarea şi generarea r-permutărilor cu repetiţie Observaţii Fie A = {a 1, a 2,..., a n } cu a 1 < a 2 <... < a n. Dacă definim index(a i := i 1 pentru 1 i n şi înlocuim a i cu index(a i în enumerarea lexicografică a r-permutărilor, avem r-permutare cu repetiţie a lui A rang a 1,..., a 1, a 1, a 1 0,..., 0, 0, 0 1 0.. a 1,..., a 1, a 1, a n 0,..., 0, 0, n 1 n 1 a 1,..., a 1, a 2, a 1 0,..., 0, 1, 0 1 n.. a 1,..., a 1, a 2, a n 0,..., 0, 1, n 1 2 n 1. Observaţie: r-permutarea cu repetiţie a indecşilor este reprezentarea în baza n a rangului..

Ordonarea şi generarea r-permutărilor cu repetiţie Exerciţii 1 Să se definească un algoritm care calculează rangul unei r-permutări cu repetiţie x 1,..., x r a lui A = {1,..., n} în raport cu ordinea lexicografică. 2 Să se definească un algoritm care calculează r-permutarea cu repetiţie a lui A = {1,..., n} care are rangul în raport cu ordinea lexicografică. 3 Să se definească un algoritm care calculează r-permutarea cu repetiţie care urmează imediat după r-permutarea cu repetiţie x 1,..., x r a lui A.

Combinări Reprezentarea binară a submulţimilor O r-combinare a unei mulţimi A cu n elemente este o submulţime cu r elemente a lui A. Există o correspondenţă bijectivă între şirurile de n-biţi şi submulţimile mulţimii A = {a 1, a 2,..., a n }: { 1 dacă an i B B A b n 1 b n 2... b 0 unde b i = 0 în caz contrar. şir de n-biţi b 0 b 1... b n 1 submulţimea {a n i b i = 1} lui A Exemplu A = {a 1, a 2, a 3, a 4, a 5 } unde a 1 = a, a 2 = b, a 3 = c, a 4 = d, a 5 = e. 00000 {a, b} 00011 {c, d, e} 11100 {a} 00001 {a, c} 00101 {b, c, d, e} 11110 {b} 00010 {a, d} 01001 {a, b, d, e} 11011 {c} 00100 {a, e} 10001 {a, c, d, e} 11101 {d} 01000 {b, c} 00110 {a, b, c, d} 01111 {e} 10000... {a, b, c, d, e} 11111

Calculul codificării ca şir binar a lunei submulţimi BitString(B: submultime a lui A, A: multime ordonata {a 1,..., a n } int bit string[0..n 1] for i:=0 to n 1 do if a i B then bit string[n i] := 1 else bit string[n i] := 0 return bit string

Calcului combinării corespunzătoare unui şir de n-biţi Combination(b[0..n-1]: sir de biti, A: multime ordonata {a 1,..., a n } B:= for i:=0 to n 1 do if b[i] = 1 then adauga a n i la B return B

Ordonarea submulţimilor folosind codificări cu şiruri binare Există o corespondenţă bijectivă între codificările cu şiruri binare de n-biţi şi numerele cuprinse între 0 şi 2 n 1 : n 1 şir de n biţi b[0.. n 1] numărul b[i] 2 i număr 0 r < 2 n şirul de n-biţi b[0.. n 1] unde ci b[i] := 2 i unde c i este restul împărţirii lui r cu 2 i+1. i=0 Definiţie Rangul unei submulţimi B a mulţimii ordonate A cu n elemente este n 1 Ran(B, A := b[i] 2 i unde b[0.. n 1] este codificarea cu şir de n-biţi a lui B ca submulţime a lui A. i=0

Ordonarea submulţimilor unei mulţimi prin intermediul şirurilor de biţi Exemplu (A = {a 0, a 1, a 2 } submulţime codificare binară rang b 2 b 1 b 0 000 0 {a 0 } 001 1 {a 1 } 010 2 {a 0, a 1 } 011 3 {a 2 } 100 4 {a 0, a 2 } 101 5 {a 1, a 2 } 110 6 {a 0, a 1, a 2 } 111 7 Observaţie. Acest mod de enumerare a submulţimilor unei mulţimi de numeşte ordonare canonică, iar şirul b 2 b 1 b 0 se numeşte cod canonic (sau binar.

Ordonarea submulţimilor cu ajutorul şirurilor de biţi (2 B a 0,..., a n 1 BitString(B, A n-biţi b[0..n 1] pentru codificarea binară Ran(B, A calcul direct n 1 b[i] 2 i i=0

Enumerarea submulţimilor prin intermediul reprezentării binare Se dă o mulţime ordonată A = {a 0, a 1,..., a n 1 }, şi 0 r < 2 n Să se determine submulţimea B a lui A cu rangul r 0 r < 2 n n-bit string encoding b[0.. n 1] b[i] := c/2 i unde c := r mod 2 i+1 pentru 0 i < n Unran(A, r Combination(b, A B := {a i b[n i 1] = 1}

Enumerarea submulţimilor prin intermediul reprezentării binare Problema 1: Se dă o submulţime B a mulţimii ordonate A. Să se determine submulţimea lui A care urmează după B în ordonarea prin intermediul reprezentării binare. Sugestie: Se poate defini NextBinaryRanSubset(A,B folosind algoritmii anteriori de ordonare şi enumerare.

Enumerarea submulţimilor prin intermediul reprezentării binare Problema 1: Se dă o submulţime B a mulţimii ordonate A. Să se determine submulţimea lui A care urmează după B în ordonarea prin intermediul reprezentării binare. Sugestie: Se poate defini NextBinaryRanSubset(A,B folosind algoritmii anteriori de ordonare şi enumerare. Problema 2: Să se genereze lista tuturor submulţimilor lui A în ordinea crescătoare a rangului calculat prin intermediul codificării binare. Sugestie: Se poate folosi funcţia Unran(A, r definită anterior.

Enumerarea submulţimilor cu modificări minime Coduri Grey Exemplu Fran Grey a descoperit în 1953 o metodă de enumerare a tuturor submulţimilor unei mulţimi într-o ordine în care submulţimile consecutive diferă prin inserarea sau ştergerea unui singur element. Această schemă de enumerare se numeşte cod Grey reflectat standard. Folosind metoda lui Grey, submulţimile of {a, b, c} sunt enumerate în ordinea următoare: {}, {c}, {b, c}, {b}, {a, b}, {a, b, c}, {a, c}, {a} Codificările ca şiruri binare b 0 b 1 b 2 ale acestor submulţimi sunt: 000, 100, 110, 010, 011, 111, 101, 001

Codul Grey reflectat standard Descriere Se doreşte enumerarea submulţimilor mulţimii A = {a 0, a 1,..., a n 1 } într-o ordine cu modificări minime între submulţimi consecutive. Fie G n lista respectivă. Procedăm recursiv: 1 Se calculează lista G n 1 a submulţimilor lui B = {a 1,..., a n 1 } într-o ordine Grey cu modificări minime. 2 Fie G n 1 lista obţintă prin adăugarea lui a 0 la fiecare element al unei copii inversate a listei G n 1. 3 G n este rezultatul concatenării listei G n 1 cu G n 1.

Propertăţi ale codurilor Grey reflectate Se presupune că B este submulţime a mulţimii ordonate A cu n elemente. Dacă atunci m este rangul lui B in în ordinea enumerării lui Grey, şi m = n 1 i=0 b i 2 i Codificarea ca şir de n biţi a lui B este c 0 c 1... c n 1 c i = (b i + b i+1 mod 2 for all 0 i < n, unde b n = 0. Reciproc, se poate demonstra că b i = (c i + c i+1 +... + c n 1 mod 2 pentru toţi 0 i < n.

Coduri Grey Exemplu (A = {a, b, c} cu a < b < c submulţime rang Grey b 0 b 1 b 2 şir de biţi rang B m astfel încât al lui B al lui B m = 2 i=0 b 2 i2 i c 0 c 1 c 2 {} 0 000 000 0 {c} 1 100 100 4 {b, c} 2 010 110 6 {b} 3 110 010 2 {a, b} 4 001 011 3 {a, b, c} 5 101 111 7 {a, c} 6 011 101 5 {a} 7 111 001 1 Se observă că c i = (b i + b i+1 mod 2 pentru toţi 0 i < 3, unde b 3 = 0.

Exerciţii 1 Folosiţi ecuaţiile de pe slide-ul precedent ca să implementaţi metodele de ordonare RanGrey(B,A şi de enumerare UnranGrey(A,r pentru enumerarea submulţimilor bazată pe coduri Grey. 2 Să se definescă metoda NextGreyRanSubset(A,B care calculează submulţimea lui A care urmează imediat după submulţimea B în enumerarea submulţimilor bazată pe coduri Grey.

-combinări Generarea -combinărilor Se dă o mulţime ordonată A cu n elemente şi 0 n. Să se genereze toate -combinările lui A.

-combinări Generarea -combinărilor Se dă o mulţime ordonată A cu n elemente şi 0 n. Să se genereze toate -combinările lui A. Metoda 1 (naivă şi ineficientă: generare şi testare 1 Se generează toate cele 2 n submulţimi ale lui A 2 Se elimină submulţimile generate care nu au elemente.

-combinări Generarea -combinărilor Se dă o mulţime ordonată A cu n elemente şi 0 n. Să se genereze toate -combinările lui A. Metoda 1 (naivă şi ineficientă: generare şi testare 1 Se generează toate cele 2 n submulţimi ale lui A 2 Se elimină submulţimile generate care nu au elemente. Metoda 2 (recursie simplă: Dacă A = {a} B unde a B este cel mai mic element al lui A atunci 1 Generează lista L 1 a tuturor ( 1-combinărilor lui B, şi fie L 2 lista tuturor -combinărilor lui B. 2 Fie L 3 lista ce se obţine adăugând a la toate elementele lui L 1. 3 Returnează rezultatul concatenării listelor L 2 şi L 3.

Ordonarea lexicografică a -combinărilor Enunţul problemei. Observaţii preliminare (1 Se presupune că A = {1, 2,..., n} şi X = {x 1, x 2,..., x } A astfel încât x 1 < x 2 <... < x. Î: Care este rangul lui X în enumerarea lexicografică a -combinărilor lui A? -combinările care apar înaintea lui X în ordine lexicografică sunt de 2 feluri: 1 Cele care conţin un element mai mic decât x 1. 2 Cele al căror element minim este x 1, dar restul elementelor este o ( 1-combinare mai mică decât {x 2, x 3,..., x }.

Ordonarea lexicografică a -combinărilor Enunţul problemei. Observaţii preliminare (1 Se presupune că A = {1, 2,..., n} şi X = {x 1, x 2,..., x } A astfel încât x 1 < x 2 <... < x. Î: Care este rangul lui X în enumerarea lexicografică a -combinărilor lui A? -combinările care apar înaintea lui X în ordine lexicografică sunt de 2 feluri: 1 Cele care conţin un element mai mic decât x 1. 2 Cele al căror element minim este x 1, dar restul elementelor este o ( 1-combinare mai mică decât {x 2, x 3,..., x }. rangul lui X în enumerarea lexicografică a -combinărilor lui A este N 1 + N 2 unde N 1 este numărul -combinărilor de primul fel N 2 este numărul -combinărilor de al doilea fel

Ordonarea lexicografică a -combinărilor Observaţii preliminare (2 Ipoteză: A = {1, 2,..., n}. Cum putem calcula N 1?

Ordonarea lexicografică a -combinărilor Observaţii preliminare (2 Ipoteză: A = {1, 2,..., n}. Cum putem calcula N 1? Numărul -combinărilor lui A care au pe i cel mai mic element este

Ordonarea lexicografică a -combinărilor Observaţii preliminare (2 Ipoteză: A = {1, 2,..., n}. Cum putem calcula N 1? Numărul -combinărilor lui A care au pe i cel mai mic element este ( n i 1

Ordonarea lexicografică a -combinărilor Observaţii preliminare (2 Ipoteză: A = {1, 2,..., n}. Cum putem calcula N 1? Numărul -combinărilor lui A care au pe i cel mai mic element este N1 = x 1 1 (regula sumei ( n i 1 i=1 ( n i 1

Ordonarea lexicografică a -combinărilor Observaţii preliminare (2 Ipoteză: A = {1, 2,..., n}. Cum putem calcula N 1? ( Numărul -combinărilor lui A care au pe i cel mai mic element este n i 1 N1 = x 1 1 ( n i i=1 1 (regula sumei Ştim că ( ( n = n 1 ( 1 + n 1 (vezi curs 1

Ordonarea lexicografică a -combinărilor Observaţii preliminare (2 Ipoteză: A = {1, 2,..., n}. Cum putem calcula N 1? ( Numărul -combinărilor lui A care au pe i cel mai mic element este n i 1 N1 = x 1 1 ( n i i=1 1 (regula sumei Ştim că ( ( n = n 1 ( 1 + n 1 (vezi curs 1 N 1 = ( x (n i+1 1 1 ( i=1 n i = ( ( n n x1+1 Cum putem calcula N 2?

Ordonarea lexicografică a -combinărilor Observaţii preliminare (2 Ipoteză: A = {1, 2,..., n}. Cum putem calcula N 1? ( Numărul -combinărilor lui A care au pe i cel mai mic element este n i 1 N1 = x 1 1 ( n i i=1 1 (regula sumei Ştim că ( ( n = n 1 ( 1 + n 1 (vezi curs 1 N 1 = ( x (n i+1 1 1 ( i=1 n i = ( ( n n x1+1 Cum putem calcula N 2? N 2 este rangul lui {x 2,..., x } în enumerarea lexicografică a ( 1-combinărilor lui {x 1 + 1, x 1 + 2,..., n 1, n}

Ordonarea lexicografică a -combinărilor Observaţii preliminare (2 Ipoteză: A = {1, 2,..., n}. Cum putem calcula N 1? ( Numărul -combinărilor lui A care au pe i cel mai mic element este n i 1 N1 = x 1 1 ( n i i=1 1 (regula sumei Ştim că ( ( n = n 1 ( 1 + n 1 (vezi curs 1 N 1 = ( x (n i+1 1 1 ( i=1 n i = ( ( n n x1+1 Cum putem calcula N 2? N 2 este rangul lui {x 2,..., x } în enumerarea lexicografică a ( 1-combinărilor lui {x 1 + 1, x 1 + 2,..., n 1, n} N 2 se poate calcula recursiv.

Ordonarea lexicografică a -combinărilor Din observaţiile anterioare rezultă următoarea implementare recursivă a operaţiei de calcul al rangului: RanKSubset({x 1,..., x }, {l,..., n} calculează rangul în ordine lexicografică a -combinării {x 1,..., x } a mulţimii ordonate {l, l + 1,..., n 1, n}. Se presupune că x 1 < x 2 <... < x. RanKSubset({x 1,..., x }, {l, l + 1,..., n} if (n = or =0 return 0, p := x 1 l + 1 if ( = 1 return p 1 else return ( n ( n p+1 + RanKSubset({x2,..., x }, {x 1 + 1,..., n}

Enumerarea lexicografică a -combinărilor Enunţul problemei. Observaţii preliminare Ipoteze: A = {1, 2,..., n} şi X = {x 1, x 2,..., x } cu x 1 < x 2 <... < x este submulţimea lui A cu rangul m în enumerarea lexicografică a tuturor -combinărilor lui A. [Reţinem că 0 m < ( n.] Î: Care sunt valorile lui x 1, x 2,..., x?

Enumerarea lexicografică a -combinărilor Enunţul problemei. Observaţii preliminare 1 Numărul total al -combinărilor lui A care conţin un element < x 1 este x 1 1 i=1 ( n i ( n = 1 ( n x1 + 1 m. (1 unde ( n i 1 este numărul -combinărilor în care cel mai mic element este i {1,..., x 1 1}. Acest număr este m fiindcă toate aceste -combinări sunt lexicografic mai mici decât X, care are rangul m.

Enumerarea lexicografică a -combinărilor Enunţul problemei. Observaţii preliminare 1 Numărul total al -combinărilor lui A care conţin un element < x 1 este x 1 1 i=1 ( n i ( n = 1 ( n x1 + 1 m. (1 unde ( n i 1 este numărul -combinărilor în care cel mai mic element este i {1,..., x 1 1}. Acest număr este m fiindcă toate aceste -combinări sunt lexicografic mai mici decât X, care are rangul m. 2 Numărul total al -combinărilor lui A care conţin un element x 1 este x 1 ( n i ( n ( n x1 = > m. (2 1 i=1 unde ( n i 1 este numărul -combinărilor în care cel mai mic element este i {1,..., x 1 }. Acest număr este > m deoarece sunt m + 1 întregi i între 0 şi rangul lui X (care este m, şi toate -combinările cu un astfel de rang i conţin un element x 1.

Enumerarea lexicografică a -combinărilor Enunţul problemei. Observaţii preliminare 1 Numărul total al -combinărilor lui A care conţin un element < x 1 este x 1 1 i=1 ( n i ( n = 1 ( n x1 + 1 m. (1 unde ( n i 1 este numărul -combinărilor în care cel mai mic element este i {1,..., x 1 1}. Acest număr este m fiindcă toate aceste -combinări sunt lexicografic mai mici decât X, care are rangul m. 2 Numărul total al -combinărilor lui A care conţin un element x 1 este x 1 ( n i ( n ( n x1 = > m. (2 1 i=1 unde ( n i 1 este numărul -combinărilor în care cel mai mic element este i {1,..., x 1 }. Acest număr este > m deoarece sunt m + 1 întregi i între 0 şi rangul lui X (care este m, şi toate -combinările cu un astfel de rang i conţin un element x 1. putem folosi (1 şi (2 ca să aflăm x 1 : ( n ( n x1 +1 m < ( n ( n x1

Enumerarea lexicografică a -combinărilor Enunţul problemei. Observaţii preliminare 1 Numărul total al -combinărilor lui A care conţin un element < x 1 este x 1 1 i=1 ( n i ( n = 1 ( n x1 + 1 m. (1 unde ( n i 1 este numărul -combinărilor în care cel mai mic element este i {1,..., x 1 1}. Acest număr este m fiindcă toate aceste -combinări sunt lexicografic mai mici decât X, care are rangul m. 2 Numărul total al -combinărilor lui A care conţin un element x 1 este x 1 ( n i ( n ( n x1 = > m. (2 1 i=1 unde ( n i 1 este numărul -combinărilor în care cel mai mic element este i {1,..., x 1 }. Acest număr este > m deoarece sunt m + 1 întregi i între 0 şi rangul lui X (care este m, şi toate -combinările cu un astfel de rang i conţin un element x 1. putem folosi (1 şi (2 ca să aflăm x 1 : ( n ( n x1 +1 ( m < n ( n x1 Celelalte elemente x 2,..., x se pot determina recursiv.

Enumerarea lexicografică a -combinărilor UnranKSubset(m,, {a 1,..., a n } produce -combinarea {x 1,..., x } cu rangul m a lui {a 1,..., a n } în ordine lexicografică. Se presupune că x 1 <... < x şi a 1 <... < a n. UnranKSubset(m,, {a 1,..., a n} if ( = 1 return a +1 else if (m = 0 return {a 1,..., a m} else u := ( n i := 1 while ( i < u m i++ x1:=n (i 1 return {a n i+1 } UnranKSubset(m u + ( n x1+1, 1,{an i+2,..., a n}

Bibliografie S. Pemmaraju, S. Siena. Combinatorics and Graph Theory with Mathematica. Section 2.3: Combinations. Cambridge University Press. 2003.