生成最长的位序列(每个槽只有0或1)。生成最长的位序列,其中所有5位连续的子序列都是唯一的
在这个序列中,所有连续的m-bit
子序列是不同的。
例如,如果m = 2,那么00110
是这样一个最长的序列。所有2位子序列都是唯一的:00
01
11
10
。
使用蛮力就一定能够找到一个m
这样的序列。
但是,有没有一个聪明的方法?
生成最长的位序列(每个槽只有0或1)。生成最长的位序列,其中所有5位连续的子序列都是唯一的
在这个序列中,所有连续的m-bit
子序列是不同的。
例如,如果m = 2,那么00110
是这样一个最长的序列。所有2位子序列都是唯一的:00
01
11
10
。
使用蛮力就一定能够找到一个m
这样的序列。
但是,有没有一个聪明的方法?
你可以找到解决方案:邀请离散数学 Matousek和Nesetril第140页(btw。最漂亮的书籍之一)。
答案是惊人的:2 k每个k> = 1(在你的情况32)。 我举:
定义以下面的方式的曲线图G =(V,E):(%)V是组0和长度的1秒k的所有序列的 - 1(%)的有向边缘都对形式的(K-1) - 数位序列((的,...,一个 K-1),(A 2 ,...,一个ķ) )。定向边与k位序列具有双射对应关系(a ,...,a k)。
然后它是足够G.
编辑 找到一个欧拉环游他们把序列,如果它的结束和开始都粘。例如。从0110
得到00
我们从最后一个数字开始,然后下一个数字是序列的第一个数字。 因此,序列实际上可以通过将第一个(k-1)数字附加到末尾来扩展。
你是指哈密尔顿而不是欧拉路径? –
@匿名:不,他的意思是欧拉。您可以不止一次访问同一个顶点,因为顶点不代表k位数的序列 - 只有离开顶点的边才会执行。 –
@Anonymous j_random_hacker是对的[我推荐直接在书中查看] –