[英]The union of two determinstic finite automata?
我正在嘗試解決一個必須為兩種語言的結合創建DFA的問題。
這些是:{s是{a,b,c} * | s中的每個“ a”后面緊跟一個“ b”},然后
{s是{a,b,c} * | s中的每個“ c”都以“ b”開頭
我認為我走在正確的道路上,但不確定是否完全正確。 有人可以看看嗎?
這是一篇類似的文章 ,介紹了如何查找兩個DFA的聯合。
要理解的關鍵是,您必須同時運行兩個DFA,或者通常必須在聯合DFA中維護兩個DFA的狀態。
編輯:
您得到錯誤結果的原因是因為您的DFA不確定,並且它們實際上並不能決定您描述的語言。 我認為您對聯盟的計算是正確的,但是您應該先修復DFA,然后再繼續進行。
兩種語言的交集由L1 ∩ L2 = not(not(L1) ∪ not(L2))
(根據de Morgans法則)。
DFA的補碼( "not"
)是通過將所有接受狀態都更改為不接受而來的,反之亦然。 這將為您提供不確定的有限自動機(NFA)。
通過將您的兩個DFA或NFA合並到一個同時接受兩種語言的新NFA中來創建聯合。 這是通過引入一個起始狀態完成的,您可以從中進入兩個NFA的起始狀態,而無需消耗任何東西(僅消耗ε)。
完成所有這些操作后,您便擁有了NFA。 您可以使用常用方法將其簡化為DFA。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.