在最小堆自动机接受的语言反转的情况下证明关闭


16

这是一个后续问题这一个

在先前关于奇异状态机的问题中,亚历克斯·十·布林克和拉斐尔谈到了一种特殊的状态机的计算能力:最小堆自动机。他们能够证明这些机器接受的语言集(HAL)既不是上下文无关语言集的子集也不是其超集。鉴于已成功解决该问题并对该问题有明显的兴趣,我继续提出几个后续问题。

众所周知,常规语言在各种操作下都是封闭的(我们可能将自己限制为基本操作,例如并集,交点,补码,差,串联,Kleene星号和反转),而上下文无关的语言则具有不同的闭合属性(这些属性在并集,串联,Kleene星号和反向条件下关闭)。

HAL是否在逆转下关闭?


这种机器有什么用途?还是这是学术活动?
戴夫·克拉克

@DaveClark好吧,它们主要是一种学术练习(据我所知,我只是在链接的问题中对它们进行了补充)。但是,它们可以用与其他机器(DFA,TM等)相同的方式进行计算,因此也许对它们有用。
Patrick87 2012年

这个问题说明了为什么您希望自动机附带语法。哎呀,我的大脑!
拉斐尔

4
我试图通过使用格式的语言来证明这一点,但它花了太长时间,我放弃了。也许这个想法会帮助任何人。{xyy is a lexicographically sorted copy of x}
Ran G.

@RanG .:我认为应该可以。我很高兴将悬赏奖励给能证明该语言为的答案,并给出一个合理的理由,即反向语言不是。HAL
拉斐尔

Answers:


4

考虑语言 (其中,0X 表示零的数目X)。

L×2={xyzx,y,z{0,1},#0(x)=#0(y) and |x|+|y|=z}
#0(x)x

使用HAL机器很容易确定-请注意,该机器需要跟踪两个属性:x vs y中的零个数和x y(vs z)的长度。它可以在x中看到的每个零将a推入堆中(然后在y中看到的任何零随后弹出);另外,它会推动x y中的任何位(然后弹出z的任何位)。由于所有s都被压入堆,因此它们不会干扰计数。该L×2xyx,yz0x0y1x,y1z10 用作分隔符,实际上可以忽略。

现在,让为反向语言。即, 大号= { ž ý X | X ÿ ž { 0 1 } 0X = 0Ý  和  | x | + | y | = Z ^ } 我们将证明,没有HAL机器可以决定大号L=L×2R

L={zyxx,y,z{0,1},#0(x)=#0(y) and |x|+|y|=z}
L

直觉如下。如上所述,机器必须同时跟踪的长度和x y中的零个数。但是,在这种情况下,需要同时跟踪它们。这不能通过堆来完成。更详细地讲,在读取z之后,堆包含有关|的长度的信息x | + | y | 。在读取y时,机器还必须在堆中保留y中的零。但是,此信息不会干扰堆在x预期长度上已经具有的信息zx,yz|x|+|y|yyx是。非常直观地,关于零个数的信息将在“ x ”的长度信息“之下”x,然后我们在读取无法访问它,要么在该信息“之上”,从而使后者不可访问,或者两种信息将“混合”起来,变得毫无意义。x

更正式地说,我们将使用某种“泵送”参数。也就是说,我们将接受很长的输入,并表明机器的“状态”必须在处理该输入的过程中重复其自身,这将允许我们在机器重复其“状态”时“替换”输入。

对于形式证明,我们需要简化HAL机器的结构,即它不包含 transitions 1的“循环” 。通过这种假设,我们可以看到,对于机器处理的每个输入符号,堆的内容最多可以增加/减少c (对于足够大的常数c)。ε1cc

证明。
假设决定L,并考虑足够长的输入(例如,长度为4 n,则| x | = | y | = n| z | = 2 n,在下文中忽略⊥s)。具体来说,固定z y并假定0y = n / 2。观察有 nHL4n|x|=|y|=n|z|=2nz,y#0(y)=n/2不同X的,使得žýX大号(nn/2)xzyxL

考虑处理后堆的内容。根据我们的假设,它最多包含3个n c个符号(其中每个符号都来自固定的字母Γ)。不过,也有 ñzy3ncΓ不同的X'小号应该被接受(这是实质上比为堆可能的不同内容物的量越大,因为这按指数规律增加,而不同数量的增加堆多项式,见下文)。取两个输入x1x(nn/2)xs应接受的 2,以便满足以下条件:x1,x2

  1. 长度为x 1的前缀与0的前缀具有不同的零个数n/2x1相同的长度。x2
  2. 到机器读取x部分长度为的前缀时,x 1x 2的堆看起来都相同,并且机器处于相同状态(这对于某些x 1必定发生x 2,对于足够大的n,因为对于x 1x 2和最多3.5 c n | Γ | | Q2 以上0.8 n个不同的选项2n/2xx1x2x1,x2n20.8n2x1,x2堆内容和状态的不同选项 3)。(3.5cn)|Γ||Q|3

很显然,该机器必须接受字,其中X p 1是的前缀X长度的ñ / 2X 小号2是一个后缀X 2相同的长度。请注意,x p 1 x s 2中的零数目不同于x 1x 2中的零数目(即,与0yzyx1px2sx1pxn/2x2sx2x1px2sx1x2#0(y)x1x2,因此我们陷入了矛盾。

1
2 x1n/2n/4log(nk)nH(k/n) where H() is the Binary entropy funciton. Since H(1/4)0.81 we have (nn/4)>20.8n for large enough n.
3 Assuming alphabet Γ, there are |Γ|n different strings of length n, so if this was a stack we were screwed. However, pushing "01" into a heap is equivalent to pushing "10" - the heap stores only the sorted version of the content. The number of different sorted strings of size n is (n+1|Γ|1)n|Γ|, for a constant |Γ|.


Nice! Will have to read the formal part again later. 1) Ad ¹: See also here. 2) The argument breaks down if we allow non-deterministic choice of the returned heap symbol (among all symbols of the same priority).
Raphael
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.