簡體   English   中英

是 L = {a^mb^nc^k | if (m=n) then (n=k) } CFL 與否?

[英]Is L = {a^mb^nc^k | if (m=n) then (n=k) } CFL or not?

我看到在這種語言中,當我們決定 m=n 時; 那么我們就沒有b了; 所以我們不能用c's.Sompare它們。所以,我認為它不應該是CFL。

但下面的解決方案表明它是 CFL

節能燈解決方案

在上面給出的解決方案中,L2 CFL 是否正確?

語言 L = {a^mb^nc^k | if (m = n) then (n = k)} 是一種上下文無關語言,正是因為第二個推導中給出的原因:條件 if (m = n) then (n = k) 不僅在 m = 時為真n 和 n = k,而且當 m 不等於 n 時。 如果條件是 (m = n) 和 (n = k),則該語言將不是上下文無關的,因為此條件等效於 m = n = k。

我們可以通過顯示 L 中的任何內容在 L2 中來證明該語言是上下文無關的正確推導,反之亦然。

假設字符串 w 在我們的語言 L 中。那么要么 m = n,要么不。 如果 m = n,則 n = k。 但是字符串 w 在 L2 中,因為 L2 是兩種語言的並集,其中一種包含 n = k 的所有字符串。 如果 m = n 不是這種情況,則字符串 w 在 L2 中,因為 L2 是兩種語言的並集,其中另一種是 m 和 n 不相等的所有字符串的語言。 所以 L 中的任何字符串都在 L2 中。

假設字符串 w 在 L2 中。 那么要么 m = n 為假,要么 n = k 為真。 假設 m = n 為假。 那么條件 if (m = n) then (n = k) 是空洞的(因為假設是錯誤的,一切都來自矛盾)。 如果 n = k 為真,那么無論假設的真值如何,蘊涵 if (hypothesis) then (n = k) 必須為真。 所以 L2 中的任何字符串都在 L 中。

因為 L 和 L2 是彼此的子集,所以它們必須相等。

暫無
暫無

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

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