Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 反转后无限重复不同的最短位字符串_String_Finite Automata - Fatal编程技术网

String 反转后无限重复不同的最短位字符串

String 反转后无限重复不同的最短位字符串,string,finite-automata,String,Finite Automata,在我的口试中问了我以下问题: 当蚂蚁行走时,它每走一步就打印一个二进制数(例如101)。最小长度是多少,以数字为单位,二进制数可以用来判断蚂蚁的行进方向,而不用看字符串的开头或结尾?蚂蚁告诉你二进制数 示例:蚂蚁的二进制数是101,因此,蚂蚁留下的轨迹如下所示:101101。请注意,没有办法知道蚂蚁的行进方向。因此,这个特定的数字不起作用(但可能有一个三位数的二进制数字起作用) 示例:蚂蚁的二进制数是011,因此,蚂蚁留下的轨迹如下:011011。同样,如果不看绳子的末端,就无法判断蚂蚁的行进方

在我的口试中问了我以下问题:

当蚂蚁行走时,它每走一步就打印一个二进制数(例如101)。最小长度是多少,以数字为单位,二进制数可以用来判断蚂蚁的行进方向,而不用看字符串的开头或结尾?蚂蚁告诉你二进制数

示例:蚂蚁的二进制数是101,因此,蚂蚁留下的轨迹如下所示:101101。请注意,没有办法知道蚂蚁的行进方向。因此,这个特定的数字不起作用(但可能有一个三位数的二进制数字起作用)

示例:蚂蚁的二进制数是011,因此,蚂蚁留下的轨迹如下:011011。同样,如果不看绳子的末端,就无法判断蚂蚁的行进方向


这个问题的答案是什么?请注意,答案不能仅仅是一个有效的二进制数的示例。答案需要包括一个证据,证明长度小于n-1的二进制数不起作用,其中n是起作用的示例二进制数的长度。用穷举法证明是可以的,但令人不快。:)

ChssPly76在上述评论中给出了正确答案(IMHO)


6位,例如100110。

另一种方法是脱离二进制数。将问题重新表述为“如果允许使用任意数量的唯一符号,那么方向性的最短可能模式是什么?”

这里的答案是3(例如A;B;C或#&;@),因为2不起作用。所以,当你有一个像ABC这样的模式时,蚂蚁朝哪个方向行走就变得很清楚了

要么…出租车。。。(从左到右) 或者…巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴巴。。。(从右到左)

现在,我们需要多少个二进制数字来写一个三进制(基-3)的3个符号的模式

两个二进制数字允许您写入单个四进制(以4为基数)数字,这是高于或等于3的第一个基数


因此:(每个符号2个数字)乘以(3个符号)=6个二进制数字。

您是要求严格的数学证明,还是简单地删除名称?不幸的是,这一点被关闭了。问题很清楚。当颠倒时,所讨论的数字不能是附加到其自身的子字符串(例如011不起作用,因为110是011011的一部分)。实现这一点的唯一方法是(a)在一个数字的两端有不同的数字;(b) 使其与相邻数字不同;和(c)具有内部序列,而不是自身或与任何一个末端数字耦合时的“镜像”。这对于任何少于6位的数字都是不可能的(很容易看到)。因此,答案是6。问题编号的示例为
100110
。什么时候结束的问题没有结束?当人们在评论中回答时。与权力抗争!:)“未知(谷歌)”抱怨SO档案中的信息太少——这对你来说是一个讽刺:)虽然这得到了正确的答案,但我不确定这听起来是否正确。首先,使用2位时,您浪费了第四个可能的符号,因此“可能”整个模式可以用少于2*numSymbols位表示。其次,位反转和一位移位意味着一个简单的两位代码中断:例如,如果a=00,B=01,C=10,那么ABC…是000110…它没有所需的属性。A=00,B=10,C=11是一个没有这个问题的具体例子,但你还没有证明这在一般情况下是有效的。实际答案是AB。这个答案(几乎)证明6个二进制数字就足够了,但它不能证明你不能用更少的数字来做。