Thompson构造法

✍ dations ◷ 2025-11-25 11:38:35 #自动机,形式语言,算法

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

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

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

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

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

空表达式ε直接转化为:

直接转化为:

|可以转化为:

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

连接表达式可以转化为:

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

Kleene*闭包*可以转化为:

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

相关

  • 绿绣眼暗绿绣眼鸟(学名:Zosterops japonicus)是一种小型雀形目绣眼鸟科鸟类,平均寿命约15年。台湾多称其作绿绣眼,台语称青笛仔、青啼仔,广东人多称其为相思仔、白眼圈。日本称为目白。
  • 怪谈怪谈是日语的一个名词,用来总呼日本自古以来灵异故事。有时泛指任何恐怖故事,但有时亦指江户时代的灵异故事集。当中,四谷怪谈、皿屋敷及牡丹灯笼被认为是日本三大怪谈。
  • 特别行政区政府部门澳门特别行政区政府的行政部门除首长行政长官外,由第一层司长、第二层局、第三层厅、第四层处所组成,并可根据需要设立咨询组织。另外有部分机构,如廉政公署、审计署、澳门海关
  • 统治者马来统治者(马来语:Raja-raja Melayu,直译“马来诸王”)是指马来西亚九位世袭君主。统治者的尊称是殿下(Duli Yang Maha Mulia, DYMM),即英语称谓的“His Royal Highness”。他们同
  • ATC代码 (D11)(Antifungals for dermatological use)(Emollients and protectives)(Preparations for treatment of wounds and ulcers)(Antipruritics, including antihistamines, anesthetics,
  • 全氟戊烷全氟戊烷是一种碳氟化合物,是戊烷的全氟化合物。它是一种沸点稍高于标准温度的液体。它具有多种生物医学应用,包括用于加压定量吸入器的推进剂和超声造影剂。其它: 枸橼酸铁铵
  • 乔·内森约瑟夫·迈克尔·内森(Joseph Michael Nathan,1974年11月22日-出生于美国德克萨斯州休斯顿)是美国职棒大联盟的终结者。高中和大学时期内森打的是游击手的位置,在被旧金山巨人选
  • 接口隔离原则接口隔离原则(英语:interface-segregation principles, 缩写:ISP)指明客户(client)应该不依赖于它不使用的方法。接口隔离原则(ISP)拆分非常庞大臃肿的接口成为更小的和更具体的接
  • 郑敦谨郑敦谨(1803年-1885年),字小山,湖南长沙人,晚清官员,进士出身。道光十五年(1835年)进士,选庶吉士,散馆授刑部主事、郎中。历任山东登州府知府、河南南汝光道。咸丰元年(1851年),署河南布政
  • 蓝色龙舌兰蓝色龙舌兰(英语:Tequila agave,学名:)是龙舌兰属的一个物种,是龙舌兰属中能作为龙舌兰酒中等级最高的“Tequila”(特吉拉)的原料。蓝色龙舌兰是墨西哥哈利斯科州重要的农作物,生长于