一道和搜索引擎相关的面试题

myoswin7 2009-03-12 01:01:57
有一个很大很大的敏感词词库,大约有几百万条词目,现在要分析一个网页,找出这个网上上包含的敏感词。要求时间复杂度和空间复杂尽可能的小。咋办?
...全文
478 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
jwli81 2009-09-22
  • 打赏
  • 举报
回复
trie 树
xun04xun 2009-09-01
  • 打赏
  • 举报
回复
dahaidao 2009-08-26
  • 打赏
  • 举报
回复
词库:分为敏感词库,非每感词库
词库:常用词库,非常用词.
hzbigdog 2009-08-25
  • 打赏
  • 举报
回复
自动机(automata )
  自动机 automaton 原来是模仿人和动物的行动而做成的机器人的意思。但是现在已被抽象化为如下的机器。时间是离散的(t=0,1,2……),在每一个时刻它处于所存在的有限个内部状态中的一个。对每一个时刻给予有限个输入中的一个。那么下一个时刻的内部状态就由现在的输入和现在的内部状态所决定。每个时刻的输出只由那个时刻的内部状态所决定。作为自动机的例子可以举出由McCulloch-pitts的神经模型组合所得到的神经网络模型、数字计算机等。
[编辑本段]形式描述
  对信号序列进行逻 辑 处理的装 置。在自动控制领域内,是指离散数字系统的动态数学模型,可定义为一种逻辑结构,一种算法或一种符号串变换。自动机这一术语也广泛出现在许多其他相关的学科中,分别有不同的内容和研究目标。在计算机科学中自动机用作计算机和计算过程的动态数学模型,用来研究计算机的体系结构、逻辑操作、程序设计乃至计算复杂性理论。在语言学中则把自动机作为语言识别器,用来研究各种形式语言。在神经生理学中把自动机定义为神经网络的动态模型,用来研究神经生理活动和思维规律,探索人脑的机制。在生物学中有人把自动机作为生命体的生长发育模型,研究新陈代谢和遗传变异。在数学中则用自动机定义可计算函数,研究各种算法。现代自动机的一个重要特点是能与外界交换信息,并根据交换得来的信息改变自己的动作,即改变自己的功能,甚至改变自己的结构,以适应外界的变化。也就是说在一定程度上具有类似于生命有机体那样的适应环境变化的能力。
  自动机与一般机器的重要区别在于自动机具有固定的内在状态,即具有记忆能力和识别判断能力或决策能力,这正是现代信息处理系统的共同特点。因此,自动机适宜于作为信息处理系统乃至一切信息系统的数学模型。自动机可按其变量集和函数的特性分类,也可按其抽象结构和联结方式分类。主要有:有限自动机和无限自动机、线性自动机和非线性自动机、确定型自动机和不确定型自动机、同步自动机和异步自动机、级联自动机和细胞自动机等。
[编辑本段]有限自动机的分类
  下面是三类有限自动机
  确定有限自动机(DFA)
   自动机的每个状态都有对字母表中所有符号的转移。
  非确定有限自动机(NFA)
  自动机的状态对字母表中的每个符号可以有也可以没有转移,对一个符号甚至可以有多个转移。自动机接受一个字,如果存在至少一个从 q0 到 F 中标记(label)著这个输入字的一个状态的路径。如果一个转移是「未定义」的,自动机因此不知道如何继续读取输入,则拒绝这个字。
  有ε转移的非确定有限自动机(FND-ε或ε-NFA)
   除了有能力对任何符号跳转到更多状态或没有状态可以跳转之外,它们可以做根本不关于符号的跳转。就是说,如果一个状态有标记著 ε 的转移,则 NFA 可以处在 ε-转移可到达的任何状态中,直接或通过其他有 ε-转移的状态。从一个状态 q 通过这种方法可到达的状态的集合叫做 q 的 ε-闭包。
  尽管可以证明所有这些自动机都「可以接受同样的语言」。你总是可以构造接受与给定的 NFA M 同样语言的某个 DFA M。
[编辑本段]有限自动机的扩展
  上述自动机接受的语言家族被称为正则语言家族。更强力的自动机可以接受更复杂的语言。比如:
  下推自动机(PDA)
  这种机器等同于 DFA (或 NFA),除了它们额外的装备了栈形式的内存。转移函数 δ 也依赖于在栈顶的符号,并在每次转移时指定如何变更栈。非确定 PDA 接受上下文无关语言。
  线性有界自动机(LBA)
  LBA 是有限制的图灵机;不使用无限磁带,它的磁带有同输入字元串成正比的空间。LBA 接受上下文有关语言。
  图灵机
  它们是最强力的电脑器。它们拥有磁带形式的无限内存,和可以读取和变更磁带的磁头,它可在磁带上向任何方向移动。图灵机等价于演算法,是现代电脑的理论基础。图灵机判定递归语言并识别递归可枚举语言。
[编辑本段]有限状态自动机的最小化
  根据 Myhill-Nerode定理,在同构意义下接受一个正则语言的最少状态的确定有限状态自动机是唯一的。同时我们还存在有效的演算法(时间开销是O(n2)的)构造出与给定确定有限状态自动机等价的最小化的确定有限状态自动机。
[编辑本段]计算能力与判定问题
  确定有限状态自动机与非确定有限状态自动机识别的语言都是正则语言。由于正则语言的良好性质,许多为其他自动机(下推自动机或图灵机)不能判定的问题,在有限状态自动机的情形下,都可以得到判定,并且存在有效的演算法。
  对一个确定有限状态自动机,下述判定问题都可以判定,并且存在有效的演算法。
  该自动机识别的语言是否为空集。
  该自动机识别的语言是否为有限集。
  该自动机是否与另一个确定有限状态自动机识别同一个的语言。
hzbigdog 2009-08-25
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 peter1_jiang 的回复:]
AC算法,将敏感词构建成一个自动机,利用该自动机对网页进行搜索,假设网页长度为n,则线性时间就可以找到包含的所有敏感词
[/Quote]
有点感觉了
peter1_jiang 2009-08-25
  • 打赏
  • 举报
回复
AC算法,将敏感词构建成一个自动机,利用该自动机对网页进行搜索,假设网页长度为n,则线性时间就可以找到包含的所有敏感词
areszsk 2009-04-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 DenielJean 的回复:]
针对网页上的词判断是否是敏感词这当然是O(n),但是要保证空间复杂度,这就要求分批存储敏感词词库里,可以用HASH。
主要是提取网页里的词有点复杂。英文到好,中文就有点麻烦。
[/Quote]

这样和直接以敏感词库为词库进行分词有什么区别????
myoswin7 2009-03-28
  • 打赏
  • 举报
回复
再顶
无天 2009-03-28
  • 打赏
  • 举报
回复
针对网页上的词判断是否是敏感词这当然是O(n),但是要保证空间复杂度,这就要求分批存储敏感词词库里,可以用HASH。
主要是提取网页里的词有点复杂。英文到好,中文就有点麻烦。
梦无痕123 2009-03-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 DenielJean 的回复:]
针对网页上的词判断是否是敏感词这当然是O(n),但是要保证空间复杂度,这就要求分批存储敏感词词库里,可以用HASH。
主要是提取网页里的词有点复杂。英文到好,中文就有点麻烦。
[/Quote]期待进一步解释
tt_1122rt 2009-03-27
  • 打赏
  • 举报
回复
不太明白你说的是什么
myoswin7 2009-03-26
  • 打赏
  • 举报
回复
顶,盼高手
myoswin7 2009-03-26
  • 打赏
  • 举报
回复
顶,高手来呀
myoswin7 2009-03-26
  • 打赏
  • 举报
回复
盼高手,盼高手
myoswin7 2009-03-26
  • 打赏
  • 举报
回复
可以说得具体一些吗
deyga 2009-03-26
  • 打赏
  • 举报
回复
正则表达式+服务器缓存
金日辰 2009-03-26
  • 打赏
  • 举报
回复
ddddddddd盼高手
lanhao3790 2009-03-14
  • 打赏
  • 举报
回复
我也想了解下,哪位高手说下

6,721

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 Google技术社区
社区管理员
  • Google技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧