《计算理论导引》学习指南

本文尚在草稿状态,很难在短期内完成写作。发布出来旨在为初学者提供一些指引:书籍、资料、简介、历史还有我在不同年代的吐槽。请原谅我把吐槽也作为指南的一部分,必不可少的部分。--作者

教材

Introduction to the Theory of Computation ( ITOC ),
作者: Michael Sipser
出版社: Course Technology
出版年: 2012-6-27
ISBN: 9781133187790

《计算理论导引》学习指南_第1张图片
ITOCv3

主要内容

ITOC主讲三大内容:

  • 什么是计算;
  • 什么可计算;
  • 如何度量计算的效率。

大致上来说,首先我们需要一种准确的表达法来说明到底计算本质上是什么。不同的科学家抽象出不同的计算模型,于是我们必须考查这些模型的表达能力(第一部分:什么是计算)。其次,我们发现计算是有局限的,不是什么问题都能计算,那到底什么是可计算的问题呢?有什么问题是不可计算的呢(或称为“不存在算法”)?(第二部分:什么可计算)如果某些问题是可解的,存在某种算法可以解决这个问题,那么这种算法的效率如何度量呢?我们需要一种通用的标准度量,並建立相关理论(第三部分:复杂性理论)。

需要强调的是,ITOCv3是本科教材,用于高年级的本科教学。

第0章 引论

  • 0.1 自动机、可计算性、复杂性

  • 0.2 数学表示与术语

  • 0.3 定义、定理与证明

  • 0.4 证明的类型

第1章 正则语言

Language(语言),对计算问题的高度抽象表达。整本书的重点是“计算“,如果能体会出在描述计算理论时语言的定义所产生的巨大作用,则理解就上了一个台阶。只是,第一章并不能产生这么大的效用,需持续关注。

1.1 有限自动机

概念:FA、语言、正则语言、正则操作
定理:正则语言类在正则操作(并、交、串联)下封闭;

1.2 非确定性

重点:体会计算的非确定性
难点:DFA与NFA的等价

对非确定性的两种解读:

  • 并行执行;
  • 总是猜对执行路径。哪一种更好?

问题:为什么我们需要“不确定性“?

1.3 正则表达

1.4 非正则语言

要点:自动机的计算局限性
难点:Pumping Lemma及其应用

第2章 上下文无关语言

2.1 上下文无关文法

重点:歧义性

问题1:为什么把能以不同方式生成的字符串称为歧义?
问题2:为什么需要“最左派生“这个定义?

2.2 下推自动机

问题0:下推自动机(PDA)比有限自动机的能力更强,主要体现在哪里?为什么PDA能力会更强呢?

问题1:在Lemma 2.21的证明中,如何确保可被匹配的串w一定会被匹配?
回答:构造算法是非确定性算法。重点体会非确定性选择的含义。

问题2:在Lemma 2.27的证明中,如果p不可达q,那么$A_{pq}$的构造是否还合法(会出现不合法的情况)?
回答:暂无

2.3 非上下文无关语言

2.4 (忽略)

第3章 丘奇-图灵论题

本章的主要内容是介绍图灵机及其相关概念,旨在进一步刻画计算(算法)的本质。重点区分两个概念:图灵可判定与图灵可识别。从算法的角度看,前者要求计算在有限步之后结束,而后者没有。明白了这种区别,对计算机的有限计算将会有更深入的理解。

3.1图灵机

一种计算模型,定义繁琐,但并无理解难点。

3.2 图灵机的各种变种

3.3 算法的定义

第4章 判定性

4.1 可判定语言

4.2 停机问题

重点:对角线法、停机问题不可判定的证明

关于停机问题的一种充满诗意的证明

5 可归约性

这一章的重点是理解归约的本质、过程与应用。

5.1 语言理论中的不可判定问题

针对RL与CFL的若干语言形成的判定性问题进行证明。

5.2 一个简单的不可判定问题:PCP问题

只是一个证明!PCP问题的描述很简单,其不可判定性倒是颇令人感到意外。这里除了一个结论,一个冗长的证明外,内容不多。

5.3 不可判定问题的形式化定义:映射可归约性

重点:Mapping Reducibility的定义

第6章 计算理论的高级专题

6.1. 递归定理

递归定理展示“程序自我复制是可能的”这样一个简单而令人吃惊的结论。

The Quine Page,里面收集了大量不同语言写成的Quine程序:自己输出自己源代码的程序。

待续

参考书

  • Introduction to Automata Theory, Languages, and Computation (IALC), John E. Hopcroft, Rajeev Motwani, Jeffrey D Ullman,Addison Wesley, 2006-7-15. (不能不说的另一本鼎鼎有名的ITOC book。)
  • CS-581: Theory of Computation. (By Harry Porter -D)
  • A free book of ITOC (another ITOC).

选课建议

首先,这是一门为有志气有思想不怕困难的同学开设的课程。其次,这是一门比较困难的理论课程,需要大量的阅读与思考。第三,学这门课很难立即给你带来那种让同学们羡慕的实践技能、那些传说中大公司招人所需的技能,但是它能给你带来思想上的重大转变(如果你认真学的话)。第四,如果你对理论不感兴趣,请不要选,尽管我知道所谓“不喜欢理论”的人通常不知道什么是理论。最后,如果你选择了读研,我建议你选,因为你选择读研就隐含地意味你必须面对理论,也许你不同意我这个看法也没关系。

ITOC 在某学院的本科开课历史

  • 2014年秋季,2012级网络工程专业首次授课;
  • 2015年秋季,2013级网络工程专业第二次授课;
  • 2016年秋季,2014级因故停开
  • 2017年秋季,2015级因故停开
  • 2018年秋季,2016级待定

以下废话

我年轻的时候曾经吐槽(当我讲TOC的时候我在讲什么 )说:

  • TOC是科普,无论是全职师奶还是IT民工都可以读之且获得乐趣,何况一众非常有可能是拥有211重点大学双一流学科本科学位的全职师奶或者IT民工。

  • 阅读TOC不需要高IQ,不要总是拿自己的IQ忽悠自己和他人。

  • TOC是思维的训练,文化的熏陶,你们不缺少知识、不缺少信息,缺的是熏陶。

  • TOC是巨人出没的领域,你不走入巨人的领地,怎么能站到巨人的肩膀上呢?

2017年7月整理

你可能感兴趣的:(《计算理论导引》学习指南)