定义1:一个字符串被认为是square-free的,当且仅当它不包含形如xx的子串,其中,x为有限非空字符串。
你很快发现,两个字符(a,b)组成的字母表,在长度大于3时无法构造出square-free的字符串,因为长度为4的字符串总会包括形如aa,bb,baba,abab的子串,所以要构造这样一个square-free的字串,所需字母表元素个数要在3个及以上。挪威数学家Axel Thue证明了存在一个由三个元素的字母表构成的square-free的无限字符串,并给出如何构造的方法。
定义2:一个字符串被认为是cubic-free的,当且仅当不出现形如xxa的字符串,其中x为非空有限字符串,a为x的首字母。{PS:其实与yxyxy形式等价,其中y为任意字符}
显然,一个字符串如果是square-free,很有可能也会是cubic-free的
Thue-Morse 序列
定义3:一个Thue-Morse序列α={Sn},按照如下定义(n从0开始)
Sn={a --n的二进制位1的个数为偶数
b --n的二进制位1的个数为奇数}
因此,我们可以造出一个由两种元素组成的序列α=abbabaabbaabab.....
(PS:其实原始的序列生成是这样的:)
指定a,b是相反的,即a=-b且b=-a
现在对于一些α上的字可以很明显的推出一些结论
推论4:S[2n]=S[n],S[2n+1]=-S[n],由这可以推出如下命题:S[j]=S[j+1]==》j为奇数(注意,不能等价)
同时,我们可以知道,不存在j使得S[j]=S[j+1]=S[j+2]
由此可知{S[2n]}=α {-S[2n+1]}=α
设P={S[2n]} N={S[2n+1]},即P为α中偶数位,N为α中奇数位
推论5:α中连续5个字母中存在两个连续字母是相同的
证明:若不是这样的,那么,存在两种情况ababa和babab,那么,P或N序列中会有aaa或bbb出现,由推论4可知,这是不可能的,因为P实际上就是α,N实际上为α的反序列。
重要命题6:α序列是cubic-free的,即对于i>=0,j>0(注意没有等号),不存在对于所有的k都满足s[i+k]=s[i+j+k],(0<=k<=j)
{PS:再次注明,cubic-free其实就是yxyxy的形式}
证明:假定存在满足的i,j
1:由推论4可知,j!=1,由推论5可知,j!=2;
2:j不能是奇数。假定j为奇数,由推论5可知,若两个连续的相等字母起始位置为q,由1可知j>=3,由假定可知,q+j与q异奇偶,又由推论4,s[j]=s[j+1]==》j为奇数,可知出现矛盾。
3:由此,j一定为偶数,又假定j为偶数,且j为可行的最小的取值,考虑P或N序列,在s[i]到s[i+2*j]中隔1取出一个字符,那么取出的属于P或N序列,这时由于假定,取出的序列也满足条件,而j变为一半,与最小性冲突。
引理7:存在一个由四个元素字母表构成的square-free的无限字符串β
证明:定义字母表为{[aa],[ab],[ba],[bb]}定义β=d[n]={S[n]S[n+1]}即α中相邻两个连接。若β不是square-free的,那么存在形如xx的字串,即存在j,t使得
d[j]d[j+1]...d[j+t-1]=d[j+t]d[j+t+1]...d[j+2*t-1],等价于s[j]s[j+1]s[j+1]s[j+2]...s[j+t-1]s[j+t]=s[j+t]s[j+t+1]s[j+t+1]s[j+t+2]...s[j+2*t-1]s[j+2*t],此字符串长度为偶数,那么除去重复项,得到s[j]s[j+1]...s[j+t-1]s[j+t]=s[j+t]s[j+t+1]...s[j+2*t]即与结论6冲突。
引理8:若令[aa]=1,[ab]=2,[ba]=3,[bb]=4,则在β中有1若出现则必在3之后在2之前,4若出现必在2之后在3之前。
这是显然的,将其分类手动枚举一下,由于推论4,不会有baaa或abbb的情况出现,所以得证
然后由于4与1不会连续,将1、4用同一字符比如5表示,在β基础上构造字符串γ。
重要命题9:γ是square-free的。
证明:如果γ不是square-free的,那么设某个重复子串yy出现在γ中。由于引理8,y的长度不可能是1,因为22、33不可能出现而55对应β14、41、44、11也是不可能的。
那么,y的长度肯定大于1,由于β是square-free的,所以仅仅由2、3构成的y是不存在的,考虑存在5的y,由于β是square-free的,那么两个连续的y在相同的位置的5不能表示同一字符,那么必须是第一个y中有5表示1,对应第二个y中的5必须表示4,或者反过来,但又由于引理8,出现1时前后为“312”,出现4时前后为“243”,矛盾。
所以此题基本结束,由于n大于等于4时用两个字符的字母表无法构出解,所以使用3个字符的γ字符串即为一组可行解。