Thompson构造法

✍ dations ◷ 2025-11-20 11:33:53 #自动机,形式语言,算法

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

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

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

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

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

空表达式ε直接转化为:

直接转化为:

|可以转化为:

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

连接表达式可以转化为:

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

Kleene*闭包*可以转化为:

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

相关

  • 弱视弱视(Amblyopia)是指因为眼睛和大脑协同运作问题造成的视力失调,但眼睛本身没有器质性病变,弱视所造成的影响是视力减退。造成弱视的原因可能是在儿童发育早期,因着疾病影响眼睛
  • 戊寅戊寅为干支之一,顺序为第15个。前一位是丁丑,后一位是己卯。论阴阳五行,天干之戊属阳之土,地支之寅属阳之木,是木克土相克。中国传统纪年农历的干支纪年中一个循环的第15年称“戊
  • 陈克恢陈克恢(英语:Ko-Kuei Chen,1898年2月26日-1988年12月12日),字子振,美籍华裔药理学家,江苏省青浦县人(今上海市青浦区)。幼年丧父,曾从舅父周寿南(中医)学习四书五经。1916年中学毕业后考
  • 哈瓦苏湖城哈瓦苏湖城(英语:Lake Havasu City),是美国亚利桑那州莫哈维县下属的一座城市。 面积约为44.48平方英里(约合115.2平方公里)。根据2010年美国人口普查,该市有人口52,527人,人口密度
  • 薄柔缆薄柔缆(英语:Roland Peter Brown,1926年6月5日—2019年8月17日),出生于中华民国河北省,美国籍外科医生,门诺会海外宣道会传教士,花莲基督教门诺会医院前院长。为美国门诺会传教士薄
  • Paragonimus skrjabini斯氏肺吸虫(学名:Paragonimus skrjabini),亦作斯氏并殖吸虫,是一种淡水生的斜睾目住胞科并殖属吸虫,营寄生生活,以福建南海溪蟹(Nanhaipotamon fujianense)为中间宿主。
  • 三宅捷三宅捷(1894年9月23日-1967年12月7日),日本生物家、化学家。1918年毕业于日本东北帝国大学的他,在升格教授后,于1926年前往台湾任教。三宅捷最大成就就是就任台北帝国大学教授期间
  • 方豪 (明朝)方豪,字思道,开化人。生卒年不详。明朝官员。方豪约于正德年间在世。正德三年(1508年)中进士。授昆山知县,有政绩。迁刑部主事。因谏明武宗南巡被廷杖。历官湖广副使。与杨一清、
  • 吕俊雄吕俊雄(1973年12月7日-)为台湾的棒球选手之一,曾经效力于中华职棒中信鲸队,守备位置为外野手。5 余进德 | 6 石志伟 | 11 蒋智聪 | 20 吕俊雄 | 25 飞锐 | 30 黄龙义 | 31 林智胜
  • 天主教诺克斯维尔教区天主教诺克斯维尔教区(拉丁语:Dioecesis Knoxvillensis、英语:Roman Catholic Diocese of Knoxvillensis)是美国一个罗马天主教教区,属路易斯维尔总教区。成立于1988年3月27日。