fbpx
维基百科

下推自动机

自动机理论中,下推自动机(英語:Pushdown automaton)是使用了包含数据的有限自动机

综述

下推自动机比有限状态自动机复杂:除了有限状态组成部分外,还包括一个长度不受限制的;下推自动机的状态迁移不但要参考有限状态部分,也要参照当前的状态;状态迁移不但包括有限状态的变迁,还包括一个的出栈或入栈过程。下推自动机可以形象的理解为,藉由加上讀取一個容量無限的能力,擴充一個能做 -轉移的非確定有限狀態自動機

下推自动机存在“确定”与“非确定”两种形式,两者并不等价。(对有限状态自动机两者是等价的)

每一个下推自动机都接受一个形式语言。被“非确定下推自动机”接受的语言是上下文无关语言

如果我们把下推自动机扩展,允许一个有限状态自动机存取两个,我们得到一个能力更强的自动机,这个自动机与图灵机等价。

下推自动机作为一个形式系统最早于1961年出现在 Oettinger 的论文中。它与上下文无关文法的等价性是由乔姆斯基于1962年发现的。

形式定义

PDA 形式定义为 6-元组:

  这里的

  •  状态的有限集合
  •   是输入字母表的有限集合
  •  字母表的有限集合
  •  :  转移函数
  •   是“开始状态”
  •   是“接受状态”的集合
  •  
  •  

计算定义 1

对于任何 PDA  ,计算路径是一个有序的(n+1)-元组  ,这里的  ,它满足如下条件:

(i)   对于 i = 0, 1, 2,......, n-1,

这里的  

(ii)   使得

 

在直觉上,PDA 在计算过程中任何一点上都面对着多种可能性,从栈顶读一个符号并把它替代为另一个符号,从栈顶读一个符号并删除它而不替换,不从栈顶读任何符号但压入另一个符号进去,或什么都不做。所有这些都同时由等式    来支配。  是紧接在第 i+1 次转移移动之前的栈内容,而   是要从栈顶去除的符号。  是紧接在第 i+1 次转移移动之后栈内容,而   是在第 i+1 次转移移动期间要增加到栈上的符号。

   二者都可以  

如果   ,则 PDA 从栈读一个符号并把它替代为另一个符号。

如果   ,则 PDA 从栈读一个符号并删除它而不替换。

如果   ,则 PDA 简单的增加一个符号到栈上。

如果   ,则 PDA 保持栈不变动。

注意当 n=0 时,计算路径就是单元素集合  

计算定义 2

对于任何输入  ,M 接受 w,如果存在计算路径   和有限序列  ,使得

(i) 对于每个 i = 0, 1, 2,...m,  都在计算路径上。就是说

  这里的   使得  

(ii)   对于每个 i = 0, 1, 2,...m-1。

这里的    定义同于计算定义 1。

(iii)  ,如果  

这里的    定义同于计算定义 1。

(iv)   

注意上述定义不提供测试空栈的机制。要这么做你需要在所有计算开始前在栈上写一个特殊符号,使得 PDA 可以在检测到这个符号的时候有效的识别出栈已经空了。形式的说,实现它可通过介入转移  这里的 $ 是特殊符号。

例子

下面是识别语言   的 PDA 的形式描述:

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •   对于任何其他状态、输入和栈符号的值。

理解计算过程

下面展示上述 PDA 如何计算不同的输入字符串。

(a) 输入字符串 = 0011

(i) 写  (q1,  ,  )   (q2, $) 来表示 (q2, $)    (q1,  ,  )
s0 =  , s1 = $, t =  , a =  , b = $
设置 r0 = q2
(ii)  (r0, 0,  ) =  (q2, 0,  )   (q2, 0)
s1 = $, a =  , t = $, b = 0, s2 = 0$
设置 r1 = q2
(iii)  (r1, 0,  ) =  (q2, 0,  )   (q2, 0)
s2 = 0$, a =  , t = 0$, b = 0, s3 = 00$
设置 r2 = q2
(iv)  (r2, 1, 0) =  (q2, 1, 0)   (q3,  )
s3 = 00$, a = 0, t = 0$, b =  , s4 = 0$
设置 r3 = q3
(v)  (r3, 1, 0) =  (q3, 1, 0)   (q3,  )
s4 = 0$, a = 0, t = $, b =  , s5 = $
(vi)  (q3,  , $)   (q4,  )
s5 = $, a = $, t =  , b =  , s6 =  
设置 r4 = q4
因为 q4 是接受状态,0011 被接受。
作为总结,计算路径 = (q1, q2, q2, q2, q3, q3, q4)
而 (r0, r1, r2, r3, r4) = (q2, q2, q2, q3, q4)

(b) 输入字符串 = 001

计算移动 (i), (ii), (iii), (iv) 将必定同于情况 (a),否则,PDA 在到达 (v) 之前就已经进入死胡同。
(v)  (r3,  , a) =  (q3,  , a)
因为 s4 = 0$,要么 a =   要么 a = 0
在任何一种情况下, (q3,  , a) =  
因此计算在 r3 = q3 进入死胡同,这不是接受状态。所以 001 被拒绝。

(c) 输入字符串 =  

设置 r0 = q1, r1 = q1
 (r0,  ,  )   (q1,  )
因为 q1 是接受状态,  被接受。

广义下推自动机(GPDA)

GPDA 是在一个步骤内写入整个字符串到栈上或从栈上去除整个字符串的 PDA。

GPDA 形式定义为 6-元组  

这里的 Q,  ,  , q0 和 F 的定义同于 PDA。
 :   是转移函数。

GPDA 的计算规则同于 PDA,除了 ai+1 和 bi+1 现在是字符串而不是符号之外。

GPDA 和 PDA 是等价的,如果一个语言可被一个 PDA 识别,它也可被一个 GPDA 识别,反之亦然。

可以使用下列模拟公式化对 GPDA 和 PDA 的等价性的一个分析式证明:

 (q1, w, x1x2...xm)   (q2, y1y2...yn) 是 GPDA 的转移。

这里的 q1, q2   Q, w  , x1x2...xm  , m 0, y1y2...yn  , n 0。

构造 PDA 的下列转移:

 (q1, w, x1)   (p1,  )
 (p1,  , x2)   (p2,  )
 
 (pm-1,  , xm)   (pm,  )
 (pm,  ,   )   (pm+1, yn)
 (pm+1,  ,   )   (pm+2, yn-1)
 
 (pm+n-1,  ,   )   (q2, y1)

参见

外部链接

  • on Planet Math.
  • JFLAP(页面存档备份,存于互联网档案馆),simulator for several types of automata including nondeterministic pushdown automata

参考书目

  • 《自动机理论、语言和计算导引》,John E. Hopcroft,Jeffery D. Ullman,徐美瑞译,洪加威校,科学出版社,1986年
  • Michael Sipser. Introduction to the Theory of Computation. PWS Publishing. 1997. ISBN 978-0-534-94728-6.  Section 2.2: Pushdown Automata, pp.101–114.

下推自动机, 在自动机理论中, 英語, pushdown, automaton, 是使用了包含数据的栈的有限自动机, 目录, 综述, 形式定义, 例子, 理解计算过程, 广义, gpda, 参见, 外部链接, 参考书目综述, 编辑比有限状态自动机复杂, 除了有限状态组成部分外, 还包括一个长度不受限制的栈, 的状态迁移不但要参考有限状态部分, 也要参照栈当前的状态, 状态迁移不但包括有限状态的变迁, 还包括一个栈的出栈或入栈过程, 可以形象的理解为, 藉由加上讀取一個容量無限栈的能力, 擴充一個能做ϵ, displ. 在自动机理论中 下推自动机 英語 Pushdown automaton 是使用了包含数据的栈的有限自动机 目录 1 综述 2 形式定义 3 例子 3 1 理解计算过程 4 广义下推自动机 GPDA 5 参见 6 外部链接 7 参考书目综述 编辑下推自动机比有限状态自动机复杂 除了有限状态组成部分外 还包括一个长度不受限制的栈 下推自动机的状态迁移不但要参考有限状态部分 也要参照栈当前的状态 状态迁移不但包括有限状态的变迁 还包括一个栈的出栈或入栈过程 下推自动机可以形象的理解为 藉由加上讀取一個容量無限栈的能力 擴充一個能做ϵ displaystyle epsilon 轉移的非確定有限狀態自動機 下推自动机存在 确定 与 非确定 两种形式 两者并不等价 对有限状态自动机两者是等价的 每一个下推自动机都接受一个形式语言 被 非确定下推自动机 接受的语言是上下文无关语言 如果我们把下推自动机扩展 允许一个有限状态自动机存取两个栈 我们得到一个能力更强的自动机 这个自动机与图灵机等价 下推自动机作为一个形式系统最早于1961年出现在 Oettinger 的论文中 它与上下文无关文法的等价性是由乔姆斯基于1962年发现的 形式定义 编辑PDA 形式定义为 6 元组 M Q S G d q 0 F displaystyle M Q Sigma Gamma delta q 0 F 这里的 Q displaystyle Q 是状态的有限集合 S displaystyle Sigma 是输入字母表的有限集合 G displaystyle Gamma 是栈字母表的有限集合 d displaystyle delta Q S ϵ G ϵ P Q G ϵ displaystyle Q times Sigma epsilon times Gamma epsilon longrightarrow mathcal P Q times Gamma epsilon 是转移函数 q 0 displaystyle q 0 是 开始状态 F Q displaystyle F subset Q 是 接受状态 的集合 G ϵ G ϵ displaystyle Gamma epsilon Gamma cup epsilon S ϵ S ϵ displaystyle Sigma epsilon Sigma cup epsilon 计算定义 1对于任何 PDA M Q S G d q 0 F displaystyle M Q Sigma Gamma delta q 0 F 计算路径是一个有序的 n 1 元组 q 0 q 1 q n displaystyle q 0 q 1 q n 这里的 q i Q n 0 displaystyle q i in Q n geq 0 它满足如下条件 i q i 1 b i 1 d q i w i 1 a i 1 displaystyle q i 1 b i 1 in delta q i w i 1 a i 1 对于 i 0 1 2 n 1 这里的 w i 1 S ϵ a i 1 b i 1 G ϵ displaystyle w i 1 in Sigma epsilon a i 1 b i 1 in Gamma epsilon ii s 0 s 1 s 2 s 3 s n G displaystyle exists s 0 s 1 s 2 s 3 cdots s n in Gamma 使得 s i a i 1 t i s i 1 b i 1 t i t i G displaystyle s i a i 1 t i s i 1 b i 1 t i t i in Gamma 在直觉上 PDA 在计算过程中任何一点上都面对着多种可能性 从栈顶读一个符号并把它替代为另一个符号 从栈顶读一个符号并删除它而不替换 不从栈顶读任何符号但压入另一个符号进去 或什么都不做 所有这些都同时由等式 s i a i 1 t i displaystyle s i a i 1 t i 和 s i 1 b i 1 t i displaystyle s i 1 b i 1 t i 来支配 s i displaystyle s i 是紧接在第 i 1 次转移移动之前的栈内容 而 a i 1 displaystyle a i 1 是要从栈顶去除的符号 s i 1 displaystyle s i 1 是紧接在第 i 1 次转移移动之后栈内容 而 b i 1 displaystyle b i 1 是在第 i 1 次转移移动期间要增加到栈上的符号 a i 1 displaystyle a i 1 和 b i 1 displaystyle b i 1 二者都可以 ϵ displaystyle epsilon 如果 a i 1 ϵ displaystyle a i 1 neq epsilon 而 b i 1 ϵ displaystyle b i 1 neq epsilon 则 PDA 从栈读一个符号并把它替代为另一个符号 如果 a i 1 ϵ displaystyle a i 1 neq epsilon 而 b i 1 ϵ displaystyle b i 1 epsilon 则 PDA 从栈读一个符号并删除它而不替换 如果 a i 1 ϵ displaystyle a i 1 epsilon 而 b i 1 ϵ displaystyle b i 1 neq epsilon 则 PDA 简单的增加一个符号到栈上 如果 a i 1 ϵ displaystyle a i 1 epsilon 而 b i 1 ϵ displaystyle b i 1 epsilon 则 PDA 保持栈不变动 注意当 n 0 时 计算路径就是单元素集合 q 0 displaystyle q 0 计算定义 2对于任何输入 w w 1 w 2 w m w i S m 0 displaystyle w w 1 w 2 cdots w m w i in Sigma m geq 0 M 接受 w 如果存在计算路径 q 0 q 1 q n displaystyle q 0 q 1 q n 和有限序列 r 0 r 1 r 2 r m Q m n displaystyle r 0 r 1 r 2 cdots r m in Q m leq n 使得 i 对于每个 i 0 1 2 m r i displaystyle r i 都在计算路径上 就是说 f i displaystyle exists f i 这里的 i f i n displaystyle i leq f i leq n 使得 r i q f i displaystyle r i q f i ii q f i 1 b f i 1 d r i w i 1 a f i 1 displaystyle q f i 1 b f i 1 in delta r i w i 1 a f i 1 对于每个 i 0 1 2 m 1 这里的 a f i 1 displaystyle a f i 1 和 b f i 1 displaystyle b f i 1 定义同于计算定义 1 iii q j 1 b j 1 d q j ϵ a j 1 displaystyle q j 1 b j 1 in delta q j epsilon a j 1 如果 q j r 0 r 1 r m displaystyle q j notin r 0 r 1 cdots r m 这里的 a j 1 displaystyle a j 1 和 b j 1 displaystyle b j 1 定义同于计算定义 1 iv r m q n displaystyle r m q n 且 r m F displaystyle r m in F 注意上述定义不提供测试空栈的机制 要这么做你需要在所有计算开始前在栈上写一个特殊符号 使得 PDA 可以在检测到这个符号的时候有效的识别出栈已经空了 形式的说 实现它可通过介入转移 d q 0 ϵ ϵ q 1 displaystyle delta q 0 epsilon epsilon q 1 这里的 是特殊符号 例子 编辑下面是识别语言 0 n 1 n n 0 displaystyle 0 n 1 n n geq 0 的 PDA 的形式描述 M Q S G d q 1 F displaystyle M Q Sigma Gamma delta q 1 F Q q 1 q 2 q 3 q 4 displaystyle Q q 1 q 2 q 3 q 4 S 0 1 displaystyle Sigma 0 1 G 0 displaystyle Gamma 0 F q 1 q 4 displaystyle F q 1 q 4 d q 1 ϵ ϵ q 2 q 1 ϵ displaystyle delta q 1 epsilon epsilon q 2 q 1 epsilon d q 2 0 ϵ q 2 0 displaystyle delta q 2 0 epsilon q 2 0 d q 2 1 0 q 3 ϵ displaystyle delta q 2 1 0 q 3 epsilon d q 3 1 0 q 3 ϵ displaystyle delta q 3 1 0 q 3 epsilon d q 3 ϵ q 4 ϵ displaystyle delta q 3 epsilon q 4 epsilon d q w a displaystyle delta q w a varnothing 对于任何其他状态 输入和栈符号的值 理解计算过程 编辑 下面展示上述 PDA 如何计算不同的输入字符串 a 输入字符串 0011 i 写 d displaystyle delta q1 ϵ displaystyle epsilon ϵ displaystyle epsilon displaystyle rightarrow q2 来表示 q2 displaystyle in d displaystyle delta q1 ϵ displaystyle epsilon ϵ displaystyle epsilon s0 ϵ displaystyle epsilon s1 t ϵ displaystyle epsilon a ϵ displaystyle epsilon b dd 设置 r0 q2 dd ii d displaystyle delta r0 0 ϵ displaystyle epsilon d displaystyle delta q2 0 ϵ displaystyle epsilon displaystyle rightarrow q2 0 s1 a ϵ displaystyle epsilon t b 0 s2 0 dd 设置 r1 q2 dd iii d displaystyle delta r1 0 ϵ displaystyle epsilon d displaystyle delta q2 0 ϵ displaystyle epsilon displaystyle rightarrow q2 0 s2 0 a ϵ displaystyle epsilon t 0 b 0 s3 00 dd 设置 r2 q2 dd iv d displaystyle delta r2 1 0 d displaystyle delta q2 1 0 displaystyle rightarrow q3 ϵ displaystyle epsilon s3 00 a 0 t 0 b ϵ displaystyle epsilon s4 0 dd 设置 r3 q3 dd v d displaystyle delta r3 1 0 d displaystyle delta q3 1 0 displaystyle rightarrow q3 ϵ displaystyle epsilon s4 0 a 0 t b ϵ displaystyle epsilon s5 dd vi d displaystyle delta q3 ϵ displaystyle epsilon displaystyle rightarrow q4 ϵ displaystyle epsilon s5 a t ϵ displaystyle epsilon b ϵ displaystyle epsilon s6 ϵ displaystyle epsilon dd 设置 r4 q4 dd 因为 q4 是接受状态 0011 被接受 作为总结 计算路径 q1 q2 q2 q2 q3 q3 q4 而 r0 r1 r2 r3 r4 q2 q2 q2 q3 q4 b 输入字符串 001 计算移动 i ii iii iv 将必定同于情况 a 否则 PDA 在到达 v 之前就已经进入死胡同 v d displaystyle delta r3 ϵ displaystyle epsilon a d displaystyle delta q3 ϵ displaystyle epsilon a 因为 s4 0 要么 a ϵ displaystyle epsilon 要么 a 0 dd 在任何一种情况下 d displaystyle delta q3 ϵ displaystyle epsilon a displaystyle varnothing dd 因此计算在 r3 q3 进入死胡同 这不是接受状态 所以 001 被拒绝 dd c 输入字符串 ϵ displaystyle epsilon 设置 r0 q1 r1 q1d displaystyle delta r0 ϵ displaystyle epsilon ϵ displaystyle epsilon displaystyle rightarrow q1 ϵ displaystyle epsilon 因为 q1 是接受状态 ϵ displaystyle epsilon 被接受 广义下推自动机 GPDA 编辑GPDA 是在一个步骤内写入整个字符串到栈上或从栈上去除整个字符串的 PDA GPDA 形式定义为 6 元组 M Q S G d q 0 F displaystyle M Q Sigma Gamma delta q 0 F 这里的 Q S displaystyle Sigma G displaystyle Gamma q0 和 F 的定义同于 PDA d displaystyle delta Q S ϵ G P Q G displaystyle Q times Sigma epsilon times Gamma longrightarrow mathcal P Q times Gamma 是转移函数 GPDA 的计算规则同于 PDA 除了 ai 1 和 bi 1 现在是字符串而不是符号之外 GPDA 和 PDA 是等价的 如果一个语言可被一个 PDA 识别 它也可被一个 GPDA 识别 反之亦然 可以使用下列模拟公式化对 GPDA 和 PDA 的等价性的一个分析式证明 设 d displaystyle delta q1 w x1x2 xm displaystyle longrightarrow q2 y1y2 yn 是 GPDA 的转移 这里的 q1 q2 displaystyle in Q w S ϵ displaystyle in Sigma epsilon x1x2 xm G displaystyle in Gamma m displaystyle geq 0 y1y2 yn G displaystyle in Gamma n displaystyle geq 0 构造 PDA 的下列转移 d displaystyle delta q1 w x1 displaystyle longrightarrow p1 ϵ displaystyle epsilon dd d displaystyle delta p1 ϵ displaystyle epsilon x2 displaystyle longrightarrow p2 ϵ displaystyle epsilon dd displaystyle vdots dd dd dd d displaystyle delta pm 1 ϵ displaystyle epsilon xm displaystyle longrightarrow pm ϵ displaystyle epsilon dd d displaystyle delta pm ϵ displaystyle epsilon ϵ displaystyle epsilon displaystyle longrightarrow pm 1 yn dd d displaystyle delta pm 1 ϵ displaystyle epsilon ϵ displaystyle epsilon displaystyle longrightarrow pm 2 yn 1 dd displaystyle vdots dd dd dd d displaystyle delta pm n 1 ϵ displaystyle epsilon ϵ displaystyle epsilon displaystyle longrightarrow q2 y1 dd 参见 编辑确定下推自动机 有限状态自动机 上下文无关文法外部链接 编辑non deterministic pushdown automaton on Planet Math JFLAP 页面存档备份 存于互联网档案馆 simulator for several types of automata including nondeterministic pushdown automata参考书目 编辑 自动机理论 语言和计算导引 John E Hopcroft Jeffery D Ullman 徐美瑞译 洪加威校 科学出版社 1986年 Michael Sipser Introduction to the Theory of Computation PWS Publishing 1997 ISBN 978 0 534 94728 6 Section 2 2 Pushdown Automata pp 101 114 取自 https zh wikipedia org w index php title 下推自动机 amp oldid 75478605, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。