字符串-最小后缀自动机与有限状态自动机

SAM详解1 过于神秘的字符串,但是被同学怂恿,说学会 SAM 就学会了所有字符串算法,心动了过来学,果不其然被创飞了。但研究?天,故余虽愚,终有所获。由于作者学艺不精,文中可能会有疏漏,如发现错误欢迎指出,那么我们开始旅途吧。OI-WikiAlex_Wei的博客command_block的博客ZTer的博客我们定义一个子串的endposendpos是它在原串中结束位置的集合。例如原串为ababcababc,则endposab24endposc5。 阅读详情

 

 

1、 最小后缀自动机
 一个串x的最小后缀自动机SA(suffixautomaton),记为SA(x),即识别串x的所有后缀的最小确定自动机. 如图1所示,该自动机可以接受串baabbaa的以下所有后缀:
ε,a,aa,baa,bbaa,abbaa,aabbaa,baabbaa.
  已经存在以线性复杂度构造SA的算法,对长度为m的串x,构造时间为O(m),且SA(x)的大小(包括节点数与边数)为O(mσ).
  从图1中可以看出,该图有多个起始状态和多个终止状态,不要被其表面的后缀2字引诱,只是说可以接受串的后缀,如果某个串能被这个自动机接受,那这个串必须得按从前向后的顺序读入,而不是从后向前的方式。
2、有限状态自动机
本文所用到的正向有限状态自动机FFA(forward finiteautomata)实际上就是正向识别模式的一般有限状态自动机,只是在运行方式上有所不同.由于在反向后缀自动机运行结束时算法已经匹配了模式的一个(或多个)前缀,所以正向有限状态自动机运行时不是从传统的开始状态开始,而是从已匹配的最大前缀所对应的状态开始.开始状态集合中不包含传统的初始状态,这是因为当前一阶段识别的前缀为ε时,不需要使用FFA进行扫描.在实现中,常常用已识别前缀的长度来表示状态.如图2所示,该自动机使用不同的开始状态1,2,3,4,5,6,7,分别可以接受串aabbaab的不同后缀:abbaab,bbaab,baab,aab,ab,b,ε.
FFA的构造也是一个简单的问题,使用与DFA匹配算法[10]相同的构造算法构造模式的FFA,其构造时间复杂度是O(m+σ),空间复杂度是O(mσ).
MRI图像切片(nii格式转2D) 代码参考:将一个MRI(nii格式)数据进行切片 想要批量抽取MRI数据的几个切片,借鉴了上述代码的Python版本,原始代码抽取了全部切片。本次实验主要是抽取sMRI的横断面(axial)方向的其中30张切片,数量根据自己需求可自行设置。 import scipy, numpy, shutil, os, nibabel import sys, getopt import imageio def niito2D(filepath): inputfiles = os.listdir(filep 阅读详情

相关推荐

学Simulink——基于Simulink的PMSM直接转矩控制(DTC)SVPWM对比

(如SVM-DTC),将一个控制周期Tc​分为两部分:前Ton​用有效矢量,后Toff​用零矢量,通过调节Ton​/Tc​减小脉动。:根据ψs​扇区(6个)、Te误差(±滞环带)、ψs​误差(±滞环带)选择8个基本电压矢量(6有效矢量+2零矢量)。:低速时需用电流模型(ψs​=Ls​is​+ψf​),高速时用电压模型(es​=ωψf​),避免纯积分漂移;:基于us​=Rs​is​+Ls​dtdis​​+es​(es​为反电动势),用电压模型估算ψs​;

MHD0815的博客 314

C语言经典算法后缀自动机

在C语言中实现后缀自动机Suffix Automaton,简称SAM)通常涉及构建一种特殊的有向无环图(DAG),该图能够紧凑地表示一个字符串的所有后缀。

weixin_56154577的博客 1114

后缀自动机ppt

2012年noi冬令营陈立杰的讲稿,内容是后缀自动机

hihocoder 127 后缀自动机一·基本概念

自己想了老半天,写了三百多行,没实现成功,忘记使用STL库了。。。。。。。。。。。。。。。 题目链接:http://hihocoder.com/problemset/problem/1441 描述 小Hi:今天我们来学习一个强大的字符串处理工具:后缀自动机Suffix Automaton,简称SAM)。对于一个字符串S,它对应的后缀自动机是一个最小的确定有限状态自动机(DF

硕鼠的博客 2981

算法——后缀自动机

后缀自动机作为一种强大而高效的数据结构,在字符串处理领域展现出了独特的魅力和卓越的性能。它通过巧妙的状态压缩和转移机制,能够以线性的时空复杂度处理各种复杂的字符串问题,为我们解决实际问题提供了有力的工具。从原理上看,后缀自动机基于字符串的后缀信息和 endpos 等价类的概念,构建了一个紧凑而高效的有向无环图结构。这种结构不仅能够完整地表示字符串的所有子串,还通过后缀链接等特性,为各种字符串操作提供了便捷的途径。

oopxiajun博客专栏 1210

浅谈Suffix Automaton后缀自动机

这是一个强大的automaton——Suffix Automaton==>我学过最强大,最牛犇,最难理解的自动机 现在给你一个问题: 给定一个字符串,要求这个字符串所有子串出现的次数分别是多少 朴素算法 ①枚举左端点,枚举右端点,用hash记录一下,统计个数。(注意最好双hash,保证正确率) 预计时间复杂度:O(n2)O(n2)O(n^2) ②可以直接开...

cdy1206473601的博客 1603

最小后缀算法

问题:给定一个字符串s[1...n],求它的所有后缀中最小的一个。(本文中字符串之“大”“小”均对字典序而言。)算法:定义v[1..n],其中v[i]=k表示s[i..i+k-1]在s的所有长度为k的字串中最小。我们求出每个v[i]最大的取值,再找到所有的v[i]中最大的一个,s[i..n]就是问题的答案。基本思想是这样的(先不设计实现时的数据结构):先将所有的1..n都保存在

魔神翼 1884

算法详解——后缀自动机

DFA DFA,即确定性有限状态自动机,由一个五元组M=(Σ,Q,qs,F,tr)M=(\Sigma,Q,q_s,F,tr)M=(Σ,Q,qs​,F,tr)组成,其中: Σ\SigmaΣ为一个有限字符集,其中每个字符ccc称为一个输入符号; QQQ为一个有限状态集合; qs∈Qq_s\in Qqs​∈Q为初始状态; F⊆QF\subseteq QF...

weixin_34292959的博客 273

后缀自动机」学习笔记

定义 一个字符串S对应的后缀自动机(SAM)是一个最小的确定有限状态自动机(DFA),接受且只接受S的后缀。可以理解为能够在SAM上找到该串的所有子串,且使得SAM状态数最少。 状态 $endpos$集 对于S的一个子串s',endpos(s') 为S中所有s'的结束位置集合。以S="aabbabd"为例,endpos("ab") = {3,6} $endpos$等价类 如果两个子串的...

weixin_30847939的博客 96

后缀自动机简介(洛谷P3804)

后缀自动机简介 学习自这里 这里只是为了背板而写的简介 定义 对给定字符串s的后缀自动机是一个最小化确定有限状态自动机,它能够接收字符串s的所有后缀。 通俗点说,后缀自动机就是一种自动机废话 ,它能够识别字符串s的所有后缀(当然不只识别得到后缀),并且能实行快速跳转(比如AC自动机的失配指针)。然后就可以用它搞很多事情。 用途 自行百度吧。。。太多了。。。 思想...

forezxl的博客 608

集训总结8

目录后缀数组和后缀自动机后缀数组后缀自动机 后缀数组和后缀自动机 后缀数组 后缀数组就是把一个字符串的后缀用一个数组储存下来,简单来说,我们要把字符串的每个后缀按照字典序排序,维护以下几个数组: sa[i]:排名为i的后缀的起始位置的下标 rk[i]:起始下标为i的后缀的排名 height[I]:排名第I个和排名第i-1个的后缀的最长的公共前缀 具体构造可以用基数排序,时间复杂度是O(nlogn)。 一个比较重要的性质:排名第i个和排名第j(j>=i)个的后缀的LCP为min{height[i]…

夕夏锦年的博客 92

【文文殿下】后缀自动机(Suffix Automaton,SAM)学习笔记

前言 后缀自动机是一个强大的数据结构,能够解决很多字符串相关的(String-related)问题。 例如:他可以查询一个字符串在另一个字符串中出现的所有子串,以及查询一个字符串中本质不同的字符串的个数。 后缀自动机可以理解为一个字符串的所有子串的压缩图,对于一个长度为\(n\)的字符串,它只需要\(O(n)\)的空间,以及\(O(n)\)的时间进行在线搭建(如果我们把字符集视作常数)。如果我们把...

weixin_33743880的博客 274

确定有穷自动机(DFA)化简(最小化)

预备 最简化的DFA:这个DFA没有多余状态、也没有两个相互等价的状态。一个DFA可以通过消除无用状态、合并等价状态而转换成一个之等价的最小状态的有穷自动机。 无用状态:从自动机开始状态出发,任何输入串也发到达的那个状态,或者这个状态没有通路可达终态。 等价转态:两个状态,识别相同的串,结果都同为正确或错误,这两个状态就是等价的。 区别状态:不是等价状态。 化简DFA 分割法:把...

qq_33605778的博客 3万+

Suffix Automaton

Suffix Automaton A suffix automaton is a powerful data structure that allows solving many string-related problems. For example, you can search for all occurrences of one string in another, or cou...

Vincent19999999的博客 499

最小化DFA有什么意义让我们举个实际例子通俗讲一下

最小化DFA有什么意义让我们举个实际例子通俗讲一下

pys1719886504的博客 458

后缀自动机详解

原论文(俄文)地址:suffix_automata   后缀自动机   后缀自动机(单词的有向无环图)——是一种强有力的数据结构,让你能够解决许多字符串问题。 例如,使用后缀自动机可以在某一字符串中搜索另一字符串的所有出现位置,或者计算不同子串的个数——这都能在线性 时间内解决。   直觉上,后缀自动机可以被理解为所有子串的简明信息。一个重要的事实是,后缀自动机以压缩后的形式包含了一...

DZYO的博客 4万+

后缀自动机,SAM,suffix automaton 模板

后缀自动机(SAM、suffix automaton)模板。

辗转山河弋流歌 3063

[后缀自动机]SAM的一点理解

主要参考资料:CLJppt。 预备知识 自动机组成:状态、初始状态、终止状态、状态转移、字符集。 什么是状态? 经典图片: ACADD对应的SAM 对于整个串而言,初始状态(以下简称为init)为ROOT,终止状态集合(以下简称end)为最上方及最右方的那两个写着D的圈(状态既不是字符,也不是子串,在这里把它理解为某个下标更好),所有的状态就是那七个圈,每条实线边代表从一个状态

pupuvovovovo的博客 1265

ANSYS仿真分析-高升力翼型气动特性分析(文档及模型数据等).zip

ANSYS仿真分析-高升力翼型气动特性分析(文档及模型数据等).zip

上一篇: 字符串匹配-基于子串的搜索方法
下一篇: lucene-queryparser的使用说明
deepfuture
博客等级 码龄17年 209粉丝 1288原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值