结构光编码之De Bruijn序列

如果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个边缘)一次确切地出现。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值