Thompson构造法

✍ dations ◷ 2025-11-16 10:20:29 #自动机,形式语言,算法

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

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

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

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

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

空表达式ε直接转化为:

直接转化为:

|可以转化为:

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

连接表达式可以转化为:

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

Kleene*闭包*可以转化为:

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

相关

  • 霾害霾(英语:haze,又称雾霾、烟霾、烟霞等)是一种由固体颗粒形成的空气污染,其核心物质是空气中悬浮的灰尘颗粒,气象学上称为气溶胶颗粒。霾中含有数百种大气化学颗粒物质,它们在人们毫
  • Animalia见内文动物是多细胞真核生命体中的一大类群,统称为动物界。动物身体的基本形态会随着其发育而变得固定,通常是在其胚胎发育时,但也有些动物会在其生命中有变态的过程。大多数动
  • 轮耕轮作也称轮耕,是指在同一块土地轮流种植不同的作物,例如芜菁或苜蓿,有助减少土壤侵蚀、保持土地肥力及增加产量。不同作物通常对特定养分需求不同,轮流种植不同作物甚至可补充特
  • 念珠菌属白色念珠菌 C. albicans C. ascalaphidarum C. amphixiae C. antarctica C. atlantica C. atmosphaerica C. blattae C. carpophila C. cerambycidarum C. chauliodes C. c
  • 华北豹华北豹(学名:Panthera pardus japonensis)也称中国豹,是一种大型猫科食肉动物,是豹的一个亚种,为中国特有,同时被国际自然保护联盟列为极危物种。历史上曾经广泛分布于西到兰州,北到
  • 克里斯蒂安·萊蒙迪 克里斯蒂安·萊蒙迪(意大利语:Cristian Raimondi;1981年4月30日-)是一位意大利足球运动员。在场上的位置是中场。他也代表意大利各级国青队参赛。他也曾效力过利沃诺等球队
  • TACAM R-2自行反坦克炮TACAM R-2(罗马尼亚语:Tun Anticar pe Afet Mobil,意为自走反坦克炮)是罗马尼亚在第二次世界大战中使用的驱逐坦克。它结合了R-2轻型坦克的底盘与在战争中掳获的苏联76.2毫米ZiS
  • 定场镜头定场镜头是影片一开始,或一场戏的开头,用来明确交代地点的镜头,通常是一种视野宽阔的远景。有时候,定场镜头与涵盖镜头相同,目的在确立场景中所有人物与空间的关系。
  • 黄埔站 (广州)黄埔站位于广东省广州市黄埔区黄埔港,是黄埔港支线上的一座二等站,于1940年10月由广州日占当局修建使用,隶属广州铁路集团广州东车站管辖。货运可办理专用线、专用铁路货运作业
  • 天主教圣地亚哥-德孔波斯特拉总教区天主教圣地亚哥-德孔波斯特拉总教区(拉丁语:Archidioecesis Compostellana;西班牙语:Archidiócesis de Santiago de Compostela)是罗马天主教在西班牙西北部加利西亚设立的5个教