Thompson构造法

✍ dations ◷ 2025-12-04 20:16:35 #自动机,形式语言,算法

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

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

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

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

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

空表达式ε直接转化为:

直接转化为:

|可以转化为:

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

连接表达式可以转化为:

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

Kleene*闭包*可以转化为:

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

相关

  • 知识管理知识管理(英语:knowledge management,缩写为KM)包括一系列企业内部定义、创建、传播、采用新的知识和经验的战略和实践。这些知识和经验包括认知,可以是个人知识,以及组织中商业流
  • 顺反子顺反子,也做作用子,它于1955年由美国分子生物学家本兹尔提出的,他称基因内部的功能互补群为顺反子。顺反子通过顺反试验确定,如两个位点可以互补,则两个位点不属于一个顺反子;如两
  • 昆士兰昆士兰州(英语:Queensland,缩写为QLD),简称昆州、昆省,或称 女王城位于澳大利亚的东北部,论面积为澳大利亚的第二大州,人口则排名全澳第三。据2018年5月统计,昆士兰人口已突破500万人
  • RUP统一软件开发过程(英语:Rational Unified Process,缩写为RUP)是一种软件工程方法,为迭代式软件开发流程。最早由Rational Software公司开发,因此冠上公司名称。Rational Software
  • 白光白光可以是下列人物或事物:
  • C-末端C端(亦作C-端,英语:C-terminus),又称碳端、羧基端,指多肽链具有游离的α羧基的末端。在翻译过程中,多肽链是从N端往C端合成的,因而在书写多肽序列时,从N端开始书写,从左到右写到C端。
  • 汤森港汤森港(Port Townsend)发音: /ˈtaʊnzən/位于美国华盛顿州杰佛逊县。2010年美国人口普查时人口为9,113人。自2000年人口普查以来增长了9.3%。本市是杰佛逊郡的郡治,也是该郡唯
  • 动物扮演动物扮演是指人加上一些道具去扮演一些实际存在的动物或是幻想的动物,并且模仿该动物的肢体行动,例如扮演小狗则以四肢着地地爬行。扮演动物的理由很多,例如Cosplay、情趣游戏
  • 安德雷·布劳尔艾米·布拉布森安德雷·布劳尔(英语:Andre Braugher,/ˈbraʊ.ər/,1962年7月1日-)是一位美国男演员,出生于伊利诺伊州芝加哥,现居于新泽西州南奥兰治。他于1984年在斯坦福大学取得
  • 举牌女郎举牌女郎(ring girl)是技击运动中,于各回合间进入擂台举牌宣告下场比赛回合数的女性。常出现于拳击、自由搏击、综合格斗的比赛。举牌女郎最早出现于1965年的拳击杂志《拳台》,