$\开始组$

我的问题是关于唯一模式的二进制序列计数

我了解如何计算使用特定位数生成的周期序列的数量(如上面的链接中所解决的)。

然而,我想知道是否有某种方法可以生成所有可能的唯一周期序列(不需要求解所有可能的排列)。例如:

给定3位数字,唯一的周期序列为:

000

100(相当于:010001)

110(相当于:011101)

111

因此,有四种可能的独特周期序列。生成了使用所有可能的排列并将其简化为“规范”形式的排列。然而,给定12位数字,这将成为一项艰巨的任务。

因此,我想知道对于给定的比特数(或给定的周期),是否存在所有可能的唯一周期序列的一般表示,以便通过更改参数,我可以获得所有可能的惟一周期序列。

到目前为止,我发现了以下结果:

N位周期序列的定义函数定义为:

$f(k)=\sum_{j=1}^{N}a_j(e^{\frac{2\pi}{N} 我})^{jk}$

其中$i=\sqrt{-1}$和$k\在[1,2,3,4,…]$中。

为了找到合适的$a_j$,可以解决以下问题:

$\mathbf{E}\mathbf{a}=\text{矢量形式的1和0的任意组合}$

在这里:

$E_{jk}=(E^{frac{2\pi}{N} 我})^{jk}$($j$和$k$是$[1,N]$中的整数)和$\mathbf{a}$将$a_j$集合为向量形式。

有趣的是:对于任何唯一的周期二进制序列,都会有一个与之相关的distnct$|\mathbf{a}|$(即一个向量,其分量的绝对值为$\mathbf{a}$,而不是其范数)。

它可以用于排列,但我不能继续定义单个参数或方程,这样会产生唯一的周期序列。(我相信有这样的人)

$\端组$
4
  • 1
    $\开始组$ 你是允许所有排列还是只允许循环?这对$n=3$没有影响,但对较大的$n$来说很重要。 $\端组$
    – 库迪
    评论 2017年10月6日18:21
  • 1
    $\开始组$ 我只允许循环。例如,对于n=5,我有:10000,这是唯一形式,相当于01000001000001。(我不在乎,事实上我想把它作为选项来消除) $\端组$
    – 雪茄
    评论 2017年10月6日18:28
  • 1
    $\开始组$ 0011$相当于多少? $\端组$
    – 库迪
    评论 2017年10月6日18:31
  • 1
    $\开始组$ 电话:100111000110 $\端组$ 评论 2017年10月6日18:39

1答案1

重置为默认值
1
$\开始组$

下面提供了周期序列,在0.2秒内有12位(使用C或编译函数可以大大改进)。其思想是通过考虑所有循环中对应于最大值的循环来定义规范形式。在以下方面数学软件代码,这是通过将位转换为十进制来完成的(From数字).

can[l_]:=块[{list},lists=NestList[RotateLeft,l,Length[l]-1];压扁@MaximalBy[列表,FromDigits[#,2]&,1]]

例如罐[{1,0,1}]罐头[{0,1,1}]两个返回{1,1,0}.

然后将所有二进制数从$0$转换为$2^{12}$并删除重复项就足够了:

PadLeft[#,12]&/@表格[can[Integer Digits[i,2]],{i,1,2^12}]//删除重复项//绝对计时(* {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1},{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0} ...*)

16位数字需要5秒钟(同样,它可以大大减少)。

$\端组$

你必须登录来回答这个问题。

不是你想要的答案吗?浏览标记的其他问题.