`
文章列表
Skip List(跳跃表)原理详解与实现   本文内容框架: §1 Skip List 介绍 §2 Skip List 定义以及构造步骤   §3 Skip List 完整实现
中文分词基本算法介绍 本文内容框架: 1、基于词典的方法(字符串匹配,机械分词方法) 2基于统计的分词(无字典分词) 3基于规则的分词(基于语义) 4基于字标注的中文分词方法 5基于人工智能技术的中文分词方法 6中文分词的难点 7小结       基于词典的方法、基于统计的方法、基于规则的方法等 1、基于词典的方法(字符串匹配,机械分词方法) 定义:按照一定策略将待分析的汉字串与一个“大机器词典”中的词条进行匹配,若在词典中找到某个字符串,则匹配成功。 按照扫描方向的不同:
散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置(f(key))。查找时,根据这个确定的对应关系找到给定值key的映射f(key)。这里的对应关系f称为散列函数。 散列技术既是一种存储方法,也是一种查找方法。   散列函数的构造方法 散了函数的构造原则:1.计算简单,2.散列地址分布均匀 构造方法: 1.直接定址法:需要预先知道关键字的分布情况,适合查找表较小且连续的情况。 f(key)=a*key+b        直接取关键字的么讴歌线性函数值为散列地址。 2.数字分析法:通常适合处理关键字位数比较大的情况, ...
error C2248: “std::basic_ios<_Elem,_Traits>::basic_ios”: 无法访问 private 成员(在“std::basic_ios<_Elem,_Traits>”类中声明)问题解决 原因好像是流对象是不允许复制,所以在传给函数作为参数是应该传入引用,这样就没有问题了 void parse_text(string file_name,ofstream out)  改成: void parse_text(string file_name,ofstream &out)  就没有问题了……
最长公共子串、最长公共子序列、字符串编辑距离   最长公共子串   问题描述 如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串二中,则字符串一称之为字符串二的子串。注意,并不要求子串(字符串一)的字符必须连续出现在字符串二中。 基本方法 大凡基本方法都是枚举方法,这里其实就枚举所有长度相等的子串进行比较。枚举方法时没有考虑一切实际情况的,这样就有很多“漏洞”,就可以有很多优化的方法。   动态规划 ╔ 使用dp[i][j]表示 以x[i]和y[j]结尾的最长公共子串的长度,因为要求子串连续,所以对于X[i]与Y[j]来讲,它们要么与之前的公共子串构成新的 ...
本文内容框架: §1 连续子数组最大和 基本方法、分治策略求解、动态规划求解 §2 最长递增子序列 排序+LCS求解
  最长重复子串和最长不重复子串求解 本文内容框架: §1 最长重复子串 基本方法、KMP算法求解、后缀数组求解 §2 最长不重复子串
字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法一网打尽     本文内容框架: §1 Boyer-Moore算法 §2 Horspool算法 §3 Sunday算法 §4 KMP算算法 §5 KR算法 §6 AC自动机 §7 小结    §1 Boyer-Moore(BM)算法   Boyer-Moore算法原理   Boyer-
今天使用STL的map进行嵌套使用,然后出现这个错误:error C2664: “std::map<_Kty,_Ty>::map(const std::map<_Kty,_Ty> &)”: 不能将参数 1 从“std::map<_Kty,_Ty>”转换为“const std::map<_Kty,_Ty> &” 放上google下出现的全是另外另外一个关于使用pair和make_pair的错误。 这个错误相对少些,看下面代码,就知道是map的类型不对应,我这是把map<vector<sentence>:: ...
         整理图算法有一段时间了,现在小有规模,做一个汇总,方便查阅和完善。        对图算法一直都只是了解的水平,偶尔也理解一两个算法,但心里都没底,就系统整理了图算法的几个基本有重要主题:图遍历、拓扑排序和关键路径、最小生成树、最短路径、二分图、强连通、最大流和最小费用最大流。其中最大流和最小费用最大流还没最终完成,由于暂时没有大量时间学习这块知识就先搁置,留待日后继续完成。   下面贴上这六篇目录        图遍历算法——DFS、BFS、A*、B*和Flood Fill 遍历算法大串讲        拓扑排序和关键路径        最小生成树——Pri ...
有向强连通和网络流大讲堂——史无前例最大流(最小割)、最小费用最大流 本文内容框架(未完成): §1网络流的基本概念 §2最大流问题 §2.1Ford-Fulkerson方法(增大路径最大流算法) §2.2Edmonds-Karp(EK)算法实现 §2.3Dinic算法 §2.4SAP算法(最短路径增广算法)
二分图大讲堂——彻底搞定最大匹配数(最小覆盖数)、最大独立数、最小路径覆盖、带权最优匹配 文本内容框架: §1图论点、边集和二分图的相关概念和性质 §2二分图最大匹配求解 匈牙利算法、Hopcroft-Karp算法 §3二分 ...
图遍历算法——DFS、BFS、A*、B*和Flood Fill 遍历算法大串讲 本文内容框架: §1 图遍历DFS和BFS两种实现 §2 A*算法 §3 B*算法 §4 Flood Fill算法 §5 小结
最小生成树——Prim、Kruskal、Sollin(Boruvka)   本文内容框架: 1.Prim算法及其基于优先队列实现       2.Kruskal算法       3.Sollin算法 对于最小生成树,有两种算法可以解决。一种是Prim算法,该算法的时间复杂度为O(n²),与图中边数无关,该算法适合于稠密图,而另外一种是Kruskal,该算法的时间主要取决于边数,它较适合于稀疏图。   Prim算法   Prim算法描述   设图G =(V,E),其生成树的顶点集合为U。 ①、把v0放入U。 ②、在所有u∈U,v∈V-U的边(u,v)∈E中找一条 ...
拓扑排序和关键路径   拓扑排序 拓扑排序最大的用途就是判断一个有向图是否有环,当然判断还有一种方法就是Floyd算法。如果用邻接表的话拓扑排序的时间复杂度是O(N*E),邻接矩阵是O(N^2),N表示顶点数,E表示边数,Floyd时间复杂度是O(N^3)。   拓扑排序方法可分为无前趋的顶点优先的拓扑排序方法和无后继的顶点优先的拓扑排序方法。 基本拓扑排序算法步骤 1.在有向图中任选一个没有前驱的顶点输出 2.从图中删除该顶点和所有以它为起点的边 3.重复1和2,直到全部顶点都以输出   拓扑排序的实现(无前趋的顶点优先的拓扑排序方法) 邻接表实现(使用stac ...
Global site tag (gtag.js) - Google Analytics