这可能很简单,但请考虑标准的“邮政对应问题”:
鉴于和β 1,... ,β Ñ,找到索引的序列我1,... ,我ķ使得α 我1 ⋯ α 我ķ = β 我1 ⋯ β 我ķ。当然,这是不确定的。
现在,我称其为“变体”,但实际上并非如此,它实际上丢弃了“对应”。无论如何,请考虑以下变体:
鉴于和β 1,... ,β Ñ,发现2个索引的序列我1,... ,我ķ,Ĵ 1,... ,Ĵ ķ使得α 我1 ⋯ α 我ķ = β Ĵ 1 ⋯ β Ĵ ķ。可以怎么说呢?如果这很简单,我表示歉意!
这可能很简单,但请考虑标准的“邮政对应问题”:
鉴于和β 1,... ,β Ñ,找到索引的序列我1,... ,我ķ使得α 我1 ⋯ α 我ķ = β 我1 ⋯ β 我ķ。当然,这是不确定的。
现在,我称其为“变体”,但实际上并非如此,它实际上丢弃了“对应”。无论如何,请考虑以下变体:
鉴于和β 1,... ,β Ñ,发现2个索引的序列我1,... ,我ķ,Ĵ 1,... ,Ĵ ķ使得α 我1 ⋯ α 我ķ = β Ĵ 1 ⋯ β Ĵ ķ。可以怎么说呢?如果这很简单,我表示歉意!
Answers:
这个新版本-其中- 是可判定的。
让我们显示该语言是CFL。然后,可判定性来自CFL空度的可判定性。
我们将设计一个PDA接受。在输入x上,此PDA将尝试构造x的两个分解,一个使用A的单词,另一个使用B的单词。它将在堆栈上使用一个计数器,以确保这两个分解的长度相同。从概念上讲,我将x的A分解称为x的顶部,将B分解称为x的底部。然后堆栈将包含n个计数器,如果顶部匹配的单词数的差的绝对值减去底部匹配的单词数的绝对值是。我们需要PDA的另一种状态来记录对应于 n的适当符号(这告诉我们 A因式分解是否长于 B因式分解,反之亦然)。
当我们扫描的字母,我们不确定地猜一个字牛逼的一个和字ü的乙到这封信开始。一旦我们猜到了,我们致力于将t和u的其余部分与x进行匹配;如果我们的比赛在任何时候失败,我们将停止这种不确定的选择。因此,在PDA的状态下,我们还保留了仍然匹配的t和u后缀。
当我们扫描其他字母时,我们将继续匹配,直到到达的末尾或u的末尾(或同时到达两个)。当我们敲一个单词的末尾时,我们会适当地更新堆栈,然后猜测一个新单词要匹配顶部或底部(或两者)。
如果剩余要匹配的后缀在顶部和底部都为空,并且堆栈中不包含计数器,则我们接受。
我们可以有效地构建此PDA,因此我们可以有效地确定它是否接受任何东西(例如,通过有效地转换为语法,然后使用常规方法查看G是否生成任何东西)。