计算理论是计算机应用的基础,理论和应用缺一而不可。

---- 目录 ----

C01 自动机
C02 有穷自动机
C03 正则表达式与正则语言
C04 正则语言的性质
C05 上下文无关文法及上下文无关语言
C06 下推自动机
C07 上下文无关语言的性质
C08 图灵机
C09 不可判定性
C10 难解问题
C11 其他问题类
 
---- C01 自动机 ----
  • 有穷自动机(FA)的两个重要因素是状态跳转,状态是数据/环境,跳转是函数/响应。
  • 自动机的结构表示法有两种,一种是正则表达式,正则表达式(RE)和有穷自动机(FA)是等价的,前者只是后者的结构记号而已,另一种是文法,通常指的是上下文无关文法,用来构建编译器的语法分析器。
  • 可判定性是研究计算机能做什么不能做什么的,计算机能解决的问题称为“可判定的”,反之则为“不可判定的”,难解性是指问题的解决难度是容易的还是复杂的,复杂度为多项式的问题称为“易解的”/“可计算的”(P问题),反之则为“难解的”/“不可计算的”(NP问题)。
  • 证明分为演绎证明和归纳证明,演绎证明是基于推导(前提->结论)的命题树,“如果那么”是单向的,“当且仅当”是双向的,命题当且仅当逆否命题(若A则B<->若非B则非A),反证法(证明A与非B矛盾)就是基于此的,反例法是用来推翻错误命题的,归纳证明分为基础部分/初始部分(S(0)成立)和归纳部分/推导部分(S(n)成立->S(n+1)成立),结构归纳法是基于递归定义的,所谓的“结构”是指某个递归定义的结构。从哲学上认为,演绎法归纳法是两个不同的过程,前者是从一般到个别的应用过程,后者是从个别到一般的总结过程,而我们这里强调的演绎是寻找前提和结论之间的联通路径,归纳是从部分到整体、从容易到困难的递归推导。
  • 自动机理论的中心概念有字母表、串和语言,字母表(A)是字母的集合,(S)是字母的序列,语言(L)是串的集合,判定问题是判定某个串是否属于某个语言的问题,语言和判定问题其实是相同的东西,它们都划出了“是”与“不是”的界线。
 
---- C02 有穷自动机 ----
  • 有穷自动机(FA)是基于状态和控制的,“控制”是制定状态跳转的规则,控制有“确定的”(只有一个状态)和“非确定的”(可以多个状态),所以有穷自动机有确定型有穷自动机(DFA)和非确定型有穷自动机(NFA)两种,正则表达式是有穷自动机的代数记号,它与有穷自动机是等价的,正则语言是描述有穷自动机的语言。
  • 确定型有穷自动机(DFA)由有穷个状态的集合(Q)、有穷个输入符号的集合(A)、转移函数(T)、初始状态(q0)和接受状态的集合(F)五部分组成,DFA可以用数学公式描述:DFA=(Q, A, T, q0, F),也可以用转移图转移表描述,转移函数是基于某个输入符号的,扩展转移函数是基于某个输入符号序列的,DFA的语言L(DFA)={S|T(q0,S)属于F},输入一个符号序列,DFA可以接受拒绝(判定性)。
  • 确定型有穷自动机(DFA)只有一个状态,而非确定型有穷自动机(NFA)可以多个状态,从而具备了一定的“猜测”能力。与DFA一样,NFA也是由五部分组成,只是转移函数T的返回是状态的集合(DFA的只是一个状态),也就是说,DFA只是NFA的一个特例而已,在设计上NFA会比DFA更加简单和自然,NFA的语言L(NFA)={S|T(q0,S)与F的交集非空},NFA与DFA是等价的(也即是L(NFA)等价于L(DFA)),通过子集构造,我们可以把NFA的状态集合作为DFA的状态,把NFA转为为等价的DFA,但换来的是指数增长的状态数,我认为两者等价应该取其较简者,在设计上,如果缺少转移,可以额外添加一个“死状态”。
  • 带ε的非确定型有穷自动机(ε-NFA)是NFA的一个变种,ε指的是空串,它提供了很大的便利性,ε-NFA与NFA的不同也在于转移函数上,ε-NFA的转移函数可以接收ε作为输入符号(允许空输入),从状态q出发通过ε转移能够到达的所有状态的集合称为状态q的ε闭包(或ε闭集)(ECLOSE(q)),通过融合了ε闭包的子集构造,我们可以看到ε-NFA与DFA其实也是等价的。
  • 有穷自动机的理论最初来源于神经网路的研究,研究神经网络可能有助于发现比有穷自动机更为复杂的模型。
 
---- 
 

自动机理论、语言和计算导论 by John E. Hopcroft的更多相关文章

  1. [Coursera][计算导论与C语言基础][Week 10]对于“数组应用练习”课后习题的思考题的一些想法

    (首先,关于Honor Code,我咨询过了Help Center,分享课后练习的思考题的想法是可以的(注意不是代码),但要标明引用,引用格式来源于https://guides.lib.monash. ...

  2. C语言中计算变量占用内存空间

    C语言中计算变量占用内存空间 在C语言中通常用[sizeof]运算符计算变量占内存空间,如下面的例子:

  3. 李洪强漫谈iOS开发[C语言-041]-计算月份天数

    李洪强漫谈iOS开发[C语言-041]-计算月份天数 

  4. C 语言实例 - 计算标准偏差

    C 语言实例 - 计算标准偏差 计算标准偏差. 实例 #include <stdio.h> #include <math.h> float calculateSD(float ...

  5. C 语言实例 - 计算一个数的 n 次方

    C 语言实例 - 计算一个数的 n 次方 计算一个数的 n 次方,例如: ,其中 为基数, 为指数. 实例 - 使用 while #include <stdio.h> int main() ...

  6. C 语言实例 - 计算自然数的和

    C 语言实例 - 计算自然数的和 自然数是指表示物体个数的数,即由0开始,,,,,,……一个接一个,组成一个无穷的集体,即指非负整数. 实例 - 使用 for #include <stdio.h ...

  7. Problem Q: C语言习题 计算该日在本年中是第几天

    Problem Q: C语言习题 计算该日在本年中是第几天 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 4572  Solved: 2474[Subm ...

  8. C 语言实例 - 计算两个时间段的差值

    C 语言实例 - 计算两个时间段的差值 C 语言实例 C 语言实例 计算两个时间段的差值. 实例 #include <stdio.h> struct TIME { int seconds; ...

  9. C 语言实例 - 计算字符串长度

    C 语言实例 - 计算字符串长度 C 语言实例 C 语言实例 计算字符串长度. 实例 - 使用 strlen() #include <stdio.h> #include <strin ...

随机推荐

  1. wifipineapple使用教程

    1.把开关拨到右边 如果有灯亮说明有电 4个灯全亮说明电量是满的 以此类推 如果一个也不亮说明没电了需要用充电器充电 2.把开关拨到左边打开wifi的开关  会开启一个wifi大概一分钟左右会有wif ...

  2. ubuntu删除软件命令

    第一步,apt-get remove xxx :就是卸载xxx  或者 apt-get remove --purge xxx :卸载xxx并清除配置.   这两条命令对于依赖则是不管的.因为别的软件可 ...

  3. 转{QQ浏览器X5内核问题汇总}

    转自https://www.qianduan.net/qqliu-lan-qi-x5nei-he-wen-ti-hui-zong/ 常常被人问及微信中使用的X5内核的问题,其实我也不是很清楚,只知道它 ...

  4. python成长之路【第七篇】:面向对象

    概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 面向对象三大特性 面向 ...

  5. python 中的input

    渣渣之路. 一. 在python编程初学者指南中的第六章.使用参数和返回值的例子中: # -*- coding: utf-8 -*- def display(message): print messa ...

  6. 程序设计入门——C语言 第4周编程练习 2 念整数(5分)

    题目内容: 你的程序要读入一个整数,范围是[-100000,100000].然后,用汉语拼音将这个整数的每一位输出出来. 如输入1234,则输出: yi er san si 注意,每个字的拼音之间有一 ...

  7. centos7 安装mysql5.7.16

    1 下载地址http://dev.mysql.com/downloads/mysql/#downloads 2. 解压 -linux-glibc2.-x86_64.tar.gz 3.移动解压出来的文件 ...

  8. CSS 3 动画2D

    动画分为两种,1,逐帧动画  组成动画的每一个画面就是一帧 2,关键帧动画,确定关键帧电脑会自动过度 动画中如果遇到不兼容的问题也是要加前缀 @-webkit-keyframes规则   @-webk ...

  9. 基于TF-IDF值的汉语语义消歧算法

    RT,学校课题需要233,没了 话说,窝直接做个链接的集合好了,方便以后查找 特征值提取之 -- TF-IDF值的简单介绍 汉语语义消歧之 -- 句子相似度 汉语语义消歧之 -- 词义消歧简介 c++ ...

  10. WEB UI 整理

    当下对于网站前段开发人员来说,很少有人不使用一些JS框架或者WEB UI库,因此这些可以有效提高网站前段开发速度,并且能够统一开发环境,对于不同浏览器的兼容性也不需要程序员操心,有了这些优点,当然大家 ...