当前位置: 首页 > news >正文

字符串匹配的AC自动机,你知道有哪三种写法吗?

法一

空间复杂度 \(O(n|\Sigma|)\),时间复杂度 \(O(n|\Sigma|)\),查询单步严格 \(O(1)\)
大家最常见的写法。直接 bfs 递推求出 fail,用静态数组存儿子。

法二

空间复杂度 \(O(n)\),时间复杂度 \(O(\sum |s|)\),查询均摊 \(O(\sum|q|)\)
建 fail 的时候模仿 KMP,从父亲的 fail 开始,如果存在对应出边则自己 fail 指过去,否则跳 fail。查询同样暴力跳 fail。trie用哈希表/umap 存。

法三

空间复杂度 \(O(n\log |\Sigma|)\),时间复杂度 \(O(n\log |\Sigma|)\),查询单步严格 \(O(\log |\Sigma|)\)
注意到法一中所需支持的操作是,复制父亲的fail,在自己的fail里单点改少量位置。因此直接可持久化线段树维护儿子即可。

http://www.jsqmd.com/news/688931/

相关文章:

  • Open WebUI:让AI工具调用像对话一样自然的智能平台
  • 零基础如何快速总结视频教程,3步包教包会避常见坑可直接上手
  • 别再只用train_test_split了!用sklearn的KFold和StratifiedKFold搞定5折交叉验证(附完整代码)
  • AI写论文的秘密武器!4款AI论文生成工具,让论文写作更轻松!
  • Informer预测结果怎么导出成CSV?保姆级教程教你从.npy文件到可视化图表
  • 告别迷茫!手把手教你用CCS和SysConfig搞定TI AM273x开发环境(附避坑指南)
  • mast3r slam(3)提取特征保存地图,重新加在重定位,和anyloc对比 - MKT
  • 保姆级教程:用mplfinance和Tushare绘制A股专业K线图(附完整代码)
  • 哪些降重软件可以同时降低查重率和AIGC疑似率?2026年深度实测推荐一些可以用于论文降重的全能软件
  • 北京性价比轻食哪家评分高? - 中媒介
  • Ubuntu Server 22.04.3 LTS 新机到手:5分钟搞定root密码、SSH远程和sudo免密(保姆级教程)
  • 深入AD9364的时钟树:从40MHz晶振到1280MHz BBPLL,详解SPI配置背后的频率合成逻辑
  • 拯救你的B站记忆:m4s-converter让缓存视频重获新生
  • 无人驾驶中的控制算法选型:为什么MPC比PID更能“预见”延迟?(基于自行车模型详解)
  • 谷歌浏览器插件「Brower-Books」: 把整个浏览器变成你的「云端书架」
  • 支付中心怎么设计?一次讲清支付单、渠道单、状态机、回调处理与对账补单
  • STM32F103驱动移远EC200N-CN 4G Cat.1模组,从硬件接线到TCP透传的保姆级避坑指南
  • 零代码小程序制作平台有哪些? - 码云数智
  • 小程序商城怎么制作?注册、搭建、上线全流程 - 码云数智
  • 中小型制造企业ENOVIA许可证成本控制的务实技巧
  • 保姆级教程:在STM32F429上从官网下载FreeRTOS 10.4.6源码并完成移植(附完整源码包)
  • 毕业不再“爆肝”:如何用百考通AI将论文写作变成结构化工程
  • 试用支持postgresql wire协议的duckdb服务器duckgres
  • 别再手动调图了!用ScottPlot在WinForm里实现鼠标滚轮+右键拖拽缩放(附完整源码)
  • 从WebRTC到Speex:聊聊那些开源语音引擎里的AEC模块是怎么工作的
  • 微信小程序商城怎么制作?新手零基础教程 - 码云数智
  • 市场知名的玻璃管转子流量计厂家排名 - 品牌企业推荐师(官方)
  • 告别SPI配置烦恼:手把手教你用Python脚本批量读写AD9361寄存器
  • 【射影几何】交比:从线段分割到透视不变的核心法则
  • 高效论文降重方案:哪些降重软件可以同时降低查重率和AIGC疑似率?2026年TOP5平台深度对比指南