在一组输出上的两个不同的语法

时间:2010-07-28 09:02:31

标签: grammar theory automata turing-machines

你能给我2个不同的语法输出同一组词吗?

插图:

给定字母{0,1}上的语法A和B,如果语法A可以产生单词0101001,语法B也可以。如果语法B可以产生0101111,那么语法A也可以。如果语法A不能产生01001那么B就不能产生。

但这里的问题是语法A和B彼此不同,即它们使用完全不同的算法。然后,它们产生的输出集合不仅仅是另一个输出的适当子集。意思是说它们相应的输出集必须具有相同的基数。可能他们的复杂程度不同,但并不重要。如果你愿意的话,如果你像普通的图灵机那样给我字母{0,1}上的语法,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

不确定这是否可行。如果A可以产生输出a,则B直接包含b或包含b和b'短于生成a的a。然后相同的论证适用于b(和b') - 它直接在A中,或者在A中存在一个比生成b的b更短的'和''。迭代这个论点,最终你得到一个点,其中各个元素的长度为1,所以你不能进一步分解它们,你必须在A和B中都有相同的元素。

答案 1 :(得分:1)

这个技巧好吗?类型为0*n1*m的字符串(例如000000111)可以从左到右构造:

A
A -> 0A
A -> B
B -> 1B
B -> {}

从右到左:

B
B -> B1
B -> A
A -> A0
A -> {}

来自中间:

AB
A -> A0
A -> {}
B -> 1B
B -> {}