写为的十进制扩展(不带前导)。令和为整数,其中。考虑的倍数的扩张小数的语言加上一个常数:0
是正常吗?上下文无关?
(与仿射函数图的语言对比)
我认为这将是一个不错的家庭作业问题,因此从一两个提示开始的答案不仅说明了如何解决问题,而且还解释了如何决定使用哪种技术。
写为的十进制扩展(不带前导)。令和为整数,其中。考虑的倍数的扩张小数的语言加上一个常数:0
是正常吗?上下文无关?
(与仿射函数图的语言对比)
我认为这将是一个不错的家庭作业问题,因此从一两个提示开始的答案不仅说明了如何解决问题,而且还解释了如何决定使用哪种技术。
Answers:
这是正常的。让我们首先以二进制形式工作,它将推广到任何大于1的基数。令为所讨论的语言。对于a = 1,b = 0我们得到
它是所有字符串,且不带前导零,这是正则表达式(为其构造一个正则表达式)。
现在,对于任何,b仍为0,我们通过将数字乘以a来从获得,即对每个字符串执行。这可以通过根据固定字符串的位的的移位和加法序列按位完成。我们需要的两个转换是:中号一,0中号1 ,0 ˉ X → ¯ 一个X中号一,0 X ˉ 一个
ˉ X → ˉ X 0,即
和
在右侧连接一个0显然可以保留规律性。因此,我们仅需证明第二个操作保留了规律性。做到这一点的方法是在从右到左的上工作一个有限状态传感器。那是最难的一步。我建议使用伪代码程序和一些有限的辅助存储器(例如某些位变量)来完成此操作,而不要使用状态。只要存储器在所有输入上的大小都是固定的,并且您从右到左严格扫描,它就是有限状态转换并保留规则性。
最后,要从获得我们需要在数字添加到每个字符串中,但这是通过类似的传感器来完成的,后者取决于固定数b。 M a ,0 b T b
要在任何基数中执行相同的操作,请另外显示如何使用依赖于d 的换能器在该基数中与一位数相乘。这样,我们可以乘以多位数字,并且仍然保留常规语言。或者,我们可以这样说,乘以只是重复加法。s d d
您只需要提示。这些步骤中的每个步骤都取决于相当复杂的定理/技术,因此证明这些步骤以获得完整的证明将是额外的工作。
提示#1:首先解决最普遍的问题:当最不重要的位首先出现时,编写一个自动机,该自动机识别可被3整除的数字的十进制/二进制表示。
中间问题:证明是规则的。
提示2:“模 ” 函数的函数图是有限的。您可以在为每个计算它,它既是数字集又是自动机的语言。一个d { 0 ,... ,9 }
提示#3:现在,取代与。这有什么变化?尝试使用常规语言通过交集稳定的事实,而不是构建临时自动机。 X ∈ Ñ
提示4:现在假设是质数(因此是一个字段),并且我们仍然处于。现在,我们使用第一个位是最高有效位的表示形式。您可以用相同的方式构建自动机吗?ž /一个ž X ∈ ž
提示5:您不必总是建立自动机来证明语言是正常的。您如何使用先前的结果证明是规则的?(最高有效位在前)
我遵循@vonbrand的想法:
提示1:
首先求解。您可以使用Myhill-Nerode定理。
我们定义以下关系。这显然是等价关系。此外,它是右全等的,因为如果我们附加一个数字,则会得到。最后,它饱和,因为是等价类。由于具有有限数量的类,因此根据Myhill-Nerode定理,它是正规的。相关的FSA是最小的,有状态。d ˉ X听,说:ˉ ÿ大号大号[0]≈一个
提示2:
解决一般情况,重用情况引起的自动机。
我们知道,对于,该语言是常规的。因此简单地拿状态FSA为的语言。现在我们为构造FSA 。假设有位数字。然后像深度的10元树的分支FSA并包含所有路径号码位数。可以用非形式的数字达到的所有状态都拒绝,否则接受。最后,我们在FSA的树部分与自动连接,根据其余由除以。a M b = 0 L b k k k a x + b M a
语言是普通的。
提示: 淘汰九人制
对于并且,b < 9
建立一个具有个标记为到状态的自动机。是初始状态,一个最终状态是。从状态到数字,过渡到状态。0 8 0 b s d (s + d )
要处理与互质的其他值,10
在包组数字找到一些使得分裂(例如取,如果,因为)。
要处理的值的唯一素因子被和,
请注意,最后都只包含有限数量的数字。
为了归纳为和所有值,
使用以下事实:规则语言的并集和交集是规则的,有限语言是规则的,并且当和是互质时,的倍数恰好是两者的倍数。
请注意,我们使用任何方便的技术;证明中包含了三种主要的基本技术(正则表达式,有限自动机,集合理论性质)。
令与互质数为。令且。通过基本算术,等于模的数正好等于等于模和等于模,因此。由于常规语言的交集是常规的,因此之所以是规则的,是因为它是有限(因此是规则)语言的补充,如果和也都是规则的,则是规则的;和是因此要定期,因为它是一个有限的一套语言的结合。因此,总结证明,足以证明和是规则的。
让我们以开始,即以模的数字。十进制扩展数为的整数以其最后数字为特征,因为更靠近左边的数字更改意味着加的倍数是的倍数。因此其中是所有数字的字母,是长度为的有限单词集合,而是常规语言。
现在我们转到,即模数,其中与互质。如果则是所有自然数的十进制扩展集,即,这是一个普通语言。现在我们假设。令。根据费马小定理,,也就是说除以。我们建立一个确定性有限自动机,它将识别,如下所示:
从单词到达的状态满足和。这可以通过在自动机上过渡之后对单词进行归纳来证明。为此,使用的事实来计算跃迁。因此,自动机可以通过识别形式为的数字的十进制扩展(允许初始零)。由于,自动机识别等于的数字的十进制展开模允许初始零,这是 b 一个' 0 * 中号“ 中号” = (0 * 中号')∩ ((ℵ ∖ { 0 } )ℵ *)。因此,该语言被证明是正规的。最后,是常规语言。
要推广到以外的底数,请用底数的所有素数替换上面的和。2 5
由您最喜欢的定理证明者作为练习留给读者。