放大啦资源网 http://www.fangdala.com
当前位置首页 > 百科资料> 正文

ac自动机

2023-02-02 01:18:26 暂无评论 百科资料

Aho-C帝飞阶地orasick automaton,该算法在1975年产生于贝尔实者肉染验室,是著名的多模匹配算法。

要学会A来自C自动机,我们必须知道什么是Trie,也就是360百科字典树。Trie树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用而均双换次于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。

  • 中文名称 AC自动机
  • 外文名称 Aho-Corasick automaton
  • 拼音 AC zì dòng jī
  • 性质 多模匹配算法
  • 产生时间 1973年

应用

  一个常见的例子就是给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过。

  要搞懂AC自动机,先得有模式树(字典树)Trie和KMP模式匹配算法的基础知识。AC自动机算法分为三步:构造一棵Trie树,构造失败指针和模式匹配过程。

  来自如果你对KMP算法了解的话,应该知道KMP算法中的next函数(shif好生等调门t函数或者fail函数)是干什么用的。KMP中我们用两个指针i和j分别表示,A[i-j+ 1..i]与B[1..j]完全相等。也就是说,i是不断增加的,随着i的增加j相应地变化,且j满足以A[i]结尾的长度为j的字符串正好匹配B串的前 j个字符,当A[i+1]≠B[j+1],KMP的策略是调整j的位置(减小j值)使得360百科A[i-j+1..扩侵汉钢还职宗江i]与B[1..j]保持匹配且新的B[损盟稳j+1]恰好与A[i+1]匹配,而next函数恰恰记录了这个j应该调整到的位置。同样AC自动机的失败指针具有完序证非抓同样的功能,也就是说当我们的模式串在Trie上进行匹配时,如果与当前节点的关键字不能继续匹配,就应该去当前节点的失败指针所指向的节点继续进行匹配。

案例

  英文原文

  Problem Description

  In the modern time, Search engine came into the life of everybo各朝假表并背析dy.Wiskey also wants to bring this feature to his image retrieval system.Every imag地试范下轻观校场带同e have a long description, when users type some keywords to find the image, the system will match the keywords with des抓映皮cription of image and show the image which the most keywords be matched. To simplify the problem, giving you a description of image, and some key种脚厂打按肥银words, you should 月受特农防调革放法今tell me how many keywords will be match.

  Inpu层担t

  The last line is the description, and the length will be not longer than1000000.

  Output

  Print how many keywords are contained in the des难谓汉cription乎李流触呢要毛情.

  中文翻译

  问备模取殖帝超饭知长轻古题描述

  在近代,搜索引擎进入了每个人的生活,Wiskey也希望将此功能引入他的图像检索系统中。每个图像都有很长的描述,当用户键入一些关键字来查找图像时,系统会匹配这些关键字并附有图片说明,并显示匹配关键字最多的图片。为敌九息了简化问题,给您一个图像比异亮实剧足企也描述和一些关键字,您应该告诉白计策我要匹配多少个关键字。

  输入

  最后一行是说准茶粮安酸明,长度不得超过1000000。

  输出

  打印说明中包含多少个关键字。

  自动机 C++ 源代码

  自动机Pascal模块

  POJ1204(AC自动机模板题)

  题意:给一个N行长为M的字符串,给你一些需要去匹配的字符串,从任意一个字符串开始可以有八个方向,向上为A,顺时针依次是A--H,问你去匹配的字符串在给你的N*M字符串中的坐标是怎么样的。

  代码:

猜你喜欢