德布鲁因序列

作者: 一天清晨 | 来源:发表于2017-11-07 14:40 被阅读184次

    问题:有2的n次方个数字,使得这些二进制数字组成一个二进制串,新的二进制串可按顺序循环组合成不相同的二进制串.
    荷兰数学家De Bruijn解决了这个问题.


    4.jpg

    1,德布鲁因序列:

    B(k, n),是k元素构成的循环序列。所有长度为n的k元素构成序列都在它的子序列(以环状形式)中,出现并且仅出现一次。
    例如:
    序列00010111属于B(2,3)。
    00010111的所有长度为3的子序列为000,001,010,101,011,111,110,100.

    长度

    德布鲁因序列的长度为
    k的n次幂 为2的3次幂等于8

    介绍完基本公式以及感念,估计很多同学跟我一样,一脸懵逼.不过不要紧.笔者慢慢来说,如果可以看到最后一定会有明白的.

    2, 解释

    大家可以去谷歌一下德布鲁因序列(以下简称DB),估计会出现都是跟一个魔术有关系.奈何笔者也是一个魔术的爱好者,所以顿时超感兴趣.下面就是见证奇迹的时刻(此处应有背景音乐,脑补一下)

    魔术中的DB序列

    1,首先要准备一副扑克牌,邀请5个人上来配合一下,(为什么是5个人,因为2的5次幂等于32),检查扑克牌是4个花色从1到8不同的数字.
    2, 打乱扑克牌,让五个人从上面按依次拿走扑克牌.这时候你就可以说,我已经知道你们手里的牌都是什么了.(其实你并不知道)
    3, 还有关键的一步,就是让五个人中,花色是黑色(黑桃, 梅花)的人举手.这时候你才真正知道他们的牌是什么.

    答案在这里:
    其实我们可以把5个人32张牌看成一个DB序列,
    也就是B(2,5)有32个二进制串排列组合的方式.每个字符串的长度是5.
    例如00000 左边第一位是0表示颜色(黑色, 红色), 左边第二位(花色),后三位表示是数字,正好000表示的为8


    1.jpeg

    然后在对照图2.和拿到黑色牌举手人的顺序,就可以说出每个人的牌是什么了


    2.jpeg
    当人有人会表示记不住.对于这个特殊的五位二进制数来说,也是有窍门的,左边第1个数,加上左边第3个数,依照二进制加法得到的数放在最右面,就是下一个五位数了.

    推测DB序列

    已B(2,3)为例子 组成的长度是3不同的二进制字符串 000, 001, 010, 011, 111, 110, 101, 100
    如图从000开始走,


    3.png

    最终都会回到000,得到的8位二进制串就是00010111或者是00011101.

    最后

    有什么不对的地方,欢迎讨论.

    相关文章

      网友评论

        本文标题:德布鲁因序列

        本文链接:https://www.haomeiwen.com/subject/mybdmxtx.html