下推自動機 PDA 在程式設計中的應用

2021-09-10 03:23:23 字數 1375 閱讀 6488

(一)下推自動機簡介(pushdown automation)

下推自動機﹙pda﹚是自動機理論中定義的一種抽象的計算模型。下推自動機比有限狀態自動機複雜:除了有限狀態組成部分外,還包括乙個長度不受限制的棧;下推自動機的狀態遷移不但要參考有限狀態部分,也要參照棧當前的狀態;狀態遷移不但包括有限狀態的變遷,還包括乙個棧的出棧或入棧過程。

物理模型如下:

pda 應該含有三個基本結構:①存放輸入符號串的輸入帶   ②存放文法符號的棧   ③有窮狀態控制器。

pda的動作:在有窮狀態控制器的控制下根據它的當前狀態、棧頂符號、以及輸入符號作出相應的動作,在有的時候,不需要考慮輸入符號。

(二)pda的形式語言定義

下推自動機 (pushdown automaton,pda) m = (q, ∑, γ, δ, q0 , z0 , f)

q——狀態的非空有窮集合。q∈q,q 稱為m 的乙個狀態(state);

∑——輸入字母表 (input alphabet)。要求 m 的輸入字串都是∑上的字串;

γ——棧符號表 (stack alphabet)。∀a∈γ,叫做乙個棧符號;

z0——z0∈γ叫做開始符號(start symbol),是 m 啟動時候棧內惟一的乙個符號。所以,習慣地稱其為棧底符號;

q0——q0∈q,是 m 的開始狀態(initial state),也可叫做初始狀態或者啟動狀態;

f——fq,是 m 的終止狀態(final state) 集合,簡稱為終態集。∀q∈f,q 稱為 m 的終止狀態,也可稱為接受狀態 (accept state),簡稱為終態。

δ——狀態轉移函式(transition function),有時候又叫做狀態轉換函式或者移動函式。 描述如下:

①:δ(q, a, z )=  表示 m 在狀態 q,棧頂符號為 z 時,讀入字元 a,對於i = 1, 2, …, m,可以選擇地將狀態變成 pi,並將棧頂符號 z 彈出,將 γi 中的符號從右到左依次壓入棧,然後將讀頭向右移動乙個帶方格而指向輸入字串的下乙個字元。

②:δ(q,ε, z)=  表示 m 進行一次ε-移動 (空移動),即 m 在狀態 q,棧頂符號為 z 時,無論輸入符號是什麼,對於 i = 1, 2, …, m,可以選擇地將狀態變成 pi,並將棧頂符號 z 彈出,將 γi 中的符號從右到左依次壓入棧,讀頭不移動。

posted @

2018-02-01 15:55

李華麗 閱讀(

...)

編輯收藏

形式語言與編譯10 下推自動機PDA

2型文法的處理裝置 下推自動機 pda 正則文法處理不了括號對,但是上下文無關文法可以表示出來。上下文無關文法是強於正則文法的。下推自動機的能力是強於有限自動機的 下推自動機相對於有限自動機 它就是多了乙個棧。其他都一樣 輸入串,狀態 狀態機 pda 在對輸入串做讀入操作的同時,棧頂能夠同時地 做p...

自然語言處理(四) 下推自動機接受的語言

下推自動機的定義 乙個不確定的pda可以表達成乙個7元組 m q,q0,z0,f 其中,是輸入符號的有窮集合 q 是狀態的有限集合 q0 q 是初始狀態 為下推儲存器符號的有窮集合 z0 為最初出現在下推儲存器頂端的開始符號 f 是終止狀態集合,f q 是從 q 到 q 的子集的對映。對映關係 q,...

AC自動機的介紹與應用

一 概念 首先簡要介紹一下ac自動機 aho corasick automation,該演算法在1975年產生於貝爾實驗室,是著名的多模匹配演算法之一。乙個常見的例子就是給出n個單詞,再給出一段文章 長度是m 讓你找出有多少個單詞在文章裡出現過。要搞懂ac自動機,先得有字典樹trie的基礎知識 也有...