Thompson构造法

✍ dations ◷ 2025-12-02 11:10:00 #自动机,形式语言,算法

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

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

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

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

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

空表达式ε直接转化为:

直接转化为:

|可以转化为:

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

连接表达式可以转化为:

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

Kleene*闭包*可以转化为:

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

相关

  • 磁悬浮列车磁悬浮列车,又称磁浮列车,是一种靠磁力(即磁的吸力和排斥力)来推动的列车。由于其轨道的磁力使之悬浮在空中,行进时不需接触地面,因此其阻力只有空气的阻力。磁浮列车的最高时速理
  • 加拿大元加拿大元(英语:Canadian dollar,法语:Dollar Canadien,ISO 4217货币码:CAD),又称加元或加币,是加拿大的法定货币,自1858年起使用,通常以$、C$、Can$或加元等简称。1加元相等于100加拿大
  • 丧钟 (消歧义)丧钟可能指:
  • 西门子事件西门子事件(英语:The Siemens Scandal,日语:シーメンス事件)是大正时代初期发生的一宗涉及日本政商界的贿赂丑闻。当时日本海军向英国维克斯船厂(英语:Vickers Limited)(Vickers Limi
  • 乙草胺乙草胺(英语:Acetochlor)是一种由孟山都和捷利康开发的除草剂,是苯胺类除草剂的一员,作为elongase和香叶基香叶基焦磷酸(GGPP)环化酶的抑制剂起作用,从而阻断赤霉素途径。它具有较高
  • 网络成瘾网络成瘾症(英语:Internet addiction disorder,缩写作IAD),亦作不当网络使用(problematic Internet use)或病态网络使用(pathological Internet use),简称网瘾,泛指对于互联网的过度使
  • 商杭高铁.mw-parser-output .RMbox{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)}.mw-parser-output .RMinline{float:none
  • 大连市第四十四中学大连市第四十四中学是隶属大连市中山区政府的公办完全中学,音乐特色高中。座落于中山区秀月山下,毗邻大连市风景区——老虎滩海洋公园和滨海路燕窝岭风景区,高中部有教学班19个
  • 优芬顿白马优芬顿白马(Uffington White Horse)是位于英国英格兰牛津郡的一处山丘画,长达110米(360英尺),其历史已有约3000年。优芬顿白马也是许多类似白马艺术作品的原型,现在由英国国家信托
  • 汉诺威再保险汉诺威再保险 (德语:Hannover Rück,英语:Hannover Re)是一家位于德国汉诺威的再保险公司。毛承保保费约为171亿欧元。是世界第三大再保险公司,仅次于慕尼黑再保险和瑞士再保险。