【问题标题】:Two Different Grammars Over One Set of Outputs一组输出的两种不同语法
【发布时间】:2011-03-22 01:10:57
【问题描述】:

你能给我两个输出相同单词集的不同语法吗?

插图:

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

但这里的问题是语法 A 和 B 彼此不同,即它们使用完全不同的算法。那么他们产生的输出集合不仅仅是另一个输出的适当子集。意思是说它们对应的一组输出必须具有相同的基数。可能它们具有不同的复杂性等级,但这没关系。如果可以的话,如果您能像经典的图灵机一样向我提供字母 {0,1} 上的语法,我将不胜感激。

【问题讨论】:

  • 非常喜欢家庭作业

标签: grammar theory automata turing-machines


【解决方案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 -> {}

【讨论】:

    【解决方案2】:

    不确定这是否可能。如果 A 可以产生输出 a,那么 B 要么直接包含 a,要么包含比 a 更短的 b 和 b',从而生成 a。然后,同样的论点适用于 b(和 b')——它要么直接在 A 中,要么在 A 中存在比 b 短的 a' 和 a'' 来生成 b。重复这个论点,最终你会得到单个元素的长度为 1 的点,因此你不能进一步分解它们,并且 A 和 B 中的元素必须相等。

    【讨论】:

    • 是的。我也认为这是不可能的。我只是想到了欧几里得除法算法,而不是传统的除法,即两种不同的算法,但做的事情完全相同。还是我说得对?
    • 不完全——欧几里得算法给出了两个不同数字的 GCD,这里我们有一个元素,我们试图以不同的方式分解它。更像是找到相同数字的两个不同的素数分解。但我怀疑证据是相似的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    • 2019-08-23
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多