第一章 算法在计算中的作用

2017-07-02  本文已影响151人  张文靖同学

1.1 算法


非形式地说,算法就是任何良定义的计算过程,该过程取某个值或值的集合作为输入并产生某个值或值的集合作为输出。

数据结构

数据结构是一种存储和组织数据的方式,旨在便于访问和修改。

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

学生时代学习成绩的排序是最常见的排序例子

1.1-2除速度外,在真实环境中还可能使用哪些其他有关效率的量度?

程序员代码的BUG率、处理一个问题的深度等

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

就说二分法吧,优势就是比较简单,容易理解。缺点就是太慢。

有这么一个例子,比如从100个数中查找一个数,另这个数就是1。这个时候要先查50、25、12、6、3、2、1...  看吧很慢。。

1.1-4 前面给出的最短路径与旅行商问题有哪些相似之处?又有哪些不同?

最短路径问题是不用考虑路途中的目的点,直接到达终点。而旅行商问题是要从整体的考虑这个系统中完成以后最短的路径。

1.2 作为一种技术的算法 

效率问题:

本书举了一个例子,就是插入排序和归并排序。在这里了解到插入排序所花的时间大致为C*N*N,C是不依赖于N的常数。所花费的时间大致和N*N成正比。

而归并排序所花的时间大致为C*N*lgN

基于数学知识你可能忘了比如 lgN是啥 如图:

嗯,就是这样,总的来说插入排序比归并排序慢的很多。

即使是最优秀的计算机配上了插入排序、一般的计算机配上了归并排序,那么在数量级相当庞大的时候,一般的计算机也比最优秀的计算机快的许多。

1.2-1  给出在应用层需要算法内容的应用的一个例子,并讨论涉及算法的功能。

百度地图的导航啊、里面用到的算法那就真的多了。。 什么最快路线啊 最短路径啊 走不走高速啊 等等等等。。

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

在算法导论中lgN=log2N。

经计算,8n^2=64nlgn,在2<N<64的时候,插入排序比递归排序要快。

1.2-3对于一个运行时间为100n*n的算法,要使其在同一台机器上,在比一个运行时间为2^n的算法运行的很快,n的最小值是多少?

f(n) = 100n^2

g(n) = 2^n

n=14, f=19600, g=16384 f > g

n =15, f=22500, g=32768 f < g

n最小为15

上一篇下一篇

猜你喜欢

热点阅读