确定一元上下文相关语言是否为常规语言


18

问题是众所周知的结果

上下文无关的语法会生成常规语言吗?

是无法决定的。但是,仅在这种情况下,上下文无关的语言和常规语言的类别是一致的,因此在一元字母上就可以确定它。

我的问题是知道一元上下文相关语言会发生什么。

是否可以确定一元字母上给定的上下文相关语法是否会生成常规语言。

如果答案是肯定的,那么对复杂性的估计将是受欢迎的。

Answers:


9

las,您的问题无法确定。我偶然发现的方法(可能太费力了,因此,任何有权宜之计的人都应该加油!)首先使用对角线参数来证明存在一元CSL不规则(与肯定的结果相反) (一元CFL)),然后通过给定TM构造一个CSG来模拟图灵机的暂停问题,该CSG在短于解析字符串的磁带长度上模拟,如果暂停而不超出其范围,则识别且否则无法解析,以使成功解析所有中号ģ 中号瓦特X 中号ģ 瓦特XXMGMwXMGwX如果暂停,则它们足够长(以使在有限的许多字符串上与不同,因此不能是正规的),否则识别空语言(显然是正规的)。L G X GML(G)XG

这种方法的关键在于观察到CSG不仅关注短语结构之类的语法问题-确实,CSG派生序列可以执行任意不确定的有界计算(实际上有PSPACE-完整的CSL),然后再进行与解析字符串对齐的业务。通过CSG和单调语法之间的标准转换(仅限于一元字母时仍可继续工作),以及使用简单的单调生成来模拟表示计算历史中各个阶段的派生字符串上的图灵机转换,最容易观察到这一点。在整个答案中,我将假设读者需要了解CSG来模拟给定计算时的大部分细节。(我认为请求者对此感到满意,但是为了完整起见,我将对其进行讨论。不过,请随时在评论中要求进行澄清。)


首先,我们需要非常规一元CSG。(编辑:所以,这太过分了-非正规一元CSL可以很容易地展示出来,例如,通过表现出非正规性最基本的任何语言的抽引引理来展示。请参见示例注释。事后看来,使用对角线参数就像将核弹头带到刀战中一样。如果您好奇的话,请仔细阅读此结构,否则请减少裁减。)

令为DFA在字母上的枚举,以使中的状态数在中增加。我们根据CSG的行为来描述它,同时解析字符串:{ 1 } d ģ X 1个Ñ{ 1 } *D1,D2,...{1}DiiGX1n{1}

  1. 不确定地生成 “空白”非终结符的字符串,我们将其视为“磁带”。空白的非端子之一应为单独的“空白+读写头+起始状态”非端子。如果解析字符串不是则此派生将失败。我们通过唯一可能的推导模拟的确定性计算来描述过程的其余部分。1个Ñn1n
  2. 在磁带上打印编码,后跟二进制数,其中和被选择,以便我们在磁带上始终有足够的空间来执行所需的操作。(这是可能的,因为需要空间来编码既和在对数生长)。 i i = n c c D i i iDiii=nccDiii
  3. 在输入上评估。这不需要代表的磁带-您可以只存储一个状态,当您减小,状态会根据的转换而改变。1 ð ð Di1iDiDii
  4. 如果拒绝,则用产生非终端覆盖整个磁带。否则失败。1 1Di 1i1

我们取。显然X 大号d 对于任何,由于1 + çX 1 + Ç大号d X=L(GX)XL(Di)i1i+cX1i+cL(Di)


下一步是设计从停顿问题到提问者问题的解决方案。(如果跳过了上面的部分,则使为CSG G X生成的任意非常规一元CSL 。)XGX

为任意TM。我们将M转换为CSG G,它在解析字符串1 n上的行为如下:MMG1n

  1. 生成空白非终端,最左边的一个是单独的空白+读写头非终端,并在每侧生成一个“边界”非终端。同样,如果我们生成错误数量的非终端,那么我们将失败。n2
  2. 在边界非终端之间的空间中模拟如果M移至边界状态之一,我们将终止仿真并假定M永不停止。MMM
  3. 如果暂停,表现得像g ^ X。如果必须终止模拟,则失败。MGX

请注意,如果设法在边界内永久运行,则G永远不会生成解析字符串,因此将失败。如果中号暂停,则存在空间的一些量Ñ其足以包含中号的整个计算,因此ģ解析1 每当Ñ + 21 X,因此X是的并集大号ģ 和有限的语言L G MGMnMG1mmn+21mXXL(G)L(G)不正常。在另一方面,如果从未暂停,然后大号ģ = 显然是有规律的。ML(G)=

用于确定是否规则的算法将确定M是否在空白磁带上暂停,这是不确定的。因此,询问者的问题是无法确定的。L(G)M


2
对于你的答案的第一部分,和是一元上下文敏感的非正规语言的例子。{an2n0}{app is prime}
J.-E.

呵呵,确实太劳累了,我可能应该想到对角线的论点将是严重的过度杀伤力。我想我会在注释中编辑一个注释。希望第二部分对您有所帮助。
gdmclellan

@ J.-E.Pin:我没有考虑太多,为构造一元上下文敏感的语法容易吗?{app is prime}
Marzio De Biasi

@ marzio-de-biasi我不得不承认我没有检查自己,而是依靠这个答案
J.-E.

@MarzioDeBiasi非常简单。在确定一种语言是否对上下文敏感时,通常的过程类似于1.不确定地猜测解析字符串;2.进行一些有边界的计算,以确定解析字符串是否满足某些谓词;3.生成发现谓词满足的字符串。空格可能是个问题(空格是由解析字符串的长度给定的,因为您不能使用上下文相关的产生来收缩派生的字符串),但是在一元情况下,您需要使用指数空间。
gdmclellan

6

这基本上是与上述相同的答案,但是由于寻求的是“更方便”的答案,因此我在此提及:(此外,这是我在这里的第一篇文章,因此,如果我发表琐碎的事情,请原谅我!)

请注意,对于一元的上下文相关语言来说,空性是无法确定的。修正了一个上下文敏感的,但非正规语言。鉴于一个LBA 大号一个*,人们可以容易地构建用于LBA 大号' = { 一个Ñ | 一个ÑÑ  和  Ñ 大号 }。那么很明显,当且仅当L为空时,L '是规则的。NaLaL={ananN and mn:amL}LL

更新:当然,相同的论点表明,确定性对数空间已经具有不确定性。


“对于一元的上下文相关语言,空性是不可决定的”:这是众所周知的事实吗?你有参考吗?
J.-E.

1
给定一个CONTEX敏感的语言,取态射^ h Σ *{ } *每个字母映射到一个。然后ħ 大号是空的,当且仅当大号是空的。对于确定性日志空间,给定TM T,则可以构造det。LOGSPACE TM用于该组的所有一个2 Ñ使得Ť具有长度的暂停计算ÑLΣh:Σ{a}ah(L)LTa2nTn
Georg Zetzsche
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.