随笔分类 -  算法4

摘要:Kruskal算法(又称克鲁斯卡尔算法)。 其思想是:首先将图看成是由一个个孤立的顶点组成,然后按边的权重从小到大处理,将顶点连接起来, 并且要保证选取的边不会跟已选取的边构成环,当选出 V - 1 条边时最小生成树生成完成。 Kruskal 算法每次选取出最小的横切边(横切边就是连接最小生成树及其 阅读全文
posted @ 2022-06-05 21:34 廖子博 阅读(62) 评论(0) 推荐(0) 编辑
摘要:平衡查找树 理想情况下,我们希望能够保持二分查找树的平衡性。 在一棵含有 N 个结点的树中,我们希望树高为 log2N。 2-3 树 2-3 树由两种结点组成: 2- 结点:有一个键和两条链接 3- 结点:有两个键和三条链接 向一棵 2-3 树插入一个键值对: 如果查找结束于一个 2- 阅读全文
posted @ 2022-06-05 19:43 廖子博 阅读(57) 评论(0) 推荐(0) 编辑
摘要:单词查找树 单词查找树适用于以字符串为键的查找算法。 性能: 查找命中所需的时间与被查找的键的长度成正比 查找未命中只需检查若干个字符 以字符串为键的符号表的 API: public interface StringST<Value> { void put(String key, Value val 阅读全文
posted @ 2022-06-04 18:07 廖子博 阅读(49) 评论(0) 推荐(0) 编辑
摘要:Boyer Moore 算法思想:将模式字符串与文本字符串从右往左进行匹配。 Boyer Moore 需要先对模式字符串进行预处理,根据模式字符串生成 right[] 数组,记录字符集中的字符在模式字符串中最右出现的位置。 当将模式字符串从右往左对比出现不匹配时,会有以下情况: 文本字符 text. 阅读全文
posted @ 2022-06-04 13:47 廖子博 阅读(32) 评论(0) 推荐(0) 编辑
摘要:KMP 是发明此算法的三个人名字首字母。(Knuth, Morris, Pratt) 暴力查找每次匹配失败时都需要回退指针 i,并重新对比已经检查过的字符。 KMP 通过对模式字符串进行预处理,生成一个确定有限状态自动机, 将文本字符串的字符依次放到自动机中,可以直接得到需要和文本字符串下一个字符 阅读全文
posted @ 2022-06-03 17:22 廖子博 阅读(51) 评论(0) 推荐(0) 编辑
摘要:无向图 无向图 API: public abstract Graph { Graph(int V); // 创建一个含有 V 个顶点的图 Graph(In in); // 从标准输入读取一幅图 int V(); // 顶点数 int E(); // 边数 void addEdge(int v, in 阅读全文
posted @ 2022-06-01 23:39 廖子博 阅读(42) 评论(0) 推荐(0) 编辑
摘要:数据压缩算法 霍夫曼编码 霍夫曼编码(Huffman Coding) 霍夫曼编码是一种能够大幅压缩自然语言文件空间的数据压缩技术。 主要思想:用较少的比特表示出现频率高的字符,用较多的比特表示出现频率低的字符。 变长前缀码 前缀码:如果所有字符编码都不会成为其他字符编码的前缀,那么就不需要分隔符了。 阅读全文
posted @ 2022-06-01 15:50 廖子博 阅读(133) 评论(0) 推荐(0) 编辑
摘要:1.5 union-find 算法 union-find 算法用于检查两个触点是否属于同一分量。 union-find 算法 API: public class UF { UF(int N); // 以整数标识(0 到 N-1) 初始化 N 个触点 void union(int p, int q); 阅读全文
posted @ 2022-05-31 20:08 廖子博 阅读(31) 评论(0) 推荐(0) 编辑
摘要:最小生成树 加权图是一种为每条边关联一个权值或是成本的图模型。 最小生成树:图的生成树是它的一棵含有其所有顶点的无环连通子图。 一幅加权图的最小生成树(MST)是它的一棵权值(树中所有边的权值之和)最小的生成树。 计算最小生成树的两种经典算法: Prim 算法 Kruskal 算法 抽象数据类型 加 阅读全文
posted @ 2022-05-31 18:31 廖子博 阅读(97) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示