什么是正則語言
編輯在理論計算機科學和形式語言理論中,正則語言(也稱為理性語言)是一種可以由正則表達式定義的形式語言,在理論計算機科學的嚴格意義上(與許多現代正則表達式引擎相反,它們被增加了允許識別非正則語言的功能)。另外,正則語言也可以被定義為由有限自動機識別的一種語言。正則表達式和有限自動機的等價性被稱為Kleene定理(以美國數學家StephenColeKleene命名)。在喬姆斯基的層次結構中,正則語言是由第三類語法生成的語言。
正式定義
編輯在一個字母表Σ上的正則語言集合被遞歸地定義如下。空語言?是正則語言。對于每個a∈Σ(a屬于Σ),單子語言{a}是正則語言。如果A是正則語言,A*(Kleenestar)是正則語言。因此,空字符串{ε}也是有規律的。如果A和B是有規律的語言,那么A∪B(聯合)和A-B(連接)是有規律的語言。Σ以上的其他語言都不是有規律的。關于有規律表達式的語法和語義,請參見有規律表達式。
正則語言的例子
編輯所有的有限語言都是有規律的,特別是空字符串語言{ε}=?*是有規律的。其他典型的例子包括由字母表{a,b}上所有包含偶數個as的字符串組成的語言,或者由所有形式的字符串組成的語言:幾個as后面是幾個bs。一個不規則語言的簡單例子是字符串{anbn|n≥0}的集合。直觀地說,它不能被有限自動機識別,因為有限自動機的內存是有限的,它不能記住a的確切數量。下面將給出嚴格證明這一事實的技術。
等效形式
編輯一個正則語言滿足以下的等效特性。它是正則表達式的語言(根據上述定義)它是非確定性有限自動機(NFA)所接受的語言它是確定性有限自動機(DFA)所接受的語言它可以由正則語法生成它是交替有限自動機所接受的語言它是雙向有限自動機所接受的語言。可以由前綴語法生成,可以由只讀圖靈機接受,可以由單數二階邏輯定義(Büchi-Elgot-Trakhtenbrot定理),可以由一些有限句法單數M識別。意味著它是有限單體M的子集S在單體同構f下的預像{w∈Σ*|f(w)∈S}。Σ*→M的自由單體在其字母表上的等價類的數量是有限的。(這個數字等于接受L的最小確定性有限自動機的狀態數。)屬性10.和11.是定義正則語言的純代數方法;對于單數體M?Σ*也可以制定類似的語句。在這種情況下,對M的等價性導致了可識別語言的概念。有些作者用上述不同于1.的屬性之一作為正規語言的替代定義。上面的一些等價關系,特別是前四種形式主義中的等價關系,在教科書中被稱為Kleene定理。準確地說,哪一個(或哪一個子集)被稱為這樣的,在不同的作者之間有所不同。有一本教科書稱正則表達式和NFA的等價性(上述1.和2.)為Kleene定理。另一本教科書稱正則表達式和DFA的等價性(上文1.和3.)為Kleene定理。另外兩本教科書首先證明了NFA和DFA的表達等價性(2.和3.),然后將Kleene定理表述為正則表達式和有限自動機(據說后者描述可識別的語言)之間的等價性。
一個以語言學為導向的文本首先將正則語法(上文4.)等同于DFA和NFA,將由這些語言(中的任何一種)生成的語言稱為正則,之后它引入了正則表達式,并稱其為描述有理語言,最后將Kleene定理陳述為正則和有理語言的重合性。其他作者則簡單地將理性表達式和正則表達式定義為同義詞,并對理性語言和正則語言做了同樣的定義。顯然,正則這個詞起源于1951年的一份技術報告,其中Kleene介紹了正則事件,并明確表示歡迎任何關于更多描述性術語的建議。諾姆-喬姆斯基(NoamChomsky)在他1959年的開創性文章中,一開始使用了正則這個術語的不同含義(指的是今天所謂的喬姆斯基正則形式),但他注意到他的有限狀態語言等同于克萊尼的正則事件。
閉合特性
編輯正則語言在各種操作下是閉合的,也就是說,如果語言K和L是正則的,則其結果也是
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/164079/