【问题标题】:Is the language L1 = {a^p; p is not a prime number and p>=0} recursively enumerable?是语言 L1 = {a^p; p 不是素数并且 p>=0} 递归可枚举?
【发布时间】:2021-10-21 13:13:16
【问题描述】:

我知道语言 L2 = {a^m; m >=0} 是常规语言,并且 L3 = {a^p; p 是素数} 是递归可枚举的。

L2-L3=L1 是否也可以递归枚举并且不是上下文无关的或常规的?

【问题讨论】:

    标签: regular-language enumerable computation-theory


    【解决方案1】:

    不仅是 L3 = {a^p; p 是一个素数} 递归可枚举,它是递归的。这是证明的草图:

    想象一个带有以下磁带的多磁带图灵机:

    1. 输入磁带,最初带有一个数字,以检查素数
    2. 除数带,记录我们正在检查的当前数字作为除数带上数字的除数
    3. 暂存带,我们实际上用它来检查除数是否将被除数除以没有余数

    为简单起见,假设一元表示。这些磁带可以按如下方式使用:

    1. 硬编码一些特定输入的行为:
    • 空输入:停止接受,因为 0 不是素数
    • 只有一个符号:停止接受,因为 1 不是素数
    • 只有两个符号:停止拒绝,因为 2 是素数
    1. 通过在数字 2 上放置 2 个符号来初始化除数带
    2. 将输入复制到暂存磁带
    3. 从暂存磁带末端擦除与除数磁带上的符号一样多的符号;如果您用完符号却无法这样做,请将所有磁带头重置到开头,擦除暂存磁带,然后在除数磁带的末尾添加一个新符号。如果这使得除数大于或等于输入,则停止拒绝,因为这意味着该数字是素数。否则,从第 3 步继续。
    4. 如果暂存磁带现在是空的(意味着除数均分输入),则停止接受,因为输入不是素数。否则,从第 4 步继续。

    因为我们可以使用这个 TM 确定任何输入的非素数,我们也可以简单地通过将每个字符串提供给这个 TM 并在我们确定它不是素数时列出它来枚举语言中的字符串。

    在数字 5(素数)上运行的 TM 示例:

    s = 0       s = 1       s = 2       s = 3       s = 4
    |||||####   |||||####   |||||####   |||||####   |||||####
    #########   ||#######   ||#######   ||#######   ||#######
    #########   #########   |||||####   |||######   |########
    
    s = 5       s = 6       s = 7       s = 8       
    |||||####   |||||####   |||||####   |||||####   HALT
    |||######   |||######   ||||#####   ||||#####   REJECT
    |||||####   ||#######   |||||####   |########
    

    在 9 上运行的 TM 示例(非素数):

    s = 0       s = 1       s = 2       s = 3       s = 4
    |||||||||   |||||||||   |||||||||   |||||||||   |||||||||
    #########   ||#######   ||#######   ||#######   ||#######
    #########   #########   |||||||||   |||||||##   |||||####
    
    s = 5       s = 6       s = 7       s = 8       s = 9
    |||||||||   |||||||||   |||||||||   |||||||||   |||||||||
    ||#######   ||#######   |||######   |||######   |||######
    |||######   |########   |||||||||   ||||||###   |||######
    
    s = 10
    |||||||||   HALT
    |||######   ACCEPT
    #########
    

    【讨论】:

      猜你喜欢
      • 2015-06-26
      • 2014-12-18
      • 2011-12-03
      • 2021-09-06
      • 2020-11-27
      • 2021-09-06
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      相关资源
      最近更新 更多