簡體   English   中英

州數最多-DFA / NFA

[英]Highest number of states - DFA / NFA

我試圖圍繞常規語言進行一些操作,例如交集串聯Kleene star (對於DFA和NFA以及它們之間的區別)。

想象以下情況:

假設我們有L_A和L_B作為DFA M_A和M_B定義的常規語言 ,並且n_An_BM_AM_B中的狀態數

突出兩個問題

  1. DFA中 ,使用語言L_A *所需的最大狀態數是什么?

  2. NFA中 ,對於語言L_A(路口)L_B,需要的最大狀態數是什么?

高度重視有關如何解決這些問題的任何幫助/指針/建議 我不知道如何或從哪里開始。

在DFA中,使用語言L_A *所需的最大狀態數是什么?

“您需要的最大狀態數”是在Myhill-Nerode定理的不可區分關系下要求等價類數的另一種方法。 假設L_A“需要” x個狀態(以其最小DFA),其中x小於或等於n_A。 L_A *“需要”多少個狀態?

當然,在某些情況下,L_A *“需要”的狀態少於L_A。 考慮語言{0,1}勝過{0,1}; 為此的最小DFA具有三個狀態,而{0,1} *的最小DFA具有一個狀態。

此外,不難想象L_A *“需要”相同數量狀態的語言:例如,當L = L *時。 假設L_A = {0,1} 然后L_A = {0,1} ** = {0,1} * = L,而L_A *“需要”相同數量的狀態。

我認為您的問題確實與我們需要更多的情況有關,尤其是在最壞的情況下我們可能還需要多少呢。 假設L_A的等價類為c_1,c_2,...,c_x。 將它們視為將類中的字符串轉換為L_A中的字符串的字符串集。 那么L_A *的類別是(c_1)(L_A *)+ e,(c_2)(L_A *),...,(c_w)(L_A *)。 因此,不同類的最大數量為w; 我們不能通過應用Kleene星來創建任何新類。 但是我們當然可以使它們崩潰! != b的(c_a)(L_A)* =(c_b)(L_A)*是可能的。 考慮L_A = {0,1}。 然后c_1 = {0,1},c_2 = {e},c_3 = {}。 然后(c_1)(L_A)* + e = {e,0,1,...},(c_2)(L_A)* = {e,0,1,...},(c_3)(L_A)* = {}。 我們使用此方法最終得到了兩個不同的候選者,並且可以注意到(c_3)(L_A)*等價類中沒有字符串,從而進一步縮減了候選者。

但重要的一點是,我們再也不能擁有更多的東西。 因此,“所需”狀態數的理論最大值為x,其中x為L_A的“所需”狀態數。

在NFA中,對於語言L_A(路口)L_B,需要的最大狀態數是什么?

令x <= n_A是L_A的數字“需要”,而y <= n_B是n_B的數字“需要”。 相交可以很容易導致例如空的語言,因此應該清楚,相交中的“需要”狀態可能遠低於x和y。 如果L_A = L_B,則相同,因為在這種情況下,L_A(交叉點)L_B = L_A(交叉點)L_A = L_A。

請注意,我們永遠不需要超過x * y,因為我們始終可以使用笛卡爾乘積機器結構來構造DFA,其狀態數等於L_A和L_B的DFA中狀態數的乘積,而DFA為NFA。 一個自然的問題是對於某些語言L_A和L_B是否達到此限制。 答案是事實。

考慮L_A = {a ^ nk}和L_B = {a ^ mk},其中n和m是相對質數且大於1。 然后,L_A(交點)L_B = {a ^(nm)}。 L_A的最小DFA具有n個狀態,L_B的最小DFA具有m個狀態。 L_A(交叉點)L_B的最小DFA具有nm狀態。 這些DFA均沒有具有較少狀態的相應等效NFA。 a ^ 2k的DFA具有轉換表:

q    e    q'
q0   a    q1
q1   a    q2

隨着q0接受。 因此(可達到的)最大值為x y <= n_A n_B。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM