computer-science - 正则、图灵可判定和图灵可识别是什么意思?

标签 computer-science regular-language computation-theory turing-machines decidable

我知道这个问题之前已经被问过,但老实说我不太明白。

我目前正在研究计算理论,我正在研究“证明一种语言是可判定的、可识别的或规则的”这一术语。

用最简单的术语来说,它们的实际含义是什么?我们如何证明这些事情?

最佳答案

我们正在谈论一种语言 L字母表 Sigma ,这意味着 L is a subset of Sigma* ( L 由来自 Sigma 的字母组成的单词组成。

<强> L可判定
意味着存在一台图灵机T ,这样 T对于任何输入词都会停止并接受 omega in L对于任何输入单词,停止并拒绝 omega not in L .

<强> L易于识别
意味着存在一台图灵机T ,这样 T对于任何输入词都会停止并接受 omega in L对于任何输入停止或不停止(但不是停止并接受!)omega not in L .

另请参阅Recognizable vs Decidable on MathExchange为了区别。

<强> L有规律
意味着 L可以通过正则表达式创建。值得注意的是,理论计算机科学中的这些正则表达式与 PERL 或 Java 等编程语言中已知的正则表达式功能不同。事实上,这些正则表达式确实比正则表达式更强大(不知道这是否是正确的英文术语)。

给出了正则表达式的良好定义here :

对于字母表Sigma

  • the empty setepsilon (空集和空词)是正则表达式
  • a对于任何 a in Sigma (字母表中的任何字母)是正则表达式
  • 如果 R1R2是正则表达式,这些也是正则表达式:
    • R1 and R2 (意思是R1R2)
    • R1 concatenated with R2 (意味着 R1R2 的串联)
    • R1* (意思是 R1 、任意次数的 R1 重复或空词 epsilon )

除此之外没有什么是正则表达式。

我们如何证明这样的事情?

图灵机

为了证明可判定性或可识别性,通常最简单的方法是为图灵机提供所需的属性。因为Church-Turing thesis ,任何编程语言都像图灵机一样强大。因此,在我的类(class)中,用编程语言或伪代码提供算法是完全可以接受的。

请注意,任何可识别的语言也是可判定的(但反之则不然)。

正则表达式

为了证明正则性,大多数时候最简单的方法是提供构建语言的正则表达式。有时需要证明正则表达式确实准确地构造 L ,这通常不太困难(通常很明显)。

在许多讲座中,有一个关于正则表达式的约定,它允许更直观和更短(但不是更强大)的语法。

有趣的是,常规语言正是 finite automatons 可以识别的语言。 。请注意,任何常规语言也是可判定的(因此是可识别的)。

为了反驳规律性,我只想提及 pumping lemma for regular languages .

关于computer-science - 正则、图灵可判定和图灵可识别是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42596232/

相关文章:

computer-science - 计算机科学和信息科学有什么区别?

c - C volatile变量和高速缓存

regex - '\$' 正则表达式会匹配什么?

grammar - 正则语言和正则文法的区别

functional-programming - lambda 演算等价于图灵机是什么意思

automata - 如何在最小化相同状态期间对具有死状态的 DFA 进行分区

python - 在Python中将二进制数转换为十六进制数不适用于超过5位的数字(家庭作业)

javascript - 变量声明是否与变量的绑定(bind)相同?

automation - 为什么 L={wxw^R| w, x 属于 {a,b}^+ } 是正则语言

automata - 什么是glushkov NFA。 Glushkov NFA 和 Thompson NFA 有什么区别?