
算法
文章平均质量分 61
飞云不坠
不做三斤半的男人
展开
-
算法复习 - 分治法
前奏:分治法可能是最著名的通用算法设计技术了:很多非常有效的算法实际上就是这个通用算法的特殊实现。分治法主要按以下方案工作:1.将一个问题划分为同一类型的若干子问题,子问题的规模最好相同。2.对这些子问题求解(一般使用递归)3.有必要的话,合并这些子问题的解,以得到原始答案。分治法的流程见下图,该图描述的是将】一个问题分解成两个较小子问题的例子,也是最常见的情况。...原创 2020-01-04 16:04:11 · 1005 阅读 · 1 评论 -
算法复习 - 减治法
减治技术利用了一个问题实例的解和同样问题较小实例的解之间的某种关系。一旦建立了这种关系,我们既可以 从顶至下,也可以从底至上地运用该关系。虽然自顶向下自然导致出递归算法,但从本章来看,还是非递归的好。自底向上往往是迭代实现的,求解问题的一个较小实例开始,该方法有时也称增量法变化形式1.减去一个常量2.减去一个常量因子3.减去的规模是可变的下面分别以每种变化形式举例分析1.减去一个常量...原创 2020-01-03 21:42:09 · 940 阅读 · 0 评论 -
算法复习 - 蛮力法
一.定义蛮力法是一种简单直接解决问题的方法,常常直接基于问题的描述和所涉及的概念定义。二.蛮力法的用处a.和其他策略不同,我们可以用它解决广阔领域的各种问题,实际上,它可能是唯一一种什么问题都能解决的一般性方法。b.对于一些重要的问题(例如 排序,查找,矩阵乘法和字符串匹配)来说,蛮力法可以可以产生一些合理的算法c.如果要解决的问题实例不多,而且蛮力法可以用一种能够接受的速度对实例求解,...原创 2020-01-01 19:52:02 · 461 阅读 · 0 评论 -
DP入门-0/1背包问题
问题描述已知:有一个容量为V的背包和N件物品,第i件物品的重量是weight[i],收益是cost[i]。限制:每种物品只有一件,可以选择放或者不放问题:在不超过背包容量的情况下,最多能获得多少价值或收益相似问题:在恰好装满背包的情况下,最多能获得多少价值或收益这里,我们先讨论在不超过背包容量的情况下,最多能获得多少价值或收益。...原创 2020-01-01 10:51:29 · 233 阅读 · 0 评论 -
DP入门 - 爬楼梯
DP入门 - 爬楼梯原创 2019-12-25 10:34:22 · 318 阅读 · 0 评论 -
算法复习 - 回溯法
1. 回溯法定义:主要思想,每次只构造一个分量,然后按照下面的方法来评估这个部分构造解。如果这个构造解可以继续构造而不违反问题的约束,我们就接受对解的下一个分量所做的第一个合法选择。如果下一个分量违反问题约束,就不必对剩下的任何分量进行任何选择。这种情况下,该算法进行回溯。2 . 基本思想:针对所给问题,定义问题的解空间。确定易于搜索的解空间结构。以dfs遍历解空间,使用剪枝函数,避...原创 2019-12-24 09:55:37 · 229 阅读 · 0 评论 -
算法复习 - 分支限界法
什么是分支界限法:所谓分支就是采用广度优先的策略,一次搜索活结点的所有分支。为了有效的选择下一扩展节点,以加速搜索的进程在每一处活节点处,计算一个函数值(限界函数),在当前的活结点中选择一个可行最优解作为下一拓展节点。基本思想:分支界限常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。在一个活结点生成所有孩子节点中,不满足界限函数的孩子将被舍弃,满足的孩子将...原创 2019-12-24 09:53:44 · 1613 阅读 · 0 评论 -
Kruskal最小生成树
废话本篇博客只是复习记录所用,有任何不足之处,欢迎指出正篇1.自己的一些感悟不同于Prim算法每次加入一个点,直到所有的点加入到同一集合生成一颗最小树,kruskal是每次寻找最小的边,同时记录加入的点,直到加入的点的数量和顶点数一样,本质上都是寻找先寻找拥有最小权值的边,prim是从起始点开始,而kruskal直接从边开始。2.算法思想3.伪代码描述4.模拟第一步:初始化连...原创 2019-06-27 15:11:27 · 282 阅读 · 1 评论 -
prim最小生成树
废话本篇博客只是单纯的作为自己复习的记录。正篇图论中两个最小生成树算法之一prim。思想比较简单,关键在于自己有没有认真细致的观察它。思想:把图的顶点U分为两个集合,V是已生成最小树集(V初始化:选择一个顶点作为起始点),U - V是待选择集。重复下面操作:v∈V,u∈(U - V)的边中找一条代价最小的边,将u加入V中,直到V = U为止。**准备:**设置一个数组short Edge...原创 2019-06-21 08:03:36 · 292 阅读 · 2 评论 -
图的存储(邻接表)和遍历(bfs和的dfs)
图的邻接表存储定义了一个边表和一个顶点表分别存储边的信息和顶点的信息本次存储的是一个有向图,对于网图,则需在边表设置一个权值(如权值info)对于存储的图结构中容易解决(边的度(出度和入度),判断两顶点间是否存在边,以及容易得到一个顶点的所有邻接点)遍历一.bfs(深度优先遍历)类似于树的前序遍历,利用递归的思想遍历图的所有节点二.dfs(广度优先遍历)类似于树的层序遍历,同样用队列...原创 2019-05-12 23:26:59 · 2298 阅读 · 2 评论 -
并查集
下面是一位大佬写的超nb的解释**原文地址:**http://blog.youkuaiyun.com/niushuai666/article/details/6662911题目描述添加最少的边使无向图成为一个连通图,如下图所示,最少添加1条边,便可以使得该无向图成为一个连通图。下面附上我的代码:#include<iostream>using namespace std;int p...转载 2019-05-10 16:26:51 · 329 阅读 · 0 评论 -
认真开始学习(绝对的)
我是一名大一下期的学生,我学的专业是计算机科学与技术。上个学期的好吃懒做,不学无术在期末有了相当的反馈,程序与设计这门专业课以挂科的结果给我好好上了一课。我也不是什么都无所谓的人,这个学期我希望自己能好好学习(当然每个学期都这么想的。。。)。我想通过自己的努力成为IT行业一名资深的高级工程师,在我的未来不会对过往所作之事留下遗憾。...原创 2019-03-28 12:20:52 · 222 阅读 · 5 评论