Thompson构造法

✍ dations ◷ 2025-04-02 09:41:38 #自动机,形式语言,算法

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

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

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

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

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

空表达式ε直接转化为:

直接转化为:

|可以转化为:

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

连接表达式可以转化为:

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

Kleene*闭包*可以转化为:

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

相关

  • 鹿鼠白足鼠属(Peromyscus),哺乳纲、啮齿目、仓鼠科的一属,而与白足鼠属(球鹿鼠)同科的动物尚有里约稻鼠属(里约稻鼠)、叶耳鼠属(沙叶耳鼠)、洞鼠属(粗毛洞鼠)、大耳攀鼠属(大耳攀鼠)等之数种哺
  • 亚利桑那州截至2010年亚利桑那州(英语:Arizona,i/ɛərᵻˈzoʊnə, ærᵻ-/)是美国一个位于西南部的州份,同时也是西部和山区州份之一。此州是美国第6大及人口第14大的州份。首府和最大城
  • CD562E3V, 2HAZ, 2VKW, 2VKX, 3MTR· extracellular region · plasma membrane · external side of plasma membrane · cell surface · integral to membrane · axon
  • 马雅语系玛雅语系(或玛雅语族)是一支使用于墨西哥东南一直到中美洲北部的语族,最远到达洪都拉斯,最早可追溯到五百年前前哥伦布时期的中部美洲(包括中美洲与墨西哥),虽然现今这些地区的官方
  • 太米太米(Terametre,符号Tm,大陆称太米,台湾称兆米,又称垓米)是一个极其罕用的长度单位。1 Tm=1012米=6.7 天文单位。在这个数量级的长度,通常使用科学计数法或者其他单位如天文单位来表
  • 冰川湖冰蚀湖(英语:Glacial lake)是高海拔或高纬度地区,冰川活动中,由于刨蚀、掘蚀地面产生的凹地积水形成的湖泊。冰蚀湖的湖盆一般为坚硬基岩,盆壁和盆底的基岩上经常有冰川磨光面和冰
  • 尼泊尔建交列表本列表为尼泊尔建交列表,包括尼泊尔王国和其后继政权尼泊尔联邦民主共和国与各国间的建交史记录。截至2019年,尼泊尔已经与168个国家建立了外交关系。
  • 第4师朝鲜人民军第4师隶属于朝鲜人民军,成立于1948年,由李权武担任师长,该师主力由参与过中国国共内战的朝鲜族人组成。朝鲜战争期间,第4师在夺取韩国首都首尔中起到了主要作用,因此得
  • 索尼音乐娱乐索尼音乐娱乐(英语:Sony Music Entertainment),简称索尼音乐(Sony Music)或SME,是索尼公司旗下音乐事业群,总部位于美国纽约市,为全球第二大唱片公司,也是全球三大唱片公司之一。2019
  • 傅珮慈傅珮慈(英语:Peggy Fu,1999年8月1日-),台湾童星,其亲弟弟是童星傅显濬,他的堂哥是傅显皓。   平面媒体类