汤普森构造法

✍ dations ◷ 2025-06-15 13:28:44 #汤普森构造法

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

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

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

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

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

空表达式ε直接转化为:

直接转化为:

|可以转化为:

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

连接表达式可以转化为:

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

Kleene*闭包*可以转化为:

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

相关

  • 中风复健中风康复是一个患者通过治疗重获日常生活技能、重返有意义生活的过程。对于绝大多数患者,康复涉及到多个学科专业,需要由具备各种技能的健康专家组成医疗小组共同协作,包含护理
  • CXCL71F9P, 1NAP, 1TVX· chemokine activity· extracellular space· blood coagulation · glucose transport · platelet activation · neutrophil chemotaxis · defe
  • 胸管插入胸腔闭式引流术,又称“胸廓造口术、胸腔管手术”,是一种较为简单的外科手术。一般用于治疗各种胸腔积水、胸腔积液(英语:pleural effusion)和气胸等。过程是先进行局部麻醉后,在肋
  • 荷兰君主列表这里列出包括低地联省共和国的执政——历任尼德兰诸省的管理者(不享有荷兰共和国的主权)。1702年英王兼奥兰治亲王的威廉三世无嗣过世后,奥兰治亲王之位依照其遗嘱,传给他十五岁
  • UH-1N双休伊直升机贝尔UH-1N Twin Huey(UH-1N双休伊)是在1968年推出的中型军用直升机,UH-1N具有15个座位,包括1名飞行员及14名乘客,而执行运输任务时内部容量达220平方尺(6.23平方米),外力负载可达500
  • 南港线.mw-parser-output .RMbox{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)}.mw-parser-output .RMinline{float:none
  • WellyWelly 是一个在 Mac 操作系统上运行的 BBS 客户端程序,可用于 Telnet/SSH 远程连线。目前的开发者主要有 talentljl/K.O.ed99, lvli007, tangyang.cn, xi.wang 等人。Welly 2
  • 布劳威尔不动点定理在数学中,布劳威尔不动点定理是拓扑学里一个非常重要的不动点定理,它可应用到有限维空间并构成了一般不动点定理的基石。布劳威尔不动点定理得名于荷兰数学家鲁伊兹·布劳威尔
  • 薇拉·恰斯拉夫斯卡维拉·恰斯拉夫斯卡(捷克语:Věra Čáslavská,1942年5月3日-2016年8月30日),捷克斯洛伐克女子体操选手,生涯总共赢得22次国际比赛的冠军。恰斯拉夫斯卡是捷克史上最知名的体操选手,也是奥运史上2位连续两届奥运赢得个人全能的体操选手之一,另一位是苏联的拉里莎·拉特尼娜,她也是1966年世锦赛冠军。恰斯拉夫斯卡是奥运史上夺得最多个人项目金牌的体操选手,这个纪录她已经保持超过40年。恰斯拉夫斯卡出生在布拉格,原本则是花式溜冰选手。她首次参加国际赛事是在1958年世锦赛,并且在团体项目夺下银
  • 淡紫蓝鸦淡紫蓝鸦(学名:),是鸦科蓝鸦属的一种,分布于巴西、巴拉圭、秘鲁、阿根廷、玻利维亚和乌拉圭。全球活动范围约为1,590,000平方千米。该物种的保护状况被评为无危。淡紫蓝鸦的平均体重约为207.0克。栖息地包括亚热带或热带的湿润低地林、亚热带或热带的旱林和亚热带或热带严重退化的前森林。