第一章 算法的基本概念(新).ppt
《第一章 算法的基本概念(新).ppt》由会员分享,可在线阅读,更多相关《第一章 算法的基本概念(新).ppt(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、算法设计与分析算法设计与分析信工计算机系信工计算机系2008上机:办公楼上机:办公楼2楼机房楼机房期末成绩:期末成绩:(平时成绩平时成绩+实验成绩实验成绩)*3040%+期末成绩期末成绩*7060%平时成绩:考勤、书面作业平时成绩:考勤、书面作业答疑信箱:答疑信箱:课程内容:讲解计算机算法的主要设计方法与分课程内容:讲解计算机算法的主要设计方法与分析技巧析技巧课程介绍课程介绍课程介绍课程介绍几个例子几个例子例例1:百鸡问题百鸡问题:“鸡翁一,值钱五;鸡母一,鸡翁一,值钱五;鸡母一,值值 钱三;鸡雏三,值钱一。百钱买百鸡,问鸡钱三;鸡雏三,值钱一。百钱买百鸡,问鸡 翁、母、雏各几何?翁、母、雏各
2、几何?”穷举法穷举法课程介绍课程介绍几个例子几个例子例2:假设正整数假设正整数n、s,s 259 n=5 s=2 24351 -231 贪心法贪心法课程介绍课程介绍几个例子几个例子例3:奥运会排球比赛奥运会排球比赛:预赛:预赛:A组:中国、古巴、日本、美国、波组:中国、古巴、日本、美国、波 兰、委内瑞拉、兰、委内瑞拉、B组:俄罗斯、塞尔维亚、巴西、意大组:俄罗斯、塞尔维亚、巴西、意大 利、哈萨克斯坦、阿尔及利亚利、哈萨克斯坦、阿尔及利亚 1/4决赛、决赛、1/2决赛:古决赛:古 vs 美、中美、中 vs 巴巴分治分治课程介绍课程介绍几个例子几个例子例例4:八后问题:八后问题:在在8*8的棋盘上
3、,每行放置的棋盘上,每行放置 一个皇后,要求它们不能在同一列,一个皇后,要求它们不能在同一列,同一斜线上。同一斜线上。回溯回溯课程介绍课程介绍本课学习的算法本课学习的算法l穷举法穷举法 百鸡问题百鸡问题l递归和分治递归和分治 二分查找、快速排序二分查找、快速排序l贪心法贪心法 最小生成树、最短距离最小生成树、最短距离l回溯回溯 迷宫、八后问题迷宫、八后问题l动态规划动态规划l分支与限界分支与限界第一章第一章 算法的基本概念算法的基本概念 程序程序=算法算法+数据结构数据结构 算法设计与分析是计算机科学与技术的一个算法设计与分析是计算机科学与技术的一个 核心内容核心内容1.1 引言引言算法定义算
4、法定义 定义定义1.1:算法是解某一特定问题的一组有:算法是解某一特定问题的一组有 穷规则的集合。穷规则的集合。算法特征算法特征 有限性、确定性、输入、输出、能行性有限性、确定性、输入、输出、能行性 实用算法对有限性要求运行时间是可接受的。实用算法对有限性要求运行时间是可接受的。1.1 引言引言算法设计的例子算法设计的例子穷举法穷举法 穷举法:穷举法:是从有限集合中,逐一列举集合是从有限集合中,逐一列举集合 的所有元素,对每一个元素逐一判断和处的所有元素,对每一个元素逐一判断和处 理,找出问题的解。理,找出问题的解。例例1.1 百鸡问题百鸡问题:“鸡翁一,值钱五;鸡母一,鸡翁一,值钱五;鸡母一
5、,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡 翁、母、雏各几何?翁、母、雏各几何?”这里讨论更一般的这里讨论更一般的n钱买钱买n鸡问题鸡问题.穷举法实例穷举法实例解:设鸡翁、鸡母、鸡雏分别为解:设鸡翁、鸡母、鸡雏分别为a,b,c只。只。测试集合:测试集合:0an 0bn 0cn 判断条件:判断条件:a+b+c=n 5*a+3*b+c/3=n 且且 c%3=0 算法描述如下:算法描述如下:穷举法实例穷举法实例百鸡问题百鸡问题 输入:输入:n 输出:满足问题的解数目输出:满足问题的解数目k,公鸡、母鸡、小鸡的公鸡、母鸡、小鸡的 只数只数g、m、s void c
6、hilden_question(int n,int&k,int g,int m,int s);穷举法实例穷举法实例百鸡问题百鸡问题void childen_question(int n,int&k,int g,int m,int s)int a,b,c;k=0;for(a=0;a=n;a+)for(b=0;b=n;b+)for(c=0;c=n;c+)if(!(c%3)&a+b+c=n&5*a+3*b+c/3=n)gk=a;mk=b;sk=c;k+;执行时间:循环次数,执行时间:循环次数,执行时间:循环次数,执行时间:循环次数,(n+1)*(n+1)*(n+1)(n+1)*(n+1)*(n+1)
7、算法算法算法算法1.11.1 测试集合:测试集合:0an/5 0bn/3 c=n-a-b 判断条件:判断条件:5*a+3*b+c/3=n 且且 c%3=0 算法描述如下算法描述如下(算法算法1.2):穷举法实例穷举法实例百鸡问题百鸡问题void childen_question(int n,int&k,int g,int m,int s)1 int a,b,c;2 int n1=n/5,n2=n/3;k=0;3 for(a=0;a=n1;a+)4 for(b=0;b=n2;b+)5 6 c=100-a-b;7 if(!(c%3)&5*a+3*b+c/3=n)8 9 gk=a;mk=b;sk=c
8、;10 k+;11 12 运行时间:循环次数,运行时间:循环次数,运行时间:循环次数,运行时间:循环次数,(n/5+1)*(n/3+1)(n/5+1)*(n/3+1)算法算法算法算法1.21.2 例例1.2 货郎担问题货郎担问题:某售货员要到若干个城:某售货员要到若干个城市销售货物,已知各城市之间的距离,要市销售货物,已知各城市之间的距离,要求售货员选择出发的城市及旅行线路使每求售货员选择出发的城市及旅行线路使每个城市仅经过一次,最后回到原出发城市,个城市仅经过一次,最后回到原出发城市,而总路程最短。而总路程最短。穷举法实例穷举法实例货郎担问题货郎担问题解:解:假设假设n个城市,分别用个城市,
9、分别用1到到n的数字编号,的数字编号,问题归结为在有向网中问题归结为在有向网中(顶点表示城市顶点表示城市,弧上弧上 权重表示距离权重表示距离),寻找一条路径最短,寻找一条路径最短,n个城个城 市仅经过一次的回路市仅经过一次的回路(哈密尔顿回路哈密尔顿回路)。测试集合:测试集合:1,n的排列对应一条回路的排列对应一条回路,如如2356n12 全部排列构成测试集合全部排列构成测试集合 穷举法实例穷举法实例货郎担问题货郎担问题判断条件:判断条件:选择排列中路径和最小的回路。选择排列中路径和最小的回路。假设用邻接矩阵假设用邻接矩阵c存储网,算法描述如下:存储网,算法描述如下:输入:城市数输入:城市数n
10、,c输出:最短距离输出:最短距离min,旅行路线,旅行路线tvoid salesman_problem(int n,float&min,int t,float c);穷举法实例穷举法实例货郎担问题货郎担问题void salesman_problem(int n,float&min,int t,float c);int pn,i=1,m=n!;float cost;min=MAX_FLOAT_NUM;while(i=m)产生产生n个城市的第个城市的第i个排列于个排列于p;cost=回路回路p的权重和;的权重和;if(cost min)min=cost;p复制至复制至t;i+;运行时间:循环次数,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第一章 算法的基本概念新 算法 基本概念
限制150内