Thompson构造法

✍ dations ◷ 2025-12-03 02:27:54 #自动机,形式语言,算法

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

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

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

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

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

空表达式ε直接转化为:

直接转化为:

|可以转化为:

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

连接表达式可以转化为:

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

Kleene*闭包*可以转化为:

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

相关

  • 表观因素表观遗传学(英语:epigenetics)又译为表征遗传学、拟遗传学、表遗传学、外遗传学以及后遗传学,在生物学和特定的遗传学领域,其研究的是在不改变DNA序列的前提下,通过某些机制引起可
  • 库贾氏病克罗伊茨费尔特-雅各布病(英语:Creutzfeldt-Jakob disease,简称CJD),或称克-雅氏症、克-雅氏病、克雅二氏症、克雅二氏病、库雅氏症、库贾氏症、克雅氏症、克雅氏病,是一种发生在
  • 柱头柱头(英语:stigma)位于花的心皮(或多个心皮愈合)的顶端,以花柱连接子房。传粉时花粉落到柱头上,并萌发出花粉管以到达胚珠。柱头通常具有粘性,并演化出各种不同有利于接受花粉的形式
  • 古虫动物门古虫动物亚门(学名:Vetulicolia),旧称古虫动物门,是一类已经完全灭绝的脊索动物,在分类学上可能属于后口动物的基部,包括十几个来自寒武纪的化石种。古虫动物亚门是由中国西北大学
  • 龙山邻接行政区城中区、古亭区、双园区;台北县三重市龙山区为台湾台北市旧行政区之一,区名源自艋舺龙山寺,位于台北市西南。区内为昔日艋舺市街,地势平坦,建物密集。1990年裁撤并入新
  • 姜子牙道家系列条目太公望(?-?),姜姓,吕氏,名尚,字子牙,是周文王、周武王的军师。史册记载名字有姜尚、姜望、姜牙、姜子牙、吕尚、吕望、吕涓、吕牙,别称有姜太公、吕太公、齐太公、太公、太
  • 坦迪中心地铁坦迪中心地铁(英语:Tandy Center Subway)是一条于1963年2月15日至2002年8月30日期间在美国德克萨斯州沃思堡运营的有轨电车线路,总长0.7英里(1.1千米)。因其部分位于地下,故被称为
  • 4 (消歧义)4可以有以下多种意思:
  • 索拉娜·科斯蒂亚索拉娜·科斯蒂亚(英语:Sorana Cîrstea,1990年4月7日-)是罗马尼亚女子网球运动员,2006年转为职业网球员。她的WTA最高单打排名为第21位,现时世界单打排名为第53位,而世界双打排名为
  • 三合面三合面是指用文火炒好的面粉加入红葱头(油炸)、白糖、芝麻末并搅拌均匀的食物。三合面的制作:将面粉放入炒锅中文火慢慢烘焙,烘焙到微黄。在加入用猪油炸好的红葱头以及芝麻末,拌