- 1、本文档共56页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
例1.1求任意两个正整数的最大公约数算法:辗转相除法;输入:两个正整数a,b;输出:最大公约数Max_common_divisor(a,b)beginifabthena与b互换endr?amodbwhiler≠0doa?b,b?r,r?amodbendprintbend计算机算法设计与分析第一章绪论一个快递小哥从快递中心点出发,到周边四个小区送快递,要求经过每个小区且只能每个小区仅经过一次,最后回到快递中心点。问快递小哥应如何安排派送路线较好?例1.3快递员路线安排问题起终ABCDEA03456B30265C42043D56405E65350(1)问题分析与问题抽象,这是一个典型的TSP问题将小区抽象为下图的顶点,两个小区之间有路直达,则对应的两个顶点之间有边关联,边的权值为两个小区之间的距离。则将快递员路线安排问题抽象为从顶点A(设A为快递中心)出发经过图中其余顶点后回到顶点A的最短简单回路问题。例1.3快递员路线安排问题3365456542EBDCA(2)数学建模:例1.3快递员路线安排问题3365456542EBDCA(3)方法一蛮力法:列出每一条可供选择的路线,计算出每条路线的距离长度,最后从中选择出一条最短路线。最短路程为:A--B--C--E--D--A或者A--D--E--C--B--A,最短路径长度为:18。例1.3快递员路线安排问题3365456542EBDCA(3)蛮力法算法效率分析:使用蛮力法列举除出发小区外所有小区的排列,然后选取路径最短的路线。n-1个小区的排列数为(n-1)!,当n=20时,遍历路线总数约为1.216×1017,计算机以每秒1000万条路线的检索速度计算,则约需要386年才能完成。故蛮力法的时间复杂度太高,当顶点数过多时并不适用。例1.3快递员路线安排问题(3)方法二贪心法:每次在选择下一个小区时,只考虑当前情况。在没有经过的小区中,选择距离当前小区最近的一个,直到经过所有小区,最后回到快递中心。A例1.3快递员路线安排问题3365456542EBDCA贪心法的优点是效率很高,只要n-1步判断就能得到结果。但缺点是不一定能找到问题的最优解。算法:贪心法—伪代码描述输入:小区数量n,邻接矩阵e[i,j],顶点v[i],出发小区编号go_city,index当前小区编号。输出:最短路线上的顶点信息,最短路径长度min_l。Greedy(index):beginfori?1tondo ifi不是出发顶点go_citythen forj?1tondo if没有经过小区jthen 筛选与当前出发点最短的顶点,并标记为cur_j endifendfor min_l?min_l+e[index,cur_j] index?cur_j//从出发点cur_j,继续下一步求解并置cur_j顶点为经过标记 endifend formin_l?min_l+e[index,go_city]//加上最后一个小区到go_city小区的距离end例1.3快递员路线安排问题计算机算法设计与分析第一章概述1.4.1算法的效率分析目的评估算法体现算法运行时所需要消耗的计算机资源占用CPU的计算时间量称为时间复杂度占用内存的存储空间量称为空间复杂度算法复杂度分析一般采用事前分析方式而是不事后统计法算法的效率分析算法的时间复杂度T和空间复杂度S的函数:T=T(N,I)S=S(N,I)N表示问题规模,I表示算法输入在实际应用中,关注时间效率多于空间效率。算法时间复杂度分析评估算法时间复杂度,应尽量做到客观反映算法的本质特征和属性。所以,算法时间复杂度分析应该要有一个不依赖于计算机硬件配置、问题规模和输入实例的抽象表示。算法时间复杂度分析假设在一台抽象的计算机上提
文档评论(0)