enumeration algorithms for€¦ ·  · 2014-09-02enumeration algorithms for restricted and...

26
Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

Upload: phammien

Post on 24-May-2018

228 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

Enumeration Algorithms for Restricted and Unrestricted Compositions and Words

Daniel PageApril 8, 2011

Page 2: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

Enumeration?

Two different disciplines in computation but a generation solution is more powerful.

Typical interests:− Combinatorial Objects− Discrete Solution Spaces− Sequencing− Many more...

Two very different disciplines Counting

Generation

Page 3: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

Enumeration?Primary Goals of an enumeration algorithm: Given properties of a finite set, exhaust all the

members of the set which fit the definition. Avoiding extra structure whenever possible. Understanding more about the structure of a

construction. Can solve counting problems. Eg) Combinatorial Objects, Word Problems...WARNING: These algorithms are highly

output sensitive.

Page 4: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

Definition: A finite set Cs,n which contains all non-negative integer sequences л = л1 л2 ... лn

such that Σ (лi) = s, 1≤i≤n. This is called an unrestricted composition.

Combinatorial Composition

eg) C3,3= {(0,0,3),(0,3,0),(3,0,0),

(2,1,0),(1,2,0),(0,2,1),(0,1,2),(1,0,2),(2,0,1), (1,1,1)}

Page 5: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

There is also a more general version:A finite set CR

s,n which contains all non-negative

integer sequences л = л1 л2 ... лn such that Σ (лi) = s, 1≤i≤n, where лi є R.

This is called an restricted composition. There are several types of restricted compositions...

Combinatorial Composition

eg) CR3,3= {(1,1,1)}, where R = {1}

Page 6: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

HistoryCompositions play a vital role in the

foundations of Theoretical Computer Science and also are of interest in Combinatorics.

Generation of Compositions are a specific sub-type of Word Problems.

Word Problem – Given a semi-Thue System, rewrite a string given a set of 'rewriting'

axioms, to produce an outputting string in the string rewriting system in a language.

General Case: Problem is undecidable.

Page 7: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

HistoryEarly Research:

Percy Alexander MacMahon (1854-1929)“Compositions are merely

partitions in which the order of occurrence of the parts

are important”

Credit: “Combinatorics of Compositions and Words”, Heubach,Mansour

Many of his conventions are still used today.

Earliest results. “Assemblage of objects”

Page 8: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

HistoryEarly Research:

Axel Thue (1863-1922)“Zeichenreihen”

Credit: “Combinatorics of Compositions and Words”, Heubach,Mansour

First to systematically study words and compositions.

Extended to the infinite cases. The general word problem.

Thue and semi-Thue systems.

“Combinatorics on Words”

Page 9: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

ProblemsProblem 1:

Given positive integers n,s (n =0 iff s = 0), enumerate the unrestricted composition

Cs,n . Some Results: C(s,n) = CHOOSE(s+n-1,n-1) Lower bound space-complexity: Ω(C(s,n)).

− Output sensitive− Tight bound (it's the output itself).

s+k−1 , n−1

Page 10: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

ProblemsOutput Sensitivity Extremes:

s+k−1 , n−1

S(7,8)={@@@@@@H,@@@@@AG,@@@@@BF,@@@@@CE,@@@@@DD,@@@@@EC,@@@@@FB,@@@@@GA,@@@@@H@,@@@@A@G,@@@@AAF,@@@@ABE,@@@@ACD,@@@@ADC,@@@@AEB,@@@@AFA,@@@@AG@,@@@@B@F,@@@@BAE,@@@@BBD,@@@@BCC,@@@@BDB,@@@@BEA,@@@@BF@,@@@@C@E,@@@@CAD,@@@@CBC,@@@@CCB,@@@@CDA,@@@@CE@,@@@@D@D,@@@@DAC,@@@@DBB,@@@@DCA,@@@@DD@,@@@@E@C,@@@@EAB,@@@@EBA,@@@@EC@,@@@@F@B,@@@@FAA,@@@@FB@,@@@@G@A,@@@@GA@,@@@@H@@,@@@A@@G,@@@A@AF,@@@A@BE,@@@A@CD,@@@A@DC,@@@A@EB,@@@A@FA,@@@A@G@,@@@AA@F,@@@AAAE,@@@AABD,@@@AACC,@@@AADB,@@@AAEA,@@@AAF@,@@@AB@E,@@@ABAD,@@@ABBC,@@@ABCB,@@@ABDA,@@@ABE@,@@@AC@D,@@@ACAC,@@@ACBB,@@@ACCA,@@@ACD@,@@@AD@C,@@@ADAB,@@@ADBA,@@@ADC@,@@@AE@B,@@@AEAA,@@@AEB@,@@@AF@A,@@@AFA@,@@@AG@@,@@@B@@F,@@@B@AE,@@@B@BD,@@@B@CC,@@@B@DB,@@@B@EA,@@@B@F@,@@@BA@E,@@@BAAD,@@@BABC,@@@BACB,@@@BADA,@@@BAE@,@@@BB@D,@@@BBAC,@@@BBBB,@@@BBCA,@@@BBD@,@@@BC@C,@@@BCAB,@@@BCBA,@@@BCC@,@@@BD@B,@@@BDAA,@@@BDB@,@@@BE@A,@@@BEA@,@@@BF@@,@@@C@@E,@@@C@AD,@@@C@BC,@@@C@CB,@@@C@DA,@@@C@E@,@@@CA@D,@@@CAAC,@@@CABB,@@@CACA,@@@CAD@,@@@CB@C,@@@CBAB,@@@CBBA,@@@CBC@,@@@CC@B,@@@CCAA,@@@CCB@,@@@CD@A,@@@CDA@,@@@CE@@,@@@D@@D,@@@D@AC,@@@D@BB,@@@D@CA,@@@D@D@,@@@DA@C,@@@DAAB,@@@DABA,@@@DAC@,@@@DB@B,@@@DBAA,@@@DBB@,@@@DC@A,@@@DCA@,@@@DD@@,@@@E@@C,@@@E@AB,@@@E@BA,@@@E@C@,@@@EA@B,@@@EAAA,@@@EAB@,@@@EB@A,@@@EBA@,@@@EC@@,@@@F@@B,@@@F@AA,@@@F@B@,@@@FA@A,@@@FAA@,@@@FB@@,@@@G@@A,@@@G@A@,@@@GA@@,@@@H@@@,@@A@@@G,@@A@@AF,@@A@@BE,@@A@@CD,@@A@@DC,@@A@@EB,@@A@@FA,@@A@@G@,@@A@A@F,@@A@AAE,@@A@ABD,@@A@ACC,@@A@ADB,@@A@AEA,@@A@AF@,@@A@B@E,@@A@BAD,@@A@BBC,@@A@BCB,@@A@BDA,@@A@BE@,@@A@C@D,@@A@CAC,@@A@CBB,@@A@CCA,@@A@CD@,@@A@D@C,@@A@DAB,@@A@DBA,@@A@DC@,@@A@E@B,@@A@EAA,@@A@EB@,@@A@F@A,@@A@FA@,@@A@G@@,@@AA@@F,@@AA@AE,@@AA@BD,@@AA@CC,@@AA@DB,@@AA@EA,@@AA@F@,@@AAA@E,@@AAAAD,@@AAABC,@@AAACB,@@AAADA,@@AAAE@,@@AAB@D,@@AABAC,@@AABBB,@@AABCA,@@AABD@,@@AAC@C,@@AACAB,@@AACBA,@@AACC@,@@AAD@B,@@AADAA,@@AADB@,@@AAE@A,@@AAEA@,@@AAF@@,@@AB@@E,@@AB@AD,@@AB@BC,@@AB@CB,@@AB@DA,@@AB@E@,@@ABA@D,@@ABAAC,@@ABABB,@@ABACA,@@ABAD@,@@ABB@C,@@ABBAB,@@ABBBA,@@ABBC@,@@ABC@B,@@ABCAA,@@ABCB@,@@ABD@A,@@ABDA@,@@ABE@@,@@AC@@D,@@AC@AC,@@AC@BB,@@AC@CA,@@AC@D@,@@ACA@C,@@ACAAB,@@ACABA,@@ACAC@,@@ACB@B,@@ACBAA,@@ACBB@,@@ACC@A,@@ACCA@,@@ACD@@,@@AD@@C,@@AD@AB,@@AD@BA,@@AD@C@,@@ADA@B,@@ADAAA,@@ADAB@,@@ADB@A,@@ADBA@,@@ADC@@,@@AE@@B,@@AE@AA,@@AE@B@,@@AEA@A,@@AEAA@,@@AEB@@,@@AF@@A,@@AF@A@,@@AFA@@,@@AG@@@,@@B@@@F,@@B@@AE,@@B@@BD,@@B@@CC,@@B@@DB,@@B@@EA,@@B@@F@,@@B@A@E,@@B@AAD,@@B@ABC,@@B@ACB,@@B@ADA,@@B@AE@,@@B@B@D,@@B@BAC,@@B@BBB,@@B@BCA,@@B@BD@,@@B@C@C,@@B@CAB,@@B@CBA,@@B@CC@,@@B@D@B,@@B@DAA,@@B@DB@,@@B@E@A,@@B@EA@,@@B@F@@,@@BA@@E,@@BA@AD,@@BA@BC,@@BA@CB,@@BA@DA,@@BA@E@,@@BAA@D,@@BAAAC,@@BAABB,@@BAACA,@@BAAD@,@@BAB@C,@@BABAB,@@BABBA,@@BABC@,@@BAC@B,@@BACAA,@@BACB@,@@BAD@A,@@BADA@,@@BAE@@,@@BB@@D,@@BB@AC,@@BB@BB,@@BB@CA,@@BB@D@,@@BBA@C,@@BBAAB,@@BBABA,@@BBAC@,@@BBB@B,@@BBBAA,@@BBBB@,@@BBC@A,@@BBCA@,@@BBD@@,@@BC@@C,@@BC@AB,@@BC@BA,@@BC@C@,@@BCA@B,@@BCAAA,@@BCAB@,@@BCB@A,@@BCBA@,@@BCC@@,@@BD@@B,@@BD@AA,@@BD@B@,@@BDA@A,@@BDAA@,@@BDB@@,@@BE@@A,@@BE@A@,@@BEA@@,@@BF@@@,@@C@@@E,@@C@@AD,@@C@@BC,@@C@@CB,@@C@@DA,@@C@@E@,@@C@A@D,@@C@AAC,@@C@ABB,@@C@ACA,@@C@AD@,@@C@B@C,@@C@BAB,@@C@BBA,@@C@BC@,@@C@C@B,@@C@CAA,@@C@CB@,@@C@D@A,@@C@DA@,@@C@E@@,@@CA@@D,@@CA@AC,@@CA@BB,@@CA@CA,@@CA@D@,@@CAA@C,@@CAAAB,@@CAABA,@@CAAC@,@@CAB@B,@@CABAA,@@CABB@,@@CAC@A,@@CACA@,@@CAD@@,@@CB@@C,@@CB@AB,@@CB@BA,@@CB@C@,@@CBA@B,@@CBAAA,@@CBAB@,@@CBB@A,@@CBBA@,@@CBC@@,@@CC@@B,@@CC@AA,@@CC@B@,@@CCA@A,@@CCAA@,@@CCB@@,@@CD@@A,@@CD@A@,@@CDA@@,@@CE@@@,@@D@@@D,@@D@@AC,@@D@@BB,@@D@@CA,@@D@@D@,@@D@A@C,@@D@AAB,@@D@ABA,@@D@AC@,@@D@B@B,@@D@BAA,@@D@BB@,@@D@C@A,@@D@CA@,@@D@D@@,@@DA@@C,@@DA@AB,@@DA@BA,@@DA@C@,@@DAA@B,@@DAAAA,@@DAAB@,@@DAB@A,@@DABA@,@@DAC@@,@@DB@@B,@@DB@AA,@@DB@B@,@@DBA@A,@@DBAA@,@@DBB@@,@@DC@@A,@@DC@A@,@@DCA@@,@@DD@@@,@@E@@@C,@@E@@AB,@@E@@BA,@@E@@C@,@@E@A@B,@@E@AAA,@@E@AB@,@@E@B@A,@@E@BA@,@@E@C@@,@@EA@@B,@@EA@AA,@@EA@B@,@@EAA@A,@@EAAA@,@@EAB@@,@@EB@@A,@@EB@A@,@@EBA@@,@@EC@@@,@@F@@@B,@@F@@AA,@@F@@B@,@@F@A@A,@@F@AA@,@@F@B@@,@@FA@@A,@@FA@A@,@@FAA@@,@@FB@@@,@@G@@@A,@@G@@A@,@@G@A@@,@@GA@@@,@@H@@@@,@A@@@@G,@A@@@AF,@A@@@BE,@A@@@CD,@A@@@DC,@A@@@EB,@A@@@FA,@A@@@G@,@A@@A@F,@A@@AAE,@A@@ABD,@A@@ACC,@A@@ADB,@A@@AEA,@A@@AF@,@A@@B@E,@A@@BAD,@A@@BBC,@A@@BCB,@A@@BDA,@A@@BE@,@A@@C@D,@A@@CAC,@A@@CBB,@A@@CCA,@A@@CD@,@A@@D@C,@A@@DAB,@A@@DBA,@A@@DC@,@A@@E@B,@A@@EAA,@A@@EB@,@A@@F@A,@A@@FA@,@A@@G@@,@A@A@@F,@A@A@AE,@A@A@BD,@A@A@CC,@A@A@DB,@A@A@EA,@A@A@F@,@A@AA@E,@A@AAAD,@A@AABC,@A@AACB,@A@AADA,@A@AAE@,@A@AB@D,@A@ABAC,@A@ABBB,@A@ABCA,@A@ABD@,@A@AC@C,@A@ACAB,@A@ACBA,@A@ACC@,@A@AD@B,@A@ADAA,@A@ADB@,@A@AE@A,@A@AEA@,@A@AF@@,@A@B@@E,@A@B@AD,@A@B@BC,@A@B@CB,@A@B@DA,@A@B@E@,@A@BA@D,@A@BAAC,@A@BABB,@A@BACA,@A@BAD@,@A@BB@C,@A@BBAB,@A@BBBA,@A@BBC@,@A@BC@B,@A@BCAA,@A@BCB@,@A@BD@A,@A@BDA@,@A@BE@@,@A@C@@D,@A@C@AC,@A@C@BB,@A@C@CA,@A@C@D@,@A@CA@C,@A@CAAB,@A@CABA,@A@CAC@,@A@CB@B,@A@CBAA,@A@CBB@,@A@CC@A,@A@CCA@,@A@CD@@,@A@D@@C,@A@D@AB,@A@D@BA,@A@D@C@,@A@DA@B,@A@DAAA,@A@DAB@,@A@DB@A,@A@DBA@,@A@DC@@,@A@E@@B,@A@E@AA,@A@E@B@,@A@EA@A,@A@EAA@,@A@EB@@,@A@F@@A,@A@F@A@,@A@FA@@,@A@G@@@,@AA@@@F,@AA@@AE,@AA@@BD,@AA@@CC,@AA@@DB,@AA@@EA,@AA@@F@,@AA@A@E,@AA@AAD,@AA@ABC,@AA@ACB,@AA@ADA,@AA@AE@,@AA@B@D,@AA@BAC,@AA@BBB,@AA@BCA,@AA@BD@,@AA@C@C,@AA@CAB,@AA@CBA,@AA@CC@,@AA@D@B,@AA@DAA,@AA@DB@,@AA@E@A,@AA@EA@,@AA@F@@,@AAA@@E,@AAA@AD,@AAA@BC,@AAA@CB,@AAA@DA,@AAA@E@,@AAAA@D,@AAAAAC,@AAAABB,@AAAACA,@AAAAD@,@AAAB@C,@AAABAB,@AAABBA,@AAABC@,@AAAC@B,@AAACAA,@AAACB@,@AAAD@A,@AAADA@,@AAAE@@,@AAB@@D,@AAB@AC,@AAB@BB,@AAB@CA,@AAB@D@,@AABA@C,@AABAAB,@AABABA,@AABAC@,@AABB@B,@AABBAA,@AABBB@,@AABC@A,@AABCA@,@AABD@@,@AAC@@C,@AAC@AB,@AAC@BA,@AAC@C@,@AACA@B,@AACAAA,@AACAB@,@AACB@A,@AACBA@,@AACC@@,@AAD@@B,@AAD@AA,@AAD@B@,@AADA@A,@AADAA@,@AADB@@,@AAE@@A,@AAE@A@,@AAEA@@,@AAF@@@,@AB@@@E,@AB@@AD,@AB@@BC,@AB@@CB,@AB@@DA,@AB@@E@,@AB@A@D,@AB@AAC,@AB@ABB,@AB@ACA,@AB@AD@,@AB@B@C,@AB@BAB,@AB@BBA,@AB@BC@,@AB@C@B,@AB@CAA,@AB@CB@,@AB@D@A,@AB@DA@,@AB@E@@,@ABA@@D,@ABA@AC,@ABA@BB,@ABA@CA,@ABA@D@,@ABAA@C,@ABAAAB,@ABAABA,@ABAAC@,@ABAB@B,@ABABAA,@ABABB@,@ABAC@A,@ABACA@,@ABAD@@,@ABB@@C,@ABB@AB,@ABB@BA,@ABB@C@,@ABBA@B,@ABBAAA,@ABBAB@,@ABBB@A,@ABBBA@,@ABBC@@,@ABC@@B,@ABC@AA,@ABC@B@,@ABCA@A,@ABCAA@,@ABCB@@,@ABD@@A,@ABD@A@,@ABDA@@,@ABE@@@,@AC@@@D,@AC@@AC,@AC@@BB,@AC@@CA,@AC@@D@,@AC@A@C,@AC@AAB,@AC@ABA,@AC@AC@,@AC@B@B,@AC@BAA,@AC@BB@,@AC@C@A,@AC@CA@,@AC@D@@,@ACA@@C,@ACA@AB,@ACA@BA,@ACA@C@,@ACAA@B,@ACAAAA,@ACAAB@,@ACAB@A,@ACABA@,@ACAC@@,@ACB@@B,@ACB@AA,@ACB@B@,@ACBA@A,@ACBAA@,@ACBB@@,@ACC@@A,@ACC@A@,@ACCA@@,@ACD@@@,@AD@@@C,@AD@@AB,@AD@@BA,@AD@@C@,@AD@A@B,@AD@AAA,@AD@AB@,@AD@B@A,@AD@BA@,@AD@C@@,@ADA@@B,@ADA@AA,@ADA@B@,@ADAA@A,@ADAAA@,@ADAB@@,@ADB@@A,@ADB@A@,@ADBA@@,@ADC@@@,@AE@@@B,@AE@@AA,@AE@@B@,@AE@A@A,@AE@AA@,@AE@B@@,@AEA@@A,@AEA@A@,@AEAA@@,@AEB@@@,@AF@@@A,@AF@@A@,@AF@A@@,@AFA@@@,@AG@@@@,@B@@@@F,@B@@@AE,@B@@@BD,@B@@@CC,@B@@@DB,@B@@@EA,@B@@@F@,@B@@A@E,@B@@AAD,@B@@ABC,@B@@ACB,@B@@ADA,@B@@AE@,@B@@B@D,@B@@BAC,@B@@BBB,@B@@BCA,@B@@BD@,@B@@C@C,@B@@CAB,@B@@CBA,@B@@CC@,@B@@D@B,@B@@DAA,@B@@DB@,@B@@E@A,@B@@EA@,@B@@F@@,@B@A@@E,@B@A@AD,@B@A@BC,@B@A@CB,@B@A@DA,@B@A@E@,@B@AA@D,@B@AAAC,@B@AABB,@B@AACA,@B@AAD@,@B@AB@C,@B@ABAB,@B@ABBA,@B@ABC@,@B@AC@B,@B@ACAA,@B@ACB@,@B@AD@A,@B@ADA@,@B@AE@@,@B@B@@D,@B@B@AC,@B@B@BB,@B@B@CA,@B@B@D@,@B@BA@C,@B@BAAB,@B@BABA,@B@BAC@,@B@BB@B,@B@BBAA,@B@BBB@,@B@BC@A,@B@BCA@,@B@BD@@,@B@C@@C,@B@C@AB,@B@C@BA,@B@C@C@,@B@CA@B,@B@CAAA,@B@CAB@,@B@CB@A,@B@CBA@,@B@CC@@,@B@D@@B,@B@D@AA,@B@D@B@,@B@DA@A,@B@DAA@,@B@DB@@,@B@E@@A,@B@E@A@,@B@EA@@,@B@F@@@,@BA@@@E,@BA@@AD,@BA@@BC,@BA@@CB,@BA@@DA,@BA@@E@,@BA@A@D,@BA@AAC,@BA@ABB,@BA@ACA,@BA@AD@,@BA@B@C,@BA@BAB,@BA@BBA,@BA@BC@,@BA@C@B,@BA@CAA,@BA@CB@,@BA@D@A,@BA@DA@,@BA@E@@,@BAA@@D,@BAA@AC,@BAA@BB,@BAA@CA,@BAA@D@,@BAAA@C,@BAAAAB,@BAAABA,@BAAAC@,@BAAB@B,@BAABAA,@BAABB@,@BAAC@A,@BAACA@,@BAAD@@,@BAB@@C,@BAB@AB,@BAB@BA,@BAB@C@,@BABA@B,@BABAAA,@BABAB@,@BABB@A,@BABBA@,@BABC@@,@BAC@@B,@BAC@AA,@BAC@B@,@BACA@A,@BACAA@,@BACB@@,@BAD@@A,@BAD@A@,@BADA@@,@BAE@@@,@BB@@@D,@BB@@AC,@BB@@BB,@BB@@CA,@BB@@D@,@BB@A@C,@BB@AAB,@BB@ABA,@BB@AC@,@BB@B@B,@BB@BAA,@BB@BB@,@BB@C@A,@BB@CA@,@BB@D@@,@BBA@@C,@BBA@AB,@BBA@BA,@BBA@C@,@BBAA@B,@BBAAAA,@BBAAB@,@BBAB@A,@BBABA@,@BBAC@@,@BBB@@B,@BBB@AA,@BBB@B@,@BBBA@A,@BBBAA@,@BBBB@@,@BBC@@A,@BBC@A@,@BBCA@@,@BBD@@@,@BC@@@C,@BC@@AB,@BC@@BA,@BC@@C@,@BC@A@B,@BC@AAA,@BC@AB@,@BC@B@A,@BC@BA@,@BC@C@@,@BCA@@B,@BCA@AA,@BCA@B@,@BCAA@A,@BCAAA@,@BCAB@@,@BCB@@A,@BCB@A@,@BCBA@@,@BCC@@@,@BD@@@B,@BD@@AA,@BD@@B@,@BD@A@A,@BD@AA@,@BD@B@@,@BDA@@A,@BDA@A@,@BDAA@@,@BDB@@@,@BE@@@A,@BE@@A@,@BE@A@@,@BEA@@@,@BF@@@@,@C@@@@E,@C@@@AD,@C@@@BC,@C@@@CB,@C@@@DA,@C@@@E@,@C@@A@D,@C@@AAC,@C@@ABB,@C@@ACA,@C@@AD@,@C@@B@C,@C@@BAB,@C@@BBA,@C@@BC@,@C@@C@B,@C@@CAA,@C@@CB@,@C@@D@A,@C@@DA@,@C@@E@@,@C@A@@D,@C@A@AC,@C@A@BB,@C@A@CA,@C@A@D@,@C@AA@C,@C@AAAB,@C@AABA,@C@AAC@,@C@AB@B,@C@ABAA,@C@ABB@,@C@AC@A,@C@ACA@,@C@AD@@,@C@B@@C,@C@B@AB,@C@B@BA,@C@B@C@,@C@BA@B,@C@BAAA,@C@BAB@,@C@BB@A,@C@BBA@,@C@BC@@,@C@C@@B,@C@C@AA,@C@C@B@,@C@CA@A,@C@CAA@,@C@CB@@,@C@D@@A,@C@D@A@,@C@DA@@,@C@E@@@,@CA@@@D,@CA@@AC,@CA@@BB,@CA@@CA,@CA@@D@,@CA@A@C,@CA@AAB,@CA@ABA,@CA@AC@,@CA@B@B,@CA@BAA,@CA@BB@,@CA@C@A,@CA@CA@,@CA@D@@,@CAA@@C,@CAA@AB,@CAA@BA,@CAA@C@,@CAAA@B,@CAAAAA,@CAAAB@,@CAAB@A,@CAABA@,@CAAC@@,@CAB@@B,@CAB@AA,@CAB@B@,@CABA@A,@CABAA@,@CABB@@,@CAC@@A,@CAC@A@,@CACA@@,@CAD@@@,@CB@@@C,@CB@@AB,@CB@@BA,@CB@@C@,@CB@A@B,@CB@AAA,@CB@AB@,@CB@B@A,@CB@BA@,@CB@C@@,@CBA@@B,@CBA@AA,@CBA@B@,@CBAA@A,@CBAAA@,@CBAB@@,@CBB@@A,@CBB@A@,@CBBA@@,@CBC@@@,@CC@@@B,@CC@@AA,@CC@@B@,@CC@A@A,@CC@AA@,@CC@B@@,@CCA@@A,@CCA@A@,@CCAA@@,@CCB@@@,@CD@@@A,@CD@@A@,@CD@A@@,@CDA@@@,@CE@@@@,@D@@@@D,@D@@@AC,@D@@@BB,@D@@@CA,@D@@@D@,@D@@A@C,@D@@AAB,@D@@ABA,@D@@AC@,@D@@B@B,@D@@BAA,@D@@BB@,@D@@C@A,@D@@CA@,@D@@D@@,@D@A@@C,@D@A@AB,@D@A@BA,@D@A@C@,@D@AA@B,@D@AAAA,@D@AAB@,@D@AB@A,@D@ABA@,@D@AC@@,@D@B@@B,@D@B@AA,@D@B@B@,@D@BA@A,@D@BAA@,@D@BB@@,@D@C@@A,@D@C@A@,@D@CA@@,@D@D@@@,@DA@@@C,@DA@@AB,@DA@@BA,@DA@@C@,@DA@A@B,@DA@AAA,@DA@AB@,@DA@B@A,@DA@BA@,@DA@C@@,@DAA@@B,@DAA@AA,@DAA@B@,@DAAA@A,@DAAAA@,@DAAB@@,@DAB@@A,@DAB@A@,@DABA@@,@DAC@@@,@DB@@@B,@DB@@AA,@DB@@B@,@DB@A@A,@DB@AA@,@DB@B@@,@DBA@@A,@DBA@A@,@DBAA@@,@DBB@@@,@DC@@@A,@DC@@A@,@DC@A@@,@DCA@@@,@DD@@@@,@E@@@@C,@E@@@AB,@E@@@BA,@E@@@C@,@E@@A@B,@E@@AAA,@E@@AB@,@E@@B@A,@E@@BA@,@E@@C@@,@E@A@@B,@E@A@AA,@E@A@B@,@E@AA@A,@E@AAA@,@E@AB@@,@E@B@@A,@E@B@A@,@E@BA@@,@E@C@@@,@EA@@@B,@EA@@AA,@EA@@B@,@EA@A@A,@EA@AA@,@EA@B@@,@EAA@@A,@EAA@A@,@EAAA@@,@EAB@@@,@EB@@@A,@EB@@A@,@EB@A@@,@EBA@@@,@EC@@@@,@F@@@@B,@F@@@AA,@F@@@B@,@F@@A@A,@F@@AA@,@F@@B@@,@F@A@@A,@F@A@A@,@F@AA@@,@F@B@@@,@FA@@@A,@FA@@A@,@FA@A@@,@FAA@@@,@FB@@@@,@G@@@@A,@G@@@A@,@G@@A@@,@G@A@@@,@GA@@@@,@H@@@@@,A@@@@@G,A@@@@AF,A@@@@BE,A@@@@CD,A@@@@DC,A@@@@EB,A@@@@FA,A@@@@G@,A@@@A@F,A@@@AAE,A@@@ABD,A@@@ACC,A@@@ADB,A@@@AEA,A@@@AF@,A@@@B@E,A@@@BAD,A@@@BBC,A@@@BCB,A@@@BDA,A@@@BE@,A@@@C@D,A@@@CAC,A@@@CBB,A@@@CCA,A@@@CD@,A@@@D@C,A@@@DAB,A@@@DBA,A@@@DC@,A@@@E@B,A@@@EAA,A@@@EB@,A@@@F@A,A@@@FA@,A@@@G@@,A@@A@@F,A@@A@AE,A@@A@BD,A@@A@CC,A@@A@DB,A@@A@EA,A@@A@F@,A@@AA@E,A@@AAAD,A@@AABC,A@@AACB,A@@AADA,A@@AAE@,A@@AB@D,A@@ABAC,A@@ABBB,A@@ABCA,A@@ABD@,A@@AC@C,A@@ACAB,A@@ACBA,A@@ACC@,A@@AD@B,A@@ADAA,A@@ADB@,A@@AE@A,A@@AEA@,A@@AF@@,A@@B@@E,A@@B@AD,A@@B@BC,A@@B@CB,A@@B@DA,A@@B@E@,A@@BA@D,A@@BAAC,A@@BABB,A@@BACA,A@@BAD@,A@@BB@C,A@@BBAB,A@@BBBA,A@@BBC@,A@@BC@B,A@@BCAA,A@@BCB@,A@@BD@A,A@@BDA@,A@@BE@@,A@@C@@D,A@@C@AC,A@@C@BB,A@@C@CA,A@@C@D@,A@@CA@C,A@@CAAB,A@@CABA,A@@CAC@,A@@CB@B,A@@CBAA,A@@CBB@,A@@CC@A,A@@CCA@,A@@CD@@,A@@D@@C,A@@D@AB,A@@D@BA,A@@D@C@,A@@DA@B,A@@DAAA,A@@DAB@,A@@DB@A,A@@DBA@,A@@DC@@,A@@E@@B,A@@E@AA,A@@E@B@,A@@EA@A,A@@EAA@,A@@EB@@,A@@F@@A,A@@F@A@,A@@FA@@,A@@G@@@,A@A@@@F,A@A@@AE,A@A@@BD,A@A@@CC,A@A@@DB,A@A@@EA,A@A@@F@,A@A@A@E,A@A@AAD,A@A@ABC,A@A@ACB,A@A@ADA,A@A@AE@,A@A@B@D,A@A@BAC,A@A@BBB,A@A@BCA,A@A@BD@,A@A@C@C,A@A@CAB,A@A@CBA,A@A@CC@,A@A@D@B,A@A@DAA,A@A@DB@,A@A@E@A,A@A@EA@,A@A@F@@,A@AA@@E,A@AA@AD,A@AA@BC,A@AA@CB,A@AA@DA,A@AA@E@,A@AAA@D,A@AAAAC,A@AAABB,A@AAACA,A@AAAD@,A@AAB@C,A@AABAB,A@AABBA,A@AABC@,A@AAC@B,A@AACAA,A@AACB@,A@AAD@A,A@AADA@,A@AAE@@,A@AB@@D,A@AB@AC,A@AB@BB,A@AB@CA,A@AB@D@,A@ABA@C,A@ABAAB,A@ABABA,A@ABAC@,A@ABB@B,A@ABBAA,A@ABBB@,A@ABC@A,A@ABCA@,A@ABD@@,A@AC@@C,A@AC@AB,A@AC@BA,A@AC@C@,A@ACA@B,A@ACAAA,A@ACAB@,A@ACB@A,A@ACBA@,A@ACC@@,A@AD@@B,A@AD@AA,A@AD@B@,A@ADA@A,A@ADAA@,A@ADB@@,A@AE@@A,A@AE@A@,A@AEA@@,A@AF@@@,A@B@@@E,A@B@@AD,A@B@@BC,A@B@@CB,A@B@@DA,A@B@@E@,A@B@A@D,A@B@AAC,A@B@ABB,A@B@ACA,A@B@AD@,A@B@B@C,A@B@BAB,A@B@BBA,A@B@BC@,A@B@C@B,A@B@CAA,A@B@CB@,A@B@D@A,A@B@DA@,A@B@E@@,A@BA@@D,A@BA@AC,A@BA@BB,A@BA@CA,A@BA@D@,A@BAA@C,A@BAAAB,A@BAABA,A@BAAC@,A@BAB@B,A@BABAA,A@BABB@,A@BAC@A,A@BACA@,A@BAD@@,A@BB@@C,A@BB@AB,A@BB@BA,A@BB@C@,A@BBA@B,A@BBAAA,A@BBAB@,A@BBB@A,A@BBBA@,A@BBC@@,A@BC@@B,A@BC@AA,A@BC@B@,A@BCA@A,A@BCAA@,A@BCB@@,A@BD@@A,A@BD@A@,A@BDA@@,A@BE@@@,A@C@@@D,A@C@@AC,A@C@@BB,A@C@@CA,A@C@@D@,A@C@A@C,A@C@AAB,A@C@ABA,A@C@AC@,A@C@B@B,A@C@BAA,A@C@BB@,A@C@C@A,A@C@CA@,A@C@D@@,A@CA@@C,A@CA@AB,A@CA@BA,A@CA@C@,A@CAA@B,A@CAAAA,A@CAAB@,A@CAB@A,A@CABA@,A@CAC@@,A@CB@@B,A@CB@AA,A@CB@B@,A@CBA@A,A@CBAA@,A@CBB@@,A@CC@@A,A@CC@A@,A@CCA@@,A@CD@@@,A@D@@@C,A@D@@AB,A@D@@BA,A@D@@C@,A@D@A@B,A@D@AAA,A@D@AB@,A@D@B@A,A@D@BA@,A@D@C@@,A@DA@@B,A@DA@AA,A@DA@B@,A@DAA@A,A@DAAA@,A@DAB@@,A@DB@@A,A@DB@A@,A@DBA@@,A@DC@@@,A@E@@@B,A@E@@AA,A@E@@B@,A@E@A@A,A@E@AA@,A@E@B@@,A@EA@@A,A@EA@A@,A@EAA@@,A@EB@@@,A@F@@@A,A@F@@A@,A@F@A@@,A@FA@@@,A@G@@@@,AA@@@@F,AA@@@AE,AA@@@BD,AA@@@CC,AA@@@DB,AA@@@EA,AA@@@F@,AA@@A@E,AA@@AAD,AA@@ABC,AA@@ACB,AA@@ADA,AA@@AE@,AA@@B@D,AA@@BAC,AA@@BBB,AA@@BCA,AA@@BD@,AA@@C@C,AA@@CAB,AA@@CBA,AA@@CC@,AA@@D@B,AA@@DAA,AA@@DB@,AA@@E@A,AA@@EA@,AA@@F@@,AA@A@@E,AA@A@AD,AA@A@BC,AA@A@CB,AA@A@DA,AA@A@E@,AA@AA@D,AA@AAAC,AA@AABB,AA@AACA,AA@AAD@,AA@AB@C,AA@ABAB,AA@ABBA,AA@ABC@,AA@AC@B,AA@ACAA,AA@ACB@,AA@AD@A,AA@ADA@,AA@AE@@,AA@B@@D,AA@B@AC,AA@B@BB,AA@B@CA,AA@B@D@,AA@BA@C,AA@BAAB,AA@BABA,AA@BAC@,AA@BB@B,AA@BBAA,AA@BBB@,AA@BC@A,AA@BCA@,AA@BD@@,AA@C@@C,AA@C@AB,AA@C@BA,AA@C@C@,AA@CA@B,AA@CAAA,AA@CAB@,AA@CB@A,AA@CBA@,AA@CC@@,AA@D@@B,AA@D@AA,AA@D@B@,AA@DA@A,AA@DAA@,AA@DB@@,AA@E@@A,AA@E@A@,AA@EA@@,AA@F@@@,AAA@@@E,AAA@@AD,AAA@@BC,AAA@@CB,AAA@@DA,AAA@@E@,AAA@A@D,AAA@AAC,AAA@ABB,AAA@ACA,AAA@AD@,AAA@B@C,AAA@BAB,AAA@BBA,AAA@BC@,AAA@C@B,AAA@CAA,AAA@CB@,AAA@D@A,AAA@DA@,AAA@E@@,AAAA@@D,AAAA@AC,AAAA@BB,AAAA@CA,AAAA@D@,AAAAA@C,AAAAAAB,AAAAABA,AAAAAC@,AAAAB@B,AAAABAA,AAAABB@,AAAAC@A,AAAACA@,AAAAD@@,AAAB@@C,AAAB@AB,AAAB@BA,AAAB@C@,AAABA@B,AAABAAA,AAABAB@,AAABB@A,AAABBA@,AAABC@@,AAAC@@B,AAAC@AA,AAAC@B@,AAACA@A,AAACAA@,AAACB@@,AAAD@@A,AAAD@A@,AAADA@@,AAAE@@@,AAB@@@D,AAB@@AC,AAB@@BB,AAB@@CA,AAB@@D@,AAB@A@C,AAB@AAB,AAB@ABA,AAB@AC@,AAB@B@B,AAB@BAA,AAB@BB@,AAB@C@A,AAB@CA@,AAB@D@@,AABA@@C,AABA@AB,AABA@BA,AABA@C@,AABAA@B,AABAAAA,AABAAB@,AABAB@A,AABABA@,AABAC@@,AABB@@B,AABB@AA,AABB@B@,AABBA@A,AABBAA@,AABBB@@,AABC@@A,AABC@A@,AABCA@@,AABD@@@,AAC@@@C,AAC@@AB,AAC@@BA,AAC@@C@,AAC@A@B,AAC@AAA,AAC@AB@,AAC@B@A,AAC@BA@,AAC@C@@,AACA@@B,AACA@AA,AACA@B@,AACAA@A,AACAAA@,AACAB@@,AACB@@A,AACB@A@,AACBA@@,AACC@@@,AAD@@@B,AAD@@AA,AAD@@B@,AAD@A@A,AAD@AA@,AAD@B@@,AADA@@A,AADA@A@,AADAA@@,AADB@@@,AAE@@@A,AAE@@A@,AAE@A@@,AAEA@@@,AAF@@@@,AB@@@@E,AB@@@AD,AB@@@BC,AB@@@CB,AB@@@DA,AB@@@E@,AB@@A@D,AB@@AAC,AB@@ABB,AB@@ACA,AB@@AD@,AB@@B@C,AB@@BAB,AB@@BBA,AB@@BC@,AB@@C@B,AB@@CAA,AB@@CB@,AB@@D@A,AB@@DA@,AB@@E@@,AB@A@@D,AB@A@AC,AB@A@BB,AB@A@CA,AB@A@D@,AB@AA@C,AB@AAAB,AB@AABA,AB@AAC@,AB@AB@B,AB@ABAA,AB@ABB@,AB@AC@A,AB@ACA@,AB@AD@@,AB@B@@C,AB@B@AB,AB@B@BA,AB@B@C@,AB@BA@B,AB@BAAA,AB@BAB@,AB@BB@A,AB@BBA@,AB@BC@@,AB@C@@B,AB@C@AA,AB@C@B@,AB@CA@A,AB@CAA@,AB@CB@@,AB@D@@A,AB@D@A@,AB@DA@@,AB@E@@@,ABA@@@D,ABA@@AC,ABA@@BB,ABA@@CA,ABA@@D@,ABA@A@C,ABA@AAB,ABA@ABA,ABA@AC@,ABA@B@B,ABA@BAA,ABA@BB@,ABA@C@A,ABA@CA@,ABA@D@@,ABAA@@C,ABAA@AB,ABAA@BA,ABAA@C@,ABAAA@B,ABAAAAA,ABAAAB@,ABAAB@A,ABAABA@,ABAAC@@,ABAB@@B,ABAB@AA,ABAB@B@,ABABA@A,ABABAA@,ABABB@@,ABAC@@A,ABAC@A@,ABACA@@,ABAD@@@,ABB@@@C,ABB@@AB,ABB@@BA,ABB@@C@,ABB@A@B,ABB@AAA,ABB@AB@,ABB@B@A,ABB@BA@,ABB@C@@,ABBA@@B,ABBA@AA,ABBA@B@,ABBAA@A,ABBAAA@,ABBAB@@,ABBB@@A,ABBB@A@,ABBBA@@,ABBC@@@,ABC@@@B,ABC@@AA,ABC@@B@,ABC@A@A,ABC@AA@,ABC@B@@,ABCA@@A,ABCA@A@,ABCAA@@,ABCB@@@,ABD@@@A,ABD@@A@,ABD@A@@,ABDA@@@,ABE@@@@,AC@@@@D,AC@@@AC,AC@@@BB,AC@@@CA,AC@@@D@,AC@@A@C,AC@@AAB,AC@@ABA,AC@@AC@,AC@@B@B,AC@@BAA,AC@@BB@,AC@@C@A,AC@@CA@,AC@@D@@,AC@A@@C,AC@A@AB,AC@A@BA,AC@A@C@,AC@AA@B,AC@AAAA,AC@AAB@,AC@AB@A,AC@ABA@,AC@AC@@,AC@B@@B,AC@B@AA,AC@B@B@,AC@BA@A,AC@BAA@,AC@BB@@,AC@C@@A,AC@C@A@,AC@CA@@,AC@D@@@,ACA@@@C,ACA@@AB,ACA@@BA,ACA@@C@,ACA@A@B,ACA@AAA,ACA@AB@,ACA@B@A,ACA@BA@,ACA@C@@,ACAA@@B,ACAA@AA,ACAA@B@,ACAAA@A,ACAAAA@,ACAAB@@,ACAB@@A,ACAB@A@,ACABA@@,ACAC@@@,ACB@@@B,ACB@@AA,ACB@@B@,ACB@A@A,ACB@AA@,ACB@B@@,ACBA@@A,ACBA@A@,ACBAA@@,ACBB@@@,ACC@@@A,ACC@@A@,ACC@A@@,ACCA@@@,ACD@@@@,AD@@@@C,AD@@@AB,AD@@@BA,AD@@@C@,AD@@A@B,AD@@AAA,AD@@AB@,AD@@B@A,AD@@BA@,AD@@C@@,AD@A@@B,AD@A@AA,AD@A@B@,AD@AA@A,AD@AAA@,AD@AB@@,AD@B@@A,AD@B@A@,AD@BA@@,AD@C@@@,ADA@@@B,ADA@@AA,ADA@@B@,ADA@A@A,ADA@AA@,ADA@B@@,ADAA@@A,ADAA@A@,ADAAA@@,ADAB@@@,ADB@@@A,ADB@@A@,ADB@A@@,ADBA@@@,ADC@@@@,AE@@@@B,AE@@@AA,AE@@@B@,AE@@A@A,AE@@AA@,AE@@B@@,AE@A@@A,AE@A@A@,AE@AA@@,AE@B@@@,AEA@@@A,AEA@@A@,AEA@A@@,AEAA@@@,AEB@@@@,AF@@@@A,AF@@@A@,AF@@A@@,AF@A@@@,AFA@@@@,AG@@@@@,B@@@@@F,B@@@@AE,B@@@@BD,B@@@@CC,B@@@@DB,B@@@@EA,B@@@@F@,B@@@A@E,B@@@AAD,B@@@ABC,B@@@ACB,B@@@ADA,B@@@AE@,B@@@B@D,B@@@BAC,B@@@BBB,B@@@BCA,B@@@BD@,B@@@C@C,B@@@CAB,B@@@CBA,B@@@CC@,B@@@D@B,B@@@DAA,B@@@DB@,B@@@E@A,B@@@EA@,B@@@F@@,B@@A@@E,B@@A@AD,B@@A@BC,B@@A@CB,B@@A@DA,B@@A@E@,B@@AA@D,B@@AAAC,B@@AABB,B@@AACA,B@@AAD@,B@@AB@C,B@@ABAB,B@@ABBA,B@@ABC@,B@@AC@B,B@@ACAA,B@@ACB@,B@@AD@A,B@@ADA@,B@@AE@@,B@@B@@D,B@@B@AC,B@@B@BB,B@@B@CA,B@@B@D@,B@@BA@C,B@@BAAB,B@@BABA,B@@BAC@,B@@BB@B,B@@BBAA,B@@BBB@,B@@BC@A,B@@BCA@,B@@BD@@,B@@C@@C,B@@C@AB,B@@C@BA,B@@C@C@,B@@CA@B,B@@CAAA,B@@CAB@,B@@CB@A,B@@CBA@,B@@CC@@,B@@D@@B,B@@D@AA,B@@D@B@,B@@DA@A,B@@DAA@,B@@DB@@,B@@E@@A,B@@E@A@,B@@EA@@,B@@F@@@,B@A@@@E,B@A@@AD,B@A@@BC,B@A@@CB,B@A@@DA,B@A@@E@,B@A@A@D,B@A@AAC,B@A@ABB,B@A@ACA,B@A@AD@,B@A@B@C,B@A@BAB,B@A@BBA,B@A@BC@,B@A@C@B,B@A@CAA,B@A@CB@,B@A@D@A,B@A@DA@,B@A@E@@,B@AA@@D,B@AA@AC,B@AA@BB,B@AA@CA,B@AA@D@,B@AAA@C,B@AAAAB,B@AAABA,B@AAAC@,B@AAB@B,B@AABAA,B@AABB@,B@AAC@A,B@AACA@,B@AAD@@,B@AB@@C,B@AB@AB,B@AB@BA,B@AB@C@,B@ABA@B,B@ABAAA,B@ABAB@,B@ABB@A,B@ABBA@,B@ABC@@,B@AC@@B,B@AC@AA,B@AC@B@,B@ACA@A,B@ACAA@,B@ACB@@,B@AD@@A,B@AD@A@,B@ADA@@,B@AE@@@,B@B@@@D,B@B@@AC,B@B@@BB,B@B@@CA,B@B@@D@,B@B@A@C,B@B@AAB,B@B@ABA,B@B@AC@,B@B@B@B,B@B@BAA,B@B@BB@,B@B@C@A,B@B@CA@,B@B@D@@,B@BA@@C,B@BA@AB,B@BA@BA,B@BA@C@,B@BAA@B,B@BAAAA,B@BAAB@,B@BAB@A,B@BABA@,B@BAC@@,B@BB@@B,B@BB@AA,B@BB@B@,B@BBA@A,B@BBAA@,B@BBB@@,B@BC@@A,B@BC@A@,B@BCA@@,B@BD@@@,B@C@@@C,B@C@@AB,B@C@@BA,B@C@@C@,B@C@A@B,B@C@AAA,B@C@AB@,B@C@B@A,B@C@BA@,B@C@C@@,B@CA@@B,B@CA@AA,B@CA@B@,B@CAA@A,B@CAAA@,B@CAB@@,B@CB@@A,B@CB@A@,B@CBA@@,B@CC@@@,B@D@@@B,B@D@@AA,B@D@@B@,B@D@A@A,B@D@AA@,B@D@B@@,B@DA@@A,B@DA@A@,B@DAA@@,B@DB@@@,B@E@@@A,B@E@@A@,B@E@A@@,B@EA@@@,B@F@@@@,BA@@@@E,BA@@@AD,BA@@@BC,BA@@@CB,BA@@@DA,BA@@@E@,BA@@A@D,BA@@AAC,BA@@ABB,BA@@ACA,BA@@AD@,BA@@B@C,BA@@BAB,BA@@BBA,BA@@BC@,BA@@C@B,BA@@CAA,BA@@CB@,BA@@D@A,BA@@DA@,BA@@E@@,BA@A@@D,BA@A@AC,BA@A@BB,BA@A@CA,BA@A@D@,BA@AA@C,BA@AAAB,BA@AABA,BA@AAC@,BA@AB@B,BA@ABAA,BA@ABB@,BA@AC@A,BA@ACA@,BA@AD@@,BA@B@@C,BA@B@AB,BA@B@BA,BA@B@C@,BA@BA@B,BA@BAAA,BA@BAB@,BA@BB@A,BA@BBA@,BA@BC@@,BA@C@@B,BA@C@AA,BA@C@B@,BA@CA@A,BA@CAA@,BA@CB@@,BA@D@@A,BA@D@A@,BA@DA@@,BA@E@@@,BAA@@@D,BAA@@AC,BAA@@BB,BAA@@CA,BAA@@D@,BAA@A@C,BAA@AAB,BAA@ABA,BAA@AC@,BAA@B@B,BAA@BAA,BAA@BB@,BAA@C@A,BAA@CA@,BAA@D@@,BAAA@@C,BAAA@AB,BAAA@BA,BAAA@C@,BAAAA@B,BAAAAAA,BAAAAB@,BAAAB@A,BAAABA@,BAAAC@@,BAAB@@B,BAAB@AA,BAAB@B@,BAABA@A,BAABAA@,BAABB@@,BAAC@@A,BAAC@A@,BAACA@@,BAAD@@@,BAB@@@C,BAB@@AB,BAB@@BA,BAB@@C@,BAB@A@B,BAB@AAA,BAB@AB@,BAB@B@A,BAB@BA@,BAB@C@@,BABA@@B,BABA@AA,BABA@B@,BABAA@A,BABAAA@,BABAB@@,BABB@@A,BABB@A@,BABBA@@,BABC@@@,BAC@@@B,BAC@@AA,BAC@@B@,BAC@A@A,BAC@AA@,BAC@B@@,BACA@@A,BACA@A@,BACAA@@,BACB@@@,BAD@@@A,BAD@@A@,BAD@A@@,BADA@@@,BAE@@@@,BB@@@@D,BB@@@AC,BB@@@BB,BB@@@CA,BB@@@D@,BB@@A@C,BB@@AAB,BB@@ABA,BB@@AC@,BB@@B@B,BB@@BAA,BB@@BB@,BB@@C@A,BB@@CA@,BB@@D@@,BB@A@@C,BB@A@AB,BB@A@BA,BB@A@C@,BB@AA@B,BB@AAAA,BB@AAB@,BB@AB@A,BB@ABA@,BB@AC@@,BB@B@@B,BB@B@AA,BB@B@B@,BB@BA@A,BB@BAA@,BB@BB@@,BB@C@@A,BB@C@A@,BB@CA@@,BB@D@@@,BBA@@@C,BBA@@AB,BBA@@BA,BBA@@C@,BBA@A@B,BBA@AAA,BBA@AB@,BBA@B@A,BBA@BA@,BBA@C@@,BBAA@@B,BBAA@AA,BBAA@B@,BBAAA@A,BBAAAA@,BBAAB@@,BBAB@@A,BBAB@A@,BBABA@@,BBAC@@@,BBB@@@B,BBB@@AA,BBB@@B@,BBB@A@A,BBB@AA@,BBB@B@@,BBBA@@A,BBBA@A@,BBBAA@@,BBBB@@@,BBC@@@A,BBC@@A@,BBC@A@@,BBCA@@@,BBD@@@@,BC@@@@C,BC@@@AB,BC@@@BA,BC@@@C@,BC@@A@B,BC@@AAA,BC@@AB@,BC@@B@A,BC@@BA@,BC@@C@@,BC@A@@B,BC@A@AA,BC@A@B@,BC@AA@A,BC@AAA@,BC@AB@@,BC@B@@A,BC@B@A@,BC@BA@@,BC@C@@@,BCA@@@B,BCA@@AA,BCA@@B@,BCA@A@A,BCA@AA@,BCA@B@@,BCAA@@A,BCAA@A@,BCAAA@@,BCAB@@@,BCB@@@A,BCB@@A@,BCB@A@@,BCBA@@@,BCC@@@@,BD@@@@B,BD@@@AA,BD@@@B@,BD@@A@A,BD@@AA@,BD@@B@@,BD@A@@A,BD@A@A@,BD@AA@@,BD@B@@@,BDA@@@A,BDA@@A@,BDA@A@@,BDAA@@@,BDB@@@@,BE@@@@A,BE@@@A@,BE@@A@@,BE@A@@@,BEA@@@@,BF@@@@@,C@@@@@E,C@@@@AD,C@@@@BC,C@@@@CB,C@@@@DA,C@@@@E@,C@@@A@D,C@@@AAC,C@@@ABB,C@@@ACA,C@@@AD@,C@@@B@C,C@@@BAB,C@@@BBA,C@@@BC@,C@@@C@B,C@@@CAA,C@@@CB@,C@@@D@A,C@@@DA@,C@@@E@@,C@@A@@D,C@@A@AC,C@@A@BB,C@@A@CA,C@@A@D@,C@@AA@C,C@@AAAB,C@@AABA,C@@AAC@,C@@AB@B,C@@ABAA,C@@ABB@,C@@AC@A,C@@ACA@,C@@AD@@,C@@B@@C,C@@B@AB,C@@B@BA,C@@B@C@,C@@BA@B,C@@BAAA,C@@BAB@,C@@BB@A,C@@BBA@,C@@BC@@,C@@C@@B,C@@C@AA,C@@C@B@,C@@CA@A,C@@CAA@,C@@CB@@,C@@D@@A,C@@D@A@,C@@DA@@,C@@E@@@,C@A@@@D,C@A@@AC,C@A@@BB,C@A@@CA,C@A@@D@,C@A@A@C,C@A@AAB,C@A@ABA,C@A@AC@,C@A@B@B,C@A@BAA,C@A@BB@,C@A@C@A,C@A@CA@,C@A@D@@,C@AA@@C,C@AA@AB,C@AA@BA,C@AA@C@,C@AAA@B,C@AAAAA,C@AAAB@,C@AAB@A,C@AABA@,C@AAC@@,C@AB@@B,C@AB@AA,C@AB@B@,C@ABA@A,C@ABAA@,C@ABB@@,C@AC@@A,C@AC@A@,C@ACA@@,C@AD@@@,C@B@@@C,C@B@@AB,C@B@@BA,C@B@@C@,C@B@A@B,C@B@AAA,C@B@AB@,C@B@B@A,C@B@BA@,C@B@C@@,C@BA@@B,C@BA@AA,C@BA@B@,C@BAA@A,C@BAAA@,C@BAB@@,C@BB@@A,C@BB@A@,C@BBA@@,C@BC@@@,C@C@@@B,C@C@@AA,C@C@@B@,C@C@A@A,C@C@AA@,C@C@B@@,C@CA@@A,C@CA@A@,C@CAA@@,C@CB@@@,C@D@@@A,C@D@@A@,C@D@A@@,C@DA@@@,C@E@@@@,CA@@@@D,CA@@@AC,CA@@@BB,CA@@@CA,CA@@@D@,CA@@A@C,CA@@AAB,CA@@ABA,CA@@AC@,CA@@B@B,CA@@BAA,CA@@BB@,CA@@C@A,CA@@CA@,CA@@D@@,CA@A@@C,CA@A@AB,CA@A@BA,CA@A@C@,CA@AA@B,CA@AAAA,CA@AAB@,CA@AB@A,CA@ABA@,CA@AC@@,CA@B@@B,CA@B@AA,CA@B@B@,CA@BA@A,CA@BAA@,CA@BB@@,CA@C@@A,CA@C@A@,CA@CA@@,CA@D@@@,CAA@@@C,CAA@@AB,CAA@@BA,CAA@@C@,CAA@A@B,CAA@AAA,CAA@AB@,CAA@B@A,CAA@BA@,CAA@C@@,CAAA@@B,CAAA@AA,CAAA@B@,CAAAA@A,CAAAAA@,CAAAB@@,CAAB@@A,CAAB@A@,CAABA@@,CAAC@@@,CAB@@@B,CAB@@AA,CAB@@B@,CAB@A@A,CAB@AA@,CAB@B@@,CABA@@A,CABA@A@,CABAA@@,CABB@@@,CAC@@@A,CAC@@A@,CAC@A@@,CACA@@@,CAD@@@@,CB@@@@C,CB@@@AB,CB@@@BA,CB@@@C@,CB@@A@B,CB@@AAA,CB@@AB@,CB@@B@A,CB@@BA@,CB@@C@@,CB@A@@B,CB@A@AA,CB@A@B@,CB@AA@A,CB@AAA@,CB@AB@@,CB@B@@A,CB@B@A@,CB@BA@@,CB@C@@@,CBA@@@B,CBA@@AA,CBA@@B@,CBA@A@A,CBA@AA@,CBA@B@@,CBAA@@A,CBAA@A@,CBAAA@@,CBAB@@@,CBB@@@A,CBB@@A@,CBB@A@@,CBBA@@@,CBC@@@@,CC@@@@B,CC@@@AA,CC@@@B@,CC@@A@A,CC@@AA@,CC@@B@@,CC@A@@A,CC@A@A@,CC@AA@@,CC@B@@@,CCA@@@A,CCA@@A@,CCA@A@@,CCAA@@@,CCB@@@@,CD@@@@A,CD@@@A@,CD@@A@@,CD@A@@@,CDA@@@@,CE@@@@@,D@@@@@D,D@@@@AC,D@@@@BB,D@@@@CA,D@@@@D@,D@@@A@C,D@@@AAB,D@@@ABA,D@@@AC@,D@@@B@B,D@@@BAA,D@@@BB@,D@@@C@A,D@@@CA@,D@@@D@@,D@@A@@C,D@@A@AB,D@@A@BA,D@@A@C@,D@@AA@B,D@@AAAA,D@@AAB@,D@@AB@A,D@@ABA@,D@@AC@@,D@@B@@B,D@@B@AA,D@@B@B@,D@@BA@A,D@@BAA@,D@@BB@@,D@@C@@A,D@@C@A@,D@@CA@@,D@@D@@@,D@A@@@C,D@A@@AB,D@A@@BA,D@A@@C@,D@A@A@B,D@A@AAA,D@A@AB@,D@A@B@A,D@A@BA@,D@A@C@@,D@AA@@B,D@AA@AA,D@AA@B@,D@AAA@A,D@AAAA@,D@AAB@@,D@AB@@A,D@AB@A@,D@ABA@@,D@AC@@@,D@B@@@B,D@B@@AA,D@B@@B@,D@B@A@A,D@B@AA@,D@B@B@@,D@BA@@A,D@BA@A@,D@BAA@@,D@BB@@@,D@C@@@A,D@C@@A@,D@C@A@@,D@CA@@@,D@D@@@@,DA@@@@C,DA@@@AB,DA@@@BA,DA@@@C@,DA@@A@B,DA@@AAA,DA@@AB@,DA@@B@A,DA@@BA@,DA@@C@@,DA@A@@B,DA@A@AA,DA@A@B@,DA@AA@A,DA@AAA@,DA@AB@@,DA@B@@A,DA@B@A@,DA@BA@@,DA@C@@@,DAA@@@B,DAA@@AA,DAA@@B@,DAA@A@A,DAA@AA@,DAA@B@@,DAAA@@A,DAAA@A@,DAAAA@@,DAAB@@@,DAB@@@A,DAB@@A@,DAB@A@@,DABA@@@,DAC@@@@,DB@@@@B,DB@@@AA,DB@@@B@,DB@@A@A,DB@@AA@,DB@@B@@,DB@A@@A,DB@A@A@,DB@AA@@,DB@B@@@,DBA@@@A,DBA@@A@,DBA@A@@,DBAA@@@,DBB@@@@,DC@@@@A,DC@@@A@,DC@@A@@,DC@A@@@,DCA@@@@,DD@@@@@,E@@@@@C,E@@@@AB,E@@@@BA,E@@@@C@,E@@@A@B,E@@@AAA,E@@@AB@,E@@@B@A,E@@@BA@,E@@@C@@,E@@A@@B,E@@A@AA,E@@A@B@,E@@AA@A,E@@AAA@,E@@AB@@,E@@B@@A,E@@B@A@,E@@BA@@,E@@C@@@,E@A@@@B,E@A@@AA,E@A@@B@,E@A@A@A,E@A@AA@,E@A@B@@,E@AA@@A,E@AA@A@,E@AAA@@,E@AB@@@,E@B@@@A,E@B@@A@,E@B@A@@,E@BA@@@,E@C@@@@,EA@@@@B,EA@@@AA,EA@@@B@,EA@@A@A,EA@@AA@,EA@@B@@,EA@A@@A,EA@A@A@,EA@AA@@,EA@B@@@,EAA@@@A,EAA@@A@,EAA@A@@,EAAA@@@,EAB@@@@,EB@@@@A,EB@@@A@,EB@@A@@,EB@A@@@,EBA@@@@,EC@@@@@,F@@@@@B,F@@@@AA,F@@@@B@,F@@@A@A,F@@@AA@,F@@@B@@,F@@A@@A,F@@A@A@,F@@AA@@,F@@B@@@,F@A@@@A,F@A@@A@,F@A@A@@,F@AA@@@,F@B@@@@,FA@@@@A,FA@@@A@,FA@@A@@,FA@A@@@,FAA@@@@,FB@@@@@,G@@@@@A,G@@@@A@,G@@@A@@,G@@A@@@,G@A@@@@,GA@@@@@,H@@@@@@}

Keep this in mind! This is your solution space size that you output...

C(8,7)= 3003. C(9,9) = 24310. C(200,100) =

1.3860838210861882482611278421088 x 1081

Page 11: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

ProblemsSome Solutions to Problem 1:

s+k−1 , n−1

Often solutions try to take one element and form the next from the previous to avoid consuming extra space.

Randomized Generation Idea: Keep generating unique sequences of

unique sum of s from a uniform distribution on [0,s] and test if it's currently in the set.

Hard to analyze, but often useful in parallel implementations.

Page 12: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

ProblemsSome Solutions to Problem 1:

s+k−1 , n−1

K-bit Reflected Gray Code Generation: Idea: Generate all gray codes in

lexicographical order of length n integers in binary, then on the last iteration, remove all elements which don't sum to s if the last symbol is added.

Constructs elements from scratch but the trade off could be dependent on implementation. (moves to modern results)

Bitner-Ehrlich-Reingold (BER) method.

Page 13: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

ProblemsSome Solutions to Problem 1:

s+k−1 , n−1

Brute Force: Idea: Similar to the previous technique

except working directly with integers. Based on the definition, this technique can

always take advantage of the fact we have a continuous interval of non-negative integers.

Simpler to implement but space can grow substantially more than the previous. Very small instances can be efficient.

Page 14: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

ProblemsUpper Bounds/Lower Bounds:

s+k−1 , n−1

This problem has been attacked numerous times by many researchers since the 70's by the likes of Knuth, Lothaire, and many others.

Optimal solution: Combinatorial Gray Codes. For simplicity: let k be the output size of a given

composition.

Page 15: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

ProblemsVital Result:

s+k−1 , n−1

Goal: Compute gray codes quickly, and perform the 2nd technique (with modification).

O(1) – Generating gray codes in O(1) worst-case time per word [Walsh,2003]

Map this problem to our unrestricted composition problem

Upper Bound – Ω(k) [evident from above] Optimal Time.

Page 16: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

ProblemsProblem 2 (Definition): A finite set CL,U

s,n which contains all integer

sequences л = л1 л2 ... лn such that Σ (лi) = s, 1≤i≤n, where L ≤ лi ≤ U.

This is called an bounded composition. Specific type of restricted composition. Inherits problems from problem 1. New problems: unused space and decision

complexity increases.

s+k−1 , n−1

Page 17: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

ProblemsProblem 2:

Given positive integers n,s (n =0 iff s = 0), and non-negative integers L,U, enumerate the

bounded composition CL,Us,n .

Why would we want this?− Many of the same reasons, but some of the

more modern research was for statistical analysis in computation.

Applying the last problems solutions can be tedious but are doable but can lead to space-issues in contrast to solution size.

s+k−1 , n−1

Page 18: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

ProblemsProblem 2:

Using the same techniques as Problem 1 would cause a rise in time-complexity

using the optimal solution. When L=0 and U=s, we get the

unrestricted composition. Same lower bound holds since this is a

sub-instance of Problem 1.

s+k−1 , n−1

Page 19: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

ProblemsSome Solutions to Problem 2:

s+k−1 , n−1

Another technique:Idea: Based on Fibonnaci Numbers and

Pascal's Triangle for counting.[Kimberling. 2002]

Inside pascal's triangle there exists a path from an interior node to the root that will diagonally reach the root of the triangle. Thus when reading off the coefficients of the triangle you obtain a composition sequence of elements for each off diagonal.

Picture... next here...

Page 20: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

ProblemsSome Solutions to Problem 2:

s+k−1 , n−1

Page 21: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

ProblemsSome Solutions to Problem 2:

s+k−1 , n−1

Page 22: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

ProblemsSome Solutions to Problem 2:

s+k−1 , n−1

Page 23: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

ProblemsSome Solutions to Problem 2:

s+k−1 , n−1

This solution was developed by J.D. Opdyke in 2010 from Kimberling's result.

time-complexity: ~O(k x RICs) Hard to bound the algorithm's run-time. Flaws: Recursive, and has loops. Is the best result in Bounded Compositions.

Page 24: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

Future ProblemsProblem 3:

s+k−1 , n−1

Given positive integers n,s (n =0 iff s = 0), and set of non-negative integers R, enumerate

the restricted composition CRs,n .

Very tough problem. General 'first order'. Has reduction to Positive Integer Subset

Sum Problem 1 and Problem 2's solutions won't

work on this without a heavy cost. Discontinuity of values.

Work on counting has been done for this but, not generating.

Page 25: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

Future ResearchResearch Interests:

s+k−1 , n−1

We had mentioned Problem 3 but what other interests hold in this discourse with

Compositions still? Pattern avoidance work, w-avoidance

Relationships between Integer Partitions and Integer Compositions

'2nd order' problems with compositions.

Page 26: Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and Unrestricted Compositions and Words Daniel Page April 8, 2011

Questions?

s+k−1 , n−1

Thank you very much for your time!

Questions?

Have a beautiful day!