《算法导论》[第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.在一些机械制造工艺中,有很多精度误差是人为无法避免的,但在一定的安全标准下,“近似”最优解决也足以解决实际问题。

posted @ 2010-03-01 22:01  timebug  Views(938)  Comments(2Edit  收藏  举报