
算法
我要七龙ru
诗是家,远方是媳妇。
展开
-
贪婪算法
算法简介 这种算法是为了解决一些无法完成的问题(例如使用常规算法计算会超时等),当然这种算法运算出来的并不一定是最优解,而是近似解。算法过程 只要每次都选择当前的最优解即可。 例如你有一个包只可以装35KG的东西,现在有A 15KG,B 20KG,C 30KG.所以按照贪婪算法(选择当前的最优解),你应该一开始就放入C30KG的东西,放入后你就无法放入另外的了,那么30KG就是贪婪算原创 2017-08-17 11:53:01 · 714 阅读 · 0 评论 -
NP问题
什么是NP问题? 这是一种尚且没有更好解决方案的问题,这类的问题往往无法完成,例如旅行商问题,但是可以依靠贪婪算法计算出近似解。如何识别NP问题 1.当元素较少时效率很快,但是当元素一旦增加,速度会变得非常慢。 2.涉及要找出“所有组合”中的一个“特别的组合”的问题通常是NP问题。 3.不能将问题分解成小问题。 4.如果涉及集合,序列的问题,可能是NP问题 5.如果原创 2017-08-18 16:02:26 · 388 阅读 · 0 评论 -
狄克斯特拉算法
狄克斯特拉的作用 在一张图中,每一节点到另外一个节点都有一个权重(权重的意思就像从A节点到B节点需要花费一定的时间,而权重就是这个时间)这是一种用来求两点之间最小总权重路径的算法(当然也可以求最大)。特殊情况 当某点到另外一点的权重为负时,狄克斯特拉算法无效。为什么会这样我会在文末给出答案。算法过程描述提示 开销:本文所提到的开销即为从起点到当前节点的总权重 开销的计算公式:开原创 2017-08-15 21:38:31 · 1697 阅读 · 1 评论 -
动态规划——求最大公共子序列(一种可以求数据相似度匹配算法)
算法说明 这是一种利用动态规划思想实现的算法,也即是在运算过程中每一次计算都求出一个值,然后将这个值和前面计算的值比较,如果这个值比前面的值更加接近我们需要的结果则存储这个值,否则存储前面计算的值,这样在算法最后我就能得到最优结果。算法优点 运算效率高 据说科学家DNA相似度的检测都是用这种算法算法解析 以两个字符串为例,他们分别是“H ELLO”和“HALHELLO”原创 2017-08-21 10:30:40 · 2389 阅读 · 0 评论 -
使用递归实现求最大公约数
技巧转载自:http://blog.youkuaiyun.com/liuchuo/article/details/53563122/* 如果a与b是分母与分子返回1说明,a与b已经是最简分数 另外最小公倍数的公式为:最小公倍数 = a * b * 最大公约数*/int gcd(int a,int b) { return b == 0 ? a : gcd(b,a % b);...转载 2018-03-20 20:48:44 · 3289 阅读 · 0 评论 -
动态规划
将一个复杂的问题分解成若干个子问题,通过综合子问题的最优解来得到原问题的最优解 动态规划会将每个求解过的子问题的解记录下来,这样下一次碰到同样的子问题时,就可以直接使用之前记录的结果,而 不是重复计算 可以用递归或者递推的写法实现,递归的写法又叫记忆化搜索 重叠子问题:如果一个问题可以被分解成若干个子问题,且这些子问题会重复出现,就称这个问题拥有重叠子问题。 一个问题必须拥...原创 2018-05-11 10:54:32 · 228 阅读 · 0 评论 -
动态规划与背包问题
参考文章:https://www.cnblogs.com/Christal-R/p/Dynamic_programming.html利用动态规划找到背包问题的最优解 number:物品的数量 capacoty:背包的容量 v:物品的价值 w:物品的重量 V[number][capacity]:是一个二维表 最后找...原创 2018-05-06 12:47:31 · 285 阅读 · 0 评论