1
在最近的測試中,有人問我承認,如果下面的語言是上下文無關:理論:給定的語言環境是否是免費的?
據對我來說,它是免費的情況下,可通過下面的上下文無關文法,其中被接受S是開始符號和Y是一個非終端:
然而,我的回答被認爲是錯誤的,那麼顯然這語言不是上下文。
我對自己的回答充滿信心,但回覆讓我感到困惑。我的理解是否正確?請讓我知道我是否遺漏了一些東西。
在最近的測試中,有人問我承認,如果下面的語言是上下文無關:理論:給定的語言環境是否是免費的?
據對我來說,它是免費的情況下,可通過下面的上下文無關文法,其中被接受S是開始符號和Y是一個非終端:
然而,我的回答被認爲是錯誤的,那麼顯然這語言不是上下文。
我對自己的回答充滿信心,但回覆讓我感到困惑。我的理解是否正確?請讓我知道我是否遺漏了一些東西。
該語言不是上下文無關的語言!你的語法錯了!
根據語言描述0
s後綴應該小於1
s的數字和前綴0
s。但是,使用你的語法,您可以生成錯誤的字符串,如下所示:
第一步:總是由S0
第二步替換S
:現在更換S
到Y
S --> S0 --> S00 --> S000 --> Y000
現在可以更換Y
到^
(NUL)它給出000
,這個字符串不在你的語言中。
或者更換Y
到0Y1
然後Y
到^
:
Y000 ---> 0Y1000 ---> 01000
01000
字符串不是語言。所以你的語法不會生成相同的語言。
你的語法生成0100不是語言的一部分 – Marian
這個問題似乎是題外話題,因爲它是關於CS理論的;使用cs/cstheory stackexchange站點之一(閱讀他們自己的幫助來決定哪一個)。 – geoffspear
@MarianV謝謝。現在理解了這個問題.. –