Thompson构造法

✍ dations ◷ 2025-11-25 19:33:24 #自动机,形式语言,算法

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

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

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

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

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

空表达式ε直接转化为:

直接转化为:

|可以转化为:

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

连接表达式可以转化为:

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

Kleene*闭包*可以转化为:

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

相关

  • 肩难产肩难产(英语:Shoulder dystocia),系指产妇分娩时,婴儿头部已伸出来,但肩前却卡在产妇的耻骨弓之情形,婴儿的头部缩回阴道,就像乌龟一样,称之为“乌龟征”(turtle sign)。肩难产的并发症
  • 欧西坦人欧西坦人(奥克语:Occitans),是分布于欧西坦尼亚说罗曼语的拉丁民族。在法国南部和意大利西北部有十万至八十万人说奥克语。自2006年起,奥克语成为加泰罗尼亚的一种官方语言。欧西
  • 印度河-恒河平原中央平原(或作印度河-恒河平原,IndoGangeticPlain,或称印度大平原)地处南亚,是一片富饶、肥沃而古老的土地,平原大致分为巴基斯坦印度河流域部分、旁遮普(Punjab)与哈里亚纳平原区、
  • TcOsub2/sub二氧化锝(化学式:TcO2)是锝的氧化物之一。它在酸性溶液中可以被Ce(IV)或碱性溶液中被H2O2氧化为高锝酸盐。碳酸钠或碳酸氢钠和热的六氯合锝(VI)酸钾反应,生成TcO2·2H2O,将其真空
  • 爱德华·尤登爱德华·纳什·尤登(Edward Nash Yourdon)(1944年4月30日-),美国软件工程师,也是程序设计方法学的开拓者之一。爱德华·尤登是1970年代提出结构化分析技术研究的领导者之一,也在1980
  • 多瘤齿兽目多瘤齿兽目(Multituberculata)为一种早期的哺乳动物,生存了相当长的一段时间,最后在渐新世完全灭绝了。 多瘤齿兽类生存了超过1亿年的时间,因此常常被生物学家认为是最成功的哺乳
  • 萨拉里萨拉里王朝 (波斯语:سالاریان‎),又称莫萨法尔王朝,是伊朗建立的穆斯林王朝。在阿尔达比勒省、赞詹省、代拉曼、吉兰省建立,随后统治阿塞拜疆、阿兰,在10世纪20年代到50
  • 波兰电视台波兰电视台股份有限公司(波兰语:Telewizja Polska S.A.),简称波兰电视台(TVP),是波兰的公共电视机构,播出范围涵盖波兰全国。波兰电视台的财源依靠收视费和广告收入。波兰在1935年就
  • 中后不圆唇元音中后不圆唇元音是一种用于一些口语中的元音。声学上,这个元音其实是中次后不圆唇元音。由于没有语言可以同时区分半闭后不圆唇元音、中后不圆唇元音及半开后不圆唇元音三种音
  • 划蝽科划蝽科(学名:),俗称“水椿象科”,是半翅目的一科,栖息于池塘和溪流中。种类很多,目前在世界上已知约33属500多种。在美国划蝽科昆虫被称为:“水船夫”,因为它们拥有特化成“船桨”般