算法导论1:第一章算法的作用

来源:互联网 发布:2016年青少年犯罪数据 编辑:程序博客网 时间:2024/06/06 00:33

算法导论第一章

1.1算法

算法:任何良定义的计算过程,该过程去某个值或值的集合作为输入并且产生某个值或值的集合作为输出

一些算法的简单的应用:

1.      信用卡的个人信息的保密性:公钥密码和数字签名,以数值算法和数论为基础

2.      线性规划处理最优化问题

3.      最短路径

4.      动态规划

5.      拓扑排序问题用来处理部件库的机械设计

6.      求凸壳,凸壳:包含这些点的最小的凸多边形

7.      离散傅里叶变换(处理信号问题)

8.      离散傅里叶变换还可以应用于数据压缩和大多项式与整数相乘(快速傅里叶)

数据结构:一种存储和组织数据的方式

并行性:国际象棋博弈程序的基础

练习题:

1.1-1:给出显示生活中需要排序的一个例子或者现实生活中需要计算凸壳的一个例子

Answer:需要排序的例子:例如将考生排名

需啊哟计算凸壳的一个例子:找出凸壳: 木板上钉了 21 个钉子,以其中一些钉子为顶点组成的凸多边形可以包含所有 21 个钉子,找出使凸多边形达到最小的所有钉子。

1.1-2:除了速度之外,真实环境中还可能使用那些其他有关效率的量度

Answer:占用资源的大小(在计算机中可以成为空间),问题解决的程度

1.1-3:选择一种你以前一直的数据结构,并且讨论其优势和局限

Answer:  栈:后进先出,非常适合于保存程序调用的迒回地址之类的特殊应用(递归调用),缺点是无法进行随机的读写

1.1-4:最短路径与旅行商问题的相似之处和不同之处

Answer:相同之处:都是要求出最短总距离

                   不同之处:终点的不同,同时最短路径不需要遍历全部的点,而那个旅行商问题就是需要遍历所有的点的问题

1.1-5:提供一个问题,其中只有最佳解才行,然后提供一个问题,其中近似最佳的一个解也足够好

Answer: 如最短路径    旅行商问题

1.2:作为一种技术的算法

效率:利用两台计算机来对比算法的重要性,其中一台计算机A每秒执行百亿条指令,而计算机B执行1000万条指令,结果计算机A比计算机B快1000倍,那么假设要排序1000万个数

计算机A需要

         【2*((10)^7)^2】/【10^10】=20000秒(多余5.5小时)

计算机B需要

         【50*10^7*lg(10^7)】/10^7==1163秒(少于20分钟)

 

课后练习题:

1.2-1:给出在应用层需要算法内同的应用的一个例子,并且讨论设计的算法的功能

Answer(网络上面的答案):

在一次有 210 人参加的考试结束后,老师需要对平均分迕行计算。假设老师丌借助于计算机类的自动工具,而是采取传统的手工计算平均分。

计算方法:看过考分后,大概估计一个值K ,然后与 210 个分数的数据迕行比较,找出分数与k的误差ci,如果发现有ci=-ci,则去掉,假设最后的误差和是bi,那么平均分就可以写成K+bi/210.

设计的算法的功能:该算法对于计算机返样的自动化计算工具来说意义丌大,但是对于手工

计算来说,却是很实用的。在计算的过程中,首先把大数转换成了小数,然后在比较

时又直接把一些数据剔除,减少了运算量。最终大大加快了计算效率,幵且提高了计

算准确度。

1.2-2假设我们正在比较插入排序和归并排序在相同机器上面的实现,对于规模为n的输入,插入排序运行8n^2步,而归并排序运行64nlgn步。问对于那些n值,插入排序由于归并排序

Answer:令8n^2<64nlgn解得:2<=n<=43

1.2-3n的最小值为何值时,运行时间为100n^2的一个算法在相同的机器上面快于运行时间为2^n的另外一个算法

Answer:100n^2<2^n解得n=15(最小值)

第一章的思考题

 

1.1(运行时间的比较(摘自网络上的答案))


0 0