【问题标题】:Recursive language递归语言
【发布时间】:2016-11-26 06:50:09
【问题描述】:

"如果一种语言是递归的,那么就存在一种方法,通过这种方法,语言中的字符串可以按某种顺序编写" 我还被告知“如果某种语言可以被某个图灵机按字典顺序枚举,那么这种语言称为递归”

首先:这两个语句是否不同? 第二:它应该只是一个字典顺序吗?

【问题讨论】:

    标签: computation-theory lexicographic turing-machines


    【解决方案1】:

    回想一下为什么字典顺序对于递归语言的定义是必要的:

    • 如果语言可以确定,它就是递归的。也就是说,对于给定的单词 W 和给定的语言 L,可以通过有限多步知道 W 是否是 L 的成员,或不是
    • 如果一种语言可以被接受,它就是递归可枚举的。也就是说,对于给定的单词 W 和给定的语言 L,可以通过有限多步知道 W 是否是 L 的成员,但是 不可能 知道 W 不是 L.的成员。

    因此,如果一台机器只是以任意顺序列举了 L 的单词,您可以检查您的单词 W 是否在该列表中。如果是,你就停下来。如果不是,您必须永远等待,看看您的单词是否最终被机器输出。该语言是递归可枚举的。

    如果你知道顺序,你可以评估机器现在是否应该输出W。如果机器输出了一个单词 X,并且根据你知道机器使用的顺序,W 在 X 之前,你知道机器永远不会发出 W,所以你知道 W 不是 L 的成员。

    字典顺序是满足您可以判断的属性的单词的许多总排序之一停下来。

    其他订单:
    https://en.wikipedia.org/wiki/Lexicographical_order#Colexicographic_order
    https://en.wikipedia.org/wiki/Kleene%E2%80%93Brouwer_order

    所以回答你的具体问题:

    1. 这两个语句是否不同?
      是的。
      第一个语句声明“在某个序列中”,它没有指定序列必须是 L 字母表上的total order。因此,第一种说法是不正确的。第一条语句定义了一种可递归枚举的语言。
      第二个陈述是正确的,但比它需要的限制更多。字典顺序只是字母表上的一个总顺序。其他的都可以用。

    2. 是否应该只是字典顺序?
      没有。
      如上所述,只要机器保证按字母表的任何总顺序输出,该语言就是递归的。

    【讨论】:

    • 非常感谢。顺便说一句,总顺序和正确顺序在任何意义上都相关吗?
    • 我不知道“正确顺序”的严格定义。你有这个词的定义吗?
    • 我正在阅读 Peter Linz 的形式语言和自动机介绍。在第 271 页上,它采用 a、b、c、aa、ab、ba、bb 的顺序......并称其为正确顺序。它似乎是字典式的,因此是完全的。所以我认为这可能是某种类型的订单,比如全部和部分
    • 在全序中,它更具有自反、传递和反对称的性质。这些属性可以很容易地在一组整数上实现。但是当我们考虑 {a,b} 上的语言时,我如何比较给定的 3 个字符串的传递属性:aab aba aaa 不使用字典顺序或其他顺序。
    猜你喜欢
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 2015-04-11
    • 2016-08-02
    • 2011-09-04
    • 2016-02-01
    相关资源
    最近更新 更多