Thompson构造法

✍ dations ◷ 2025-12-05 21:14:51 #自动机,形式语言,算法

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

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

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

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

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

空表达式ε直接转化为:

直接转化为:

|可以转化为:

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

连接表达式可以转化为:

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

Kleene*闭包*可以转化为:

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

相关

  • 汉赋汉赋是汉朝流行的赋,由《楚辞》发展而来,吸收了荀子《赋篇》的体制,外加纵横家的夸张手法,形成一种兼有诗歌与散文特征的文学形式。有大赋与小赋之分,大赋多写宫廷生活,小赋富于抒
  • 黄貂鱼
  • 夏洛蒂·勃朗特夏洛特·勃朗特(英语:Charlotte Brontë,1816年4月21日-1855年3月31日),19世纪著名英国作家、诗人,世界文学名著《简·爱》的作者,勃朗特三姐妹之一。夏洛特·勃朗特1816年生于约克
  • 亚历山大广场示威亚历山大广场示威(德语:Alexanderplatz-Demonstration)指的是1989年11月4日发生在德意志民主共和国(东德)首都东柏林亚历山大广场的一场要求政府进行政治改革的示威活动。这场示
  • 组织文化组织文化(Organizational Culture)或者企业文化(Corporate Culture)是指一个组织由其共有的价值观、仪式、符号、处事方式和信念等内化认同表现出其特有的行为模式。可以观察到
  • 爱米莉·巴尔奇艾米莉·格林·巴尔奇(Emily Greene Balch,1867年1月8日 - 1961年1月9日),美国学者、作家和和平主义者。艾米莉·格林·巴尔奇生于马萨诸塞州贾梅卡普兰,父亲是律师。先于布林马
  • 运维运维 (英文:Ops),又称运维工程师,是对技术类运营维护人员的统称。运维人员的职责是根据业务需要规划信息、网络、服务,通过网络监控、事件预警、业务调度、排障升级等手段,使服务处
  • 廖学章廖学章(1880年-1953年),字天祥,四川华阳县人,早年曾两度公费留学日本,主攻英国文学。毕业于日本立教大学外语系。留学期间,曾参加同盟会。回国后,历任四川省城高等学堂及其附属中学教
  • 建筑巨擘建筑巨擘(英语:)是一个工程类纪录片系列,先后在探索频道和科学频道播出,每集描述一个大型工程,并着重介绍其背后的工程人员和机械设备。
  • 围谦太朗围谦太朗(圍 謙太朗,Kakoi Kentarō,1991年4月23日) 是一名日本职业足球员,目前于J1联赛的大阪樱花司职守门员。