最大匹配算法 (Maximum Matching)】的更多相关文章

之所以研究这个算法,是因为最近在研究NLP中文的分词,所谓分词就是将一个完整的句子,例如“计算语言学课程有意思”,分解成一些词组单元“计算语言学,课程,有,意思”. “最大匹配法” 在中文分词中有所应用,因此这里介绍一下. “最大匹配法” 分为正向匹配和逆向匹配,这里先看正向匹配. 算法思想: 正向最大匹配算法:从左到右将待分词文本中的几个连续字符与词表匹配,如果匹配上,则切分出一个词.但这里有一个问题:要做到最大匹配,并不是第一次匹配到就可以切分的 .我们来举个例子: 待分词文本: sente…
前几天给舍友讲这题的时候感觉挺有意思的,就贴上来吧... 题目链接:1038E - Maximum Matching 题目大意:有\(n\)个棒子,每个条两端有颜色\(c1,c2\)以及他的价值\(v\),要求选取若干个棒子拼接起来(要求连接处的颜色相同,棒子可以反转),求最大价值总和. 题解:设\(c1==c2\)的为同色棒子,反之为异色 可以发现偶数个异色棒子可以拼为一个长长的同色棒子,奇数个则可以拼为一个长长的异色棒子,因此可以预处理\(F[i][j]\)表示若将所有\((i,j)\)当做…
E - Maximum Matching 思路: 欧拉图 定理:一个度数为奇数的点的个数小于等于2的联通图存在欧拉回路 对于这道题目的图,点的个数为4,所以最坏的情况下4个点的度数都为奇数,在这种情况下只要删去一条边就可以满足条件了 欧拉回路算法:大圈小圈法,从起点开始跑每条边,把每条遍标记一下,直到跑到某个位置不能跑了,把点如栈,最后倒着输出 所以枚举删掉的边,跑联通图,最后判断联通图是否符合条件,复杂度:O(n^2) 代码: #pragma GCC optimize(2) #pragma G…
 E. Maximum Matching 题目链接:https://codeforces.com/contest/1038/problem/E 题意: 给出n个项链,每条项链左边和右边都有一种颜色(范围1~4),然后每条项链都有对应的价值. 现在你可以任意改变项链的位置,也可以交换左右两边的颜色,问怎么做才能得到最大的价值.一条项链得到价值,就要求其左边的颜色和左边的项链右边颜色相等,并且右边的颜色和右边项链左边的颜色相等. 题解: 分析就可以发现这个题就是找一条权值最大的欧拉路径(每条边刚好经…
题目:Maximum Matching 传送门:http://codeforces.com/contest/1038/problem/E 分析: 一个块拥有{color1,val,color2},两个块相连要求相连处颜色相同,求价值最大的连接方案. 关心到color最大为4,以4种颜色为点,对于每个块,在(color1,color2)间连一条边权为(val)的边,建一张4个点n条边的图.显然,在图上选一条价值最大的路径(或回路)就是答案了. 方法一: 如果这张图本身就是Eular路径(或Eula…
题目请戳这里 题目大意:裸的二分匹配. 题目分析:数据比较强,用来测模版的.这题用hungry跑着会比较吃力,所以用hopcroft-karp算法.这个算法较hungry高效是因为每次bfs找到一个增广路集,然后用dfs进行多路增广,同时找多条增广路,从而效率大增.其实怎么看hk算法都是个没有边权的dinic啊. 参照着wikipedia 敲了一个hk,效率貌似不高啊... 详情请见代码: #include <iostream> #include<cstdio> #include&…
题目大意: 有n1头公牛和n2头母牛,给出公母之间的m对配对关系,求最大匹配数.数据范围:  1 <= n1, n2 <= 50000, m <= 150000 算法讨论: 第一反应KM直接上,第二反应,KM是O(N^2 * M)的,会T成狗. 第二反应,看看大家是怎么做的.后来发现了一个名字叫 Hopcroft-Carp的二分图最大匹配的算法.可以在O(sqrt(n) * m)的时间内解决二分图的最大匹配问题.非常适合大数据的二分图匹配.所以就学习了一下. 我们知道,普通的匈牙利慢的原…
题目传送门:http://codeforces.com/problemset/problem/1038/E 题意:给出$N$个方块,每个方块有左右两种颜色$a,b$(可以翻转使左右两种颜色交换)和一个权值$w$.当某个方块的右侧颜色与另一个方块的左侧颜色相同,它们可以连成一个大块,一个大块可以由若干个小块像这样连成(一个大块中可以只包含一个小块).定义大块的权值为组成它的所有小块的权值和,问可以连成的大块中最大的权值.$N \leq 100 , a , b \leq 4 , w \leq 10^…
---题面--- 题解: 感觉还是比较妙的,复杂度看上去很高(其实也很高),但是因为n只有100,所以还是可以过的. 考虑一个很暴力的状态f[i][j][x][y]表示考虑取区间i ~ j的方格,左右端点颜色分别是x, y.的最大值. 那么有如下转移 1,直接继承子区间的答案 f[i][j][x][y] = max(f[i][k][x][y], f[k + 1][j][x][y]);//因为子区间就这2种,毕竟子区间一定比当前区间小,因此不靠在端点上的区间一定已经被靠在端点上的区间给取过max了…
可能写了个假算法 假设定义:含有一个欧拉路的图为类欧拉图 欧拉路的定义:一个无向连通图中,存在一条路径对所有边都遍历且仅遍历一次:判断方法:该连通图中度为奇数的点的个数不能超过2,即为0或者2 题目解法: 对每一条数据a,b,c,想象成a点与b点之间连了一天值为c的边,则此图共有4个点 问题变成求图中一个合法的类欧拉图的边权和最大值 此值等于任意一个连通图的边权值之和,但一种情况除外,即此图中度为奇数的点个数超过2,对应此题中,度为奇数的点的个数即为4,此时连通图的所有边权和大于此图中合法的类欧…
本文地址:https://www.cnblogs.com/oberon-zjt0806/p/12409536.html #NLP-1 最大匹配算法(MM) 最大匹配算法(Maximum Matching)被用于对一个文段进行词语划分(Word Segmentation). 注意 这是词元化(Tokenization)算法 此方法不适用于无分隔符的字母语言(e.g.:德语.使用假名替代汉字的日语.被取消分词符的英文等) 但是对汉语这类无词间分隔符但不依赖字母的语言效果拔群 输入输出 graph L…
Ref MIT: lecture-13-incremental-improvement-max-flow-min-cut/ Ford Fulkerson algorithm for finding maximal flow in a flow network: Keep adding flow through new augmenting paths for as long as it is possible; When there are no more augmenting paths, y…
  半全局立体匹配算法Semi-Global Matching,SGM由学者Hirschmüller在2005年所提出1,提出的背景是一方面高效率的局部算法由于所基于的局部窗口视差相同的假设在很多情况下并不成立导致匹配效果较差:而另一方面全局算法虽然通过二维相邻像素视差之间的约束(如平滑性约束)而得到更好的匹配效果,但是对内存的占用量大,速度慢.为了结合两者的优点,同时避免两者的缺点,SGM算法依旧采用全局框架,但是在计算能量函数最小化的步骤时使用高效率的一维路径聚合方法来代替全局算法中的二维最…
本文先介绍下mmseg的概念和算法,再说下mmseg4j-solor的3个分词器用法 1.mmseg概念 mmseg是用于中文切词的算法,即Maximum Matching Segment,最大匹配分词.根据在词典(语料库)中的匹配情况把原文切分成一个个词语 2.两种方法 为了便于后续介绍,假设要切分的原文是C1 C2 C3 C4 C5 C6, C表示一个汉字. 简单最大匹配:从头依次查找最长的词语,以此切割.如 [研究生], [研究, 生] 复杂最大匹配:是简单最大匹配的变体,引入三词块的概念…
最近碰到一个分词匹配需求--给定一个关键词表,作为自定义分词词典,用户query文本分词后,是否有词落入这个自定义词典中?现有的大多数Java系的分词方案基本都支持添加自定义词典,但是却不支持HDFS路径的.因此,我需要寻找一种简单高效的分词方案,稍作包装即可支持HDFS.MMSeg分词算法正是完美地契合了这种需求. 1. MMseg简介 MMSeg是蔡志浩(Chih-Hao Tsai)提出的基于字符串匹配(亦称基于词典)的中文分词算法.基于词典的分词方案无法解决歧义问题,比如,"武汉市长江大桥…
I. 正则表达式(regular expression) 正则表达式是专门处理文本字符串的正式语言(这个是基础中的基础,就不再详细叙述,不了解的可以看这里). ^(在字符前): 负选择,匹配除括号以外的字符.比如[^A-W]匹配所有非大写字符:[^e^]匹配所有e和^以外的字符 |:或者.比如a|b|c等价于[a-c] *:匹配大于等于0个符号前面的字符:+:匹配至少一个前面的字符:.:匹配所有单个字符:?:匹配0或1个前面的字符 \:转义符:将特殊字符转化为简单字符.比如.匹配所有字符,.匹配…
Tian Ji -- The Horse Racing Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 19   Accepted Submission(s) : 5 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description Here is a…
动态规划 1.背包问题 (1)01背包 ,n) DFR(v,V,C[i]) F[v]=max(F[v],F[v-C[i]]+W[i]); } //初始化时 //若背包不一定装满F全初始化为0 //若装满 F[0]=0 其他为-inf   (2)全然背包 ,n) FOR(v,C[i],V) {F[v]=max(F[v],F[v-C[i]]+W[i]);} } (3)多重背包 ; ZeroOnePack(C[i]*M[i],W{i]*M[i]) } }   //O(VN) 单调队列? ? (4)多重…
算法分析: 这个问题很显然可以转化成一个二分图最佳匹配的问题.把田忌的马放左边,把齐王的马放右边.田忌的马A和齐王的B之间,如果田忌的马胜,则连一条权为200的边:如果平局,则连一条权为0的边:如果输,则连一条权为-200的边. 然而我们知道,二分图的最佳匹配算法的复杂度很高,无法满足N=2000的要求. 我们不妨用贪心思想来分析一下问题.因为田忌掌握有比赛的“主动权”,他总是根据齐王所出的马来分配自己的马,所以这里不妨认为齐王的出马顺序是按马的速度从高到低出的.由这样的假设,我们归纳出如下贪心…
Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 18291    Accepted Submission(s): 5327 Problem Description Here is a famous story in Chinese history. "That was about 2…
田忌赛马 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 Here is a famous story in Chinese history. "That was about 2300 years ago. General Tian Ji was a high official in the country Qi. He likes to play horse racing with the king and others." "Both o…
田忌赛马 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 Here is a famous story in Chinese history. "That was about 2300 years ago. General Tian Ji was a high official in the country Qi. He likes to play horse racing with the king and others." "Both o…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1052 Problem Description Here is a famous story in Chinese history. "That was about 2300 years ago. General Tian Ji was a high official in the country Qi. He likes to play horse racing with the king and…
Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 17221    Accepted Submission(s): 4998 Problem Description Here is a famous story in Chinese history. "That was about 2…
Here is a famous story in Chinese history. That was about 2300 years ago. General Tian Ji was a high official in the country Qi. He likes to play horse racing with the king and others. Both of Tian and the king have three horses in different classes,…
Tian Ji -- The Horse Racing Problem Description Here is a famous story in Chinese history. "That was about 2300 years ago. General Tian Ji was a high official in the country Qi. He likes to play horse racing with the king and others." "Both…
双数组Trie树(Double-array Trie, DAT)是由三个日本人提出的一种Trie树的高效实现 [1],兼顾了查询效率与空间存储.Ansj便是用DAT(虽然作者宣称是三数组Trie树,但本质上还是DAT)构造词典用作初次分词,极大地节省了内存占用.本文将简要地介绍DAT,并实现了基于DAT的前向最大匹配的中文分词算法. 1. Trie树 两种实现 Trie树(也称为字典树.前缀树)是一种常被用于词检索的树结构,其思想非常简单:利用词的共同前缀以达到节省空间的目的:基本的实现有arr…
D - D Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u     Description Here is a famous story in Chinese history. "That was about 2300 years ago. General Tian Ji was a high official in the country Qi. He likes to play…
Tian Ji -- The Horse Racing Here is a famous story in Chinese history. That was about 2300 years ago. General Tian Ji was a high official in the country Qi. He likes to play horse racing with the king and others. Both of Tian and the king have three…
 Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和信息处理领域,适用于行业/垂直搜索.论坛/站内搜索.数据库搜索.文档/文献检索.信息检索.数据挖掘等应用场景,用户可以免费下载使用:同时针对有实际需要的客户,还提供专业的搜索技术与本地化的Sphinx技术支持服务.   1. 中文分词算法-MMSeg算法原理 要理解mmseg算法,首先来理解一下chunk,它是MMSeg分词算法中一个关键的概念.Chunk中包含依据上下文…