
Algorithm
随遇而安随缘一世
这个作者很懒,什么都没留下…
展开
-
二值图像连通域标记算法与代码
二值图像连通域标记算法与代码 这里列举二值图像连通域标记算法包括直接扫描标记算法和二值图像连通域标记快速算法一、直接扫描标记算法把连续区域作同一个标记,常见的四邻域标记算法和八邻域标记算法。1、 四邻域标记算法:1) 判断此点四邻域中的最左,最上有没有点,如果都没有点,则表示一个新的区域的开始。2) 如果此点四邻域中的最左有点,最上没有点,则标记此点为最左点的值;转载 2013-05-09 13:08:24 · 1259 阅读 · 0 评论 -
分水岭分割算法
如果图像中的目标物体是连在一起的,则分割起来会更困难,分水岭算法经常用于处理这类问题,通常会取得比较好的效果。分水岭分割算法把图像看成一副“地形图”,其中亮度比较强的地区像素值较大,而比较暗的地区像素比较小,通过寻找“汇水盆地”和“分水岭界限”,对图像进行分割。步骤:1.读取图像2.求取图像的边界,在此基础上可直接应用分水岭分割算法,但效果不佳;3.对图像的前景和背转载 2013-05-09 13:11:31 · 863 阅读 · 0 评论 -
Useful color equations: RGB to LAB converter
ProblemI am working a bit with images and I need to perform some calculations in Lab color space. For this reason I’ve created functions to convert RGB to Lab color space and Lab to RGBSolutio转载 2013-05-12 01:12:36 · 1285 阅读 · 0 评论 -
网络流题目小结
http://hi.baidu.com/lewutian 开始写网络流,这里仅仅记录最大流-最小割相关的题,不包括费用流、二分匹配等题目。 网络流最重要的还是最大流-最小割定理,并且能够建立出模型。最大流-最小割定理用好了,即能求最大,也能求做小,关键是看怎么建模,这一点在《最小割模型在信息学竞赛中的应用》体现的很明显。 赤裸裸的体现出通过增广路径办法来求解最大转载 2013-05-03 11:49:24 · 875 阅读 · 0 评论 -
网络流/最大流算法与题目总结
最大流模型为有N个湖(点),他们有小溪相连(边),每个小溪都有它们单位时间的最大流量,最大流求的是一个湖(源点)到另一个湖(汇点)单位时间内能流入的最大流量。求最大流的一个算法为 ford_fulkerson算法,算法思想:1.从源点开始寻找一条路径到汇点,记录这条路径流量最小的边的流量为m,然后最大流量+=m,然后每条边的流量都减去m,然后反向更新流量(每条边反方向的流量加上m)转载 2013-05-03 11:30:29 · 765 阅读 · 0 评论 -
网络最大流问题算法小结
通过 USACO 4.2.1 Ditch 学习一下最大流算法 。可惜它给的测试数据几乎没有任何杀伤力,后面测试时我们采用 DD_engi 写的程序生成的加强版数据。 总体上来说,最大流算法分为两大类:增广路 (Augmenting Path) 和预流推进重标号 (Push Relabel) 。也有算法同时借鉴了两者的长处,如 Improved SAP 。本篇主要介绍增广路类算法,思转载 2013-05-03 11:27:30 · 1237 阅读 · 0 评论 -
最大流问题
一、 定义与定理流网络:G=(V, E)是一个有向图,其中每条边(u, v)∈E均有一个非负容量c(u, v) ≤0,否则c(u, v)为0.流网络中有两个特别的顶点:源点s和汇点t。对于每个顶点v∈V,都存在一条路径s…v…t。流:G上的一个实值函数(V×V→R),满足1)对于任意u, v∈V,f(u, v)≤c(u, v);2)对于任意u, v∈V,f(u, v)=-f(u, v转载 2013-05-03 10:40:07 · 574 阅读 · 0 评论 -
二分图最大匹配(匈牙利算法)
这两天自学了一下二分图的最大匹配(匈牙利算法)的算法,现在稍微总结一下。(1)前提说明:(用到的定义说明)1。二部图: 如果图G=(V,E)的顶点集何V可分为两个集合X,Y,且满足 X∪Y = V, X∩Y=Φ,则G称为二部图;图G的边集用E(G)表示,点集用V(G)表示。2。匹配: 设M是E(G)的一个子集,如果M中任意两条边在G中均不邻接,则称M是G的一个匹配。转载 2013-05-03 03:05:01 · 699 阅读 · 0 评论 -
二分图匹配(匈牙利算法)
二分图匹配(匈牙利算法)1。一个二分图中的最大匹配数等于这个图中的最小点覆盖数König定理是一个二分图中很重要的定理,它的意思是,一个二分图中的最大匹配数等于这个图中的最小点覆盖数。如果你还不知道什么是最小点覆盖,我也在这里说一下:假如选了一个点就相当于覆盖了以它为端点的所有边,你需要选择最少的点来覆盖所有的边。 2。最小路径覆盖=最小路径覆盖=|G|-最大匹配数 在一个转载 2013-05-03 03:01:44 · 716 阅读 · 0 评论 -
有向图的强连通分量的三个算法
有向图的强连通分量(1) pku 2553 2186 2181最关键通用部分:强连通分量一定是图的深搜树的一个子树。一、 Kosaraju算法1. 算法思路基本思路:这个算法可以说是最容易理解,最通用的算法,其比较关键的部分是同时应用了原图G和反图GT。(步骤1)先用对原图G进行深搜形成森林(树),(步骤2)然后任选一棵树对其进行深搜(注意这次深搜节点转载 2013-05-02 00:59:23 · 780 阅读 · 0 评论 -
二分图最大匹配总结
【转自Matirx67】二分图最大匹配的König定理及其证明 本文将是这一系列里最短的一篇,因为我只打算把König定理证了,其它的废话一概没有。 以下五个问题我可能会在以后的文章里说,如果你现在很想知道的话,网上去找找答案: 1. 什么是二分图; 2. 什么是二分图的匹配; 3. 什么是匈牙利算法;(http://www.matrix67.转载 2013-05-03 02:48:50 · 519 阅读 · 0 评论 -
求解欧拉回路的算法
求解欧拉回路的算法应该会有很多吧,但我目前掌握的算法只有两种,一是usaco上提供的,还有一种是在离散数学书上看到的fleury算法: 1.usaco上提供的算法: # circuit is a global array find_euler_circuit circuitpos = 0 find_circuit(node 1) # nextnode and visited转载 2013-05-01 23:54:15 · 2309 阅读 · 0 评论 -
图的连通性以及割点
首先明白几个定理:连通分量:无向图 G 的一个极大连通子图称为 G 的一个连通分量(或连通分支)。连通图只有一个连通分量,即其自身;非连通的无向图有多个连通分量。强连通图:有向图 G=(V,E) 中,若对于V中任意两个不同的顶点 x 和 y ,都存在从x 到 y 以及从 y 到 x 的路径,则称 G 是强连通图(Strongly Connected Graph)。相应地有强连通转载 2013-05-01 23:23:17 · 863 阅读 · 0 评论 -
图论学习之图的连通性:强连通分支+最大团
强连通分支的定义:有向图G=(V,E)的一个强连通分支就是一个最大的顶点集合(不能再增加顶点的意思)C,对于C中的每一对顶点u,v,有u~v和v~u;即顶点u和v是互相可达的,注:不要求u和v满足:(u,v)属于E,即不要求u和v之间必须直接可达!完全子图的定义:有向图G=(V,E)的一个完全子图就是一个顶点集合C,对于C中的每一对顶点u,v,有(u,v)属于E,注:要求u,v之间必须直接转载 2013-05-01 23:19:03 · 2135 阅读 · 0 评论 -
无向图的连通分支
虽然暂时用不到,还是花时间学习了一下,看网上玩ACM的大牛们都在做图论的题目,我也眼红了。。。 因为需要用到求强连通分量来判断AOE/PERT中的环路,先研究研究无向图的双连通分量。对今天的学习做个总结:无向图的连通分支(连通子图): 判断一个无向图是否连通,如果进行dfs或者bfs之后,还有未访问到的顶点,说明不是连通图,否则连通。求解无向图的所有连通分支: 只需要重复调转载 2013-05-01 23:05:15 · 1595 阅读 · 0 评论 -
图的连通性
无向图的连通性先明白一些概念。割点:若一个点删除后(也就是与之相连的边统统去掉),无向图不再连通,那么此点称为割点。桥:若一条边断去后,无向图不再连通,那么此边称为桥。桥有一个很好的性质,就是DFS一个无向图,那么这个过程必定要经过桥。块:没有割点的无向图称为2-连通分支,也称作块。割点、桥均可以在DFS的过程中求得。那么,对于一个无向图有以下操作:1.将一转载 2013-05-01 22:57:23 · 718 阅读 · 0 评论 -
有向图的强连通分支以及最小点基
最近一直在研究图论的一些算法,前几天主要做了 割点,桥,有向图的强连通分支,无向图的重连通分支,重连通图的构造等等。这些算法都有一个相同的特点,就是都运用基于强大的DFS的Tarjan算法来实现的。核心就是围绕计算以及比较dfn和low两个向量,各自只有些细微的差别而已。 今天下午在做有向图的最小点基的时候才发现自己之前的有向图的强连通分支的算法有问题,Debug之后才发现了问题的所在。转载 2013-05-01 23:03:37 · 1151 阅读 · 0 评论 -
关于无向图判断是否存在回路的方法
问题:给出一个算法,用它来确定一个给定的无向图G=(V,E)中是否包含一个回路。所给出的算法的运行时间为O(V),这一时间独立于|E|解答:我们都知道对于一个无向图而言,如果它能表示成一棵树,那么它一定没有回路,并且有|E|=|V|-1,如果在这个树上添加一条边,那么就构成了回路,如果在这个树中去掉一个边就成了森林(注意:如果只是限定|E||V|-1根据无向图的性质,那么这个无向图一定存在回路转载 2013-05-01 22:43:44 · 8269 阅读 · 0 评论 -
动态规划总结
引子:带权有向的多段图问题 给定一个带权的有向图,要求从点A到点D的最短路径。 设F(i)表示从点A到达点i的最短距离,则有 F(A)=0 F(B1)=5,F(B2)=2 F(C1)=min{F(B1)+3}=8 F(C2)=min{F(B1)+2,F(B2)+7}=7转载 2013-04-26 01:24:30 · 1202 阅读 · 0 评论 -
动态规划算法中的流水线调度问题
很多参考书在讲解动态规划算法的时候都会使用到一个例子----流水线的装配调度问题。如图所示:从in进入到流水线1需要e1的时间,这里的每个表格代表一个装配站,在同一条流水线中,从一个装配站到另一个装配站是不需要时间的,而跨流水线则需要时间,我们定义一个数组t来保存流水线的切换时间,(例如:从流水线1【2】到流水线2【3】),那么这个时间为t[1][2],在每个装配站上装配也需要时间转载 2013-04-26 01:08:02 · 3041 阅读 · 0 评论 -
最大流问题
一、 定义与定理流网络:G=(V, E)是一个有向图,其中每条边(u, v)∈E均有一个非负容量c(u, v) ≤0,否则c(u, v)为0.流网络中有两个特别的顶点:源点s和汇点t。对于每个顶点v∈V,都存在一条路径s…v…t。流:G上的一个实值函数(V×V→R),满足1)对于任意u, v∈V,f(u, v)≤c(u, v);2)对于任意u, v∈V,f(u, v)=-f(u, v转载 2013-04-17 04:00:19 · 829 阅读 · 0 评论 -
贪心算法——最小生成树
设G = (V,E)是无向连通带权图,即一个网络。E中的每一条边(v,w)的权为c[v][w]。如果G的子图G’是一棵包含G的所有顶点的树,则称G’为G的生成树。生成树上各边权的总和称为生成树的耗费。在G的所有生成树中,耗费最小的生成树称为G的最小生成树。构造最小生成树的两种方法:Prim算法和Kruskal算法。一、最小生成树的性质设G = (V,E)是连通带权图,U是V的真子集转载 2013-04-06 11:42:07 · 1199 阅读 · 1 评论 -
二分图匹配算法总结
二分图匹配算法总结 (by phoenixinter, Aug 2006) 最近下决心要把二分图匹配部分的算法都搞搞清楚,努力了几天之后基本上搞定了,下面做一个这个专题的总结。一、二分图最大匹配 二分图最大匹配的经典匈牙利算法是由Edmonds在1965年提出的,算法的核心就是根据一个初始匹配不停的找增广路,直到没有增广路为止。 匈牙利算法的本质实际上和基于增转载 2013-05-03 02:33:49 · 742 阅读 · 0 评论 -
图算法小结
1. 图的表示 邻接表、邻接矩阵 对于邻接表的表示,如果需要O(1)时间删除边,可以用一个单独的散列表来记录每条边的信息。2. 图的路径和可达性 无向图的顶点可达性:可以使用并查集来完成,可支持动态添加边,O(1)查询。 或者一次BFS或DFS可以得到两个顶点是否可达。 有向图的顶点可达性:BFS或DFS 无向图的欧拉路径:环消除算法转载 2013-05-02 00:42:30 · 668 阅读 · 0 评论 -
欧拉图,欧拉回路,以及求欧拉回路的Fleury算法
1、定义:欧拉通路(回路):通过图(无向图或有向图)中所有边一次且仅一次行遍图中所有顶点的 通路(回路)称为欧拉通路(回路)。欧拉图与半欧拉图:具有欧拉回路的图称为欧拉图,具有欧拉通路而无欧拉回路的 图称为半欧拉图。桥:设无向图G=,若存在边集E的一个非空子集E1,使得p(G-E1)>p(G),而对 于E1的任意真子集E2,均有p(G-E2)=p(G),则转载 2013-05-01 23:32:02 · 2458 阅读 · 0 评论 -
二分图匹配总结
【二分图】二分图是一种特殊的图结构,所有点分为两类,记做x和y,所有的边的两端分别在x和y,不存在两端同在x或y的边。 【最大匹配、完备匹配】给定一个二分图(x,y),找到一种匹配数最大的方案,记做最大匹配。|x|=|y|=匹配数时,我们称该匹配方案为完备匹配。显然,解决了最大匹配也就解决了完备匹配。解决二分图的最大匹配可以用网络流或者匈牙利算法,两者本质上是相同的,不过不论从转载 2013-05-03 02:41:29 · 596 阅读 · 0 评论 -
欧拉回路
资料:http://blog.youkuaiyun.com/tiantangrenjian/article/details/6793869经典七桥问题:对无向图: 定义:给定无孤立结点图G,若存在一条路,经过图中每条边一次且仅仅一次,该条路称欧拉路,若存在一条回路,经过图中每边一次且仅仅一次,该回路称为欧拉回路。具有欧拉回路的图称为欧拉图。定理:无向图G具有一条欧转载 2013-05-01 23:26:40 · 680 阅读 · 0 评论 -
连通图的割点、割边(桥)、块、缩点,有向图的强连通分量
一、基本概念无向图割点:删掉它之后(删掉所有跟它相连的边),图必然会分裂成两个或两个以上的子图。块:没有割点的连通子图割边:删掉一条边后,图必然会分裂成两个或两个以上的子图,又称桥。缩点:把没有割边的连通子图缩为一个点,此时满足任意两点间都有两条路径相互可达。求块跟求缩点非常相似,很容易搞混,但本质上完全不同。割点可以存在多个块中(假如存在k个块中)转载 2013-05-01 22:55:08 · 1135 阅读 · 0 评论 -
连通图的割点、割边(桥)、块、缩点,有向图的强连通分量
http://www.360doc.com/content/12/0602/17/110467_215443586.shtml转载 2013-05-01 22:53:30 · 624 阅读 · 0 评论 -
判断一个图是否有环(有向图,无向图)
无向图:法1:如果存在回路,则必存在一个子图,是一个环路。环路中所有顶点的度>=2。 n算法: 中 第一步:删除所有度 第二步:将度数变为1的顶点排入队列,并从该队列中取出一个顶点重复步骤一。 如果最后还有未删除顶点,则存在环,否则没有环。 n算法分析: 由于有m条边,n个顶点。如果m>=n,则根据图论知识可直接判断存在环路。转载 2013-05-01 22:39:30 · 1255 阅读 · 0 评论 -
判断无向图是否有回路
1.初步认识 2.具体阐述 前提:对于无向图G,图中有结点数为m,边数为n.n>=m时,由图论知识可知有回路;.n.重复执行直到图中无结点或者没有度数小于2的结点停止;.判断,若此时图中无结点则原无向图G中无回路,若图中仍有结点存在则图中所有结点度数大于等于2,即图中总度数N>=2m,则图中剩下的的边数n>=m(因为一条边提供2个转载 2013-05-01 22:34:31 · 4916 阅读 · 0 评论 -
动态规划之01背包问题
首先是问题描述:给定n种物品和一背包,物品i的重量是wi,其价值是pi,背包的容量是M,问如何选择装入背包中的物品总价值最大?可以这样理解:背包的背负有上限,因此在这个上限内尽可能多的装东西,并且价值越多越好。在这里我之想讨论动态规划解决这个问题的详细过程。动态规划是用空间换时间的一种方法的抽象。其关键是发现子问题和记录其结果。然后利用这些结果减轻运算量。因为背转载 2013-04-26 01:02:13 · 957 阅读 · 0 评论 -
§4 网络最大流问题
网络最大流问题是网络的另一个基本问题。许多系统包含了流量问题。例如交通系统有车流量,金融系统有现金流,控制系统有信息流等。许多流问题主要是确定这类系统网络所能承受的最大流量以及如何达到这个最大流量。4.1 基本概念与定理1. 网络与流定义14 (1)网络:例1 如图7-20是连结某产品产地 和销地 的交通图。弧 表示从 到 的运输线,弧旁的数字表示这条运转载 2013-04-17 04:03:34 · 3657 阅读 · 0 评论 -
最大流最小割定理(max flow/min cut theory)
网络与流的概念 对于有向图D=(V,A),如果V中有一发点(源)Vs,一收点(汇)Vt,其余均为中间节点,且对A中的每条弧均有权W(Vi,Vj)?0(简记为Wij,并称为弧容量),则称这样的赋权有向图D为容量网络,记为D=(V,A,W),通过D中弧(Vi,Vj)的物流量为fij,称为弧(Vi,Vj)的流量。所有弧上流量的集合f={fij}称为该网络D的一个流。最大流最小割定理(m转载 2013-04-17 03:54:49 · 1931 阅读 · 0 评论 -
从2-3-4树谈到Red-Black Tree(红黑树)
从2-3-4树谈到Red-Black Tree(红黑树) 译者:July。出处:http://blog.youkuaiyun.com/v_JULY_v 。 在上一篇文章--从B树、B+树、B*树谈到R 树里已提到2-3-4树,那么本文,咱们就从2-3-4树开始谈起,然后谈至红黑树。因为理解了2-3-4树,红黑树也就没有任何问题了。同时,虽然红黑树在本blog已有转载 2013-06-30 03:20:00 · 900 阅读 · 0 评论 -
B树、B-树、B+树、B*树
B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; 如: B树的搜索,从根结点开始,如果查询的关键字与结点的关转载 2013-06-30 01:10:39 · 751 阅读 · 0 评论 -
从B树、B+树、B*树谈到R 树
作者:July、weedge、Frankie。编程艺术室出品。说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由July统稿修订完成。出处:http://blog.youkuaiyun.com/v_JULY_v 。 第一节、B树、B+树、B*树1.前言:动态查找树主要有:二叉查找树转载 2013-06-30 03:18:41 · 706 阅读 · 0 评论 -
五大常用算法之二:动态规划算法
一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能转载 2013-07-28 07:26:40 · 490 阅读 · 0 评论 -
算法策略的总结
策略是面向问题的,算法是面向实现的。 一、不同算法策略特点小结1、贪心策略 贪心策略一方面是求解过程比较简单的算法,另一方面它又是对能适用问题的条件要求最严格(即适用范围很小)的算法。 贪心策略解决问题是按一定顺序,在只考虑当前局部信息的情况下,就做出一定的决策,最终得出问题的解。 即:通过局部最优决策能得到全局最优决策2、递推策略 递推也是由转载 2013-07-28 07:30:28 · 613 阅读 · 0 评论 -
五大常用算法之一:分治算法
分治算法一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 任何一个可以用计算机求解的转载 2013-07-28 07:25:40 · 618 阅读 · 0 评论