Thompson构造法

✍ dations ◷ 2025-09-11 00:43:29 #自动机,形式语言,算法

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

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

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

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

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

空表达式ε直接转化为:

直接转化为:

|可以转化为:

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

连接表达式可以转化为:

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

Kleene*闭包*可以转化为:

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

相关

  • 奥布省奥布省(法语:Aube)是法国大东部大区所辖的省份。该省编号为10。5个海外省及大区
  • 阿普里斯阿普里斯(英语:Apries)古埃及第二十六王朝的第四位法老,(公元前589年—公元前570年在位),他没有保护犹太抵抗尼布加尼撒二世进攻。却在耶路撒冷失陷后,庇护大量犹太难民,因攻打利比亚
  • 灿烂的遗产《错位人生》(韩语:찬란한 유산,英语:Shining Inheritance/Brilliant Legacy)是韩国SBS自2009年4月25日起播放的周末连续剧,该剧因努力的人就会取得成功,以及劝善惩恶的主题而被称为
  • 核时标核时标是在天文物理学中纯粹基余核燃料消耗速率估计的恒星寿命。如果假设的条件能够满足,热和力学时标是用来估计个别恒星处在生命阶段的哪一个时期,和恒星寿命的某一个阶段。
  • 血腥法典血腥法典(Bloody Code)为一个被用来描述1688年到1815年间,存在于英国的法律及刑罚系统的称呼。在1688年时,当时的法典有50种犯罪可以被处以死刑,但这个数量到了1776年却达到了4倍
  • 赛义德·鲁霍拉·霍梅尼赛义德鲁霍拉·穆斯塔法维·穆萨维·霍梅尼(波斯语:سید روحاللّه مصطفوی موسوی خمینی‬‎,转写:Sayyid Rūhollāh Musavi Khomeinī  发音 帮助·
  • 瑞美隆米氮平(英语:Mirtazapine),商品名为乐活忧(港台)/瑞美隆(中国大陆)(Remeron),是一种去甲肾上腺素和特异性5-羟色胺能抗抑郁药 (NaSSA) ,主要用来治疗抑郁症。米氮平也经常被用作抗焦虑
  • Sender IDSender ID是曾经加入发件人策略框架(SPF)和Caller ID的前MARID(英语:MARID) IETF工作组的一项反欺骗(英语:E-mail spoofing)协议。 Sender ID主要定义在实验性RFC 4406,而其余部分在R
  • 佟瑞敏佟瑞敏,中国国家一级演员,现为上海戏剧学院表演系主任。
  • 无所隐瞒论无所隐瞒论(英语:Nothing to hide argument)是一种观点,认为政府的大规模监控项目不是侵犯隐私,因为政府的监控旨在揭露不正当的、不法的行为,而不法的行为是不该隐瞒的,一经发现自