Thompson构造法

✍ dations ◷ 2025-10-09 19:49:30 #自动机,形式语言,算法

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

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

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

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

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

空表达式ε直接转化为:

直接转化为:

|可以转化为:

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

连接表达式可以转化为:

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

Kleene*闭包*可以转化为:

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

相关

  • 超大陆旋回超大陆旋回(Supercontinent cycle)描述的是地球的大陆地壳准周期性的聚合和分离。对于地球的大陆地壳的总量是增加、减少还是维持不变,有种种不同的观点,但是有一点是各家都认
  • 电话线路电话线或电话线路是一个单用户电话通信电路系统。电话线是一种物理线路或者说是一种将用户电话设备连接到电信网路的媒介,并且通常每个用户有一个电话号码来进行计费。电话
  • 阿盖尔-比特阿盖尔-比特(英语:Argyll and Bute)是英国苏格兰地区的32个一级行政区之一。地处苏格兰西部,主要地域是苏格兰高地西南部以及苏格兰西海岸外的岛屿,面积上是苏格兰第二大的行政区
  • 德宏州德宏傣族景颇族自治州(傣那语:ᥖᥬᥳᥑᥨᥒᥰ .mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code20
  • 台湾山峰台湾是一个多山的岛屿,在3.6万平方公里的面积上,分布268座海拔3,000米(9,800英尺)以上高峰,是全世界高山密度最高的岛屿之一。其中最高的玉山主峰,海拔3,952米(13,000英尺)。台湾的
  • 欧洲基督教政治运动欧洲基督教政治运动(英语:European Christian Political Movement,缩写为ECPM)是一个基督教民主主义的欧洲政党,由欧洲各国数个基督教民主主义政党联合组成。
  • 407 (消歧义)407是介于406与408之间的自然数,它也可能指:
  • 莫兰 (音乐类型)莫兰(泰语:หมอลำ)是指泰国和老挝内的国家节奏较为慢的音乐风格。
  • 弗兰西丝·康罗伊弗兰西丝·康罗伊(英语:Frances Conroy,1953年11月13日-)出生于美国佐治亚州沃尔顿县门罗,美国女演员。1953年,康罗伊出生于美国佐治亚州沃尔顿县门罗 (佐治亚州),父亲是一个企业高
  • 关心羚关心羚(英语:Kuanh Sin Ling,1982年6月4日-),出生于台北市,兽医师,时代力量党籍,现为左岸动物医院兽医师,毕业于国立台湾大学兽医学系。2019年11月12日,关名列时代力量不分区立委候选人