算法
文章平均质量分 73
z6491679
这个作者很懒,什么都没留下…
展开
-
dijkstra算法
dijkstra算法原创 2015-04-05 20:32:12 · 753 阅读 · 0 评论 -
graph cut使用
graph cut下载地址 maxflow3.01使用方法://初始化GC图 Graph< typename captype, typename tcaptype, typename flowtype > g;这里的3个type必须要相同,不然会报unresoveled external的错误//增加节点,返回标号 int vtxInd = g.add_node()//增加n-links,这原创 2016-04-16 11:29:46 · 1810 阅读 · 0 评论 -
隐马尔科夫学习(HMM)
一、简介隐马尔科夫比马尔科夫多的一个东西就是随机变量不止一个了,而是分为了多个随机变量: 1、观测变量Ot:此变量仅由St决定,即仅有当前状态决定。 2、隐变量St:此变量满足马尔科夫性,可能有多个。 那么由此多了混淆矩阵(Confusion Matrix):即P(St -> Ot),就是隐状态到观测状态转移矩阵。其他的如初始状态,状态转移矩阵和马尔科夫一样。二、3个问题1、评估问题。原创 2016-03-15 17:14:40 · 678 阅读 · 0 评论 -
欧拉通路332. Reconstruct Itinerary
解: 欧拉通路:遍历所有的边的一条路径 存在的充要条件: 2个点一个点出度大于入度(起始点),一个点入度大于出度(终止点) 或 所有点出度=入度(欧拉回路) 欧拉回路:遍历所有的边并回到初始点的一条回路 存在的充要条件: 所有点出度=入度(欧拉回路)此题即遍历所有的边的一条路径,并不一定要回到JFC,所以是求欧拉通路问题,用dfs其实就是套圈法: 1、用dfs一延边找点,由于题目说要原创 2016-04-05 14:09:09 · 572 阅读 · 0 评论 -
LeetCode 338 :Counting Bits
Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate the number of 1’s in their binary representation and return them as an array.Example: For num = 5 you sh原创 2016-03-30 10:46:17 · 292 阅读 · 0 评论 -
PatchMatch分析
1.介绍 作为纹理合成的方法,PatchMatch利用图片中的其他区域来恢复边缘区域,想法很合理。并且在实现上巧妙的利用了offset这样一个信息,使得计算上也不算复杂。此为Barnes et al 的得意之作,去年他在我方圆3米的距离坐了2个月都没和他交流,真是暴殄良机,心塞。人总是失去了才知道珍惜- -。1.1块(Patch) 图像一片正方形的区域,如3x3,5x5,此为PatchMatch原创 2016-03-05 10:51:52 · 20077 阅读 · 7 评论 -
如何求最大公约数gcd
利用gcd(a,b) = gcd(a,a % b)其中a > b.int gcd(a,b){ return b == 0? a : gcd(a,a % b);}这也是辗转相除法,可以证明: 假设gcd(a,b) = c,则a = mc,b = nc,且n、m互质 令a%b = r,则 r + x * nc = mc =》r = (m - x*n)c =》所以r也有c这个因子,由原创 2016-03-30 11:05:08 · 593 阅读 · 0 评论 -
动态规划
解动态规划最重要的步骤个人觉得是找出描述子问题的数据结构,记住里面存储的是子问题的最终结果,而不是一个中间值。问题一:硬币找零假设有几种硬币,如1、3、5,并且数量无限。请找出能够组成某个数目的找零所使用最少的硬币数。解:找子结构,设sum[N]为找N元所需的最小硬币数,则若最后一个是找的3元,则sum[N - 3]一定是找N-3元钱所需硬币数的最优解,即: sum[N] =原创 2016-03-21 19:41:21 · 1448 阅读 · 0 评论 -
HOG特征提取matlab代码
HOG特征提取,HOG特征是图像梯度方向的直方图,且是对window进行的处理,是局部feature,提取的是一个window的特征,参数主要有winsize,blocksize,cellsize,runpatchsize,其中win最大,里面包含多个block,block里面一般包含4个cell。在进行人体检测的时候,就是通过不断滑动窗口来进行特征的匹配然后找到人所在的位置。转载 2015-09-06 18:59:05 · 26108 阅读 · 5 评论 -
计算未旋转2矩形相交面积
int find_intersect_area(Rect a, Rect b){ //(x11,y11)(x12,y12)为矩形a对角线上的端点 //(x21,y21)(x22,y22)为矩形b对角线上的端点 int x11 = a.x; int x12 = a.x + a.width; int y11 = a.y; int y12 = a.y +原创 2015-07-07 18:10:37 · 630 阅读 · 0 评论 -
FLOYD算法
此为动态规划的思想,通过比较dist[i][j]与dist[i][k] + dist[k][j]来选择,而且k必须是外层循环,因为其是以k为子问题的,如果k在最里层,则很多子问题都没有算到。图的表示是矩阵表示,无直接边则为INF,自己到自己的距离为0.//dist初始时有边的为正值,无边为INF,mid初始时都为0;mid的值应该是j的直接前驱,即i->……->mid->jvoid graph::原创 2015-06-09 16:18:03 · 397 阅读 · 0 评论 -
最大流和最小割:Edmonds_Karp算法
最大流:从s->t可以通过的最大流量 最小割:将图用一条直线切断,并将s和t分到不同的2边,此为一个割,割会经过图中的边,这些边的容量(只算从s->t方向的)总和为c,当c最小时,此割即为最小割.可以证明,最大流=最小割的容量!(这就是Ford_Fulkerson定理).Ford_Fulkerson方法此为求最大流的基本方法,通过在残留网络中找增广路径不断迭代来求解最大流,在寻找增广路径的时候会有原创 2015-06-23 19:50:33 · 3146 阅读 · 0 评论 -
Bellman-Ford算法和Dijkstra算法
Bellman-Ford算法是通过Relax边来实现的,由于最短无负权回路的路径应该最多有V-1条边,所以一共执行V-1次Relax操作即可,而且注意,每次Relax操作都只是基于上一次Relax操作之后的图,和这次Relax中已经Relax了的节点毫无关系(这个是重点!). 检查负权回路原理:若有负权回路,则经过V-1次relax之后relax还能减小消耗(路径值不会收敛)bool graph:原创 2015-06-23 09:53:33 · 2253 阅读 · 0 评论 -
DFS应用:图的拓扑排序以及Kosaraju强连通分量算法
图的DFS算法对于每一个图节点u有2个重要的时间d[u]和f[u],分别代表找到u的时间(其变为灰色节点的时间)以及u完成的时间(其变为黑色节点的时间). f[u]越大可能其在最上面(树根处),所以要等其所有子孙都完成其才能完成.1、拓扑排序对于一个图,找拓扑排序的方法就是通过按照完成时间f[u]的递减顺序即为一个拓扑排序:void graph::topology(int start,queue<原创 2015-06-21 11:30:02 · 699 阅读 · 0 评论 -
图以及DFS和BFS
图:struct Edge{ Point start; Point end;};class graph{private: int edge[1000][1000]; Edge edge_set[1000]; int Pnum = 0; int Enum = 0; Point pset[1000];public: graph() {原创 2015-04-28 18:45:46 · 395 阅读 · 0 评论 -
Vertex cover problem(NP)算法是多项式的?
3.1. Procedure. Given a simple graph G with n vertices and a vertex cover C of G, if C has no removable vertices, output C. Else, for each removable vertex v of C, find the number ρ(C−{v}) of removable原创 2015-05-13 16:49:10 · 1242 阅读 · 0 评论 -
寻找最近点对
问题:在空间中有n个点,寻找空间中最近的2个点。 法一:遍历,O(n^2) 法二:分治算法: 将点分为左右两半,分别找到最近的2个点,然后考虑交叉位置的点对中的最小距离,在这3者中取最小的那个。O(nlogn)。步骤: 1. 按照x轴排序 2. 找到中间点,分别进行处理 3. 2边处理完成,将进行“merge”过程,先将点按照y轴升序,然后向上找7个点算距离比较即可,如果只看另一侧的话应原创 2015-04-07 09:40:15 · 893 阅读 · 0 评论 -
sort简单分析
排序算法分析(都以从小到大为例): 1、Insertsort:(原地排序) 最坏情况:从大到小排列(逆序),6,5,4,3,2,1, 比较(移动次数要乘以3)次数=n*(n - 1) / 2; 最好情况:从小到大排列(正序),1,2,3,4,5,6,比较次数 = n; 平均情况:与最坏情况一样,为Θ(n^2). 算法稳定。void insertsort(unsigned long *a,i原创 2015-04-05 20:26:20 · 1266 阅读 · 0 评论