求字母表长度范围m到n的所有笛卡尔积构成的序列的正式数学术语
嘿,这个问题问得挺到位的!我帮你梳理下对应的正式数学术语,方便你后续查资料:
Kleene星号的有限截断/前缀:在形式语言理论里,字母表$\alpha$的Kleene星号记作
α*,它代表所有由$\alpha$中元素组成的有限长度序列(包括长度为0的空序列)——也就是当你的n趋向无穷时,序列S的极限形态。而你这里限定了长度从0到n,所以这就是Kleene星号的有限前缀片段,很多文献里会直接描述为“字母表$\alpha$上长度不超过n的所有有限序列的有序集合”。按长度分层的字符串枚举序列:如果把每个k元笛卡尔积的元素看作长度为k的“字符串”(这里的字符串是广义的,元素是你字母表里的数字),那你的S就是把长度0到n的所有这类字符串,先按长度从小到大排序,同长度内再按字典序(你例子里的排列顺序正好是字典序)排成的序列。这个表述在组合编码、枚举算法相关的资料里很常见。
有限长度序列集合的有序枚举:从集合论角度,你描述的S对应的集合是$\bigcup_{k=0}^n \alpha^k$(所有长度0到n的笛卡尔积的并集),这个集合本身常被称为字母表$\alpha$上的有限长度序列集合,而你把它转化成有序序列的形式,就是这个集合的一个全序枚举(这里的全序是“先比长度,长度相同比元素字典序”)。
另外,你提到的那种不需要预生成S就能实现整数和序列之间的双射,其实和组合编码、混合进制数映射有关:比如对于基数为b的字母表,你可以把整数按“长度0的序列占1个位置,长度1的占b个,长度2的占b²个……”来分段,每个序列对应到一段里的某个整数,反过来就是把整数拆解成对应长度的混合进制数。这种思路在很多枚举算法、编码理论里都有应用,你可以沿着“字符串到整数的双射编码”“有限序列枚举编码”这类关键词去查。
备注:内容来源于stack exchange,提问作者saxbophone

