计算机算法设计与分析一
对待问题的思路:
1、如果问题能分解成子问题,考虑分治,并且能观察最优子结构,考虑动态规划,如果问题有贪心性质,考虑贪心。
2、如果问题不能分或者不好分成问题,考虑逐步改进的方法,如线性规划,非线性规划,二次规划,网络流等。
3、观察解形式,x=[x1,x2,x3,x4...xn] xi=0/1,考虑枚举,智能枚举,贪心等。
4、对于hard问题,考虑放松标准,如最优解->近似解,确定性算法->随机的算法,最坏的情况下->正常的情况下。
实例一:
输入:两个数a,b(a>=b)输出:gcd(a,b)
分析:可以分解成子问题,如gcd(1949,101)->gcd(101,30)->gcd(30,11)->gcd(11,8)->gcd(8,3)->gcd(3,2)->gcd(2,1)->gcd(1,0),故采用分治算法。
代码:
function Euclid(a,b):if b=0 thenreturn a;end ifreturn Euclid(b,a mod b);
实例二:
输入:n个城市V={1,2,...,n},和一个距离矩阵D,dij(1<=i,j<=n)表示距离城市i到城市j。
输出:最短的旅程,游遍每个城市一次,回到最初的城市。
1、首先看能否分解成子问题
考虑M(S,e)表示最小距离,从城市1开始,旅行S中的每一个城市,并且最后到达e城市。
如下图:
最短路径可计算为:
min{d2,1 + M({3, 4}, 2),
d3,1 + M({2, 4}, 3),
d4,1 + M({2, 3}, 4)}
而如 M({2, 3},4)=min{d34 + M({2}, 3), d24 + M({3}, 2)}
而如M({2}, 3)=d12+d23
所以可以被分解成子问题
代码:
这里e是指V中除去1的每个点
这里i是指S中除去e的每个点
2、逐步改进策略
从一个粗略的完整的解决方案开始,然后逐步改进
这里stopping(s)是指已经没有neighbourhood可选了。
3、智能枚举策略
方法一:通过边
如上图,a → b → c → d → e → a可以表示为 X = [1, 0, 0, 1, 1, 0, 0, 1, 0, 1]
我们可以遍历所有的可能,如下图:
但是这样遍历的可能性太多了,效率太低,我们可以考虑用剪枝的方法来提高效率
方法:
对于一个解X=????????,我们估计最短路程如下:
- 对于每个城市,我们选择最短的两条边
- 这两条边的和小于等于2倍的最优路程。
- 因此,我们可以给一个最低下界为1/2*(5+6+8+7+9)=17.5
如:对于X=10????????下界为1/2*(5+6+9+7+9)=18
所以,以此剪枝为
方法二:通过点
路程可以表示成点的序列,如X=[x1,x2,...,xn-1],xi为点,不失一般性,我们假定x1=a,且a,b在c之前出现。
于是我们可以这样展开:
最后,结果如下:
计算机算法设计与分析一相关推荐
- 计算机算法设计与分析考试题,《计算机算法设计与分析》习题及答案
<计算机算法设计与分析>习题及答案 一.选择题 1.二分搜索算法是利用( A )实现的算法. A.分治策略 B.动态规划法 C.贪心法 D.回溯法 2.下列不是动态规划算法基本步骤的是( ...
- 国科大计算机算法设计与分析陈玉福,中科院陈玉福计算机算法设计与分析期末简答题答案.pdf...
中科院陈玉福计算机算法设计与分析期末简答题答案 1. 贪心算法和动态规划算法有什么共同点和区别?它们都有那些优势和劣势? 共通点:动态规划和贪心算法都是一种递推算法 ,均有局部最优解来推导全局最优解 ...
- 计算机算法设计与分析教学大纲,《算法设计与分析》教学大纲
<<算法设计与分析>教学大纲>由会员分享,可在线阅读,更多相关<<算法设计与分析>教学大纲(3页珍藏版)>请在人人文库网上搜索. 1.课程编号:&quo ...
- 国科大刘玉贵老师计算机算法设计与分析2021年期末考试题回顾
总体感受 国科大研究生的计算机算法设计与分析课程有三位老师教授,分别是卜东波老师.陈玉福老师 和刘玉贵老师,这三位老师上课各有特色和风格.我选择的是刘玉贵老师的课程. 这门课程的内容挺充足的,但是有个 ...
- 计算机算法设计与分析第五章思维导图知识点总结 ( 初稿 )
复习链接 计算机算法设计与分析第一章思维导图 计算机算法设计与分析第二章思维导图&&知识点总结 计算机算法设计与分析第三章思维导图&&知识点总结 计算机算法设计与分析第 ...
- 线性时间选择 python实现 计算机算法设计与分析
最近算法老师布置了很多作业啊,其中一项就是要求实现书上<计算机算法设计与分析>28页的算法,实现过程如下:
- 计算机算法设计与分析(第4版) 王晓东 著 2012.2 笔记(这本书还不错,偏实用、有难度)
计算机算法设计与分析(第4版) 目录 1 算法概述 2 递归与分治策略 3 动态规划 4 贪心算法 5 回溯法 6 分支限界法 7 随机化算法 8 线性规划与网络流 算法概述 复杂性分析 NP-完全性 ...
- 计算机算法设计与分析(第5版)PDF
<计算机算法设计与分析(第5版)>是2018年电子工业出版社出版的图书,作者是王晓东. 整本书的结构是:先介绍算法设计策略思想,然后从解决经典算法问题来学习,通过实践的方式去学习算法. 网 ...
- 计算机算法设计与分析——数字三角形问题
计算机算法设计与分析(算法实现题3) 3-4 数字三角形问题 问题描述: 给定一个由n行数字组成的数字三角形.试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大. 算法设计: ...
- 计算机算法设计与分析第四版复习,计算机算法设计与分析(第4版)第1章.ppt
<计算机算法设计与分析(第4版)第1章.ppt>由会员分享,可在线阅读,更多相关<计算机算法设计与分析(第4版)第1章.ppt(50页珍藏版)>请在人人文库网上搜索. 1.计算 ...
最新文章
- Redis 笔记(04)— list类型(作为消息队列使用、在列表头部添加元素、尾部删除元素、查看列表长度、遍历指定列表区间元素、获取指定区间列表元素、阻塞式获取列表元素)
- Pandas常见的数据过滤方法、通过列条件筛选行数据
- 使用netstat检测及监测网络连接
- 网站核心关键词一定要控制在五个之内更方便集中优化
- Python中使用Flask、MongoDB搭建简易图片服务器
- web项目开启日志打印
- Zigbee协议栈中OSAL的运行机理
- 伊利诺伊香槟分校计算机科学,伊利诺伊大学香槟分校计算机科学与信息系统世界排名2019年最新排名第31(QS世界排名)...
- SAP Spartacus lock focus directive如何判断有没有focusable children
- 【leetcode】521. Longest Uncommon Subsequence I
- .net core判断当前访问源是PC端还是移动端
- tcp服务器测试网页版,tcp测试服务器
- R pdf大小_PDF如何压缩?这两招教您快速压缩PDF!
- C语言求2/1,-3/2,5/3,-8/5...前十项之和
- (称重问题)假设你有8个球,其中一个略微重一些,但是找出这个球的惟一方法是将两个球放在天平上对比
- ZUCC_Object Oriented Programming_Lab01 Introduction to Java
- DBLINK使用的思考
- ios ipod library 读,写,等常见管理方法
- 中国大陆,地名和经纬度对应关系:
- 实时自动驾驶车辆定位技术都有哪些?(视觉/Lidar/多传感器数据融合)