Thompson构造法

✍ dations ◷ 2025-12-06 11:41:52 #自动机,形式语言,算法

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

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

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

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

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

空表达式ε直接转化为:

直接转化为:

|可以转化为:

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

连接表达式可以转化为:

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

Kleene*闭包*可以转化为:

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

相关

  • 查尔菲马丁·查尔菲(Martin Chalfie,1947年1月5日-),美国科学家,因为发现和研究绿色荧光蛋白而获得了2008年的诺贝尔化学奖。查尔菲在芝加哥长大,是吉他手伊莱·查尔菲(1910—1996)和服装店
  • 旗山医院卫生福利部旗山医院,简称 旗山医院,为一间直属中华民国卫生福利部的医院。位于高雄市旗山区。
  • 小窗格苔藓虫Fenestrellina cyclofenestrata小窗格苔藓虫(学名:Fenestrellina),又名木栅苔藓虫,是一属已灭绝的苔藓虫,生存于志留纪至二叠纪末期的海洋中。其化石分布于世界各地。它们的单体长
  • 胭脂虫胭脂虫(学名:Dactylopius coccus)原产于美洲。雌虫体内含胭脂红酸,可以用来制造绯红色(胭脂红)染料。胭脂虫是哥伦布交换(Columbian Exchange)之一。在地理大发现时代,在哥伦布发现美
  • 萝北县萝北县是黑龙江省鹤岗市下辖的一个县。因位于托罗山之北而得名。下辖5个镇、5个乡,1个民族乡,91个行政村。凤翔镇、鹤北镇、名山镇、团结镇、肇兴镇、云山镇、东明朝鲜族乡、
  • 淮滨县淮滨县,位于中国河南省东南部,淮河之滨,是信阳市下辖的一个县,邻接安徽省。县人民政府驻滨湖街道办事处。淮滨县名因县城位于淮河之滨而得名。因在淮河之滨,故名。淮滨县是建国后
  • 坡鹿坡鹿(),又名海南坡鹿,是东南亚特有的一种鹿。它们最初是于1839年在曼尼普尔发现的。体长约1.8米,尾长约20厘米,四肢细长,显得格外矫健。雄鹿具角,第一眉叉自基部向前侧平伸出,与主干
  • 杰克·吉伦哈尔杰可布·本杰明·“杰克”·吉伦哈尔(英语:Jacob Benjamin "Jake" Gyllenhaal,又译为吉伦荷,1980年12月19日-),美国电影演员。他是瑞典贵族吉伦哈尔家族(英语:Gyllenhaal family)的成
  • 焦磷酸钚(IV)焦磷酸钚(IV)是一种无机化合物,化学式为PuP2O7。焦磷酸钚(IV)可由115.3 g/L的硝酸钚(IV)和0.74 mol/L的磷酸溶液在80 °C反应得到。二氧化钚和磷酸二氢铵的固相反应会产生不
  • 职业大学职业大学,有时又被称作技能大学(professional university)、应用技术大学(applied technological university), 高等职业学院(college of higher vocational studies)或 应用科学大