社区
C++ 语言
帖子详情
多模式匹配问题
Buttonfly_Huang
2009-02-06 04:49:37
加精
从一个文本文件中查找到是否有关键字列表中的关键字,关键字数量约为5万条左右,文本文件的大小不定。哪位大侠有没有更好的提议或方案?先谢过,重分悬赏!
...全文
2161
55
打赏
收藏
多模式匹配问题
从一个文本文件中查找到是否有关键字列表中的关键字,关键字数量约为5万条左右,文本文件的大小不定。哪位大侠有没有更好的提议或方案?先谢过,重分悬赏!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
55 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
virtualxmars
2012-10-27
打赏
举报
回复
这肯定是ACKMP算法了,将对模式的搜索转换成状态机的命中问题。可以提供的好处有:
1.速度快
2.不需要对数据进行回退,也就是不需要所谓的数据分块,然后再分别对分块数据搜索、去重这些多余的操作
至于具体过程可参见《数据结构与算法》、《算法导论》等书籍,或谷歌、百度
当然了,难点也有,就是对算法的理解,以及对状态key数组的生成
jameslau6
2010-10-27
打赏
举报
回复
看到这么多人的回复,感觉自己才刚上路呢
cnhome
2009-08-17
打赏
举报
回复
[Quote=引用 38 楼 wtudnuemc 的回复:]
不错不错,俺就支持你了,,,顶你个肺呀
[/Quote]
正则表达式是万万不可的
remain5000
2009-05-11
打赏
举报
回复
不是有Blizzard mpq?
mLee79
2009-02-16
打赏
举报
回复
比较无聊的用 有穷自动机 写了一个, 在 16M 的随机的文本中搜索, 内存耗用大约 100字节/模式, 如果不保存原始模式字符串则为 50字节/模式左右, 稍微改下可以支持正则表达式形式的模式字符串
64K 模式的情况下 耗时3.1秒左右, 大约 300K 次匹配.
32K 模式的情况下 耗时1.6秒左右, 大约 155K 次匹配.
16K 模式的情况下 耗时1.3秒左右, 大约 76K 次匹配.
10K 模式的情况下 耗时1.1秒左右, 大约 48K 次匹配.
不想整理代码了, 就扔在 http://x4c.googlecode.com/svn/trunk/x4c/build/win32/mpm/mpm.c 了, 仅供参考
barech
2009-02-16
打赏
举报
回复
很高深,顶一下吧,继续关注这个帖子
不过,楼主确实应该先提出自己的方法
bbqqqbq
2009-02-16
打赏
举报
回复
类似于脏字处理啊,看看这些对你有没有帮助
http://www.cnblogs.com/xingd/archive/2008/02/01/1061800.html
http://www.cnblogs.com/bbqqqbq/archive/2008/12/10/1352142.html
ggeneral2
2009-02-16
打赏
举报
回复
50000个不算少。可以用HASH。甚至放在数据库里。用数据库查询。省事情。如果是在单片机上运行,那只能用稍微低级点及费脑点的办法了。
feng_0922
2009-02-15
打赏
举报
回复
看不太懂,来学习学习。
bingzhu
2009-02-15
打赏
举报
回复
lz可以变相的找入侵检测模式匹配方面的算法 以前见过一个算法性能过的去也不怎么吃内存 算法名忘了叫啥-_-!
PepperYoung
2009-02-15
打赏
举报
回复
多模匹配,
pattern数量如果很少,
通常情况下(文本),多模bm系的算法性能很好。如果为了防攻击,追求最差情况下的性能,如楼上同学所说,建议用ac系的算法。
对于这种模式,(pattern数量较多、文本长度也可能很大)。
bm系(mwm),性能下降得很厉害;ac系的算法,内存基本吃不消。
通常采用,压缩trie树的办法进行,
例如,中文切词(几十万词),就是用的这个算法。
具体来说,建议用double array压缩trie tree。性能、内存使用综合素质比较高。
个人觉得实现得比较好的double array是下面这个日本人写的:http://chasen.org/~taku/software/darts/
希望有所帮助
glkyer
2009-02-14
打赏
举报
回复
学习了!
:)
cnhome
2009-02-13
打赏
举报
回复
:)hash比较费空间,看你的数据量了
DalyQiao
2009-02-13
打赏
举报
回复
用正则表达式
haowen_hero
2009-02-13
打赏
举报
回复
!
独行侠客2
2009-02-13
打赏
举报
回复
你这个问题规模可能较大,要构造有实用价值的算法,还得找另外的约束,因此,必须要描述你的应用场景。
梦无痕123
2009-02-13
打赏
举报
回复
关键字组合哈希索引,文本分词查找
smq123
2009-02-13
打赏
举报
回复
你这个问题规模可能较大
wtudnuemc
2009-02-13
打赏
举报
回复
不错不错,俺就支持你了,,,顶你个肺呀
qq709394a
2009-02-12
打赏
举报
回复
ewwewe
加载更多回复(32)
C++之多
模式匹配
问题
博客围绕多
模式匹配
问题
展开,介绍了基于前缀、后缀、子串搜索的多模式串匹配算法,指出大多使用字典树。详细讲解了字典树的定义、构建及操作的时间复杂度,还阐述了AC自动机的构造步骤,并通过实例说明其匹配原理。
CI20.8--多模式串匹配
问题
本文介绍了多模式串匹配
问题
,并提供了使用后缀trie树、后缀树及AC自动机三种方法实现的代码示例。详细解析了每种方法的原理与时间复杂度。
【Python3】多
模式匹配
问题
本文介绍了Python 3中Aho - Corasick算法,它是高效的多模式字符串匹配算法,可一次性查找多个模式字符串,时间复杂度为线性。文中说明了其主要特点、典型应用,还给出安装库及使用示例,包括构建自动机、匹配模式等,该算法适用于大规模文本匹配场景。
精确多
模式匹配
问题
-关键词树、后缀树
本文介绍了一种多
模式匹配
问题
的解决方法,通过构建关键词树和后缀树来提高搜索效率。关键词树能快速查找多个模式,而后缀树则用于文本中的
模式匹配
。这两种树结构都利用了树形结构的特点来实现高效的
模式匹配
。
57、索引多
模式匹配
与超图最大割
问题
研究
本文探讨了索引多
模式匹配
中的动态子模式库维护及超图最大割
问题
。重点介绍了动态子模式库的创建、销毁、分割和合并操作及其时间复杂度,同时分析了支持locate⁻¹查询的方法。此外,还研究了超图最大割
问题
的算法实现与参数化复杂度,提出了AA-r-SS
问题
,并讨论了其FPT性质。
C++ 语言
65,210
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章