Thompson构造法

✍ dations ◷ 2025-11-24 20:04:20 #自动机,形式语言,算法

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

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

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

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

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

空表达式ε直接转化为:

直接转化为:

|可以转化为:

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

连接表达式可以转化为:

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

Kleene*闭包*可以转化为:

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

相关

  • 恋尸癖恋尸,是个人对尸体表现爱恋或性吸引的现象。美国精神医学学会在《精神疾病诊断与统计手册》中把恋尸列为“性欲倒错”。但是恋尸行为的含意显然颇为多样。研究者在访谈恋尸者
  • 杀生杀生是指杀害生命,一般指杀死动物。杀生一词最早见诸《汉书·公孙弘传》,此中“杀生”是指“杀之或使之生”,而非杀害生命。在佛教中,对屠宰和屠宰业者持谴责态度,列为十恶之首。
  • 麦克默多站麦克默多站(英语:McMurdo Station)是南极洲最大的科学研究中心,可容纳1,258名住民,由美国国家科学基金会的南极计划部门运作,位于麦克默多湾罗斯岛的南部底处,约新西兰南方3,500公
  • 君子协定《君子协定》(英语:Gentleman's Agreement)是一部于1947年上映的美国剧情电影,由伊利亚·卡赞执导。本片改编自劳拉·Z·霍布森(英语:Laura Z. Hobson)的畅销同名小说《君子协定(英
  • 绅士
  • 视康视康(英语:Ciba Vision)是世界上第一家专业制造隐形眼镜和清洁保养液的公司,隶属于诺华制药公司。总部位于美国亚特兰大,在德国、新加坡、印度尼西亚和马来西亚设有工厂。主要产
  • 波音KC-135空中加油机KC-135“同温层加油机”(KC-135 "Stratotanker")是一款由波音替美国空军开发制造的空中加油机,以波音367-80作为开发基础,是美国空军第一款以喷射发动机为动力的空中加油机。KC-
  • 无名战士墓无名冢是为在战事死亡而身份无法被确认的军人所立的墓碑。历史上很多军人在战事中牺牲后,身份无法被辨认,现代的国家为这种军人设立无名冢。无名冢埋有身份不明军人的骸骨,部分
  • 原台南水道坐标:23°06′05″N 120°21′34″E / 23.1014350°N 120.3594043°E / 23.1014350; 120.3594043原台南水道,为日治时期大正元年(1912年)兴建的自来水供应设施,提供台南市街、安
  • 侯祥麟侯祥麟(1912年4月4日-2008年12月8日),广东揭阳人,生于广东汕头。中国科学院、中国工程院资深院士,著名化学工程学家、石油化工科学家。1931年毕业于沪江大学附属中学,1935年毕业于