[英]Complement of non-deterministic context-free language
上下文無關語言的補充並不總是上下文無關的。 不允許只交換 NPDA 的最終和非最終狀態並假設它產生語言的補碼。 有人可以舉一個出錯的例子嗎? 為什么上述過程適用於給定 DFA 的常規語言? 也許是因為 DFA 和 NFA 是等價的,而 DPDA 和 NPDA 不是?
好吧,交換 NFA 的最終狀態和非最終狀態甚至不能保證您會得到該語言的補充。 考慮一下這個相當奇怪的 NFA:
----->q0--a-->[q1]
|
a
|
V
q2
該 NFA 接受語言 {a}。 交換最終狀態和非最終狀態,接受的語言變為 {e, a}。 這些語言不是互補的,因為它們有交集。
以完全相同的方式,交換 NPDA 的狀態也不能保證有效。 正如您所指出的,不同之處在於,對於任何 NFA,都有一些等效的 DFA(確實有很多),並且交換切換狀態的最終性將適用於這些,因此可以保證語言在互補下關閉。
但是,對於 NPDA,我們不一定有等效的 DPDA(交換最終性可以正常工作)。 因此,僅 NPDA 接受的某些語言的補語可能不是上下文無關的。
事實上,上下文無關語言 {a^ib^jc^k | i != j 或 j != k} 僅被 NPDA 接受,並且它的補碼{不是 a^ib^jc^k 形式的字符串或具有 i=j=k 形式的字符串)不是上下文無關的。
沒有從至少一個 sigma 元素中指定唯一移動的語法。
從任何 state 獲取一個輸入,我們無法確定我們將到達哪一步,因此生成這種情況的語法稱為非確定性語法。
[在此處輸入圖像描述][1] https://i.stack.imgur.com/U6vaJ.jpg對於特定的輸入,計算機將在不同的執行時給出不同的 output。
不能在多項式時間內解決問題。
由於算法可以采用的路徑不止一條,因此無法確定執行的下一步。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.