算法
文章平均质量分 63
致命小学期
这个作者很懒,什么都没留下…
展开
-
【算法分析zxd】第 8 章 动态规划
动态规划的基本设计思想 将待求解问题分解成若干个子问题,分阶段求解子问题,前一阶段子问题的解成为求后续阶段子问题的解的计算信息,最后用这些子问题的最优解构造出原问题的最优解。适合用动态规划求解的问题的特征基本性质:(1) 子问题重叠性 ①子问题重复②子问题的解在下一阶段决策中,延续子问题多次使用(2)最优子结构 一个问题的最优解包含着它的子问题的最优解【例8-1】...原创 2022-04-23 09:24:37 · 1769 阅读 · 0 评论 -
【整理】旅行商问题(traveling salesman problem,TSP)
旅行商一个旅行商由某市出发,经过所有给定的n个城市后,再回到出发的城市。除了出发的城市外,其它城市只经过一回。这样的回路可能有多个,求其中路径成本最小的回路。蛮力【穷举】【例4-4】旅行商问题(traveling salesman problem,TSP)——排列树计算模型(1) 存储 图G(V, E)。以邻接矩阵的方式存储,设计如下:(2)计算 设起始点下标为0 生成排列树。设解空间为a,则其解空间的计算过程可描述为: 求回路代价。设sum...原创 2023-10-18 21:09:19 · 2063 阅读 · 1 评论 -
【算法设计与分析zxd】第7章 贪心法
贪心算法的设计技术用贪心法 求问题的解原创 2023-10-18 21:08:24 · 368 阅读 · 0 评论 -
【算法设计与分析】第6章02 分支限界法
分支限界法的设计技术分支限界法:增加约束条件,剪掉解空间中更多分支, 加快算法的执行速度。 约束条件(1)上界函数:用来求得以当前结点为根的可行性解可能达到的极值【估测】。(2)限界值:搜索到某一结点时,已经得到可行解或可能包含可行性解的最优值。(3)评价函数:判定当前所获得路径或值是否为解的函数 剪枝(1)该结点的上界小于界限值,即再往下搜索也不可能有更优的值。【以该节点为根的子树】(2)该结点无法代表任何可行解,因为它已经违反了问题的约束,不能满足评价函数..原创 2023-10-18 21:09:24 · 2852 阅读 · 0 评论 -
【算法设计zxd】第5章分治法
分治算法策略的设计模式 分治思想:把一个较大的问题分解成几个与原问题相似的 子问题,找到求出这几个子问题的解法后,再以适当的方法组织,把它们合成求整个问题的解。分治算法求解问题的步骤: (1) 分解:将要解决的问题划分成若干规模较小的同类问题; (2) 求解:当子问题划分得足够小时,用较简单的方法解决; (3) 合并:按原问题的要求,将子问题的解逐层合并构成原问题的解。 设计模式算法分析用DC求解规模为n0 的问题耗费1个单位时.原创 2023-10-18 21:08:59 · 455 阅读 · 0 评论 -
【算法设计zxd】第四章蛮力法 1.枚举法 02穷举查找
蛮力法(brute force):直接基于问题的 描述和所涉及的概念定义的进行算法 设计,简单而直接。 使用蛮力法… : (1) 蛮力法所能解决的问题跨越的领域非常广泛。 (2) 对于一些重要的问题,运用蛮力策略可以设计出具备一 定实用价值的算法,并且不用限制实例的规模。 (3) 当要解决的问题实例不多并且可以接受蛮力法的运算速 度时,蛮力法的设计代价通常较为低廉。 (4) 蛮力算法可以作为衡量其它算法的准绳,服务于研究或 教学。 枚举法的算法框原创 2022-03-26 20:29:50 · 4451 阅读 · 0 评论 -
【算法设计zxd】第3章迭代法04 线性规划
线性规划 研究线性约束条件下线性目标函数 的极值问题的数学理论和方法。线性规划问题形式化表达目标函数约束条件线性规划问题的可行性解 线性规划问题的可行区域 线性规划问题的最优解(x1,x2,……,xn的值) 线性规划问题的最优值 单纯形算法特点(1) 只对约束条件的若干组合进行测试,测试的毎一步都使 目标函数的值向期望值逼近; (2) 一般经过不大于m或n次迭代就可求得最优解。 线性规划标准形式 (1)它必须是一个最大化问题。如果是..原创 2022-03-13 19:14:40 · 2010 阅读 · 0 评论 -
【算法设计zxd】第2章 主定理
定理2.6 主定理(Master Theorem) 设a≥1, b>1为常数, f(n)为函数,T(n)为非负整数,且 T(n)=aT(n/b)+f(n)证明:(1)(2)(3)主定理例题:【例2-15】【例2-16】【例2-17】【例2-18】——递归树解:递归之后是二分【例2-19】 二分k也是层数。假设递推方程初值为1,最长路径为k,则有: n*(1/2)k=1 ...原创 2022-03-06 22:18:34 · 1126 阅读 · 0 评论 -
【算法设计zxd】第3章迭代法03 线性代数方程
线性代数方程: 设线性代数方程组具有如下特征: 算法框架 (1)设置线性代数方程组的初值X=(x1,…,xn-1 ,xn);(2)构造迭代方程xi=gi (X) (i=1,…,n-1,n)及精度求解方法;(3)达到迭代次数或精度结束迭代。【例3-8】求下列解线性方程组的解 计算模型算法设计与描述 输入: 输出: Jacobi (x[],k) { ...原创 2022-03-06 21:39:57 · 325 阅读 · 0 评论 -
【算法设计与分析qwl】03-01 分治算法
分治策略:二分检索:设计思想:时间复杂度分析:二分归并排序:设计思想:时间复杂度分析:hanio塔:设计思想:小结:分治算法的一般性描述:分治算法:Divide-and-Conquer(P)if |P|<=c then S(P) //如果规模不大于c,有一个直接的算法S来对P进行求解//划分 divide P into P1,P2,...,Pk //大于c ,把原始问题规约...原创 2022-02-06 17:15:17 · 462 阅读 · 0 评论 -
【】02-07主定理
定理2.6 主定理(Master Theorem)递归树:原创 2022-02-05 18:33:08 · 359 阅读 · 0 评论 -
【算法设计与分析qwl】02 调度问题,骰子问题
目录例1 :调度问题实例:贪心法的解:问题建模:算法设计需要考虑:例2:投资问题--总效益最大实例:建模:蛮力算法:(穷举)蛮力算法的效率:小结:例1 :调度问题实例:贪心法的解:问题建模:标号1到n 加工时间t1..tnsum(该任务出现次数*该任务加工时间)贪心算法:也就是减少一个逆序,总加工时间会减小。而贪心算法是小的在前面,没有逆序,所以它是最...原创 2022-02-05 17:39:22 · 655 阅读 · 0 评论 -
【算法设计与分析qwl】02-06递归树
0原创 2022-02-05 18:02:32 · 229 阅读 · 0 评论 -
【算法设计zxd】第3章 迭代法 杨辉三角,穿越沙漠,内存移动,竖式相乘(阶乘)
迭代:(辗转法) 一种 不断用变量的旧值递推新值的过程分类:精确迭代:杨辉三角,内在移动算法 近似迭代:二分法和牛顿迭代法设计方法:确定迭代模型 控制迭代过程【例3-1】 输出如图的杨辉三角形。问题分析:存储:A[n,n]矩阵矩阵:A ={a0,0,a1,0,a1,1,…,ai,0,…,ai,i,…,an-1,n-1} //元素之间的关系:ai,j=ai-1,j-1+ai-1,j计算模型:算法设计与描述...原创 2022-02-05 17:38:36 · 2072 阅读 · 1 评论 -
【算法设计与分析qwl】伪码——顺序检索,插入排序
伪代码:例子:改进的顺序检索 Search(L,x) 输入:数组L[1...n],元素从小到大排序,数x 输出:若x在L中,输出x位置下标 j ,否则输出0 j <- 1 while j<=n and x>L[j] do j <- j+1 if x<L[j]or j >n then j<- 0 return j 插入排序插入排序 Insert Sort(A,n)...原创 2023-10-18 21:10:03 · 570 阅读 · 0 评论 -
【算法设计zxd】第2章 算法分析实例 递归非递归——交换,n阶乘,矩阵乘法,汉诺塔,二路归并,
非递归形式算法分析:决定用哪些参数表示输入规模; 找出算法的核心操作,它通常位于算法的最内层循环中; 检查核心操作的执行次数是否只依赖于输入规模。如果 它还依赖于一些其他的特性,则可能需要对最差效率、 平均效率以及最优效率分别研究; 以式(2-1)的思想为核心,建立一个算法基本操作执行次 数的求和表达式; 利用求和运算标准公式和法则来建立一个操作次数的闭合公式,或者至少确定它的增长 次数。非递归形式算法分析: 决定用哪些参数作为输入规模的度量标准.原创 2022-02-05 17:15:39 · 1544 阅读 · 0 评论 -
【算法设计与分析qwl】04 NP-hard——只是举例几个,货郎,双机调度,01背包
NP-hard问题:有效算法是 输入规模的多项式时间算法。这些问题的难度处于可有效计算的边界。算法+数据结构=程序设计例4 货郎问题建模与算法:解是一个排列,0-1背包问题:建模:双机调度:建模:也就是两个数约接近总和的一半,△时间越小,浪费的时间越小,完成时间也就达到最小。...原创 2023-10-18 21:09:38 · 222 阅读 · 0 评论 -
【算法设计与分析qwl】03 问题的计算复杂度:排序问题
例3:排序算法的效率插入排序的插入操作://插入排序#include<iostream>using namespace std;int main() { int n=8; int a[]={5,1,6,2,8,3,4,7} //插入排序 假设第一个已经排好 //升序 for(int i=1;i<n;i++)//从前往后排序 { if(a[i]<a[i-1])//需要排序 { int temp=a[i];//基准 int...原创 2022-02-04 10:14:54 · 982 阅读 · 0 评论 -
【算法设计zxd】第3章 求解方程的近似算法 非线性——二分法(穿根),牛顿法(切线),线性代数
非线性方程:非线性方程的收敛性和收敛速度:定义3.1 设x_k是方程f(x)=0的根,若存在xk的一个邻域Δ,当 初值属于Δ时,迭代收敛,则称该迭代过程具有局部收敛性。定义3.2 设为第k次迭代的迭代误差,若【第k+1次迭代误差 与 第k次迭代误差的p次方 同阶。】则称迭代是p阶收敛的。称c为渐近误差常数。定义3.3 称为效率指数,其中,θ表示每次迭代的 计算量,p表示迭代的收敛阶。 建立迭代方程 (1)选取适当的初值x0 (2)建立迭代方程,将方程f...原创 2022-02-28 08:08:56 · 1371 阅读 · 0 评论 -
【算法分析whz】7.字符串搜索
字符串匹配问题:输入:文本T = "at the thought of"n=length(T) =17模式 P="the"m=length(P) = 3输出:移动到ss是满足T[s....s+m-1] = P[0..m-1] 的最小整数(0<= s<=n-m)如果不存在这样的s 返回-1简单匹配算法:暴力搜索 检查从 0 到n-m的所有值伪代码Native-Search (T,P)for s &l...转载 2022-01-26 11:10:42 · 214 阅读 · 0 评论 -
【算法分析】6.搜索策略
6.1暴力美学布尔表达式的可满足性问题:从基础状态出发,生成一些一步可以到达的状态【点】。6.2深度优先与广度优先6.3搜索的优化爬山法分支界限:...转载 2022-01-24 17:09:30 · 105 阅读 · 0 评论 -
【算法分析】5.贪心算法
5.1基本原理基本概念:基本思想:求解最有优化问题的算法 包含一系列步骤 每一步都有一组选择 作出在当前看来最好的选择 希望通过作出局部优化选择 达到全局优化选择 贪心算法不一定总产生优化解 贪心算法是够产生优化解,需严格证明贪心算法产生优化解的条件:贪心选择性 优化子结构5.2...转载 2022-01-24 12:34:53 · 171 阅读 · 0 评论 -
【算法分析】4 动态规划
4.1原理特点:使用范围:使用条件:设计步骤:4.2矩阵乘法——计算矩阵乘法的最小代价方法加法的次数是乘法的次数-1,差不多,所以用乘法的次数去衡量。75000找一个中等的例子m 的取值从1到n j的取值从1到n 而需要有一个数据结构来存储所有可能取值-----二维矩阵确定填充这个矩阵的顺序:原则是伪代码:Matrix-Chain-Or...转载 2022-01-23 23:36:20 · 92 阅读 · 0 评论 -
【算法分析】3 分治法——大数乘法,最值,中位数,傅里叶变换
3.1分治法分析过程: 建立递归方程 设输入大小为n,T(n)为时间复杂性 当n<c , T(n)=θ(1) 求解 划分阶段的时间复杂性 划分问题为a个子问题 每个子问题大小为 n/b 划分时间可直接得到 = D(n) 递归求解阶段的时间复杂性 递归调用 求解时间=a *T(n/b) 合并阶段的时间复杂性 时间可以直接达到=C(n) 3.2 简单实例1.大整数乘法输入:n位 二进制整数 X Y输出:X和Y的乘积转载 2022-01-23 17:26:38 · 151 阅读 · 0 评论 -
【算法分析whz】数学基础 2.3递归方程
替换法:迭代方法:Master定理:转载 2022-01-23 16:29:58 · 89 阅读 · 0 评论 -
【算法分析whz】数学基础 2.2 和式的估计与界限
、转载 2022-01-23 15:49:40 · 172 阅读 · 0 评论 -
【算法分析whz】数学基础 2.1 计算复杂函数的阶
增长的阶:描述算法的效率——增长率。忽略低阶项,保留最高阶项。忽略常系数。利用O(n^2)表示插入排序的最坏运行时间。——表示增长率和n^2相同渐进效率:输入规模非常大忽略低阶项和常系数只考虑最高阶(增长的阶)典型的增长阶:增长的记号:同阶函数集合:例子:低阶函数集合:--渐进下界高阶函数集合:--渐进上界 Ω...转载 2022-01-23 15:27:39 · 380 阅读 · 0 评论 -
【算法分析whz】 算法概述
[例]插入算法的分析:1.n次 因为最后还有判断跳出转载 2022-01-22 17:45:49 · 110 阅读 · 0 评论 -
【算法设计zxd】第一章 算法基础 4.设计工具【三角矩阵,】
目录1. 循环设计(1) 设计思维自底向上的设计(Down - Top Design)自顶向下的设计(Top-Down Design)(2)挖掘内在规律构建计算模型【例1-3】设计算法,输出一个n×n的三角矩阵,如图所示规律。 问题分析:计算模型:算法设计与描述:算法分析:算法实现:(3)改进计算模型提高运算效率【例1-4】问题分析 计算模型算法设计与描述 算法实现:2. 递归设计递归设计的步骤:...原创 2022-01-22 00:57:56 · 1601 阅读 · 0 评论 -
【算法设计】第1章 算法基础 2.描述方法
目录二、算法描述的方法自然语言描述程序流程图NS流程图伪代码程序设计语言二、算法描述的方法自然语言描述程序流程图NS流程图伪代码程序设计语言原创 2022-01-21 23:28:07 · 320 阅读 · 0 评论 -
背包问题【01 完全 多重】
目录0-1背包空间优化:二维变一维完全背包优化:要求恰好装满背包,那么在初始化时除了f[0]为0,其它f[1..V]均设为-∞如果并没有要求必须把背包装满,而是只希望价格尽量大,初始化时应该将f[0..V]全部设为0。0-1背包问题描述:N件物品和容积为M的背包。第i件物品的体积为volume [ i ] ,价值为 worth [ i ]。每种物品只有一件,可以选择放或者不放。求解将哪些物品装入背包可使价值总和最大。提示:采用滚动数原创 2022-01-21 22:04:52 · 573 阅读 · 0 评论