Thompson构造法

✍ dations ◷ 2025-05-20 05:48:40 #自动机,形式语言,算法

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

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

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

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

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

空表达式ε直接转化为:

直接转化为:

|可以转化为:

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

连接表达式可以转化为:

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

Kleene*闭包*可以转化为:

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

相关

  • 北海北海(挪威语:Nordsjøen;瑞典语:Nordsjön;丹麦语:Nordsøen或Vesterhavet;德语:Nordsee;荷兰语:Noordzee;法语:Mer du Nord;英语:North Sea)是北大西洋的一部分,位于大不列颠岛以东,斯堪的纳
  • 列宁格勒州列宁格勒州(俄语:Ленинградская область,罗马化:Leningradskaya oblast),包括昔日英格里亚和卡累利阿地峡(即圣彼得堡西北,界乎今日芬兰边境、拉多加湖和英格里
  • Prsub2/subOsub3/sub三氧化二镨(化学式:Pr2O3),又称氧化镨(Ⅲ),是稀土元素镨的倍半氧化物。它是黄绿色固体,难溶于水和碱液,但可溶于强无机酸溶液中。固体属六方晶系,金属离子配位数为7,有6个氧原子占据八
  • 国际学校本列表罗列出在台湾设立的国际学校,依照《私立高级中等以下外国侨民学校及附设幼稚园设立及管理办法》,此类学校专门接受具有外国国籍的人士就读。教育部:外国侨民学校通讯一览
  • 汤姆·尤德尔托马斯·斯图尔特·“汤姆”·尤德尔(英语:Thomas Stewart "Tom" Udall ;1948年5月18日-),是一位美国民主党政治人物,自2009年成为新墨西哥州联邦参议院议员。此前他曾是美国众议院
  • 水星-红石3号水星-红石3号是美国国家航空航天局进行的水星计划中的第一次载人任务,于1961年5月5日佛罗里达州卡纳维尔角发射,运载火箭为红石火箭。航天器被命名为自由7号,未进入地球轨道,是
  • 厄拉多塞陨石坑厄拉多塞月坑(拉丁文“Eratosthenes”)是一座位于风暴洋东部暑湾中的撞击坑,直径59公里,深约3.4公里。它是一座相对年轻、保存完好的陨石坑,虽然已没有了明亮的辐射纹。月球地
  • Up主Up主(日语:.mw-parser-output ruby>rt,.mw-parser-output ruby>rtc{font-feature-settings:"ruby"1}.mw-parser-output ruby.large{font-size:250%}.mw-parser-output ruby.la
  • 希腊化哲学希腊化哲学(英语:hellenistic philosophy)是西方哲学和中东哲学的时期,它在亚里士多德之后的希腊化时期发展到新柏拉图主义结束。 毕达哥拉斯主义是毕达哥拉斯提出的哲学和科学
  • 博隆博隆兴中信息科技,创建于2011年。主要产品是存贮系统信息安全服务器,磁带库信息安全服务器,数据库安全服务器,应用信息安全服务器和密钥管理器。博隆参与制定及支持行业各技术