当前位置: 首页>編程日記>正文

形式语言与自动机 下推自动机

形式语言与自动机 下推自动机

下推自动机是啥?:

下面是他的模型:

如何运转?:

 下面是标准定义,属实有点复杂:

注意状态转移函数成分极其复杂,要考虑现有状态,要考虑输入符号,还要考虑栈。

一些约定:

大写的是栈里的,小写的是输入带上的。

例子: 

 

例子:

这里有一个问题:输入0001111怎么办?:

确实进入q2了,毕竟只要栈空了就会进去,但是还要输入一个1,当前处于的状态q1,q2都没有定义在栈空了的情况输入1会发生什么,直接进入deadState.

例子:

 

下推自动机接受那些语言?:

终态接受就是在一个状态上接受,不管栈的情况。(虽然进入这个状态本身可能需要栈是空的)以空栈接受就是状态是普通的状态,只有在空栈的时候才会接受。

 注意:Y是单个字符不是整个字符串。加上X0是因为中途栈可能会出现Z0也没了的情况(这在状态终点的PDA中是可能的),这样会直接进入终态,所以不行,要再加一个保险,反正X0是绝对不可能在Pf阶段没得(那原本的那个终态接受就不成立),只有在最后不分青红皂白全部弹出的时候才会没。

 

 

这个好理解多了:X0冒头了直接转到Pf。这个X0只是指示作用,好像拿走了也不会误会。

这里解释一下:为什么这些图里面都是看到空栈就跟见了鬼一样直接跑到接收状态去?不怕字符串还没输入完吗?不怕,因为继续输入原本的接收状态也会没。

下推自动机和上下文无关文法的等价性。

看不太懂?来看例子:

 可以发现,一上来还没有开始读字符串,看到栈开头有一个S,这个PDA就开始自动工作,把S的所有可能性(顺带其衍生物的可能性)都考虑了。表面上看一片正常,但这个小小的PDA里面已经蕴藏了S的全部可能,也就是这个上下文无关文法的全部可能,只要输入的字符串符合其中一个,某一个栈就会空,然后就成了。

这个原理的构造方法我们已经知道了。证明我们就省略了,反正之前已经讲过了。

当然也有另一种方法:

例子:

 那怎么通过PDA构造CFG呢?:

我们可以从第一步开始看:Q0Z0p是q0到p中途还要弹出z0所使用的字符串。这个字符串假如输入PDA肯定是能过的,同时我们把它构造成了S派生的字符串,也就是说这一部分是没有问题的。

阀(1,a,X)是一个集合,因为PDA是不定的嘛,可以有多个下个状态,所以有了一个集合。而设某一个下个状态是(p,Y1Y2……),那qXrn,也就是从q到rn首先要输入a,状态变成p,栈里的字符串变成了Y1Y2……,然后就是显而易见。

Y1Y2……四大皆空了更好,那显然qXp想要弹出X并进入p只要一个a就可以了。 

有点复杂,先看例子:(没写接收状态就是空栈接受)
 首先是看S可以直接派生的。显然这两个具体是什么我们不能直接看出来。

那我们就用之前的公式寻找突破口。要求q0Z0q0,可以先到q0再到q0,也可以先到q1再到q0.这样我们就有了两个表达式。加起来有四个。

第一级问题解决了,但出现了q0Xq0,q0Xq1,q1Xq0,q1Xq1四个未知的东西,怎么说?

这个时候已经没有从未出现过的变量了,这个体系可以自圆其说(肯定不是最简的)。

 消除无用符号:

确定形下推自动机:

这个没有空的转移,没有多条线路。有点奇怪的是能力和PDA不一样。

 

没有了栈不就是DFA吗,但DPDA有栈的话显然还可以有更多选择,因此DPDA还要更大一些。

 

N(P)就是把P的一部分满足前缀性质的拿出来。

 

语言之间的关系:

 

CFL>DCFL>Regular(CFL是上下文无关语言,也就是下推自动机的语言,regular是正则)

 

 


https://www.fengoutiyan.com/post/14827.html

相关文章:

  • 自动机和形式语言
  • 形式语言与自动机理论引论答案
  • 形式语言与自动机考试
  • 形式语言学与自动机原理
  • 形式语言与自动机蒋宗礼答案
  • 形式语言与自动机理论
  • 形式语言与自动机学啥的
  • 形式语言与自动及答案
  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機