没有合适的资源?快使用搜索试试~ 我知道了~
面向考试说明复习1
需积分: 0 0 下载量 156 浏览量
2022-08-04
15:31:39
上传
评论
收藏 972KB PDF 举报
温馨提示
试读
22页
第一步,改变最右边的位元值 第二步,改变右起第一个为1的位元的左边位元 第一步:产生 0, 1 两个字符串 第二步:在第一步的基础上,每一个字符串都加上0和1,
资源详情
资源评论
资源推荐
算法设计思想
蛮力
一种简单直接地解决问题的方法,直接基于问题的描述和涉及的概念定义
唯一一个能够应用于所有问题的策略
肯定会给出一种对应的解,不受数据规模的限制
可能比设计一个好的算法需要更少的时间
给出一个问题解的时间复杂度上界,衡量其它算法的时间效率
体现蛮力法的一些解决问题的方案
搜索所有解空间
找约束条件、找枚举范围:在搜索前尽可能减小搜索空间
搜索所有路径
直接计算
模拟和仿真
举例:选择排序、冒泡排序、交替放置的碟子
分治
将一个问题划分为同一类型的若干子问题,子问题最好规模相同
对这些子问题求解(一般采用递归方法)
有必要的话,合并这些子问题的解,以得到原始问题的答案
能够使用分治策略的问题一般具有如下特质:
问题规模缩小到一定程度就很容易解决
问题能够划分为多个相互独立的子问题
举例:归并排序、快速排序、螺丝螺母问题、棋盘覆盖、折半查找
主定理
时空复杂度计算
顺序算法:
T
s
(n)= a * T
s
(n/b)+ f(n)
分解为b份,其中a份需要求解,f(n)表示合并需要的时间
例如,计算a
0
+a
1
+…+a
n-1
=(a
0
+…+a
⎿n/2⏌-1
)+(a
⎿n/2⏌
+…+a
n-1
)需要的加法次数
A(n) = 2A(n/2) + 1,a=2, b=2, d=0
=> a > b
d
=> A(n) ∈Θ(n
log
b
a
) =Θ(n)
减治
利用一个问题给定实例的解和同样问题较小实例的解之间的某种关系,将一个大规模的问题逐步化简为
一个小规模的问题
关键是:建立与小规模问题之间的联系=>本质上是一种递推关系
有3种主要的缩小问题规模的方式
减去一个常量,通常是1
减去一个常量因子,通常为2
减去一个可变的规模
e.g. 欧几里得算法求最大公因数、Shell排序
举例:插入排序(减一法)、Shell排序
减治法 vs 分治法
分治:是多个小问题,小问题之间的联系
减治:还是一个小问题,小问题与原问题之间的联系
变治
通过转换问题使得原问题更容易求解
实例化简
还是原来的问题,只是进行了一些中间操作,使得问题求解变得容易
举例:预排序
改变表现
主要是改变使用的数据结构
举例:平衡查找树、堆
问题化简
将给定的问题变换为一个新的问题,对新的问题求解
举例:对NP难问题和NP完全问题的定义
时空权衡
空间换时间
算法设计中的表述
输入增强
对问题的部分或全部输入做预处理,然后对获得的额外信息进行存储,以加速后面问题的求
解
举例:计数排序、Boyer-Moore字符串匹配
简单的使用额外的空间实现更快、更方便的数据存储——“预构造”
只涉及存储结构
举例:散列法Hash——HashMap等、B树索引
动态规划
减治法找到递推关系;记录上一次求解结果
举例:计数排序
动态规划
一种“使多阶段决策过程最优”的通用方法
算法设计技术:时空权衡
应用场景
如果问题由交叠的子问题组成,并且能够给出子问题的解与给定问题的解之间的递推关系,
将子问题逐步分解为更小的子问题,就可以使用动态规划方法
递归 vs 动态规划
区别
递归是保存求解过程中每一个步骤的计算空间,达到停止条件后,逐步退回——自顶向
下
动态规划是想直接从停止条件开始往要求解的结果计算,保存的只有中间结果——自底
向上
例子:求解斐波那契数列 F(n) 递归调用树、重复计算、备忘录
共同点
找递推关系
动态规划算法常用来求解最优化问题,设计一个动态规划算法通常有以下四个步骤
找出最优解的结构
最优子结构 性质:最优解包含着其子问题的最优解
如何确定子问题 -> 如何表示原问题 -> 变量是哪些
建立递推关系
递归地定义最优值:用变量表达原问题解和子问题之间的关系
变量找到了一般就容易确定了
以自底向上的方式(从最简单问题开始入手)计算出最优解的值
底在哪里?——确定变量的边界值
根据计算最优解的值的信息,构造一个最优解
例题:
最长公共子序列
两个字符串最小编辑距离
最优二叉查找树
背包问题
迭代改进
从某些可行解出发,重复一些简单的步骤不断改进它,逐渐将其优化为最优解
通过小的、局部的改变,生成另一个可行解,使问题的目标函数更加优化
如果最终目标函数无法再优化,则得到最优解
实现过程中可能会遇到的障碍
需要一个初始的可行解:可能容易,例如使用贪婪算法;也可能很难,与得到最优解一样难
检测改变后的解是否是局部最优:如果还能优化则继续优化,但是判断是否为局部最优,也会很难
判断局部最优是否是全局最优
剩余21页未读,继续阅读
田仲政
- 粉丝: 15
- 资源: 332
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0