Thompson构造法

✍ dations ◷ 2025-12-07 14:25:12 #自动机,形式语言,算法

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

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

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

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

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

空表达式ε直接转化为:

直接转化为:

|可以转化为:

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

连接表达式可以转化为:

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

Kleene*闭包*可以转化为:

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

相关

  • Legionella pneumophila嗜肺军团菌是一种有鞭毛,革兰氏阴性,军团菌属多形态性的短小球杆菌。嗜肺军团菌是一种原发的人类病原体,会引发军团病。嗜肺军团菌不抗酸,无孢子,无荚膜,类似于杆菌。不能分解明胶
  • span class=chemf style=white-space:nowrap;Csub7/subH庚烷的化学式为C7H16,烷烃中的第七个成员。有9种同分异构体,若考虑到光学异构则有11种同分异构体:其中大多数存于石油的汽油馏出物中。其直链化合物是正庚烷CH3(CH2)5CH3(沸点98
  • 罗姆语罗姆语(罗姆语:Romani,又称吉卜赛语或茨冈语)是罗姆人和信德(Sinti)社群的语言。罗姆语属于印度-雅利安语支语言。分析罗姆语得知,它与印度北部的语言相近,尤其是旁遮普语。在语言学
  • 劳工法劳工法,又称劳动法,泛指与劳工事宜有关的法律条文。这些法律条文规管工会、雇主及雇员的关系,并保障各方面的权利及义务。
  • 比较教育学比较教育学(Comparative Education)是为了要了解本国与他国教育之间的异同,借由发现各国之间的不同,理解不同国家的教育风格,而本国也可斟酌他国成功的教育经验来弥补本国教育上
  • 桑林桑林镇,是中华人民共和国辽宁省鞍山市台安县下辖的一个乡镇级行政单位。桑林镇下辖以下地区:桑林村、魏家村、大汪村、蒋坨村、茨榆坨村、柴家村、双台子村、大友村、艾岗子村
  • 创业创业(英语:entrepreneurship)指开创新事业。近几年最常见形式是开创新商业(俗称创业公司)。尽管如此,这术语已被扩展到在社会和政治上的企业家活动。当企业家精神用来描述在公司或
  • 圣物圣物是传说或者神话及宗教的兵器和其他物品,它们有些具有超自然的力量,例如王者之剑在精灵国度阿瓦隆所打造,剑锷由黄金所铸、剑柄上镶有宝石,锋刃削铁如泥;埃癸斯由赫淮斯托斯打
  • 天津人民出版社天津人民出版社是由知识书店(1950年重组)、天津通俗出版社(1952年组建)发展而来的。1956年,天津通俗出版社正式更名为天津人民出版社。《八小时以外》和《汽车生活》现有职工九十
  • 欢迎航空欢迎航空(Welcome Air)的官方名称是“欢迎航空有限公司”(Welcome Air Luftfahrt GmbH & Co KG)是一家奥地利的航空公司。欢迎航空已经暂停了所有剩余的计划航线和欧洲境内包机