Thompson构造法

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

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

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

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

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

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

空表达式ε直接转化为:

直接转化为:

|可以转化为:

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

连接表达式可以转化为:

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

Kleene*闭包*可以转化为:

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

相关

  • 机械能机械能(英语:Mechanical energy)又作力學能,是指宏观物质所表现出的势能(位能)Ep与动能Ek的总和,即机械能守恒定律(英语:law of conservation of mechanical energy)是动力学中的基本
  • 星期三星期三,又称礼拜三或周三。是指一周中星期二之后、星期四之前的那一天。星期三是一周的第四天,星期三的拉丁语名字是dies Mercurii,即水星日或墨邱利日;法语是mercredi,西班牙语
  • 阿穆尔河黑龙江(满语:ᠰᠠᡥᠠᠯᡳᠶᠠᠨᡠᠯᠠ,穆麟德:sahaliyan ula,太清:sahaliyan ula,蒙古语:Амар мөрөн),俄罗斯称之为阿穆尔河(俄语:Река Амур,罗马化:Reka Amur,IPA:.mw-pa
  • MoOsub3/sub三氧化钼是钼(VI)的氧化物,分子式为MoO3,是制取其它钼化合物的主要原料。它主要用作制取金属钼,以及催化很多有机反应,比如丙烯氨氧化制取丙烯腈。气态时,三氧化钼由MoO3分子组成,Mo
  • 人际取向心理治疗人际取向的心理治疗 (英文名称:Interpersonal psychotherapy;英文简称:IPT)是一个简要的、专注于依附关系的心理治疗,该治疗着重在人际关系问题与症状的改善。人际取向的心理治疗
  • 敢死队敢死队可以指:
  • 耶路撒冷圣殿圣殿(希伯来语:.mw-parser-output .script-hebrew,.mw-parser-output .script-Hebr{font-size:1.15em;font-family:"Ezra SIL","Ezra SIL SR","Keter Aram Tsova","Taamey Ash
  • 2-氨基乙硫醇2-氨基乙硫醇是一种用于治疗多种疾病的药物,经FDA批准用于治疗胱氨酸症,可口服或作为滴眼液成分。硫化氢与氢氧化钠的甲醇溶液反应,得到的新溶液和2-氯乙胺盐酸盐反应,可以得到2
  • 金志金志(?-?),字允立,浙江绍兴府山阴县人,民籍,明朝政治人物。浙江乡试第六十名举人。嘉靖十七年(1538年)中式戊戌科会试第二百八名,登第三甲第一百五十九名。嘉靖二十八年十二月(1549年)担任
  • 阿帕斯檀跋阿帕斯檀跋(印地语:आपस्तंब;英语:Āpastamba),古印度几何学家,生活在公元前600年前后,著有《阿帕斯檀跋法经》(Āpastamba Dharmasūtra),是《乔达摩法经》和《达耶那法经》的系