算法
蝌蚪123456
这个作者很懒,什么都没留下…
展开
-
图的遍历算法(DFS和BFS)
1. 图的深度遍历DFS可采用递归和循环两种方式实现。方法一:采用递归的方式。定义一个标志数组表示某个结点是否已经被访问过。以邻接矩阵的形式表示图。依次对深度遍历图中的每个未被遍历过的结点,然后针对该结点未被遍历过的邻接点再进行深度遍历,每个结点被遍历后加入到结果中,并且设定该结点已经被访问过。方法二:不采用递归的方式而是采用栈保存已经遍历过并且还有其孩子结点可能还没有遍原创 2016-08-20 19:29:01 · 8391 阅读 · 1 评论 -
数组中取出下标不连续的任意个数,求取出的数的和的最大值
转自于 http://blog.csdn.net/yang20141109/article/details/51169991数组中取出下标不连续的任意个数,求取出的数的和的最大值采用动态规划的思想,假设原数组为arr,辅助数组为data. 则data[0] = arr[0], data[i] = arr[1].i>=2时, data[i] = Max{da转载 2016-08-29 16:57:41 · 2715 阅读 · 0 评论 -
海量数据处理常用的方法
通过对海量数据的挖掘能有效地揭示用户的行为模式,加深对用户需求的理解,提取用户的集体智慧,从而为研发人员决策提供依据,提升产品用户体验,进而占领市场。海量处理的基本方法:1. Hash法构造hash表和处理冲突的方法和上面介绍的一样。在处理海量数据的过程中,使用Hash方法一般可以快速存取、统计某些数据,将大量数据进行分类,例如提取某日访问网站次数最多的ip。2.原创 2016-03-10 22:34:22 · 5452 阅读 · 0 评论 -
一致性hash算法
参考自:http://www.jiacheo.org/blog/174http://www.cnblogs.com/haippy/archive/2011/12/10/2282943.html学习分布式, 一致性哈希是最最基础的知识, 所以要理解好.那什么是一致性哈希呢?(what)百度百科 上的解释很专业术语. 要一句话定义貌似也有难度: 一致转载 2016-03-22 09:25:30 · 341 阅读 · 0 评论 -
54.Maximum Subarray(动态规划)
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [−2,1,−3,4,−1,2,1,−5,4],the contiguous subarray [4,−1,2,1] ha原创 2016-01-09 23:02:38 · 548 阅读 · 0 评论 -
设计算法,在O(n)时间内求解分数背包问题
设背包的最大承重是W,共有n件物品供选择,每件物品的价值与重量分别是Vi,Wi(i=1,2,3...n)Step1:首先利用线性查找算法找出物品单位价值的中位数m;Step2:利用中位数m对所有物品进行划分成三个集合 WG= {Vi/Wi>m} WE = {Vi/Wi=m} WL = {Vi/WiWG、WE、WL集合中物品的总重量;Step3:若 WG>W,则不往背包中放任原创 2016-01-26 17:10:22 · 2275 阅读 · 0 评论 -
证明01分数背包问题具有贪心选择性质
写公式比较麻烦,所以干脆就在纸上写好之后,把照片贴上来。原创 2016-01-26 16:56:48 · 5494 阅读 · 1 评论 -
动态规划之0--1分数背包问题
1.问题 已知现有物品m件(物品0,1,2,3,...m-1),背包的最大承重为n,计算把这个m件物品放到这个背包中可取得的最大价值。 针对每个物品存有其名称、重量和价值。/** * 表示每个物品的类。 */class BagItem{ String name;//物品的名字 int weight;//物品的重量 int value;//物品的价值 publ原创 2016-01-26 15:33:14 · 1267 阅读 · 0 评论 -
01分数背包
1.0-1问题 fractional knapsack现在有m件物品,小偷有个最大承重为n的背包,单独的一件物品可拆分,求最后的可得的最大重量。2.首先计算每个商品的单位价值,遵循贪心策略,小偷首先尽量多地拿走单位价值最高的商品,若该商品已经全部拿走而背包未满,将在剩余的商品中选择单位价值最高的拿走,以此类推,若剩余空间不够选择的商品全部拿走,则将剩余空间全部装上该商品的等重部分(即把该商原创 2016-01-26 16:51:23 · 981 阅读 · 0 评论 -
动态规划与贪心算法的比较
动态规划(DP)与贪心算法(Greedy Algorithm):1.应用动态规划可解决的问题具有的性质是:最优子结构和重叠子问题。 最优子结构: 如果一个问题的最优解包含其子问题的最优解,我们就称此问题具有最优子结构性质。 重叠子问题:在求解过程中如果递归算法反复求解相同的子问题,就称最优化问题具有重叠子问题的性质。这个地方说的是适合用递归算法求解的原问题在求解过程中待分解的子问题原创 2016-01-26 11:42:21 · 6977 阅读 · 1 评论 -
贪心算法基本概念与活动选择问题的求解
1.概念 贪心算法(Greedy Algorithm):在每一步做出的都是当前看起来最佳的选择。即它总是做出局部最优的选择,寄希望这样的选择能得出全局的最优解。 贪心算法并不保证一定可以得到最优解,但是对很多问题确实可以得出最优解。 利用贪心策略设计的算法有:最小生成树、单源点最短路径的Dijkstra、0-1分数背包问题、活动选择问题。2.贪心算法的原理原创 2016-01-26 11:29:37 · 741 阅读 · 0 评论 -
用动态规划的方法求解两个字符串的最长公共子串
package dynamicprogramming;public class LCS { public static int c[][]; //c[i][j]表示Xi和Yj的LCS长度 public static int b[][]; //b[i][j]表示对应计算c[i][j]时所选择的子问题最优解 //代表现在过程中,设置b中元素1表示书上的指向左上方的箭头,表原创 2015-06-19 15:39:46 · 1905 阅读 · 0 评论 -
动态规划之矩阵链乘问题
本篇文章是介绍用动态规划(Dynamic Programming)的思想解决矩阵链乘问题。首先介绍会用到的几个名词:1.完全括号化(fully parenthesized)的矩阵成绩链表示的是它是单一矩阵,或者是由两个完全括号化的矩阵乘积链的积,且已外加括号。如(A1(A2A3)、((A1A2)A3);但是(A1A2A3)则不是。2.矩阵链乘问题(matrix-chain multip原创 2015-06-17 20:35:47 · 1348 阅读 · 0 评论 -
动态规划的原理
动态规划与分治法相似,都是通过组合子问题的解来求解原问题。动态规划通常是用来求解最优化问题(optimization problem).这类问题可以有很多个可行解,每个解都有一个值,我们希望寻找最优值(最大值或者最小值)的解。我们称这样的解为问题的一个最优解(oneoptimization solution)而不是(the optimization solution),因为有可能有多原创 2015-06-19 11:49:49 · 4864 阅读 · 0 评论 -
B树、B-树、B+树和B*树
转载自:http://www.cnblogs.com/oldhorse/archive/2009/11/16/1604009.htmlB树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于转载 2016-09-05 15:58:46 · 284 阅读 · 0 评论