Thompson构造法

✍ dations ◷ 2025-12-10 17:12:30 #自动机,形式语言,算法

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

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

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

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

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

空表达式ε直接转化为:

直接转化为:

|可以转化为:

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

连接表达式可以转化为:

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

Kleene*闭包*可以转化为:

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

相关

  • 宇宙号运载火箭宇宙号运载火箭(俄语:Ко́смос)苏联研制的几种非常不同的运载火箭的统称。被称为“宇宙号”的火箭包括以下几种,请分别参见其主题条目:美国国防部对宇宙-2的代号是“SL-7”
  • 景福宫景福宫(朝鲜语:경복궁/景福宮 Gyeongbokgung */?)建于1394年,是朝鲜王朝的正宫,也是朝鲜五大宫阙中规模最大的。位于今韩国首尔市。景福宫位于汉阳城(今首尔)北半部中心偏西的位置
  • 安蒂波德斯群岛坐标:49°40′S 178°46′E / 49.667°S 178.767°E / -49.667; 178.767安蒂德波斯群岛(Antipodes Islands)是属于新西兰的无人岛群。位于南纬49度41分东经178度48分的位置。位
  • 胡安·狄克逊胡安·狄克逊(英语:Juan Dixon,1978年10月9日-),美国NBA联盟前职业篮球运动员。他在2002年的NBA选秀中第1轮第17顺位被华盛顿奇才选中。
  • Bonaparte夏尔·吕西安·儒勒·劳伦·波拿巴,第二代卡尼诺和穆西格纳诺亲王(法语:Charles Lucien (Carlo) Jules Laurent Bonaparte, 2nd Prince of Canino and Musignano,1803年5月24日-1
  • 伊莱·惠特尼伊莱·惠特尼(Eli Whitney,1765年12月8日-1825年1月8日)是活跃于美国18世纪末至19世纪初的一位发明家、机械工程师和机械制造商。他发明了轧花机(英语:Cotton gin),联合发明了铣床,并
  • 前列环素前列环素(英语:Prostacyclin,简称为PGI2)是脂类中类花生酸家族中的一个成员,分子中有一个次级五元环,其前体是花生四烯酸或其他二十碳不饱和脂肪酸。前列环素会抑制血小板介导的凝
  • 闪电熔岩闪电熔岩是天然造成的玻璃长管。当闪电击中泥土或沙,就可能令它们瞬间融化,然后又凝固,便会形成闪电熔岩,因此闪电熔岩的形状多是长条状,和闪电的路径相近。闪电熔岩长可达数米。
  • 1896年夏季奥林匹克运动会保加利亚代表团1896年夏季奥林匹克运动会保加利亚代表团,只派出了1名运动员,他叫Charles Champaud,参加体操项目的角逐,但Charles Champaud其实是居住于保加利亚的瑞士人。
  • 本杰明·冈珀茨本杰明·冈珀茨(1779年3月5日-1865年7月14日)是英国一位自学成才的数学家和精算师,后来成为皇家学会院士。冈珀茨主要以冈珀茨死亡率定律——他于1825年公布的一种人口模型而知