第一章 算法在计算机中的应用

第一章:

讲了算法(algorithm)的基本概念,以及算法的作用。(这些可以看书)

用个人的话来讲,你可以把算法当做一个解决问题的方法,就像数学里的各种公式一样,你也可以把他们认为是一种算法。算法无处不在,而且算法必须存在,否则我们的生活都将变得缓慢,迟钝。

举个例子:我们平时出去游玩时,要事先查好路线,这时就可以用百度地图搜索从A地到B地的路线,地图上会给出最快的乘车路线,这些路线是怎么给出来的,就是用了最短路的算法,关于最短路的算法有很多,比如Dijkstra, Bellman, Floyd, SPFA等等,当然还有好多我不知道,但是通过这可以看出,算法可以让我们的生活变得更有效率。

当然,第一章也可以认为是给大家鼓气的一章,让大家发现算法的魅力,算法的强悍。大家都来爱上算法吧!

习题解答:
1.1-1 给出现实生活中需要排序的一个例子和计算凸壳的例子。
答:排序就有很多了,比如全校学生的成绩登录系统需要排序算法了。
凸壳则比较复杂了,比如在大海中打捞飞机的话需要根据一些重要的点计算搜 寻范围,需要确定最小搜索面积的话,需要求出凸壳的顶点集然后才能求出面积。

1.1-2 除速度外,在真实环境中还可能使用哪些其他有关效率的量度。
答:比如功率之类的物理变量。

1.1-3 选择一种你以前已知的数据结构,并讨论其优势和局限。
答:链表,优势在于它是比较底层的数据结构,可以比较方便的实现比较高级的数据结构。局限在于效率比较低,而且空间占用普通。

1.1-4 前面给出的最短路径与旅行商问题有哪些相似之处?有哪些不同?
答:相似之处都是要求出一个最短路径,但最短路径是定点求路线,而旅行商是点和路线一起求,在复杂度上比最短路径要高。

1.1-5 提供一个现实生活的问题,其中只有最佳解才行。
答:我在这提出一个我没有解决的问题,是携程上比赛的一个题目,希望有大神能指导下怎么做。题目大意是这样的:给出N个点,这N个点不能全部在一条直线上,确定一个周长最小的矩形将这N个点全部包括进去。

1.2-1 给出在应用层需要算法内容的应用的一个例子,并讨论涉及算法的功能。
答:比如大家比较喜欢LOL的人物移动的时候是怎么走的?是不是按最短的曲线走的?这时就需要算法里的最短路径算法了对吧,否则点一个地点,等人走到那的时候可能已经大半个世纪过去了。最短路径实现的就是确定按照人的直接意愿引导英雄走向目标地点的最短路径。

1.2-2 假设我们正比较插入与归并排序在相同机器上的实现。对规模为n的输入,插入排序运行8n^2步,而归并排序运行64nlgn步。问对哪些n值,插入排序优于归并?
答: 令 8n^2 < 64nlgn =>
化简得n < 8lgn =>
2^(n/8) < 2^(lgn) =>
2^(n/8) < n =>
令t=n/8 , n=8t =>
2^t < 8t =>
制表:
        1    2    3    4    5    6
8t    8  16    24 32  40  48
2^t  2  4       8   16  32  64
当t=0 8t=0 2^t=1
当t=0.2, 8t=1.6 2^t=1.15
当t=5.1, 8t=40.8 2^t=34.3
当t=5.4, 8t=43.2 2^t=42.2
当t=5.5, 8t=44 2^t=45.25
所以,当0.2 < t < 5.5时,即1 < n < 44时,插入排序优于归并。

1.2-3 n的最小值为何值时,运行时间为100n^2的一个算法快于运行时间为2^n的算法?
答:令100n^2<2^n =>

由图可得当n>14.325时,满足不等式,又n为正整数,所以n取最小值15。

思考题
1-1运行时间的比较
答:具体的答案数据就不列出来了,但可以肯定的是,从上到下,算法效率是逐渐降低的,意思是说一个算法若能做到lgn的效率是极佳的,而如果做到n!的话则是最不可取的了。

时间: 2024-10-08 11:47:24

第一章 算法在计算机中的应用的相关文章

算法导论-第一章-算法在计算中的作用(速记)

算法就是把输入转换成输出的计算步骤的一个序列. 问题实例由计算该问题解所必需的(满足问题陈述中强加的各种约束的)输入组成. 若对每个输入实例,算法都以正确的输出停机,则称该算法是正确的. 许多有趣的算法问题所共有的两个特征: 1.存在许多候选解,但绝大多数候选解都没有解决手头的问题.寻找一个真正的解或一个做好的解可能是一个很大的挑战. 2.存在实际应用. 数据结构是一种存储和组织数据的方式,旨在便于访问和修改. 原文地址:https://www.cnblogs.com/lixiaov/p/104

软件开发与算法在计算机中的应用

软件开发基础知识 1.软件开发策略: 瀑布模型:通过顺序执行前面的每个阶段来构成的,当每完成一步后,开发过程就转移到下一步骤. 原型模型:根据需要不断重复地评估并修改这个模型,直到得到一个可以接受的版本,从这个版本可以开发出完整的系统或产品. 螺旋模型:综合了瀑布模型和原型模型的特点,主要用于大型的复杂系统. 敏捷模型:根据需要进行适应和修改.一种得到极大关注的敏捷方法是极限模型(extreme programming,XP).开发人员结成对子进行代码的编写和测试,随着项目的开发将代码集成到设计

《构建之法》第一章术语及书中部分问题解答

• 第一章专业术语: * 软件=程序+软件工程 * 程序=数据结构+算法 * 软件服务 * 软件架构(Software Architecture) * 软件设计与实现(Sofeware Design,Implementation and Debug) * 软件构建 * 源代码管理(Source Code Control) * 配置管理(Software Configuration Management) * 软件测试(Test) * 需求分析(Requirement Analysis) * 软件

《Python CookBook2》 第一章 文本 - 过滤字符串中不属于指定集合的字符 &amp;&amp; 检查一个字符串是文本还是二进制

过滤字符串中不属于指定集合的字符 任务: 给定一个需要保留的字符串的集合,构建一个过滤函数,并可将其应用于任何字符串s,函数返回一个s的拷贝,该拷贝只包含指定字符集合中的元素. 解决方案: import string allchars = string.maketrans('','') #all chars table def makefilter(keep): delchars = allchars.translate(allchars,keep) def thefilter(s): retu

第一章:在 java 中配置 selenium jar 包的步骤

在 java 工程中引入 Selenium jar 包的步骤: 1. 打开 eclipse ,新建一个 工程例如: 2.在 工程中 新建一个lib文件夹,在lib文件夹中 放置 selenium 的 jar 包 3. 在 lib 文件夹中添加  selenium 的 jar 包 4.  右键点击 selenium-server-standalone-2.48.2.jar 到 build path 中 5. 添加完成以后写一段代码,运行看是否会报错.

《Python CookBook2》 第一章 文本 - 替换字符串中的子串

替换字符串中的子串 任务: 给定一个字符串,通过查询一个字符串替换字典,将字符串中被标记的子字符串替换掉. 解决方案: >>> import string >>> new_style = string.Template('this is $thing') #给substitute 方法传入一个字典参数并调用 >>> print new_style.substitute({'thing':5}) this is 5 >>> print

《Python CookBook2》 第一章 文本 - 检查字符串中是否包含某字符集合中的字符 &amp;&amp; 简化字符串的translate方法的使用

检查字符串中是否包含某字符集合中的字符  任务: 检查字符串中是否出现了某个字符集合中的字符 解决方案: 方案一: import itertools def containAny(seq,aset): for item in itertools.ifilter(aset.__contains__,seq): return True return False if __name__ == "__main__": l1 = list('python') l2 = set('x') prin

《算法导论》读书笔记--第一章

第一章 算法在计算中的作用 一.什么是算法?为什么算法值得研究?相对于计算机中使用的其他技术来说算法的作用是什么? 算法就是任何良定义的计算过程,该过程取某个值或者值的集合作为输入并产生某个值或者值的集合作为输出.这样算法就是把输入转换成输出的计算步骤的一个序列. 若对每个输入实例算法都以正确的输出停机,则称该算法是正确的,并称正确的算法解决了给定的计算问题.注意:不正确的算法只要其错误率可控时可能是有用的,但是我们通常只关心正确的算法. 数据结构是一种存储和组织数据的方式,旨在便于访问和修改.

0525.第一章:谈谈数据结构和算法这2个好基友[数据结构和算法]

本文为小甲鱼数据结构和算法教学视频的学习笔记 第一章:谈谈数据结构和算法这2个好基友 一.聊聊数据结构 1.为什么学数据结构?编程能力有质的飞越,不再停留在调用现成的API,做一个上档次的程序员. 2.什么是数据结构?数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科. 思考:好吧,简单来说程序设计 =数据结构 + 算法,数据结构就是关系,就是数据元素之间存在的一种或多种特定关系的集合. 3.数据结构分为逻辑结构和物理结构,前者指数据对象中数据元素之