《算法导论》学习笔记
第1章 算法在计算中的作用
1.1 算法
- 一般而言,问题实例由计算该问题解所必须的(满足问题陈述中强加的各种约束的)输入组成。
- 对于给定应用,哪个算法最好,依赖于以下因素:被排序的项数、这些项已被稍微排序的程度、关于项值的可能限制、计算机的结构体系,以及将使用的存储设备类型(主存、磁盘或磁带)
- 若对每个输入实例算法都以正确的输出停机,则称该算法是正确的。不正确的算法对某些输入实例可能根本不停机,也可能以不正确的回答停机。与人们的期望相反,不正确的算法只要其错误率可控,有时可能是有用的,
- 给定平面上的n个点,我们希望寻找这些点的凸壳。凸壳就是包含这些点的最小的凸多边形。凸壳在这里指的是计算几何中的多边形凸包问题。 凸壳算法在模式识别、图像处理、图形学和人工智能方面有着广泛的应用,很多问题都可以归纳为凸壳问题求解。
- 数据结构是一种存储和组织数据的方式,旨在便于访问和修改。
- 关于效率的一般度量是速度,即一个算法花多长时间产生结果。然而有些问题,目前还不知道有效的解法,如NP完全问题。NP完全问题:多项式复杂程度的非确定性问题。通俗地来说,有些计算问题是确定性的,只要按照公式推导,按部就班一步步来,就可以得到结果。但是,有些问题是无法按部就班直接地计算出来的。一般这种无法按部就班计算出来的问题,只能通过穷举法等暴力的方法来解决。如何识别NP完全问题:①元素较少时算法的运行速度非常快,但随着元素数目的增