狀態不識別語言。 DFA通過準確接受語言中的單詞集而不承認其他語言來識別語言。 DFA有許多州。
如果有一個正常語言L,可以通過Pumping引理來模擬,它將有一個屬性n。
對於具有s狀態的DFA,爲了使其接受L,s必須> = n。
最後一行只是說有些語言中s大於n,而不是相等。
這可能更適合於https://cstheory.stackexchange.com/或https://cs.stackexchange.com/(不太確定我自己的價值)。
注意:中平凡,並不是所有的DFA的足夠的狀態將接受的語言。另外,語言通過抽象引理這一事實並不意味着它是常規的(但是如果失敗則意味着它不是)。
還要注意,FA和DFA之間的語言變化 - 這有點鬆懈,但由於NDFA具有與DFA相同的功能,並且DFA更易於編寫和理解,所以使用DFA作爲證明。
編輯我給一個正規語言的例子,所以你可以看到ü的想法,V,W,Z和n。然後我們將討論s。
L = xy^nz, n > 2 (i.e. xyyz, xyyyz, xyyyyz)
u = xy
v = y
w = z
n = 4
因此:
|z| = 3: xyz (i = 0) Not in L, but |z| < n
|z| = 4: xyyz (i = 1)
|z| = 5: xyyyz (i = 2)
etc
因此,它是由泵引理建模。 DFA至少需要4個州。所以我們來考慮一個。
-> State 1: x
State 1:
-> State 2: y
State 2:
-> State 3: y
State 3:
-> State 3: y
-> State 4: z
State 4:
Accepting state
Terminating state
4個州,如預期。不可能做得更少,正如n = 4所期望的那樣。在這種情況下,這個例子非常簡單,所以我認爲你可以用4個以上的狀態來構建一個狀態(但如果需要的話也可以) 。
狀態2可以在y上自行循環,並轉到狀態3作爲z上的接受狀態。因此,只需要3個狀態 – Ion
@Ion:3狀態DFA也接受不屬於滯後語言的'xyz'。 –
你能改變你的符號嗎?你在不同的上下文中使用n(「n> 2 ... n = 4」),z(「w = z」,「| z | = 3」,也暗示是z = xyyz)混亂。 –