【算法总结】#1 算法概述
算法 算法(algorithm)在Thomas H. Cormen书中的定义是求解良说明的计算问题的工具。这里提到的良说明就是完全符合ISO标准而不存在任何歧义的说明。 一般来说,问题陈述说明了期望的输入和输出。算法则是描述一个特定的过程来实现该输入\输出的关系。 进入例子:算法好比是菜谱,我们的输入是食材,输出则是菜肴。而这个烹饪的过程即是算法。同菜谱一样,算法就像是一种做菜的方法,不存在实体。菜谱可以有很多种,但是好吃不好吃又是另一说了。算法也是如此,好的算法,有着精简效率的特性,而差的算法有着一塌糊涂的复杂度。算法复杂度即是我们在算法领域中要讨论的重要课题。 算法解决的问题通常有如下的特性: 1、存在许多候选解,但大多数候选解都没有解决手头的问题。寻找一个真正的解或者一个最好的解可能是一个很大的挑战。(如同做出一道好菜一般) 2、存在实际运用。如求解最短路径,在实际中,找到最短路径对于一些物流和货运公司可能是很好的消息。 难题: 在学习过程中大部分时间我们讨论有效算法。我们关于效率的一般量度是速度,即一个算法花多长时间产生结果。然而一些问题,目前还不知道有效的算法。比如后续我们要讨论的NP完全问题。 为什么NP完全问题有趣呢? 第一,当前对于NP完全问题,是否存在有效算法是未知的。 第二,NP完全问题集具有一个非凡的性质