算法入门

来源:互联网 发布:网络教学英语作文优点 编辑:程序博客网 时间:2024/06/04 19:31

算法(algorithm)的定义:

简单地说,算法是一个定义良好的计算过程,它以一个或一组数作为输入,产出一个或一组数作为输出

Created with Raphaël 2.1.0一个输入实例(instance)计算过程一个结果

算法显然有正确和错误。

对于一个具有良好规格说明的计算问题,如果一个算法对其每一个输入实例,都能输出正确的结果并停止。那么我们说这个算法是正确的。
反之,不正确的算法会给不出正确的结果或者根本停不下来。(但是如果这些算法的错误率可以得到控制的话,有时也是有用的)

数据结构:

数据结构是存储和组织数据的一种方式,可以对数据进行访问和修改。不同的数据结构有不同的长处和局限性,没有哪一种数据结构可以适用于所有的用途和目的。

NP完全问题

算法不是万能的
一些问题到现在还没有已知的有效解法,而这些问题里有一部分就是名声在外的NP完全问题

为什么那么多解决不了的问题,NP完全问题就能够引人注意呢?
这是因为 NP完全问题是这样的一个存在
1 虽然至今没有人能找出NP完全问题的有效解法,但是也没有人能够证明NP完全问题的有效解法不存在!(好迷)
2 NP完全问题集中,如果有一个问题有了一个有效算法,那么其他的问题都存在有效算法(共生共荣)
3 一些NP问题类似(但是不同)于一些有着已知有效算法的问题。这让我们知道,问题的陈述改变一点点,算法的效率将差之千里(我就是我不一样的花火)

而且NP完全问题并不罕见,就存在于我们生活中,比如旅行商问题
如果我们遇到一个NP完全问题,而我们在不知道它是NP完全问题的情况下试图找出它的有效解,我们可能终其一生徒劳无益。
而如果我们能证明它是NP完全问题,我们可以花更短时间去设计一个有较好结果的算法来解决它,而不必执著去找它的最佳解。

设计和分析算法

除了会使用算法,会设计算法并分析其正确性,理解其效率,也是很重要的。
- 算法分析
算法分析是对一个算法所需要的资源进行预测 这里的资源可以是内存,通信带宽,计算机硬件。
但我们一般是指希望测度的计算时间。更一般是最坏情况运行时间。更进一步抽象为运行时间的增长率或称为增长的量级(只考虑最高次项)
- 算法设计
算法设计有很多方法。如排序算法用的增量方法 分治法(递归调用)

原创粉丝点击