Skip to content

LyndonFactorizationLength ​

The factors in the Lyndon factorization.

✓ checked against that system · ! checked, with disagreements (hover a chip)FindStatSt001267via BinaryWord✓
LyndonFactorizationLength(word)The factors in the Lyndon factorization.
Typed signatures
TypePackageApplies
(binary_word) -> numbercombinatoricsalways

Domain: Binary word statistics

Details
  • Defined over BinaryWord as an expression in _x, evaluated by compute-engine — the definition IS the implementation.
  • Takes a BinaryWord and nothing else — it reads values against their positions, or walks the orbits, so it needs the bijection. Applying it to a bare list is a type error, not a wrong answer.
  • FindStat's St001267. A factor starts at each position whose suffix is smaller than every earlier suffix; the table starts with a numeral above any suffix's, and pads a suffix with the digit 0, which is smaller than a letter, so the numerals order the suffixes.

Definition

Epsil, as the implementation runs it.

on BinaryWord, over _x

0 if Length(_x) < 1 else 1 if Length(_x) < 2 else Apply(
                                                         (v: list<integer>) => 1 +
                                                                               Max(Sum(Map(
                                                                                            Function(1 if v[i + 1] <
                                                                                                          Min(Map(Function(v[m], m), Range(1, i, 1))) else 0, i),
                                                                                            Range(2, Length(_x), 1),
                                                                                          )), 0),
                                                         Apply(
                                                                (a_init: list<integer>) => Fold(
                                                                                                 (a: list<integer>, b) => Apply(
                                                                                                                                 (a_next: list<integer>) => a_next,
                                                                                                                                 Join(a, [Max(Sum(Map(Function((_x[b +
                                                                                                                                                                   (m - 1)] +
                                                                                                                                                                1) *
                                                                                                                                                               3 ^
                                                                                                                                                               (Length(_x) - m), m), Range(1, Length(_x) - b +
                                                                                                                                                                              1, 1))), 0)]),
                                                                                                                               ),
                                                                                                 a_init,
                                                                                                 Range(1, Length(_x)),
                                                                                               ),
                                                                [3 ^ Length(_x)],
                                                              ),
                                                       )

Examples

Basic #

the word 110100111110100111

live ↗
InLyndonFactorizationLength(BinaryWord⁡([1,1,0,1,0,0,1,1,1]))\mathrm{LyndonFactorizationLength}({\operatorname{BinaryWord}}([1, 1, 0, 1, 0, 0, 1, 1, 1]))Out44
Properties #

FindStat's value for 0

live ↗
InCombinatorialStat(BinaryWord⁡([0]),LyndonFactorizationLength)\mathrm{CombinatorialStat}({\operatorname{BinaryWord}}([0]), \text{LyndonFactorizationLength})Out11

Known value · FindStat St001267

FindStat's value for 1

live ↗
InCombinatorialStat(BinaryWord⁡([1]),LyndonFactorizationLength)\mathrm{CombinatorialStat}({\operatorname{BinaryWord}}([1]), \text{LyndonFactorizationLength})Out11

Known value · FindStat St001267

FindStat's value for 00

live ↗
InCombinatorialStat(BinaryWord⁡([0,0]),LyndonFactorizationLength)\mathrm{CombinatorialStat}({\operatorname{BinaryWord}}([0, 0]), \text{LyndonFactorizationLength})Out22

Known value · FindStat St001267

About
Examples4
CrosswalkFindStat