这里我们正在寻找长度为$N$的二进制字符串不包含子字符串$11011$。结果是$2^N$减这个数字。
所谓的Goulden-Jackson聚类法是推导生成函数针对此类问题。
我们考虑从字母表$$\mathcal{V}=\{0,1\}$$和坏的不允许作为我们正在寻找的单词的一部分的单词。
我们导出了一个函数$F(x)$,其系数为$x^N$,即需要的长度为$N$的单词数。根据论文(第7页),生成函数$F(x)$为\开始{align*}F(x)=\frac{1}{1-dx-\text{weight}(\mathcal{C})}\结束{align*}$d=|\mathcal{V}|=2$,字母表的大小权重数字$\mathcal{C}$与\开始{align*}\text{weight}(\mathcal{C})=\text{weight{(\mathcal{C}[11011])\结束{align*}
我们根据论文计算\开始{align*}\text{weight}(\mathcal{C}[11011])&=-x^5-\text{weight{(\mathcal{C}[11011')\left(x^3+x^4\right)\结束{align*}
具体如下:生成函数$F(x)$用于从$\{0,1\}$生成的字数不包含子字$11011$is\开始{align*}F(x)&=\frac{1}{1-dx-\text{weight}(\mathcal{C})}\\&=\压裂{1}{1-2x+\压裂{x^5}{1+x^3+x^4}}\\&=\压裂{1+x^3+x^4}{1-2x+x^3-x^4-x^5}\结束{align*}
由于生成函数计算长度为$N$的所有二进制字符串的数字$2^N$为\开始{align*}\压裂{1}{1-2x}=1+2x+4x^2+\cdots\结束{align*}
我们得出结论:包含字符串$11011$的长度为$N$的数字二进制字符串的生成函数为
\开始{align*}\压裂{1}{1-2x}-F(x) &=\压裂{1}{1-2x}-\裂缝{1+x^3+x^4}{1-2x+x^3-x^4-x^5}\\&=\压裂{x^5}{(1-2x)(1-2x+x^3-x^4-x^5)}\\&=x^5+4x^6+12x^7+31x^8+75x^9+175x^{10}\\&\qquad 399x^{11}+894x^{12}+1975x^{13}+4133x^{14}+9330x^{15}+\cdots\结束{align*}
最后一行(1)是在Wolfram Alpha的帮助下计算的,我们可以看到长度小于等于$N=15$的字符串的解的数量。
例如,包含子字符串$11011$的长度为$7$的$12$字符串是
\开始{数组}{cccc}\颜色{蓝色}{00}11011\四边形\\quad\color{blue}{0}11011\颜色{蓝色}{0}\quad&\quad11011\color{蓝色{00}\\\颜色{蓝色}{01}11011\四边形\\quad\color{blue}{0}11011\颜色{蓝色}{1}\四元和四元11011\颜色{蓝}{01}\\\颜色{蓝色}{10}11011\四边形\\quad\color{blue}{1}11011\颜色{蓝色}{0}\四元和\quad11011\颜色{蓝}{10}\\\颜色{蓝色}{11}11011\四边形\\quad\color{blue}{1}11011\颜色{蓝色}{1}\四边形&\quad11011\颜色{蓝}{11}\\\结束{数组}