【问题标题】:Unrestricted Grammar: { sss | s exists in {a,b}* }不受限制的语法:{ sss | s 存在于 {a,b}* }
【发布时间】:2016-05-03 23:04:33
【问题描述】:

有什么方法可以为 sss 构建不受限制的语法?我知道为了构造ss,你需要构造ss^r,然后重新反转第二个字符串,但是sss怎么做呢?

【问题讨论】:

    标签: grammar turing-complete


    【解决方案1】:

    这可能存在一些错误,但这个想法应该能让你走上正轨。

    // section 1
    S := LTR
    T := ATWX | BTYZ | N
    
    // section 2
    WW' := W'W
    WY' := Y'W
    YW' := W'Y
    YY' := Y'Y
    
    // section 3
    WX' := W'X'
    WZ' := W'Z'
    YX' := Y'X'
    YZ' := Y'Z'
    
    // section 4
    XW' := W'X
    XX' := X'X
    XY' := Y'X
    XZ' := Z'X
    ZW' := W'Z
    ZX' := X'Z
    ZY' := Y'Z
    ZZ' := Z'Z
    
    // section 5
    XR  := X'R
    ZR  := Z'R
    
    // section 6
    NW' := W'N
    NX' := X'N
    NY' := Y'N
    NZ' := Z'N
    NR  := Q
    
    // section 7
    AQ  := Qa
    W'Q := Qa
    X'Q := Qa
    BQ  := Qb
    Y'Q := Qb
    Z'Q := Qb
    LQ  := e
    

    第 1 节列出了基本方案。我们将用 L 和 R 标记我们工作空间的开始和结束,使其非常明确。 T 是我们的工作空间,L 和 R 是左右标记。我们的工作空间可以添加三个as(这些是 A、W 和 X 稍后将成为的)或添加三个 bs(这些是 B、Y 和 Z 将成为稍后)或者它可以退出生成特殊的非终结符 N。N 将把我们的非终结符字符串变成一串终结符,我们稍后会看到。

    所以我们需要在(a+b)* 中为x 提供xxx。由于我们设置制作的方式,AB 被添加到第一个 x 的末尾。第 2 部分的工作是确保将 WY 添加到第二个 x 的末尾。不幸的是,我们的作品将WY 放在第二个x 的开头,因此,如果不进行更正,我们最终会得到xx^R。第 2 节通过将WY“浮动”到右侧来纠正这个问题,只要它们位于已经找到合适位置的WY 的左侧。 Ws 和 Ys 不能相互通过,因此这保证了一旦音乐停止,它们将以正确的顺序结束。

    第 3 节展示了第二次出现 x 中的符号如何找到它们的正确位置。基本上,它们会向右移动(基于第 2 节),直到它们在适当的位置找到第三个 x 的符号。由于第二个x 的符号在第三个x 的符号之前有其适当的位置,因此第三个xXZ)的符号之前的最后一个可能的正确位置是第二个x 的每个符号。所以我们一直浮动到第二个x的末尾。

    我们在第 4 节中对第三个 x 重复该过程,尽管我们必须让这些符号(XZ)浮过第二个或第三个 x 中已经找到的所有符号他们应有的地方。这些符号不能自行传递,因此按照我们在第 2 节中看到的相同逻辑,我们将以正确的顺序获取符号。

    第 5 节说明何时停止构成右侧第三个 x 的浮动符号。还记得工作空间标记R 的结尾吗?第三个x 的最后一个符号一直出现在右侧,就在R 之前。这就是我们知道我们找到了符号的正确位置的时候。

    第 6 节开始完成我们的推导过程。我们有一串可爱的非终结符,我们想把它们变成终结符。我们要做的第一件事就是将N 向右浮动,越过第二个和第三个xs 的正确放置的符号,一直到字符串标记R 的末尾。我们不需要任何R,所以我们将N 转换为Q。正如我们将在下一节中看到的,Q 是让魔法发生的原因。

    第 7 节概述了Q 如何在整个非终结符字符串中向左浮动,这些非终结符一直到L,一直到L,将非终结符更改为正确的终结符。一旦找到L,它就会消除两个非终结符,只留下一串终结符。推导完成。

    为了说明这个过程,让我们生成aabaabaab

    S
    -> LTR 
    -> LATWXR 
    -> LAATWXWXR 
    -> LAABTYZWXWXR
    -> LAABNYZWXWXR
    -> LAABNYZWXWX'R
    -> LAABNYZWXW'X'R
    -> LAABNYZWW'XX'R
    -> LAABNYZWW'X'XR
    -> LAABNYZWW'X'X'R
    -> LAABNYZW'WX'X'R
    -> LAABNYZW'W'X'X'R
    -> LAABNYW'ZW'X'X'R
    -> LAABNYW'W'ZX'X'R
    -> LAABNYW'W'X'ZX'R
    -> LAABNYW'W'X'X'ZR
    -> LAABNYW'W'X'X'Z'R
    -> LAABNW'YW'X'X'Z'R
    -> LAABNW'W'YX'X'Z'R
    -> LAABNW'W'Y'X'X'Z'R
    -> LAABW'NW'Y'X'X'Z'R
    -> LAABW'W'NY'X'X'Z'R
    -> LAABW'W'Y'NX'X'Z'R
    -> LAABW'W'Y'X'NX'Z'R
    -> LAABW'W'Y'X'X'NZ'R
    -> LAABW'W'Y'X'X'Z'NR
    -> LAABW'W'Y'X'X'Z'Q
    -> LAABW'W'Y'X'X'Qb
    -> LAABW'W'Y'X'Qab
    -> LAABW'W'Y'Qaab
    -> LAABW'W'Qbaab
    -> LAABW'Qabaab
    -> LAABQaabaab
    -> LAAQbaabaab
    -> LAQabaabaab
    -> LQaabaabaab
    -> aabaabaab
    

    【讨论】:

      猜你喜欢
      • 2011-01-14
      • 2022-02-10
      • 2019-03-15
      • 2014-03-29
      • 2013-11-19
      • 2022-11-16
      • 2015-02-19
      • 2021-10-06
      • 2022-01-07
      相关资源
      最近更新 更多