【问题标题】:Can I classify a grammar on the basis of comparison of length我可以根据长度比较对语法进行分类吗
【发布时间】:2020-05-28 18:04:29
【问题描述】:

只要我们有常规语言,就无法进行比较。(原因很明显,它没有记忆) 当使用上下文无关语言时,我们可以进行 Max 1 比较。 例如 a^n b^n 这里 a 和 b 的长度只有一个比较...... 当对上下文敏感的语言我们有 Max 2 比较和超过 2 的比较意味着不受限制的语法。 我的上述概括是否正确,如果不正确,请说明问题..如果我考虑这样的陈述。

【问题讨论】:

  • 不完全正确。考虑 CFG S->AZ; A->aAb|ab; Z->yZz|yz。这对应于具有两个比较的语言:a 的数量 = bs 的数量,ys 的数量 = zs 的数量。按照这种模式,您可以定义具有任意数量比较的 CFG。不过,您说得对,因为它们可以表达的比较类型非常有限。

标签: context-free-grammar automata finite-automata turing-machines automata-theory


【解决方案1】:

首先,我要修改一下您所说的内容,以澄清我们所说的是无限比较。我们可以进行多重比较,例如,对某个数字取模。例如,考虑 {a, b, c, d} 上的语言,其中 n(a) = n(b) = n(c) = n(d) (mod 5)。这至少有三个比较,但语言仍然是常规的(留作练习;提示:分别考虑 n(a) = 0、1、2、3、4 的情况)。

其次,请注意,您可以使用不带(显式)长度比较的非常规语言。例如,考虑回文的上下文无关语言;有所有可以想象的长度的回文。

第三,我们应该澄清,所进行的比较本质上必须是合取的,而不是析取的。也就是说,所有长度比较必须同时为真,而不是至少其中一个为真。例如,具有 x=y 或 y=z 的语言 a^x b^y c^z 是上下文无关的。类似地,语言 a^x b^y c^z x=y=z 是不正确的,是上下文无关的。这两者都有多个条件,但不满足长度比较必须同时为真的要求。 (注意:not(x=y=z) not(x=y and y=z) x!=y or y!=z)。

第四,上下文相关语言不能进行两次以上的长度比较是不正确的。这是 a^n b^n c^n d^n 的非收缩语法(非收缩语法弱等效于 CSG,请参阅 Wikipedia 了解详细信息):

S -> BCDT
T -> ABCDT | W
BA -> AB
CA -> AC
CB -> BC
DA -> AD
DB -> BD
DC -> CD
DW -> Wd
CW -> Xc
CX -> Xc
BX -> Yb
BY -> Yb
AX -> Za
AZ -> Za
Z -> e

这是 aaabbbcccddd 的一个推导:

S
BCDT
BCDABCDT
BCDABCDABCDT
BCDABCDABCDW
BCADBCDABCDW
BACDBCDABCDW
ABCDBCDABCDW
ABCBDCDABCDW
ABBCDCDABCDW
ABBCCDDABCDW
ABBCCDADBCDW
ABBCCADDBCDW
ABBCACDDBCDW
ABBACCDDBCDW
ABABCCDDBCDW
AABBCCDDBCDW
AABBCCDBDCDW
AABBCCBDDCDW
AABBCBCDDCDW
AABBBCCDDCDW
AABBBCCDCDDW
AABBBCCCDDDW
AABBBCCCDDWd
AABBBCCCDWdd
AABBBCCCWddd
AABBBCCXcddd
AABBBCXccddd
AABBBXcccddd
AABBYbcccddd
AABYbbcccddd
AAYbbbcccddd
AZabbbcccddd
Zaabbbcccddd
aaabbbcccddd

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 2015-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多