簡體   English   中英

非確定性上下文無關語言的補充

[英]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.

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