Thompson构造法

✍ dations ◷ 2025-04-25 23:45:42 #自动机,形式语言,算法

Thompson构造法在计算机科学中是指一个能将正则表达式转化为一个与之等价的非确定有限状态自动机(NFA)的算法。算法得到的NFA可以在编程中用于匹配一个正则表达式,这也是正则表达式引擎实现的基本思路之一。

正则表达式和非确定有限状态自动机是形式语言的两种不同的抽象表达方式。在诸如文本编辑器的高级“查找和替换”以及许多编程语言中,人们都习惯使用正则表达式来表示字符串的匹配模式。然而,当计算机执行匹配程序时,NFA却是更加适合的一种格式。因此,Thompson构造法有着重要的应用价值,它实际上可以视作正则表达式到NFA的一个编译器。而从理论角度上来说,该算法实际上是正则表达式和NFA等价性证明的一部分——事实上,这两种表述形式本质上都对应着相同的语言,即正则语言。

在应用中,算法得到的NFA可以再次通过幂集构造和最小化的过程得到一个对应的最简的确定有限状态自动机(DFA),进而用于匹配正则表达式。但是有些情况下也会直接使用对应的NFA。

算法通过递归地将一个正则表达式划分成构成它的子表达式,在得到每个子表达式对应的NFA之后,根据子表达式之间的运算关系和一系列规则构造表达式自身对应的NFA。具体来说,这套构造规则如下所示 :

对于正则表达式为ε或者只由一个符号构成的情况,则无需继续递归,对应的NFA可以直接由下列规则给出:

空表达式ε直接转化为:

直接转化为:

|可以转化为:

可以直接到达()或()的初态。而()或()原来的终态也可以通过ε转移直接到达整个NFA的新终态。

连接表达式可以转化为:

()的初态成为新的NFA的初态。 原来()的终态成为()的初态。而原来()的终态成为新的NFA的终态。

Kleene*闭包*可以转化为:

()连接起来的ε转移使得可以选择经过或者不经过子表达式。而从()的终态到初态的ε转移使得可以重复任意多次。

相关

  • 兽医兽医是给动物治疗疾病的医生。一般分为“小型动物”和“大型动物”两大派系。除了以药物进行内科治疗之外,也可以以外科手术进行医疗或其他服务,如兽医通常还会阉割动物或替动
  • 荷兰榆荷兰榆(Ulmus × hollandica)是分布于欧洲的无毛榆(Ulmus glabra)和欧洲光叶榆(Ulmus minor)自然杂交产生一种榆,后来经过人工栽培其分布范围又进一步扩大。其形态介于无毛榆和欧洲
  • 海星中学海星中学可以指:
  • 油煎煎是常见的烹调方法,指用锅把少量的食用油(烹调用油)加热到摄氏150-200度之间,再把食物放进去,使其熟透。表面会产生美拉德反应而成金黄色乃至微焦,并散发浓烈、特殊的焦香味。
  • 汉江 (中国)汉江,亦称汉水,又名襄河,古称.mw-parser-output ruby>rt,.mw-parser-output ruby>rtc{font-feature-settings:"ruby"1}.mw-parser-output ruby.large{font-size:250%}.mw-parse
  • 大都柏林地区大都柏林地区 (英语:Greater Dublin Area,爱尔兰语:Mórcheantar Bhaile Átha Cliath)是指以爱尔兰首都都柏林为中心的都市区,包括都柏林及其附近的卫星都市。一般来说,大都柏林地
  • 基因共表达网络基因共表达网络是一种无向图,每个节点代表基因,如果二者存在明显的共表达关系,就用一个边连接两个节点。 对不同的样本或者不同的实验条件建立基因表达谱后,可以通过查看不同样
  • 乌塔货运航空乌塔货运航空(UTAir Cargo)是一家俄罗斯的货运航空公司,总部位于秋明普列汉诺夫,是乌塔航空的一家子公司。
  • 专卖特许之日专卖特许之日(日语:専売特許の日)是日本的一个节日,为了纪念专利制度的施行而实施,订为每年的8月14日。1885年8月14日,日本政府正式发出专利第一号,内容是堀田瑞松的专利“防锈涂料
  • 比森魏尔湖坐标:47°40′36″N 10°02′43″E / 47.676530°N 10.045294°E / 47.676530; 10.045294比森魏尔湖(德语:Biesenweiher),是德国的湖泊,位于该国西南部,由巴登-符腾堡州负责管辖,处