Thompson构造法

✍ dations ◷ 2025-07-07 08:52:35 #自动机,形式语言,算法

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

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

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

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

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

空表达式ε直接转化为:

直接转化为:

|可以转化为:

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

连接表达式可以转化为:

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

Kleene*闭包*可以转化为:

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

相关

  • 一氯乙酸一氯乙酸,也称氯乙酸、氯代乙酸,是一个有机羧酸,化学式为ClCH2CO2H。一氯乙酸是有机合成中的重要试剂,为有潜在危险的烷基化试剂。无色或白色易潮解结晶。以α、β、γ三种形式
  • 吡喃吡喃(Pyran)是含有一个氧原子的完全不饱和六元杂环化合物。它有两个双键,根据双键位置的不同,可以有两个异构体:2H-吡喃和4H-吡喃。吡喃并不是一个闭合的共轭体系,但它的吡啶季铵
  • 外显度外显度(Penetrance),又称外显率,是指个体基因组中的某一基因得到表达的概率。如果十个个体,它们都共同携带一种基因,其中九个个体表现出该基因的表现型,那么该基因的外显度就是90%
  • 精炼精炼是将物质进行提纯的过程,主要是指对自然资源中可用的部分进行纯化,使其能更好地被利用。例如天然石油可以直接燃烧,但燃烧后会产生大量的残渣,燃烧不完全。精炼后会得到汽油
  • 胡安·普里姆胡安·普里姆·普拉特斯(西班牙语:Juan Prim y Prats,西班牙语发音:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida San
  • 迈克尔·高福迈克尔·罗兰·高福(英语:Michael Roland Gough,1916年11月23日-2011年3月17日),又译为迈克尔·高夫、迈克尔·高夫,生于马来西亚吉隆坡,英国电影演员,最为人熟知的角色为《神秘博士
  • 王灏王灏(1946年-2016年3月5日),本名王万富。出生于台湾南投县埔里镇茄苳脚,为南投草根艺术家、作家、诗人。毕业于中国文化学院中文系,曾举办多次水墨画展,并多次担任南投县玉山文学奖
  • 王剑岳王剑岳(1906年-1944年6月10日),原名王师,湖南澧县人,毕业于黄埔军校五期工兵科。历任国民革命军连长、团长、大队长、总队长。1944年任陆军8师少将副师长,1944年6月10日阵亡于河南
  • 反编译器反编译器(英语:Decompiler)的功能与编译器相反。顾名思义,就是将已编译好的程式还原到未编译的状态,也就是找出程序的源代码。一种反编译器通常只能反编译1~2种编程语言,反编译器
  • 世界地质公园列表世界地质公园是以其地质科学意义、珍奇秀丽和独特的地质景观为主,融合自然景观与人文景观的自然公园。由联合国教科文组织选出,此计划在2000年之后开始推行,目标是选出超过5百