如果k = 2, 则就叫binary De Bruijn sequence(下面简称DB序列). n阶的k叉DB序列: 长度为 kn ,每个子串长度为n。从左到右按子串遍历,没有一个子串是重复的。
如n = 3 and k = 2 的DB序列00010111,从左到右按子串遍历:000, 001, 010, 101, 011, 111, 110, 100。 我们可以看到,这几个子串没有一个是重复的。
可以用DB图来构造DB序列,先构造DB图,然后找一个结点没有重复的回路就能构成DB序列。
以构造n = 3 and k = 2 的DB图为例:
step1: 写出所有可能的子串,如这里就是8种:000, 001, 010, 101, 011, 111, 110, 100
step2: 先摆好第一个结点,如000,它下一个子串的可能是000, 001;其中000是重复的,所以无需找它接下来的子串。我们看001,它下一个子串的可能是010, 011。 以此类推, 构成的图如上所示。
找结点没有重复的回路: 000, 001, 011, 111, 110, 101, 010, 100
故该回路对应的DB序列为:00011101。
采取 A = {0, 1},有两个不同的 B(2, 3): 00010111和11101000,对于这两个序列,一个是另一个的逆序列或者说一个是另一个的逻辑非序列。
二2048可能 B(2, 5)在同一个字母表00000100011001010011101011011111和00000101001000111110111001101011。
每个边缘在这张三维的de Bruijn图表对应于四个数字序列: 标记端点边缘离开的三个数字被标记边缘的那个跟随了。 如果你横断被标记的边缘1从000,你到达在001,从而表明subsequence 0001的出现在de Bruijn序列。 要横断每个边缘确切地一次是确切使用每一个16个四位数序列一次。
例如,假设我们走以下Eulerian道路:
000, 000, 001, 011, 111, 111, 110, 101, 011, 110, 100, 001, 010, 101, 010, 100, 000。
这对应于以下de Bruijn序列:
0 0 0 0 1 1 1 1 0 1 1 0 0 1 0 1
八个端点接下来出现于序列:
{0 0 0} 0 1 1 1 1 0 1 1 0 0 1 0 1
0 {0 0 0} 1 1 1 1 0 1 1 0 0 1 0 1
0 0 {0 0 1} 1 1 1 0 1 1 0 0 1 0 1
0 0 0 {0 1 1} 1 1 0 1 1 0 0 1 0 1
0 0 0 0 {1 1 1} 1 0 1 1 0 0 1 0 1
0 0 0 0 1 {1 1 1} 0 1 1 0 0 1 0 1
0 0 0 0 1 1 {1 1 0} 1 1 0 0 1 0 1
0 0 0 0 1 1 1 {1 0 1} 1 0 0 1 0 1
0 0 0 0 1 1 1 1 {0 1 1} 0 0 1 0 1
0 0 0 0 1 1 1 1 0 {1 1 0} 0 1 0 1
0 0 0 0 1 1 1 1 0 1 {1 0 0} 1 0 1
0 0 0 0 1 1 1 1 0 1 1 {0 0 1} 0 1
0 0 0 0 1 1 1 1 0 1 1 0 {0 1 0} 1
0 0 0 0 1 1 1 1 0 1 1 0 0 {1 0 1}
... 0} 0 0 0 1 1 1 1 0 1 1 0 0 1 {0 1…
... 0 0} 0 0 1 1 1 1 0 1 1 0 0 1 0 {1…
…我们然后回到出发点。 每一个八个3数字序列(对应于八个端点)两次确切地出现和四位数字的序列的每一十六(对应于16个边缘)一次确切地出现。