本课程是计算机理论课程,讲述计算机的基本功能和局限性,形式化描述计算机硬件和软件的数学特性;主要内容包括3个方面的知识:
- 计算模型:主要总结两个计算模型FA和PDA的基本功能和局限性
- 可计算理论:主要总结图灵机模型,并熟悉如何判定计算机的基本计算能力,以及什么样的问题是计算机不可计算的问题。
- 复杂性理论:这个是本学期的重点,如果确认要解决问题的复杂性,以及如何为复杂问题给出近似解
另外本课程在上述计算模型以及分析计算能力:能判定、识别的形式语言的基础之上,进行了理论和应用的扩展
-
理论扩展:通过读取论文,理解量子计算机是否计算能力 > 图灵机模型
-
应用扩展:通过读取论文,基于图计算,理解问题的形式化、问题求解,求解的可解释性。
本课程课程目标如下:
- 计算机理论:希望学习如何思考、证明、论证、解决问题、表达和抽象。
- 理论与实践结合:学习到解决问题的技巧,涉及到的实践包括:新的编程语言设计、编译器、字符串搜索、模式匹配、计算机安全、人工智能等方面。
- 第2章 上下文无关的语言后可以复习下自己做的编译器。https://pandolia.net/tinyc/ch10_top_down_parse.html、
- 图灵介绍和解读:http://www-history.mcs.st-andrews.ac.uk/Biographies/Turing.html
- 计算模型仿真:http://www.jflap.org/
- 。。。。。
Computational complexity is the mathematical study of computational efficiency. It is concerned with identifying efficient models of computation and understanding their power, their limitations, and their interrelationships.
Besides learning about basic techniques, I wish we can talk about how computational complexity informs what is feasible and infeasible in other information processing areas (cryptographic protocols, combinatorial optimization, "big data" computations, machine learning, game theory and economics).
For your final project, you can do one of the following.
-
Do a small research project. You can master how to describe the complexity, and prove the complexity class of the problem related with your own research interest.
-
Study and reflect upon a work in computational complexity of your choice. we will likely need to do some background reading. When presenting your work you are expected to place it in proper context in relation to the material in the course and give your own judgment about the advantages and disadvantages of the work. Two good places to look for possibilities are the ECCC and ArXiv preprints. (A word of warning: The ArXiv papers are not refereed and the ones on ECCC are scrutinized minimally. If you find a serious error bonus points to you!)
-
Tell us about computational hardness (and how it is coped with) in your own research area. we will try to define the problems and computational models rigorously, justify why your definitions are sensible .
-
计算理论书籍阅读和讲解: 60分
-
扩展论文阅读和讲解:40分
-
1 Decision tree 2 Parallel computation 3 Sequential computation 4 Sublinear-time computation 5 Quantum computation -
1 Big Data 2 Machine learning -
In the monotone circuit lower bound for CLIQUE we showed that no small monotone circuit can simultaneously accept all positive instances and reject all negative instances. However there is a simple monotone circuit that accepts all negative instances and rejects all positive ones (what is it?) Can you come up with a possibly different monotone function so that no small monotone circuit can completely distinguish positive or negative in either direction?
-
Extend the theory of average-case complexity from search and decision to approximate counting and approximate sampling problems. I suggest you start with some examples of such problems that are easy and hard on average, state definitions, and try to relate these two types of problems (they are known to be worst-case equivalent in certain settings, e.g. approximately counting and sampling perfect matchings in graphs.)
-