enumeration algorithms for€¦ · · 2014-09-02enumeration algorithms for restricted and...
TRANSCRIPT
Enumeration Algorithms for Restricted and Unrestricted Compositions and Words
Daniel PageApril 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
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.
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)}
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}
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.
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”
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”
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
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
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.
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.
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.
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.
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.
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
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
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
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...
ProblemsSome Solutions to Problem 2:
s+k−1 , n−1
ProblemsSome Solutions to Problem 2:
s+k−1 , n−1
ProblemsSome Solutions to Problem 2:
s+k−1 , n−1
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.
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.
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.
Questions?
s+k−1 , n−1
Thank you very much for your time!
Questions?
Have a beautiful day!