自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

转载 Prim 最小生成树算法

Prim 算法是一种解决最小生成树问题(Minimum Spanning Tree)的算法。和 Kruskal 算法类似,Prim 算法的设计也是基于贪心算法(Greedy algorithm)。Prim 算法的思想很简单,一棵生成树必须连接所有的顶点,而要保持最小权重则每次选择邻接的边时要选择较小权重的边。Prim 算法看起来非常类似于单源最短路径Dijkstra 算法,从源点出...

2015-01-31 09:23:00 149

转载 Kruskal 最小生成树算法

对于一个给定的连通的无向图 G = (V, E),希望找到一个无回路的子集 T,T 是 E 的子集,它连接了所有的顶点,且其权值之和为最小。因为 T 无回路且连接所有的顶点,所以它必然是一棵树,称为生成树(Spanning Tree),因为它生成了图 G。显然,由于树 T 连接了所有的顶点,所以树 T 有 V - 1 条边。一张图 G 可以有很多棵生成树,而把确定权值最小的树 T...

2015-01-31 09:22:00 154

转载 Kosaraju 算法检测有向图的强连通性

给定一个有向图 G = (V, E) ,对于任意一对顶点 u 和 v,有 u --> v 和 v --> u,亦即,顶点 u 和 v 是互相可达的,则说明该图 G 是强连通的(Strongly Connected)。如下图中,任意两个顶点都是互相可达的。对于无向图,判断图是否是强连通的,可以直接使用深度优先搜索(DFS)或广度优先搜索(BFS),从任意一个顶点出发,如...

2015-01-30 22:29:00 294

转载 Kosaraju 算法查找强连通分支

有向图 G = (V, E) 的一个强连通分支(SCC:Strongly Connected Components)是一个最大的顶点集合 C,C 是 V 的子集,对于 C 中的每一对顶点 u 和 v,有 u --> v 和 v --> u,亦即,顶点 u 和 v 是互相可达的。实际上,强连通分支 SCC 将有向图分割为多个内部强连通的子图。如下图中,整个图不是强连通的,但...

2015-01-30 22:28:00 294

转载 不相交集合森林的启发式策略

在文章《Union-Find 操作检测无向图有无环算法》中介绍了 Union-Find 算法的一个简单实现,使用一维数组来处理不相交集合数据结构(Disjoint-set data structure)。Union-Find 算法为该数据结构提供了两种非常有用的操作:Find:判断子集中是否存在特定的元素。可以用于检测是否两个元素存在于相同的子集中。Union:将两个不子...

2015-01-30 20:50:00 162

转载 Union-Find 检测无向图有无环路算法

不相交集合数据结构(Disjoint-set data structure)是一种用于跟踪集合被分割成多个不相交的子集合的数据结构,每个集合通过一个代表来标识,代表即集合中的某个成员。Union-Find 算法为该数据结构提供了两种非常有用的操作:Find:判断子集中是否存在特定的元素。可以用于检测是否两个元素存在于相同的子集中。Union:将两个不子集合并成新的子集合。...

2015-01-30 20:49:00 208

转载 深度优先搜索检测有向图有无环路算法

给定有向图 G = (V, E),需要判断该图中是否存在环路(Cycle)。例如,下面的图 G 中包含 4 个顶点和 6 条边。实际上,上图中存在 3 个环路:0->2->0, 0->1->2->0, 3->3。深度优先搜索(DFS:Depth-First Search)可以用于检测图中是否存在环。DFS 会对一个连通的图构造一颗树,如果在...

2015-01-30 20:48:00 1579

转载 深度优先搜索

深度优先搜索(DFS:Depth-First Search)是一种图搜索策略,其将搜索限制到 2 种操作:(a) 访问图中的一个节点;(b) 访问该节点的子节点;在深度优先搜索中,对于最新发现的顶点,如果它还有以此为起点而未探测到的边,就沿此边继续探测下去。当顶点 v 的所有边都已被探寻过后,搜索将回溯到发现顶点 v 有起始点的那些边。这一过程一直进行到已发现从源顶点...

2015-01-30 20:46:00 97

转载 广度优先搜索

广度优先搜索(BFS:Breadth-First Search)是一种图搜索策略,其将搜索限制到 2 种操作:(a) 访问图中的一个节点;(b) 访问该节点的邻居节点;广度优先搜索(BFS)由 Edward F. Moore 在 1950 年发表,起初被用于在迷宫中寻找最短路径。在 Prim 最小生成树算法和 Dijkstra 单源最短路径算法中,都采用了与广度优先搜...

2015-01-30 20:45:00 108

转载 背包问题

背包问题描述:有一个小偷在偷窃一家商店时发现有 n 件物品,第 i 件物品价值 vi元,重 wi磅,此处 vi和 wi都是整数。小偷希望带走的物品价值越高越好,但他的背包至多只能装下 W 磅的东西,W 为整数。那么,小偷应该带走哪些物品呢?背包问题可以包含不同的限定条件:部分背包问题:可以带走物品的一部分,而不必做出 0-1 的二分选择。0-1 背包问...

2015-01-30 20:44:00 109

转载 字符串算法

字符串算法字符串字符判重算法字符串反转算法字符串左旋算法字符串右旋算法字符串旋转匹配算法字符串包含算法字符串删除算法字符串原地替换算法字符串压缩算法字符串变位词检测算法字符串转整数算法字符串全排列算法字符串字典序组合算法字符串的(括号)生成算法字符串字符判重算法给定字符串,确定是否字符串中的所有字符全都是不同的。假设...

2015-01-30 20:43:00 169

转载 Apache Thrift 跨语言服务开发框架

Apache Thrift 是一种支持多种编程语言的远程服务调用框架,由 Facebook 于 2007 年开发,并于 2008 年进入 Apache 开源项目管理。Apache Thrift 通过 IDL 来定义 RPC 的接口和数据类型,然后通过代码生成工具来生成针对不同编程语言的代码,目前支持 C++, Java, Python, PHP, Ruby, Erlang, Perl, ...

2015-01-13 22:51:00 224

转载 开源跨平台数据格式化框架概览

说到数据格式化框架,就不得不提到Google 的 Protocol Buffers,Facebook 的 Thrift,还有 Apache Hadoop 推出的 Avro。Microsoft最近开源的Bond 也是一种用于数据格式化的可扩展框架,其适用的应用场景包括服务间通信、大数据存储和处理等。为什么会有这么多关于数据格式处理的框架?它们都在解决什么问题呢?我们先来观察一下典...

2015-01-12 17:02:00 123

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除