簡體   English   中英

檢查上下文無關文法是否生成DFA拒絕的無限語言的算法

[英]Algorithm that checks if a context free grammar generates infinite language that a DFA rejects

我有一個DFA A和一個CFG G,然后我必須檢查G是否生成了A不接受的無限單詞(被A拒絕),以及很好的復雜度。

我想用CFG構造一個圖,如果它包含一個有向循環,那么會產生一種無限的語言。 頂點是變量,對於每次生產,我都會畫一些邊緣。 輸入是DFA拒絕的所有單詞,當我找到一個循環時,我可以說CFG生成了DFA A拒絕的無限語言。

我不知道如何將其轉換為一種算法,或者我的建議不正確,因此我必須創建一個新的建議。

編輯:我可以將cfg轉換為CNF,然后轉換為DFA(使用chomsky)。之后,我嘗試找到一個循環。 但是,我轉換后的dfa的狀態可能少於dfa a...。我需要如何在我認為的cfg中獲得DFA A拒絕的字詞。

給定CFG G,構造PDAB。給定DFA A和PDA B,構造PDA C,使C接受L(C)= L(B)\\ L(A),其中\\為設置差。 現在,L(C)恰好是PDA B接受的單詞的語言(因此由CFG G生成),但未被DFA接受(即拒絕)。

現在的問題是B的語言是否無限。 我們做得到。 一種方法是將PDA轉換回CFG,然后將CFG放入CNF中-刪除不必要和無效的符號。 然后,在非終結符之間創建一個依賴關系樹。 如果任何剩余的(生產性的)非終止符號都取決於自身,即存在一個循環,則該語言是無限的。 否則,語言是有限的(如果沒有可用的生產符號,則為空)。

暫無
暫無

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

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