《计算复杂性与算法分析》和《计算复杂性》学习

今天偶然间碰到数学界著名的七大千禧难题,关注了P和NP问题,但是里面提到关于算法的复杂性的描述已经超出了自己的知识范围,我找到了一本书来弥补这个不足,即《计算复杂性与算法分析》,希望自己在看完这本书之后能够对计算复杂性有完整的概念

首先看看它的目录

《计算复杂性与算法分析》和《计算复杂性》学习_第1张图片

其实大部分的知识都有接触过,但是没有形成体系

接下来就慢慢学习吧,挖个坑一直学

  • 自动机

以基本码为单位对输入进行计算得到输出的过程

看了一会,发现第一章和第二章的内容与编译原理的内容相似,介绍了语法分析树,语言文法

  • 图灵机

图灵机是比自动机应用更为广泛的一种计算模型,非确定型图灵机(NTM)的移动不能为转移函数准确地决定,它的转移函数是多值的。如果将这些函数值放在仪器形成一个子集,那么也可以把它看成一个集值函数。除此之外,NTM和DTM没有区别,就是在分析下一位的输入的时候,它的输出是不确定的

到了第5章正式介绍计算复杂性理论

  • 不同计算模型的算法复杂性的度量的尺度时不同的,但都从不同角度描述了一个算法的安度。一个算法的复杂性是由这类问题的固有安度决定的,它在某种意义上应独立于计算它的模型,但是,当我们涉及一个具体问题时,不可避免的要谈到这个问题的所谓体积,或称大小
  • 时间复杂性

如果一个问题的大小是n,解决这一问题的某一算法所学的时间为T(n),它是n的某一函数。T(n)称为这一算法的时间复杂性。当输入量n逐渐加大时,时间复杂性的极限情形,称为算法的渐进时间复杂性。类似地,可以定义一个算法的空间复杂性和渐进空间复杂性。在算法的复杂性讨论中,人们主要是研究算法的时间复杂性,尤感兴趣的是算法的渐进时间复杂性,而对算法渐进复杂性的讨论往往只给出它的关于问题大小n的数量级。

  • RAM程序的时空耗费标准:均匀耗费标准和对数耗费标准

均匀耗费标准是指用每执行一条RAM指令需要一个单位时间,每个数据需要占有一个单位空间的假设来分析一个RAM程序。这样做是比较粗略的,实际计算机执行不同类型的指令所需的时间一般并不相等,同一条指令的执行时间因操作数的不同也会有不同

对数耗费标准是由于实际的计算机字长很有限和长度固定而产生的。在RAM中,假定一个内存储单元可以存放一个任意大小的整数且任何操作都可以用一条指令完成。有时这是与实际情况不相符的,因为一个整数n在存储器里要占用log2(n)+1个单位,当这个位数超过机器字长时,不仅一个存储单元放不下它,而且有关它的运算也不可能用一条指令来完成

  • 算法复杂度分析的数学基础

算法复杂度分析中常用的一些数学基础知识,包括集合论、逻辑学、概率论以及代数领域的知识

  • p类问题

目前人们已经证明了一些问题,它的时间复杂性时多项式的,这只须涉及一个实现它的时间复杂性时多项式阶的算法即可,例如分类问题(有成)排序问题。这样一类问题本称为P类问题

  • 顽型问题

还有一类问题,人们已经设计出实现它的时间复杂性为指数阶的算法,并且已证明该问题不存在时间复杂性为多项式阶的算法(例如梵塔问题),这样一类问题称为顽型问题。

  • NP问题

由这样一类问题,人们目前已设计的实现它的算法其时间复杂性为指数阶的,但还不能肯定有没有多项式阶的算法,例如m-可着色问题 。为了研究这类问题,人们又设计一种称为非确定型图灵机的计算模型,这些问题对应一个非确定型图灵机,而且可以在多项式时间内完成计算。人们称这类问题为NP问题,NP是Nondeterministic Polynomial的缩写。

作为一本书,还有很多内容,看完是不可能的,到此为止,有个比较清晰的概念了

 

 

 

你可能感兴趣的:(算法)