Thompson构造法

✍ dations ◷ 2025-11-23 19:14:28 #自动机,形式语言,算法

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

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

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

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

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

空表达式ε直接转化为:

直接转化为:

|可以转化为:

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

连接表达式可以转化为:

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

Kleene*闭包*可以转化为:

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

相关

  • 资源描述框架资源描述框架(英语:Resource Description Framework,缩写:RDF),是万维网联盟(W3C)提出的一组标记语言的技术规范(英语:Specification (technical standard)),基于XML语法及XML Schema的
  • 后工业时代后工业社会是社会科学名词,指涉开始自1960年代的工业社会转型出现的社会现象,该词最早出自法国社会学家阿兰·图赖讷,后由美国社会学家丹尼尔·贝尔的著作《后工业社会的来临》
  • 神医神医可以是:
  • 开放的美国学府《开放的美国学府》(英语:)是一部1982年美国青少年喜剧片,根据《滚石杂志》自由撰稿人卡梅伦·克罗1981年同名著作改编,并由卡梅伦·克罗亲自编剧。《开放的美国学府》描述克罗在
  • 翟理斯嘉禾勋章翟理斯(英语:Herbert Allen Giles,1845年12月8日-1935年2月13日),汉学家、前英国驻华外交官。曾在查特豪斯公学就读,在剑桥大学中文教授达35年之久。他修改了威妥玛建立的
  • 天鹅绒分离天鹅绒分离(捷克语:Zánik Československa、斯洛伐克语:Rozdelenie Česko-Slovenska),亦称天鹅绒离婚。指的是自1993年1月1日起,原先的捷克斯洛伐克分裂为捷克共和国和斯洛伐克
  • 灶糖灶糖,又名关东糖、糖瓜,是中国北方一带冬天的时令小吃,主要成分是麦芽糖。一般长条形的糖棍称为“关东糖”,扁圆棋子形状的称为“糖瓜”,这两种有时外面沾上芝麻。麦芽糖在冷冻后
  • 平阳镇 (阜平县)平阳镇,是中华人民共和国河北省保定市阜平县下辖的一个乡镇级行政单位。平阳镇下辖以下地区:各老村、平阳村、上平阳村、铁岭村、王快村、山咀头村、台南村、北水峪村、白家峪
  • Fairytale (亚历山大·雷巴克歌曲)《Fairytale》是白俄罗斯裔挪威歌手亚历山大·雷巴克于2009年1月12日发行的单曲,收录在雷巴克首张个人专辑《Fairytales(英语:Fairytales (Alexander Rybak album))》当中。歌曲
  • 仙客来仙客来(学名:),别名萝卜海棠、兔耳花、兔子花、一品冠、篝火花、翻瓣莲,是紫金牛科仙客来属多年生草本植物。仙客来是一种普遍种植的鲜花,适合种植于室内花盆,冬季则需温室种植。仙