算法设计
文章平均质量分 94
Icoding_F2014
相信代码可以变化世界
展开
-
背包问题专题及练习
0/1 背包问题OJ 题目链接题意:有 NNN 件物品和一个容量为 MMM 的背包。第 iii 件物品的重量是 WiW_iWi, 价值是 DiD_iDi 。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。这是最原始的01背包问题,每件物品要么选,要么不选。这道问题的思路是:记 dp[i][j]dp[i][j]dp[i][j] 表示前i 个物品放入容量为j 的背包里面可以获取的最大收益。那么我们考虑第 i 个物品,它有两种状态:选择第i 件物品和不选中第i 件物品。原创 2022-04-22 09:57:12 · 772 阅读 · 0 评论 -
对偶专题——KKT条件
[对偶专题——Duality and Dual problem (一) https://blog.csdn.net/jmh1996/article/details/85030323]对于一般的带约束的优化问题:介绍了如何通过构造原优化目标的一个下界函数L(x,λ,u)L(x,\lambda,u)L(x,λ,u),这一般通过添加一些线性的函数来构造的,然后找到这个函数的最大值。寻找的方法是先固...原创 2018-12-25 07:43:19 · 1901 阅读 · 0 评论 -
线性规划专题——Lingo的使用
虽然,经过前面的讲解,我们会实现单纯形法了,但是很多时候我们最好还是借助于工具来进行线性规划 尤其是 整数规划的时候。安装https://www.lindo.com/index.php/ls-downloads/try-lingo下载安装使用在编辑框输入目标函数和约束条件然后再点击Solver-solve。Lingo的写法:1.目标函数 max,min2.约束:以s.t....原创 2018-12-19 02:00:41 · 5845 阅读 · 0 评论 -
对偶专题——Duality and Dual problem (一)
前言对偶,是我们在最优化里面经常会遇到的一个名词,尤其是在机器学习里面,在优化模型的最后都会使用到一个对偶,比如SVM、最大熵、Fisher 鉴别 都会使用到对偶;同时,在很多其他问题,例如线性规划也存在对偶问题。本专题就来细细的分析,对偶问题的前世今生,它其实一点都不神秘。...原创 2018-12-24 07:09:31 · 9348 阅读 · 4 评论 -
线性规划专题——SIMPLEX 单纯形算法(四)——实现
#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <vector>#include &l原创 2018-12-17 11:49:45 · 2170 阅读 · 0 评论 -
线性规划专题——SIMPLEX 单纯形算法(三)图解——示例、注意点
线性规划专题——SIMPLEX 单纯形算法(一)线性规划专题——SIMPLEX 单纯形算法(二)前面两篇博文已经把单纯形算法里面的核心思想给解释清楚了,主要是要认识到在线性规划里面的以下几点:目标函数的最优值一定在可行域的顶点取得。可行域的顶点对应这系数矩阵的一组基;系数矩阵的一组基也对应这一个可行域上的顶点顶点的转移是通过在旧的基本列里面加入新的列,同时为了保持rank一致...原创 2018-12-15 09:49:06 · 12112 阅读 · 0 评论 -
线性规划专题——SIMPLEX 单纯形算法(二)
前言线性规划专题——SIMPLEX 单纯形算法(一)https://blog.csdn.net/jmh1996/article/details/84929974前文提到了在线性规划问题中,得到结论:问题的所有可行解构成了一个n-m维度的多胞型而且最优解会在多胞型的顶点取得。每个顶点对着系数矩阵的一组基,或者系数矩阵的每组基对应着一个顶点。同时我们给出了多边形或者更一般的多胞型的顶点的定...原创 2018-12-14 21:51:17 · 2943 阅读 · 1 评论 -
线性规划专题——SIMPLEX 单纯形算法(一)
线性规划,以前一直小瞧它了,它其实一种特别表达能力特别强的工具,只要能够将问题定义成线性规划的问题,那么就可以使用单纯形法来解决。为什么说,线性规划的表达能力很强呢?因为像经典的网络流算法、最小费用流算法、多物品流算法都可以写成线性规划的形式,一旦划归成线性规划,那么就可以使用单纯形法在平滑多项式的时间内解决问题。至于如何划归成线性规划问题就是看个人的本事了,看个人的创造力了,近几年也的确有人尝...原创 2018-12-09 17:40:36 · 13841 阅读 · 2 评论 -
Union-Find 并查集数据结构
这节 我们来看看,Union-Find 并查集这种数据结构来。并查集用于解决快速判断两个元素是否来自同一个集合的很高效(FIND操作)以及合并两个集合的元素(UNION)的数据结构。并查集广泛用于 图的连通性检查、Kruskal 最小生成树等问题中,在实际应用以及ACM竞赛中用的也是特别多。根据不同的实现方法,并查集可以取得不同的时间复杂度,其中带有路径压缩以及rank的实现 每次FIND和...原创 2018-11-18 14:41:28 · 547 阅读 · 1 评论 -
LeetCode刷题指南(持续更新)
【128】最长数值连续递增子序列题目:https://leetcode.com/problems/longest-consecutive-sequence/description/解题方法:带路径压缩以及带元素统计的并查集https://blog.csdn.net/jmh1996/article/details/84198246 (应用部分)【200】小岛个数题目:https://l...原创 2018-11-18 15:45:16 · 1573 阅读 · 0 评论 -
算法设计与分析——斐波那契堆
引言这章,我们来看看大名鼎鼎的斐波那契堆。这个堆就很有意思了,居然能和大名鼎鼎的斐波那契数列挂上边。原创 2018-11-10 10:02:46 · 7582 阅读 · 6 评论 -
算法设计与分析——二项堆
引入上一篇博课-二叉堆介绍了如何使用具有微弱限制的二叉树——要求父节点上的元素同时大于等于子节点或同时小于等于子节点——这种数据结构来实现一个优先队列,我们看到基于二叉堆实现的优先队列的各个基本操作的时间复杂度分别为:MakeHeap_VOIDMakeHeap_ListINSERTFINDMINEXTRACTMINDECREASEKEYUNIONO(1)O(1)O...原创 2018-11-03 17:12:48 · 1775 阅读 · 4 评论 -
算法设计与分析——二叉堆(一)
本blog主要介绍了二叉堆、二项式堆,下一篇博客将介绍斐波拉契堆。二叉堆和二项式堆、斐波拉契堆都是用于实现优先队列的高级数据结构,以不同堆实现的优先队列会有不同的时间复杂度。问题引入在实际应用中,我们经常会遇到在最多由n个数组成的动态集合SSS上得到这个集合里面的最大值或者最小值。这里的动态是指:集合S里面的元素可能会随时增加、删除、修改、返回最小值、返回最小值并删除一个最小值。我们把用于...原创 2018-11-03 12:03:05 · 1780 阅读 · 0 评论 -
算法设计与分析——动态规划(一)矩阵连乘
动态规划——Dynamic programming,可以说是本人一直没有啃下的骨头,这次我就得好好来学学Dynamic programming.OK,出发!动态规划通常是分治算法的一种特殊情况,它一般用于最优化问题,如果这些问题能够:1.能够分解为规模更小的子问题2.递归的子问题具有最优子结构性质。也就是说,原问题的最优化解能够通过子问题的解计算得到。动态规划的一个核心的步骤就是定义一个...原创 2018-10-15 00:10:08 · 9839 阅读 · 9 评论 -
算法设计与分析——分治法
前言本文重点回顾了卜老师课堂上关于分治算法的一些常见的问题。加油吧!ヾ(◍°∇°◍)ノ゙分治法(Divide and Conquer)当面对一个问题的时候,我们可能一下子找不到解决问题的方法。此时,我们可以考虑将问题规模最小化,先看看当问题规模变小以后,我们如何去解决;然后逐步扩大问题的规模,看大规模的问题能不能基于小问题的解构造得到。经过上面的思考以后,我们就可以将原问题一步步地分解为形...原创 2018-10-05 21:45:45 · 660 阅读 · 0 评论 -
欧几里德算法复杂度分析
欧几里得算法function Euclid(a; b)1: if b = 0 then2: return a;3: end if4: return Euclid(b; a mod b);复杂度分析: 设a>=ba>=ba >= b ,则有amodb<a2amodb<a2a \mod b < \frac{a}{2} 证明: 假设 a=bq+ra=bq...原创 2018-09-14 21:50:21 · 5573 阅读 · 0 评论 -
Master—Theorem 主定理的证明和使用
引言?在分析算法的时候,我们经常需要分析递归算法的时间复杂度。Master——Theorem 正是用于快速得出递归算法时间复杂度的方法。Master—Theorem假设某个递归算法的时间复杂度递归公式为:T(n)=a∗T(nb)+ndT(n)=a*T(\frac{n}{b}) + n^{d}T(n)=a∗T(bn)+nd,其中a&amp;amp;gt;1,b&amp;amp;gt;1,d&amp;amp;gt;0...原创 2018-09-24 10:34:43 · 25441 阅读 · 11 评论