6

我在一本書上可計算閱讀:無限語言不能定期?什麼是有限語言?

(克林定理)語言是正則的當且僅當它可以通過應用三個操作結合, 串聯,重複有限,從有限的語言獲得 次數。

我很苦惱「有限的語言」。

考慮這樣的語言:L = a*

這是不是有限的。它是集合{0, a, aa, aaa, ...},這顯然是一個無限集合(0 =空字符串)。

所以這是一種無限的語言,對吧?也就是說,「無限集合」的意思是「無限語言」,對吧?

顯然,a*是一種常規語言。這是一種無限的語言。因此,按Kleene定理,它不能成爲常規語言。矛盾。

我很困惑。我想我不知道「有限語言」是什麼意思。

+0

這可能更適合math.stackexchange.com。自動機理論並不涉及編寫程序。 – Barmar

+0

請參閱[這個問題](http://stackoverflow.com/questions/6718202/what-is-a-regular-language?rq=1) – Barmar

+0

IIRC,a *只是一種常規語言,如果a是常規語言(注意,「a *」表示「a中的所有元素」)。因此,這與Kleene定理不矛盾。 – waka

回答

3

你走在正確的軌道上,它可能會更清晰。 Kleen定理表達三個陳述的等價性

語言是規則的==一種語言可以用正則表達式表達==語言可以由有限自動機來表達。

你的例子確實是一種常規語言。一種有限的語言就是你所期望的,一種可以在有限的時間內列出的語言。

當他們談論的重複,他們都在談論Kleen的星運行,這正是a*表示,設定{empty, a, aa, aaa, aaaa, ...}

編輯:

我發現this link: Kleenes Theorem這有助於頗有幾分。通過'重複'它們意味着Kleen Star,那麼原來的陳述就是有道理的。 a*Kleen_Star(a)

3

很快,你的發言是說:

語言是正則的當且僅當是它的一個正則表達式。


的部分「可以從有限的語言通過應用三個操作工會,級聯,重複有限次數獲得的」本質上是一個正則表達式的快速口頭定義。通常,正則表達式(RE)的正式定義開始於以下基礎情況:

  • ∅(空集)是一個RE
  • ε(空字符串)是一個RE
  • 一個爲RE,其中一個是字母表中的

這些都是有限語言。然後,我們通過應用以下三個遞歸規則一個有限次數獲得其他的RE:

  • 一個 | 爲RE其中兩個爲Res
  • AB爲RE其中兩個爲Res
  • A *爲RE,其中爲RE

最後,您可以使用有限描述(正則表達式)創建無限語言。

2

有限語言是一種包含有限詞語的語言。最簡單的情況是那些根本不包含單詞的情況,空字符串以及由單個符號組成的單個字符串(例如,在您的示例中爲a)。

我認爲你的錯誤來自誤讀你引用的規則(就像那些對這個問題的評論)。

(克林定理)語言是正規當且僅當它可以從有限的語言運用三個操作結合,串聯,重複有限的次數來獲得。

該段落並不是談論創建語言中所有字符串所需字符串的操作次數,而是關於定義所定義語言所需的更簡單語言的操作次數。您提到的語言是以有限語言(set {「a」})開始並應用一次重複操作符構建的。

提出這一觀點的另一種不太直接的方式不會對語言和語言操作產生影響,而會對錶達語言和表達語言的表達式以及將它們組合起來的更爲複雜的表達式有影響:當且僅當語言可以用包含有限數量的運算符的正則表達式。

取一個表達式,如a,表示僅包含單個單詞「a」的有限語言。我們可以爲該表達式添加單個重複操作符,並且我們得到a*,這是一種無限語言,它包含第一種語言的零個或多個單詞的每個連接。每個有限表達Ê我們可以通過從表達式表示有限語言開始,通過使用圖案Ë = ˚F組合一個或兩個較小的表達式˚Fģ建立| ģË = FG,或Ë = F *將表示一個正則語言。當表達式用表達式表示時,表示有限語言的表達式(具有有限字數的語言)是基本情況;當規則直接用語言表達時,有限語言是基本的情況,而沒有任何繞路表達的可能。

如果我們允許無限多次應用聯合,連接和重複(或者等價地,如果我們允許使用規則展開的規則的無限表達式),則不能保證生成的語言是正常的。正如Van Wijngaarden語法所說明的那樣,這是觀察的常規語言層面的類比,即無限大的上下文無關文法可以定義非上下文無關語言。

0

無限語言是指具有無限等價類的集合。然而,a *語言只有一個等價類,因此使其成爲一種有限的語言。