算法导论第三版(参照自己理解和网上的答案,仅供自己学习)

第一章

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

答:(1)排序:在网上购物挑选物品过程中需要按照某种规则筛选(如按照价格由低到高),这种我自己认为是当前最简单的现实生活中需要排序的的小例子。

       (2)计算凸壳:计算一个点集合的直径(官方给的答案)

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

答:在同样的工作量下,完成这样的工作量所耗费的时间最短则效率越高;同理在相同速度和时间下,完成越多的工作量那么我们认为效率越高。即有关效率的量度包括:时间、工作量。

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

答:KD树。

优点:快速而准确地找到查询点的近邻,作为高维空间索引结构和近似查询的算法

缺点:KD树最近邻查找算法在回溯过程中通过计算超圆与超平面的距离决定是否比较兄弟分支,这在维数较低的时候能有效减小计算量;但当维数较高时(比如SIFT有128维)由于需要比较的分支太多,到最后基本上每个数据点都做了比较(与穷举法一样了),加上构建KD树的时间,此时算法性能甚至不如穷举法。

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

答:相似之处:目的都是求取最短路径;不同之处:旅行商问题在求取最短路径上的限制条件更多,最短路径是简单的只需从若干条可选线路中选择一条线路使之在两个点之间达到,且最短路径是单程的,不需要回到出发点;而旅行商问题最终是要回到出发点的 。

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

答:最佳解例子:给定一些钱,去购买有固定价格的多种商品,要求购得的商品总数量最多

       近似最佳解例子:给定一张交通图,上面标记了n个路口和连接路口的道路,要求确定图中是否存在k(k≤n)个路口,其中每对路口之间都有一条道路来连接。

你可能感兴趣的:(算法)