社区
数据结构与算法
帖子详情
放假了,放个算法问题讨论
zhjie374
2005-04-29 10:26:05
要求:
扫描文件(文本文件),去看里面是否含有我定义的字符串集。
注意,要匹配的不是一个串,而是多个串。
为了简单,先扫英文的好了。
如果你的方法是一个串一个串的利用KMP BM比较,似乎没有什么意思。
谢谢参与
...全文
348
22
打赏
收藏
放假了,放个算法问题讨论
要求: 扫描文件(文本文件),去看里面是否含有我定义的字符串集。 注意,要匹配的不是一个串,而是多个串。 为了简单,先扫英文的好了。 如果你的方法是一个串一个串的利用KMP BM比较,似乎没有什么意思。 谢谢参与
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhjie374
2005-05-13
打赏
举报
回复
google 的desktop可以下载安装的。
专门用来搜索本地机器上文件内的信息的。
比如你有很多WORD文件,想搜索内容“深入浅出”,直接就搜索出来了。
rancpine
2005-05-13
打赏
举报
回复
找个google的desktop装了试试
我下的这个软件是Beta版的
安装成功以后,软件提示要建立一个一次性建立的索引.
当然在这里不是讨论它怎么去建立索引,而是它为什么要建立索引?
很显然,要改善搜索的速度.
我试着查询了几个关键字,搜索的速度十分快,基本是瞬间就出结果.
然后我试图找它建立的索引文件,没找到.
在网上找到的一篇文章中提到"Google桌面搜索应用需要500 MB硬盘空间、最小128 MB RAM,推荐采用400 MHz(或更快)的Pentium处理器。"(http://tech.sina.com.cn/i/2005-03-07/1734543877.shtml)
但是我看了一下google桌面搜索的安装目录,才2MB
根据上述情况,我认为,这个软件基本上是通过海量的索引提供速度的 (速度好快~ -.-!)
就是说,是用了一个巨大的hash的表
但是是不是完全的hash我就不好说了
猜测应该不是,因为有个500MB的空间限制,可能是个改进版的hash法
rightyeah
2005-05-11
打赏
举报
回复
我还是觉得一个一个模式去匹配比较快,尤其是当各个模式相互没有什么关联的时候
rancpine
2005-05-11
打赏
举报
回复
没用过...即使用过也不知道哪个是google的desktop搜索,汗~
简介一下?
rancpine
2005-05-11
打赏
举报
回复
用unicode是个好主意呀
如果用unicode的话,建树时就应该用一个16位的二进制数来表示一个单位字.
扩展到汉字的匹配上的确会出现如楼上说述的问题:汉字串大部分都是无关的,那么建出来的树的大小就不好估计了,但是树的节点数一定等于字符串集里不同的字符数.所以,我的意思是,即使把一堆没有联系的串形成一棵用于搜索的树,也只好忍受这个复杂度的树-.-!
不知道有没有优化的方法... 感觉我的思路比较常规,基本上是无可奈何的办法
Zephyrzzz
2005-05-11
打赏
举报
回复
用后缀树吧.
zhjie374
2005-05-11
打赏
举报
回复
你们有没有用过google的desktop搜索。
非常的快,不知道它怎么做的?
树肯定在目前是一个最好的办法。但是想到UNICODE我就觉得不好实现。
zhjie374
2005-05-10
打赏
举报
回复
恩,想法不错。没有时间实现。
但是理论上没有问题。
但是如果要改进成中文呢?UNICODE?
树的节点怎么弄?
GetTheWorld
2005-05-10
打赏
举报
回复
似乎要把一堆没有联系的串形成一棵用于搜索的树 ?? 呵呵 我不知道
GetTheWorld
2005-05-09
打赏
举报
回复
楼上的想法不错
rancpine
2005-05-09
打赏
举报
回复
没看出门道……单纯支持下讨论
ps:字符串集不是一个大号的字符串么?-.-!
or,题目的意思是把所有能匹配的,又在字符串集中有定义的串,都找出来?
rancpine
2005-05-09
打赏
举报
回复
我的想法:
首先要建一颗树,每一层上最多有26个节点,每一条从根到叶子的路径都对应字符串集里的一个词。
然后对这个树用改进版的KMP,就是每次比较的时候对每一层的节点都枚举一遍,如果节点A匹配当前字符,则从节点A的子孙节点里枚举匹配下一个字符。所以,如果在节点A的子孙节点中找不到可匹配当前字符的节点,就象KMP算法一样重新开始匹配……
zhjie374
2005-05-09
打赏
举报
回复
字符串集就是说一个集合{study,some,ok,nba,jordan}
在你的目标文本中查看是否含有其中的一个,并记录。
qrlvls
2005-05-09
打赏
举报
回复
学习
zhjie374
2005-05-08
打赏
举报
回复
放假回来了,说了半天都是停留在表面。
向下深入的没有。
继续讨论。
yelling
2005-05-08
打赏
举报
回复
好像是编译里的用到的算法阿
lobatt
2005-05-03
打赏
举报
回复
我想应该可以先把自己的pattern集按字母顺序生成一颗树,共同前缀作为树枝节点,完整的一个pattern作为叶子节点,然后用这棵树来匹配文件,这之后用什么匹配算法都无所谓了,哪个快用那个
,只是算法可能要改写一下,会稍微复杂一点
trackant
2005-05-03
打赏
举报
回复
用有限状态自动机即可,不需要一个一个匹配,而且允许使用正则表达式的串形式。理论上可以化简到最少状态数来识别给定的模式集。
考虑一下lex的工作原理就明白了
hj5182001
2005-04-30
打赏
举报
回复
什么叫多模式匹配?
ywqzxj
2005-04-30
打赏
举报
回复
我的理解:程序总得一个个去比较,或许按不同的顺序效率不一样,要不再研究“定义的字符串集”里字符串之间有什么内在联系吧(高层次KMP、BM?)。
加载更多回复(2)
Algorithmic-Resources:精选主题理论和
问题
的清单,可帮助您入门竞争编码
算法
资源主题明智的理论和
问题
的策划清单,可帮助您开始竞争编码。话题 数组
问题
糖果-阵列前缀和后缀假日季节最大数量弹珠波阵 二元搜索和三元搜索二进制搜索:利用被排序的数组的属性在非线性时间内获得
问题
答案的...
软件测试中如何测试
算法
?
而我们今天
讨论
的软件测试中的
算法
,对应的英文单词为Algorithm ,专指计算机处理复杂
问题
的程序或指令。随着最近几年人工智能等领域的快速发展,
算法
受到前所未有的重视,
算法
测试也随之兴起。为了让同学们能对
算法
测试...
算法
基础:k最近邻
算法
本博客所有内容均整理自《
算法
图解》,欢迎
讨论
交流~ 了解过机器学习这个概念,一定知道有一种名为k最近邻的
算法
,简称KNN。 对于k最近邻
算法
的定义,百度百科是这样给出的:K最近邻(k-Nearest Neighbor,KNN)分类...
数据结构之字符串匹配
算法
(BF
算法
和KMP
算法
)
字符串匹配
算法
: 就是给定两个串,主串(s)和子串(sub), 查找子串是否在主串里面,如果找到便返回子串在主串中第一个元素的位置下标,否贼返回-1,。 在这里我 们
讨论
的时候主要用字符串来举例实现。 总共有两...
算法
面试必备-----数据分析常见面试题
算法
面试必备-----数据分析常见面试题
算法
面试必备-----数据分析常见面试题统计学
问题
问题
:贝叶斯公式复述并解释应用场景
问题
:朴素贝叶斯的理解概率
问题
问题
:扑克牌54张,分成2份,求这2份都有2张A的概率数据库...
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章