算法概念:
所谓算法,就是定义良好的计算过程,它取一个或者一组值作为输入,并产生一个或者一组值作为输出。
亦即:算法就是一系列的计算步骤,用来将输入数据转换成输出结果。
选择最佳排序算法考虑因素:
待排序的数据项,已排序的程度,对数据取值的i可能限制,采用的存储设备的类型。
算法大分类:
正确算法:一个算法对每一个实例都能输出正确的结果。
不正确算法:某些输入使得算法不会停止或者给出不是预期的结果。这些算法的错误率得到控制的话,有时也是有用的(例如,需找大质数的算法,31章有介绍)。
算法解决的问题类型:
大类型:
人类基因项目--存储和分析DNA的30亿化学基对的各种序列。
因特网--快速访问和存储大量信息。
电子商务--卡号密码私密性--公共密钥加密技术和数据签名技术---数值算法和数论理论
小类型:
为道路交通图建模
计算矩阵乘积
求解ax=b(mod n)
平面n个点找凸壳(即包含这些点的最小凸多边形)
NPC问题:
例子1:请看贴图。
例子2:“商人旅行问题”:假设有一个货车运输公司,它有一个中央仓库。每一天它都要在仓库中将货物装满货车,并将它驾往若干个地方去送货。在一天结束时,这辆货车必须最后回到仓库,以便下一天再装货物。为了降低成本,该公司希望选择一条送货车行驶距离最短的送货顺序。
这个商人旅行问题是一个NPC问题。
两种简单算法:
插入排序算法:c1 x n2
合并排序算法:c2 x nlog2n
当n较小时,插入排序快,当n较大时,合并排序快