对待问题的思路:

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. 计算机算法设计与分析考试题,《计算机算法设计与分析》习题及答案

    <计算机算法设计与分析>习题及答案 一.选择题 1.二分搜索算法是利用( A )实现的算法. A.分治策略 B.动态规划法 C.贪心法 D.回溯法 2.下列不是动态规划算法基本步骤的是( ...

  2. 国科大计算机算法设计与分析陈玉福,中科院陈玉福计算机算法设计与分析期末简答题答案.pdf...

    中科院陈玉福计算机算法设计与分析期末简答题答案 1. 贪心算法和动态规划算法有什么共同点和区别?它们都有那些优势和劣势? 共通点:动态规划和贪心算法都是一种递推算法 ,均有局部最优解来推导全局最优解 ...

  3. 计算机算法设计与分析教学大纲,《算法设计与分析》教学大纲

    <<算法设计与分析>教学大纲>由会员分享,可在线阅读,更多相关<<算法设计与分析>教学大纲(3页珍藏版)>请在人人文库网上搜索. 1.课程编号:&quo ...

  4. 国科大刘玉贵老师计算机算法设计与分析2021年期末考试题回顾

    总体感受 国科大研究生的计算机算法设计与分析课程有三位老师教授,分别是卜东波老师.陈玉福老师 和刘玉贵老师,这三位老师上课各有特色和风格.我选择的是刘玉贵老师的课程. 这门课程的内容挺充足的,但是有个 ...

  5. 计算机算法设计与分析第五章思维导图知识点总结 ( 初稿 )

    复习链接 计算机算法设计与分析第一章思维导图 计算机算法设计与分析第二章思维导图&&知识点总结 计算机算法设计与分析第三章思维导图&&知识点总结 计算机算法设计与分析第 ...

  6. 线性时间选择 python实现 计算机算法设计与分析

    最近算法老师布置了很多作业啊,其中一项就是要求实现书上<计算机算法设计与分析>28页的算法,实现过程如下:

  7. 计算机算法设计与分析(第4版) 王晓东 著 2012.2 笔记(这本书还不错,偏实用、有难度)

    计算机算法设计与分析(第4版) 目录 1 算法概述 2 递归与分治策略 3 动态规划 4 贪心算法 5 回溯法 6 分支限界法 7 随机化算法 8 线性规划与网络流 算法概述 复杂性分析 NP-完全性 ...

  8. 计算机算法设计与分析(第5版)PDF

    <计算机算法设计与分析(第5版)>是2018年电子工业出版社出版的图书,作者是王晓东. 整本书的结构是:先介绍算法设计策略思想,然后从解决经典算法问题来学习,通过实践的方式去学习算法. 网 ...

  9. 计算机算法设计与分析——数字三角形问题

    计算机算法设计与分析(算法实现题3) 3-4 数字三角形问题 问题描述: 给定一个由n行数字组成的数字三角形.试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大. 算法设计: ...

  10. 计算机算法设计与分析第四版复习,计算机算法设计与分析(第4版)第1章.ppt

    <计算机算法设计与分析(第4版)第1章.ppt>由会员分享,可在线阅读,更多相关<计算机算法设计与分析(第4版)第1章.ppt(50页珍藏版)>请在人人文库网上搜索. 1.计算 ...

最新文章

  1. Redis 笔记(04)— list类型(作为消息队列使用、在列表头部添加元素、尾部删除元素、查看列表长度、遍历指定列表区间元素、获取指定区间列表元素、阻塞式获取列表元素)
  2. Pandas常见的数据过滤方法、通过列条件筛选行数据
  3. 使用netstat检测及监测网络连接
  4. 网站核心关键词一定要控制在五个之内更方便集中优化
  5. Python中使用Flask、MongoDB搭建简易图片服务器
  6. web项目开启日志打印
  7. Zigbee协议栈中OSAL的运行机理
  8. 伊利诺伊香槟分校计算机科学,伊利诺伊大学香槟分校计算机科学与信息系统世界排名2019年最新排名第31(QS世界排名)...
  9. SAP Spartacus lock focus directive如何判断有没有focusable children
  10. 【leetcode】521. Longest Uncommon Subsequence I
  11. .net core判断当前访问源是PC端还是移动端
  12. tcp服务器测试网页版,tcp测试服务器
  13. R pdf大小_PDF如何压缩?这两招教您快速压缩PDF!
  14. C语言求2/1,-3/2,5/3,-8/5...前十项之和
  15. (称重问题)假设你有8个球,其中一个略微重一些,但是找出这个球的惟一方法是将两个球放在天平上对比
  16. ZUCC_Object Oriented Programming_Lab01 Introduction to Java
  17. DBLINK使用的思考
  18. ios ipod library 读,写,等常见管理方法
  19. 中国大陆,地名和经纬度对应关系:
  20. 实时自动驾驶车辆定位技术都有哪些?(视觉/Lidar/多传感器数据融合)

热门文章

  1. python培训班一般多少钱-报个python培训班多少钱
  2. 自学python的书籍-Python学习可以用到的书籍有哪些?
  3. python 代码-我整理的Python代码规则
  4. 在Jetson Xavier NX安装中文输入法(googlepinyin中文输入法)
  5. es中的Plugin机制
  6. lua学习笔记之环境
  7. UVa483 Word Scramble
  8. rocket mq整体架构
  9. LeetCode Pacific Atlantic Water Flow(flood fill)
  10. Qt中向单元格中写入日期数据