簡體   English   中英

可以將任何有限狀態自動機轉換為正則表達式嗎?

[英]Can any finite state automata be translated into a regular expression?

假設我們有如下的fsa:

fsa = {0:{'a': 1, else: 2},1:{'b': 1, else: 2},2:{else: 2}}

這意味着:在狀態0,如果輸入為'a',則進入狀態1,否則進入狀態2;否則,進入狀態2。 在狀態1,如果輸入為'b',則進入狀態1,否則進入狀態2; 在狀態2,對於任何輸入,它都會進入狀態2。

假設狀態0是開始狀態,狀態1是接受狀態,狀態2是失敗狀態。 然后,可以將此fsa轉換為正則表達式“ ab *”。 實際上,有幾種算法可以將fsa轉換為正則表達式,例如Br​​zozowski代數方法。

我的問題:以上形式中定義的任何fsa都可以翻譯成正則表達式嗎? 有什么限制嗎?

是的,它們在數學上是等效的。 正則表達式和有限自動機的等價性稱為Kleene定理。

沒有限制-所有有限狀態自動機都等效於某些正則表達式,並且所有正則表達式都等效於某些有限狀態自動機。

是的,它們是等效的。 Wikipedia頁面上的常規語言來看,這些都是常規語言的等效定義。

  1. 它是正則表達式的語言
  2. 它是非確定性有限自動機(NFA)接受的語言
  3. 它是確定性有限自動機(DFA)接受的語言
  4. 它可以由常規語法生成
  5. 它是交替有限自動機接受的語言
  6. 它可以由前綴語法生成
  7. 只讀圖靈機可以接受它
  8. 可以用一元二階邏輯(Büchi-Elgot-Trakhtenbrot定理)定義它
  9. 它可以被某些有限的半定形詞識別,這意味着它是有限半定形子集的子集的原像,該子集是同字母的自由半定形詞同態的

是。 每個有限的自動機都會有一個對應的正則表達式。 克萊因定理證明了這一結果。 通過將有限自動機划分為多個較小的有限自動機的並集,使用數學歸納原理證明了該定理。 證明可以在這里找到。

暫無
暫無

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

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