「学习笔记」自动机家族
OI 中所说的「自动机」一般都指「确定有限状态自动机」。
一个 确定有限状态自动机(DFA) 由以下五部分构成:
字符集(),该自动机只能输入这些字符。
状态集合()。如果把一个 DFA 看成一张有向图,那么 DFA 中的状态就相当于图上的顶点。
起始状态(),,是一个特殊的状态。起始状态一般用 表示,为了避免混淆,本文中使用 。
接受状态集合(),,是一组特殊的状态。
转移函数(), 是一个接受两个参数返回一个值的函数,其中第一个参数和返回值都是一个状态,第二个参数是字符集中的一个字符。如果把一个 DFA 看成一张有向图,那么 DFA 中的转移函数就相当于顶点间的边,而每条边上都有一个字符。
DFA 的作用就是识别字符串,一个自动机 A,若它能识别(接受)字符串 ,那么 ,否则 。
当一个 DFA 读入一个字符串时,从初始状态起按照转移函数一个一个字符地转移。如果读入完一个字符串的所有字符后位于一个接受状态,那么我们称这个 DFA 接受 这个字符串,反之我们称这个 DFA 不接受 这个字符串。
如果一个状态 没有字符 的转移,那么我们令 ,而 只能转移到 ,且 不属于接受状态集合。无法转移到任何一个接受状态的状态都可以视作 ,或者说, 代指所有无法转移到任何一个接受状态的状态。
我们扩展定义转移函数 ,令其第二个参数可以接收一个字符串:,扩展后的转移函数就可以表示从一个状态起接收一个字符串后转移到的状态。那么,。
如,一个接受且仅接受字符串 a
, ab
, aac
的 DFA:
看不懂没关系我也看不懂,不影响你学东西!
OI 中常用的自动机#
字典树#
「学习笔记」字典树(Trie) - yi_fan0305 - 博客园 (cnblogs.com)
AC 自动机#
「学习笔记」AC 自动机 - yi_fan0305 - 博客园 (cnblogs.com)
后缀自动机#
正在学习
未完待续。。。
作者:yifan0305
出处:https://www.cnblogs.com/yifan0305/p/17566919.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
转载时还请标明出处哟!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2022-07-19 「学习笔记」素数筛