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


16

这是一个后续问题这一个。

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

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

HAL是否在逆转下关闭?


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

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

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

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

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

Answers:


4

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

L×2={x⊥y⊥z∣x,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 } ,#0(X )= #0(Ý ) 和  | x | + | y | = Z ^ } 我们将证明,没有HAL机器可以决定大号。L=L×2R

L={z⊥y⊥x∣x,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并假定#0(y )= n / 2。观察有( nHL4n|x|=|y|=n|z|=2n⊥z,y#0(y)=n/2不同X的,使得ž⊥ý⊥X∈大号。(nn/2)xz⊥y⊥x∈L

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

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

很显然,该机器必须接受字,其中X p 1是的前缀X长度的ñ / 2和X 小号2是一个后缀X 2相同的长度。请注意,x p 1 x s 2中的零数目不同于x 1和x 2中的零数目(即,与#0(yz⊥y⊥x1px2sx1pxn/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.