Thompson构造法

✍ dations ◷ 2024-12-23 14:36:50 #自动机,形式语言,算法

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

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

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

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

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

空表达式ε直接转化为:

直接转化为:

|可以转化为:

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

连接表达式可以转化为:

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

Kleene*闭包*可以转化为:

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

相关

  • 法国– æ¬§æ´²ï¼ˆç»¿è‰²åŠæ·±ç°è‰²ï¼‰â€“ æ¬§ç›Ÿï¼ˆç»¿è‰²ï¼‰æ³•å…°è¥¿å…±å’Œå›½ï¼ˆæ³•è¯
  • 荷兰体育荷兰1,700万人口中,有约450万人加入了体育团体。三分之二以上的荷兰人每个礼拜参加至少一次体育活动。荷兰国内参加人数最多的体育运动是足球。荷兰国家足球队是世界强队,曾经
  • 城市基础设施基建设施(英语:Infrastructure),亦称公共设施或公共建设,是指为社会生产和居民生活提供公共服务的物质工程设施,它是社会赖以生存发展的一般物质条件。基础设施不仅包括电网、通讯
  • 美浓溪美浓溪位于台湾南部,属于高屏溪水系,为旗山溪的支流,主流河长28.5公里,流域面积114平方公里,分布于高雄市旗山区、美浓区及杉林区。主流上游为双溪,发源杉林区新庄里南势坑东侧约1
  • 八峒瑶语八峒瑶语是一种未分类的汉语方言,主要由中国湖南省新宁县瑶族使用。该语言目前已濒临灭绝,在新宁县黄金瑶族乡的黄岩峒、麻林峒、大圳峒等农村地区仍有使用。 在黄金乡东部的
  • 罗杰·谢尔曼罗杰·谢尔曼(英语:Roger Sherman,1721年4月19日-1793年7月23日),是一位美国律师、政治家及开国元勋,曾经出任康涅狄格州纽黑文市的首任市长,是负责起草独立宣言的五人小组成员之一,
  • 砂拉越反让渡运动砂拉越人(大多数是马来人、伊班人,包括了阿邦阿迪拉(英语:Abang Haji Abdillah)、莉莉·埃贝魏因(英语:Lily Eberwein)、罗斯里(英语:Rosli Dhobi))砂拉越反让渡运动(马来语:Gerakan Anti-
  • 卡尔·考茨基卡尔·约翰·考茨基(德语:Karl Johann Kautsky;1854年10月18日-1938年10月17日),社会民主主义活动家,也是马克思主义发展史中的重要人物。考茨基是卡尔·马克思代表作《资本论》第
  • 元素 (数学)在数学领域,集合的元素(英语:element)指构成该集合的任意对象(英语:Mathematical object),也可以称作成员(英语:member)。 A = { 1 ,
  • 陈遵毅陈遵毅,江西庐陵(今江西吉安)人,明朝政治人物。同进士出身。成化五年(1469年)己丑科进士,弘治元年(1488年)接替索雄任嘉定县知县一职,1490年由白质接任。