《算法导论》[第1章] 算法在计算中的作用-[1.1] 算法
|概念回顾|
算法(algorithm)就是定义良好的计算过程,它取一个或一组值作为输入,并产生出一个或一组值作为输出。
数据结构(data structure)是存储和组织数据的一种方式,以便于对数据进行访问和修改。
|习题解答|
1.1-1 给出一个真实世界的例子,其中包括着下列的某种计算问题:排序,确定多矩阵相乘的最佳顺序,或者找出凸壳。
排序:
- 某班级期末成绩的排名情况
- 学校奖学金的合理评定
- 学校图书馆对所有图书按种类、新旧情况等多项信息进行编排
- 互联网搜索引擎对显示结果进行复杂高效地排列
- 等等
确定多矩阵相乘的最佳顺序:
- 数字图像处理(n维),假设处理过程是基于大量矩阵相乘
- 科学研究中,遇到运算结果涉及到大量矩阵相乘时,选择合理的相乘顺序会节约很多时间
- 魔方的矩阵模拟
- 等等
凸壳(又称凸包):
- 区分城市用地扩展的两种类型,即填充类型和延伸类型
- 在合成金属设计中的应用
- 图像处理、模式识别、地理信息系统方面的应用
- 等等
1.1-2 除了运行速度以外,在真实世界问题背景中,还可以使用哪些效率指标?
还可以使用包括结果精确度、稳定性、功能健全度、经济效益、结构复杂度、可扩展性、可推广性等效率指标。
1.1-3 选择你原来见过的某种数据结构,讨论一下其长处和局限性。
顺序表(sequential list):它是线性表的顺序存储结构,即按顺序存储方式构造的线性表。
长处:因为其特点是逻辑结构中相邻的结点在存储结构中也相邻,数组的下标可以看成是元素的相对地址,这样就决定了顺序表高效的随机访问性。
局限性:在元素的插入和删除运算中需要移动大量的元素,时间复杂度都为O(n),每插入一个结点所需移动的平均次数为n/2,每删除一个结点为(n-1)/2,因此其插入和删除操作在时间性能方面不是很理想。
1.1-4 上文中给出的最短路径问题和旅行商问题有哪些相似之处?有哪些不同之处?
简要概况:
两者的相似之处:
都是求两点之间的最短路线。
不同之处:
最短路径问题是寻找两点之间的最短的路径,并不包含重复路径,而且只需从起点出发到终点,无需经过途中所有点;而旅行商问题则要经过所有途中的点(这些点由起点和终点仓库,以及所有送货地址组成),且有可能会走重复路线,从中再选择一条最优路径序列。
1.1-5 举出一个现实世界的问题例子,它只能用最佳解决方案来解决。再举出另一个例子,在其中“近似”最优解决也足以解决问题。
例1.若在一次商场促销活动中,有10样不同价格、不同重量的商品,如果有顾客能够在其中选出3样商品,并且这些商品总质量与总价格的比值最大(kg/yuan),那么Ta就能获得这些商品。
所以,例1只能用最佳解决方案来解决。
例2.在一些机械制造工艺中,有很多精度误差是人为无法避免的,但在一定的安全标准下,“近似”最优解决也足以解决实际问题。