Thompson构造法

✍ dations ◷ 2025-07-01 18:09:32 #自动机,形式语言,算法

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

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

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

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

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

空表达式ε直接转化为:

直接转化为:

|可以转化为:

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

连接表达式可以转化为:

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

Kleene*闭包*可以转化为:

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

相关

  • 氟西泮氟西泮(在美国的商品名是Dalmane和Dalmadorm,中国一般就以盐酸氟西泮销售)是一种苯二氮䓬类派生药物。该药可作为抗焦虑药、镇痉剂、镇静剂及肌肉松弛剂。该药产生一种半衰期长
  • 抗真菌药物杀真菌剂(英语:fungicide)是指用来杀死或抑制真菌或真菌袍子的化合物或者生物体。真菌能够对农业产生严重的危害,例如严重减产,质量降低等。卵菌不是真菌,尽管它和真菌很相似,例如
  • 泽兰蒂亚坐标:40°S 170°E / 40°S 170°E / -40; 170西兰大陆(Zealandia),也被称为西兰洲、西兰蒂亚和Tasmantis,是一块几乎被淹没的微大陆(microcontinents)。于8500万到6000万年前从包
  • 俾斯麦奥托·爱德华·利奥波德·冯·俾斯麦(德语:Otto Eduard Leopold von Bismarck,1815年4月1日-1898年7月30日),劳恩堡公爵,普鲁士王国首相(1862-1873 , 1873-1890),德意志帝国首任宰相(18
  • 樽海鞘纲见内文樽海鞘纲(学名:Thaliacea),又名海樽纲,是被囊动物亚门的一个海洋生物的纲。 与他们的底栖亲戚海鞘不同的是:樽海鞘纲物种的整个生命周期都是自由浮动的(中上层)。该组包括具有
  • 安息安息可以指:
  • 塞奇菲尔德塞奇菲尔德(英语:Sedgefield),英国国会一郡选区,位于英格兰达勒姆郡达灵顿外围、伊辛顿区和塞奇菲尔德区一部。设于1918年,1974年撤销,1983年恢复。这里恢复以来一直是工党占优的选
  • 互联网控制消息协议互联网控制消息协议(英语:Internet Control Message Protocol,缩写:ICMP)是互联网协议族的核心协议之一。它用于网际协议(IP)中发送控制消息,提供可能发生在通信环境中的各种问题反
  • 高圆宫宪仁亲王高圆宫宪仁亲王(1954年12月29日-2002年11月21日)是一位已逝世的日本皇室成员,为三笠宫崇仁亲王与王妃百合子所生的第三个儿子。也为昭和天皇的侄子、上皇明仁的堂弟。身位是亲王
  • 康塔尔医疗康塔尔医疗(英语:Cantel Medical Corporation)是一家美国医疗器械公司。1963年在新泽西州成立,主要生产内窥镜,水净化和过滤,牙科用品和透析器械。1992年11月19日在纽约证券交易所