1.贪婪法

  • 通常用来解决具有最大值或最小值的优化问题。
  • 从某个状态出发,根据当前局部的而非全局的最优决策,以满足约束方程为条件,以使得目标函数的值增加最快或最慢为准则,选择一个能最快达到要求的输入元素,以尽快构成问题的可行解。
  • 适合贪婪法求解的问题一般具有两个重要性质:
    (1)贪婪选择性质:所求问题的全局最优解可以通过一系列局部最优的选择来达到。
    (2)最优子结构:一个问题的最优解包括其子问题的最优解。

贪婪法实例:

TSP

背包问题

单源最短路径问题

狄克斯特拉算法

最小生成树问题

克鲁斯卡尔算法
普里姆算法

霍夫曼编码问题

霍夫曼算法

2.动态规划

推荐阅读 https://www.cnblogs.com/caiyishuai/p/9047991.html

  • 假定一种状态可以做出多种决策,而每一种决策可以产生一种新的状态
  • 最优决策是在最后阶段形成的,然后往前倒退,直到初始阶段;而决策的具体结果及所产生的状态转移,是由初始阶段开始进行计算,然后往后递归或迭代,直到最终结果。

动态规划实例:

TSP

多段图的最短路径问题

资源分配问题

设备更新问题

最长公共子序列问题

0/1背包问题

RNA最大碱基对匹配问题

3.回溯法

  • 走不通就退回再走:按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择。
  • 显著特点:从根节点出发,按照状态空间树的结构,向下搜索它的所有儿子节点,对不满足约束条件的儿子节点,把它当做d_节点(死节点)而丢弃;对满足约束条件的节点,把它当做e_节点(扩展节点),继续向下搜索它的所有儿子节点。当搜索到一个满足约束条件的叶节点时,就得到一个可行解;或者所有儿子节点都不满足约束条件时,该节点就当做d_节点而丢弃,向上回溯到它的父亲节点。
  • 在某种意义上,上述搜索是盲目进行的。
  • 解题步骤:
    (1)根据给定问题,定义问题的解空间
    (2)确定状态空间树的结构
    (3)用DFS搜索解空间,用约束方程和目标函数的界对状态空间树进行修剪,生成搜索树,得到问题的解。

回溯法实例

n后问题

图的着色问题

哈密顿回路问题

0/1背包问题

4.分支与限界

  • 在分支节点(e_节点)上,预先分别估算沿着它的各个儿子节点向下搜索的路径中,目标函数可能取得的界,然后把它的这些儿子节点和它们可能取得的界保存在一张节点表中,再从表中选取界最大或最小的e_节点向下搜索。
  • 用优先队列/堆结构动态维护节点表
  • 根据节点表中不断更新的信息,不断调整搜索方向,有选择、有目标地往前搜索;回溯的时候也不是单纯沿着父亲节点一层层向上回溯,而是依据节点表中的信息回溯。

分支与限界实例

作业分配问题

单源最短路径问题

0/1背包问题

TSP

算法设计与分析(未完待续)相关推荐

  1. OSEA中QRS波检测算法代码分析-未完待续

    最近一直在搞R波检测算法,对OSEA代码主要是对注释做一个翻译,增加注释,使代码更容易理解. 一.首先看QRSDE.H /*************************************** ...

  2. 实现2020年TI杯大学生电子设计竞赛F题简易无接触温度测量、身份识别与口罩检测装置(未完待续)

    声明 本文仅在CSDN发布,其他均为盗版.请支持正版! 正版链接: https://blog.csdn.net/meenr/article/details/109298042 本文目录 *实现2020 ...

  3. 算法设计与分析实验指导(完整版)

    算法设计与分析实验指导 文章目录 算法设计与分析实验指导 1. 快速排序及第k小数 1.1 快速排序 1.1.1 Implementation 1 1.1.2 算法特性分析 1.1.3 Improve ...

  4. Paper之BigGAN:ICLR 2019最新论文《LARGE SCALE GAN TRAINING FOR HIGH FIDELITY NATURAL IMAGE SYNTHESIS》(未完待续)

    Paper之BigGAN:ICLR 2019最新论文<LARGE SCALE GAN TRAINING FOR HIGH FIDELITY NATURAL IMAGE SYNTHESIS> ...

  5. C++算法设计与分析课后习题(第三章)

    C++算法设计与分析课后习题[第三章] 前言 一.求2+22+222+2222+...+22...(n个2)...22(精确计算) 变量解释 运行截图 二.编写一个算法,其功能是给一维数组a输入任意6 ...

  6. 多标签学习之讲座版 (内部讨论, 未完待续)

    摘要: 多标签学习是一种常见的, 而并非小众的机器学习问题. 本贴为专题讲座准备. 1. 基本数据模型 定义1. 多标签数据为一个二元组: S=(X,Y),(1)S = (\mathbf{X}, \m ...

  7. 构建Linux根文件系统(未完待续)

          所谓制作根文件系统, 就是创建各种目录, 并且在里面创建各种文件. 比如在/bin ./sbin 目录下存放各种可执行程序, 在/etc 目录下存放配置文件, 在/lib 目录下存放库文件 ...

  8. 算法设计与分析基础-笔记-上

    算法设计与分析基础 绪论 什么是算法 一系列解决问题的明确指令,对于符合一定规范的输入,能够在有限的时间内获得要求的输出. 例子:最大公约数:俩个不全为0 的非负整数 m m m和 n n n的最大公 ...

  9. 基础数学知识(未完待续)

    0x10 质数 质数基本定理 质数的定义:只被 1 1 1 和它本身整除的正整数叫做质数.非质数的正整数叫做合数.特别的, 1 1 1 既不是质数也不是合数. 质数的数量很少. 只有 2 2 2 是偶 ...

  10. 算法设计与分析课程的时间空间复杂度

    算法设计与分析课程的时间空间复杂度: 总结 算法 时间复杂度 空间复杂度 说明 Hanoi $ O(2^n) $ $ O(n) $ 递归使用 会场安排问题 \(O(nlogn)\) \(O(n)\) ...

最新文章

  1. 当程序崩溃的时候怎么办
  2. 基于thrift的微服务框架
  3. BASIS--如何删除开发用户的开发Key
  4. springboot多数据源动态数据源(主从)
  5. Linux中Postfix邮件发送配置(三)
  6. linux系统上手工建库步骤,Linux下Oracle手工建库过程
  7. 如何选择Spark Streaming 的Reveiver和Direct模式
  8. 中国快递包裹总量的预测-基于SARIMA模型
  9. Rational Rose安装教程
  10. HTTP提交方式之PUT详细介绍及POST和PUT的区别
  11. 中国遥感数据查询网址
  12. user-scalable=no 控制手机版浏览器网页分辨率
  13. 百度网盘加速下载教程
  14. mysql根据成绩排名次_用mysql语句 实现按成绩 排名次
  15. KNN(k-nearest neighbor的缩写)最近邻算法原理详解
  16. bp神经网络和cnn神经网络,bp神经网络和神经网络
  17. uni-app的父与子页面传递参数之属性Props字段类型解析
  18. 炉石胖枫抽到什么刀片服务器准系统整机主板,中速猎天下第一!老将胖枫喜提炉石传说青岛黄金赛大师组冠军...
  19. mw325r 服务器无响应),水星(MERCURY)MW325R路由器上不了网/连不上网怎么办?
  20. splint在linux的简单使用

热门文章

  1. Python内置函数filter(),map(),reduce(),lambda
  2. vs多项目模板及add-in开发
  3. BOJ 2773 第K个与m互质的数
  4. Java的世界如此美妙
  5. 模式匹配算法逐步精简
  6. JS 打印 data数据_用D3.js 十分钟实现字符跳动效果
  7. mapper同时添加数据只能添加一条_神器之通用mapper的使用
  8. linux c获取进程状态,Linux C 获取进程的退出值
  9. mysql把字段拆成两个_MySQL数据库中,将一个字段的值分割成多条数据显示
  10. pandas输出到excel_精通Pandas,从零基础到中级运用,看这一篇就够了