算法
flybird_zj
这个作者很懒,什么都没留下…
展开
-
算法四-kruskal和DJP
kruskal算法(求加权连通图的最小生成树的算法) 1、按照边的权值进行从小到大排序 2、每次从剩余的边中选择权限较小且边的两个顶点不在同一个集合内的边(就不会产生回路的边),加入到生成树中,直到加入了n-1条边为止。 第二步采用并查集方法寻找祖先。 prim算法/DJP算法 1、随意选择一个顶点加入生成树(可理解成生成树的根)。 2、再枚举每一个树顶到每一个非树顶点所有的边原创 2015-07-09 16:06:05 · 467 阅读 · 0 评论 -
PCA的数学原理
from:http://blog.codinglabs.org/articles/pca-tutorial.html [-] 数据的向量表示及降维问题向量的表示及基变换 内积与投影基基变换的矩阵表示 协方差矩阵及优化目标 方差协方差协方差矩阵协方差矩阵对角化 算法及实例 PCA算法实例 进一步讨论 PCA(Princ转载 2016-07-03 09:30:55 · 348 阅读 · 0 评论 -
一文搞懂HMM(隐马尔可夫模型)
http://www.cnblogs.com/skyme/p/4651331.html 什么是熵(Entropy) 简单来说,熵是表示物质系统状态的一种度量,用它老表征系统的无序程度。熵越大,系统越无序,意味着系统结构和运动的不确定和无规则;反之,,熵越小,系统越有序,意味着具有确定和有规则的运动状态。熵的中文意思是热量被温度除的商。负熵是物质系统有序化,组织化,复转载 2016-06-15 21:25:45 · 2581 阅读 · 0 评论 -
关于卡尔曼滤波和粒子滤波最直白的解释
http://blog.csdn.net/karen99/article/details/7771743 相信所有学习卡尔曼滤波的同学首先接触的都是状态方程和观测方程,学过控制系统的同学可能不陌生,否则,先被那两个看起来好深奥的公式给吓跑了,关键是还不知道他们究竟是干什么的,什么是状态,什么是观测。。。。。。如果再看到后面的一大串递归推导增益,实在很晕很晕,更糟糕的是还没整明白的时候就已转载 2016-06-14 21:38:49 · 1861 阅读 · 0 评论 -
平衡二叉树 之 AVL树
http://blog.csdn.net/whucyl/article/details/17289841 目录(?)[-] AVL树数据结构AVL树旋转操作插入节点删除节点测试 AVL树是最先发明的自平衡二叉查找树。AVL树以其发明者前苏联学者 G.M. Adelson-Velsky 和 E.M. Landis 名字而命名,他们在1962年的论文《转载 2016-05-11 07:55:33 · 346 阅读 · 0 评论 -
二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]
http://www.blogjava.net/fancydeepin/archive/2013/02/03/395073.html 深度优先搜索算法(Depth First Search),是搜索算法的一种。是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。 当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为转载 2016-05-11 07:52:00 · 450 阅读 · 0 评论 -
求无向连通图的割点
http://www.cnblogs.com/en-heng/p/4002658.html【求 无向连通图的割点 割点与连通度 在无向连通图中,删除一个顶点v及其相连的边后,原图从一个连通分量变成了两个或多个连通分量,则称顶点v为割点,同时也称关节点(Articulation Point)。一个没有关节点的连通图称为重连通图(biconnected gr转载 2015-07-09 16:20:26 · 475 阅读 · 0 评论 -
算法一:排序和数据结构体
排序算法 1、桶排序法:最傻的方法。 2、冒泡排序:时间复杂度O(N^2),其实没什么用。 3、快速排序:Charles Antony Richard Hoare提出。 不像冒泡排序,只在旁边左右交换,每次交换式跳跃式的,所以平均时间复杂度是O(NlogN),最差情况也是O(N^2)。 step1、数组的两端开始往中心走,两两比较,大小不同交换。 step2、到达中心时,再分成两段,继原创 2015-07-06 17:20:29 · 427 阅读 · 0 评论 -
最短路径的Dijkstra算法
http://www.cppblog.com/eryar/archive/2013/01/01/196897.html 最短路径的Dijkstra算法 The Dijkstra Algorithm eryar@163.com 摘要:本文用C实现了图的最短路径Dijkstra算法,并将自己理解该算法的方式与大家分享下,若有错误之处,欢迎指正。 关键字:图、最短路径、Grap转载 2015-07-10 14:31:47 · 716 阅读 · 0 评论 -
算法八:Bellman-Ford算法及优化
一、Bellman-Ford算法 求最短路径,可适用边的权值为负数或正数的(Dijkstra只适用于正权值) n个顶点,m条边的图: 最多有n-1个循环,每个循环里对每一条边都执行松弛操作,此时就会有些顶点已经求得最短路,即这些顶点的最短路的“估计值”变成“确定值”。此后这些顶点的最短路的值就会一直保持不变,不再受后续松弛操作的影响。 一句话概括:对所有的边进行n-1次“松弛”操作原创 2015-07-13 16:22:18 · 1101 阅读 · 0 评论 -
算法七:图的存储结构
一、邻接矩阵 1、特点: 容易理解,索引和编排都很舒服。 对于边数相对顶点较少的图,这种结构无疑是存在对存储空间的极大浪费。 比较适用于稠密图(M相对N^2大很多的图,其中N表示边的条数,M表示顶点歌手)。 2、创建方法:使用二位数组,定点个数(n)等于二维数组的大小(n*n)。 第(i,j)表示顶点i到顶点j是否有边,1表示有边,∞表示没有边。 二、邻原创 2015-07-13 11:14:00 · 347 阅读 · 0 评论 -
算法六:floyd-warshall和dijkstra
Floyd-Warshall 求两点之间的最短路径 实际为“动态规划”的思想。 1、先只考虑通过1号顶点进行中转,求两点之间的最短路径,只需判断e[i][1]+e[1][j] 2、接下来考虑1号和2号顶点中转,求两点之间的最短路径,只需判断e[i][2]+e[2][j] 3、最后考虑经过1~n号所有顶点中转。 for(k=1;k { for(i=1;i for(j=原创 2015-07-10 15:12:33 · 433 阅读 · 0 评论 -
算法三:树和堆排序
1、树(不包含回路的,即n个结点恰好有n-1条边) 任意两个结点有且仅有唯一的一条路径连通。 根/祖先/根节点(没有父亲) 节点/结点 夫节点/父亲 子节点/儿子 叶结点(没有儿子) 深度:根到这个结点的层数。 2、二叉树:每个结点最多有两个儿子(左儿子,右儿子) 满二叉树:每个结点都有两个儿子/所有的叶结点都有相同的深度。 深度为h且有2^h-原创 2015-07-08 15:43:24 · 319 阅读 · 0 评论 -
二分图的最大匹配、完美匹配和匈牙利算法
二分图的最大匹配、完美匹配和匈牙利算法 2013-08-01Algorithms二分图匹配, 图论, 算法 这篇文章讲无权二分图(unweighted bipartite graph)的最大匹配(maximum matching)和完美匹配(perfect matching),以及用于求解匹配的匈牙利算法(Hungarian Algorithm);不讲带权二分图的最佳匹配。 二分图:转载 2015-07-09 16:56:54 · 347 阅读 · 0 评论 -
算法五:图的割点和桥
一、定义 图的割点 一个无向连接图中,如果删除某个顶点后,图不再连同(即任意两点之间不能互相到达) ,称这样的顶点为割点 或:某个点是割点当且仅当删除该点和与该点相关联的边后图变得不连通。 图的割边/桥: 一个无向连通图中,如果删除某条边后,图不再连通,这条边就为割边。 或:某条边是割边当且仅当删除该边后图变的不连通。 二.求割点,桥 使用dfs(深搜)来求割点和桥。先原创 2015-07-09 16:16:51 · 2937 阅读 · 0 评论 -
算法二:深度和广度优先搜索
图论 存储:图的邻接矩阵存储法 采用矩阵方式(二维数组)存储,定点个数(n)等于二维数组的大小(n*n)。 第(i,j)表示顶点i到顶点j是否有边,1表示有边,∞表示没有边。 如果是对称矩阵这说明是个无向图。 深度优先搜索depth first search(DFS),时间复杂度O(N^2) "下一步如何做"和"当下该如何做"是一样的,所以可以采用递归调用方法。 把每一种原创 2015-07-07 17:37:19 · 340 阅读 · 0 评论 -
平衡二叉树 之 AVL树
AVL树是最先发明的自平衡二叉查找树。AVL树以其发明者前苏联学者 G.M. Adelson-Velsky 和 E.M. Landis 名字而命名,他们在1962年的论文《An algorithm for the organization of information》中发表了它。转载 2016-12-27 13:43:40 · 369 阅读 · 0 评论