|
评论
|
包含空子串更为自然,这将导致序列b(n)=a(n)+1;迄今为止计算的所有值都证实了a(n)+1的猜想=A006697号(n) ●●●●-M.F.哈斯勒2007年12月17日
除了给出的示例外,计算还发现了17个长度为6的其他二进制字符串,其中包含不同子字符串的最大数a(6)=16。有趣的是,这18个实例中的每一个都给出了相同数量的每个可能长度的子串,在本例中,2,4,3,2,1个子串的长度分别为1到6。
计算表明,对于任何n>0,存在长度为n的二进制字符串,因此长度为k,1<=k<=n的不同子串的数量尽可能大,符合基本计数原则,即n-k+1长度为k的子串,从n-k+1可能的起始位置开始,但受条件限制,长度k的不同二进制字符串不能超过2^k。这表明了以下推测。猜想:长度为n的二进制字符串的不同子串的最大数目a(n)由a(n”)=Sum_{k=1..n}t(k)给出,其中t(k”)是2^k和n-k+1中的较小者。
猜想:a(n)=2^(m+1)-2+(n-m)(n-m+1)/2,其中m=floor(n+1-LambertW(2^(n+1)*log(2))/log(2-M.F.哈斯勒2007年12月17日
来自Peter Pein(petsie(AT)dordos.net),2008年1月18日:(开始)
以下启发式方法似乎适用于计算长度为n的二进制字符串的最大不同子字符串数。
从空列表开始,在每一步尝试在每个可能的位置插入一个零或一个。然后选择子列表数量最多的第一个列表并重新开始。
假设我们有{0,0,1,0}作为子列表数量最多的列表之一。那么我下一次考试的候选人是:
使用[{lastbest={0,0,1,1,0}},并集[Flatten[Outer[Insert[lastbest,#2,#1]&,Range[1+Length[lastbest]],{0,1},1],1]]
{{0, 0, 0, 1, 1, 0}, {0, 0, 1, 0, 1, 0}, {0, 0, 1, 1, 0, 0}, {0, 0, 1, 1, 0, 1}, {0, 0, 1, 1, 1, 0}, {0, 1, 0, 1, 1, 0}, {1, 0, 0, 1, 1, 0}}
请参见http://freenet-homepage.de/Peter_Berlin/Mathe/euristicA094913.nb为Mathematica笔记本提供完整(简单)算法。还有一个屏幕截图(相同的URL,但带有.png而不是.nb)。
推测:列总和:
1 3 5 7 9 11 13 ...
1 3 5 7 ...
1 ...
....................
--------------------
1 3 5 8 12 16 21 ... (完)
|