![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法分析
Wang-2333
这个作者很懒,什么都没留下…
展开
-
生物地理学优化(BBO)算法
生物地理学优化算法(BBO)是由Dan Simon于2008年提出的一种基于生物地理学理论发展起来的算法。与其他智能算法类似,BBO也是一种基于种群优化的算法,不过它将种群中的每个解看成一个栖息地,将解的适应度看成栖息地的HSI,解的每个分量则是一个SIV,通过模拟生物地理学中的迁移和变异过程来对种群进行不断演化,从而求解优化问题。BBO算法的两个主要操作就是迁移操作和变异操作。一、迁移操作BBO算法将优化问题的每个解看成一个栖息地。解的适应度越高,表示栖息地拥有的物种越多,其迁出率就越高、迁入率就越低原创 2020-06-09 20:23:48 · 3866 阅读 · 1 评论 -
图的m着色问题
1. 问题2. 解析3. 设计4. 分析5. 源码 https://github.com/Wang-2333/MapDraw/blob/master/图的m着色问题.cpp原创 2020-06-01 21:26:26 · 167 阅读 · 0 评论 -
最优前缀码
1. 问题2. 解析构造最优前缀码的贪心算法就是哈夫曼算法。构建哈夫曼树的过程:1.按照贪心算法每次找权值最小(即值最小)的两个数,构成孩子结点,并将这两个数据排除出这一堆数据之外。2.由于哈弗曼树的数据全在叶子结点,所以把上述权值最小的两个数据构成父结点,然后再将父结点的权值放回上述数据,返回第一步,重复上述过程,直到所有的数据都变成哈夫曼树的叶子结点。实例:{5, 5, 10, 10, 10, 15, 20, 25}引理1:C是字符集,∀c∈C,f©为频率,x,y∈C,f(x),原创 2020-05-19 22:55:46 · 2266 阅读 · 0 评论 -
相容问题——贪心算法
1. 问题设S={1,2,…,n}为活动的合集,si和fi分别为活动i的开始和截止时间,i=1,2,…,n,活动i和活动j相容,求S最大的两两相容的活动子集A。2. 解析方法:把活动按照截止时间从小到大排序,使得f1≤f2≤…≤fn,然后从前向后挑选,只要与前面选的内容相容,就可以把该项活动选入A。实例:截止时间已经排序k=3(1) 选择活动1:截止时间最早:活动2、3与活动1不相容...原创 2020-05-05 23:50:31 · 346 阅读 · 0 评论 -
LCS算法——最长公共子序列
1. 问题2. 解析3. 设计4. 分析O(mn)5. 源码https://github.com/Wang-2333/LCS/blob/master/LCS.cpp原创 2020-04-30 23:23:53 · 161 阅读 · 0 评论 -
矩阵链乘法
1. 问题2. 解析3. 设计4. 分析T(n)=O(n3)5. 源码https://github.com/Wang-2333/Matrix-chainMultiplication/blob/master/Matrix-chainMultiplication.cpp原创 2020-04-21 22:40:15 · 133 阅读 · 0 评论 -
投资问题
1. 问题2. 解析3. 设计4. 分析5. 源码https://github.com/Wang-2333/InvestProblem/blob/master/InvestProblem.cpp添加链接描述原创 2020-04-14 00:28:20 · 188 阅读 · 0 评论 -
选第k小元素——特定分治策略
1. 问题利用分治策略,在n个不同元素中找出第k个最小元素2. 解析3. 设计4. 分析复杂度为:O(n)5. 源码https://github.com/Wang-2333/SelectKth/blob/master/SelectKth/SelectKth.cpp...原创 2020-04-06 22:04:16 · 219 阅读 · 0 评论 -
最近对问题
1. 问题n个点在公共空间中,求出所有点对的欧几里得距离最小的点对。2. 解析①分解对所有的点按照x坐标(或者y)从小到大排序(排序方法时间复杂度O(nlogn)。根据下标进行分割,使得点集分为两个集合。②解决递归的寻找两个集合中的最近点对。取两个集合最近点对中的最小值min(dis[left],dis[right])。③合并最近距离不一定存在于两个集合中,可能一个点在集合A,一个...原创 2020-03-30 22:56:41 · 208 阅读 · 0 评论 -
二分归并排序
1. 问题对n个不同的数构成的数组A[1…n]进行排序,其中n=2^k。2. 解析二分归并排序对待排序数组先划分后归并,以数组49,38,65,97,76,13,27,57为例,在二分归并中,需要进行如下顺序:3. 设计①划分将原问题归结为规模为n/2的2个子问题;②继续划分,将原问题归结为规模为n/4的4个子问题。③继续……当子问题规模为1时,划分结束;④从规模1到n/2,陆续...原创 2020-03-22 23:47:15 · 688 阅读 · 0 评论 -
检索-二分查找
1. 问题在一个排好序的数组T[1…n]中查找x,如果x在T中,输出x在T的下标j;如果x不在T中,输出j=0.2. 解析以下面一数组T为例:设value=6,3. 设计4. 分析时间复杂度:O(log2n)5. 源码https://github.com/Wang-2333/BinarySearch/blob/master/BinarySearch/BinarySea...原创 2020-03-16 14:51:30 · 103 阅读 · 0 评论 -
检索-插值查找
1. 问题在一个排好序的数组T[1…n]中查找x,如果x在T中,输出x在T的下标j;如果x不在T中,输出j=0.2. 解析以下面一数组T为例:假设在数组T中查找数字6,则经过的步骤如下:①InsertionSearch(T,6,0,24)→low=0,high=24,mid=0②InsertionSearch(T,6,1,24)→low=1,high=24,mid=1③Inserti...原创 2020-03-15 22:40:14 · 119 阅读 · 0 评论 -
最短路径-Dijkstra算法
1. 问题给定带权有向图G=(V, E),用Dijkstra算法求顶点a到顶点h的最短路径。2. 解析使用二维数组e来存储顶点之间边的关系,初始值如下:再用一个一维数组 dis 来存储 a点到其余各个点的初始路程,我们可以称 dis 数组为“距离表”,如下:既然是求a点到其余各个点的最短路程,那就先找一个离a点最近的点。通过数组 dis 可知当前离a点最近是b点。当选择了b点后,d...原创 2020-03-09 19:58:27 · 129 阅读 · 0 评论 -
最短路径-Floyd算法
1. 问题给定带权有向图G=(V, E),对任意顶点vi,vj∈V(i≠j),求顶点vi到顶点vj的最短路径。2. 解析①首先,先将图中的数据放入矩阵中存储。比如1→2的距离是2,则设e[1][2]的值为2,2→4无法完成,则设e[2][4]的值为∞,另约定点到自己的距离为0,即e[1][1]的值为0,以此类推。具体如下:②假设只允许经过1号点,只需要判断e[i][1]+e[i][j]...原创 2020-03-08 23:21:45 · 277 阅读 · 0 评论 -
最小生成树-Kruskal算法
1.问题在一个连通无向图G=(V, E)中,对于其中的每条边(u,v)∈E,赋予其权重w(u, v),若存在 T 为 E 的子集(即)且为无循环图,使得的 w(T) 最小,则此 T 为 G 的最小生成树。2.解析以上图为例具体计算步骤如下:3.设计for (int i = 1; i <= m; i++) { int u = edge[i].u...原创 2020-03-02 20:56:10 · 185 阅读 · 0 评论 -
最小生成树-Prim算法
1.问题在一个连通无向图G=(V, E)中,对于其中的每条边(u,v)∈E,赋予其权重w(u, v),若存在 T 为 E 的子集(即)且为无循环图,使得的 w(T) 最小,则此 T 为 G 的最小生成树。2.解析以上图为例具体计算步骤如下:①图中有6个顶点,任意选择一个顶点作为起始点,一般都选择v1作为起始点。现在我们设集合U为当前所找到最小生成树的顶点,TE集合为边,则:U={v1};...原创 2020-03-01 21:38:33 · 1030 阅读 · 0 评论