簡體   English   中英

喬姆斯基范式轉換

[英]Chomsky Normal Form conversion

我需要你盡快的幫助。 我應該轉換為喬姆斯基范式。

S -> 01S | XY

X -> 110Y | 0 | ε

Y -> YY | 1

我嘗試過很少,但我總是卡住,因為我有這些混合部件,例如 110Y ......

轉換為喬姆斯基范式

這個StackOverFlow問題應該可以幫助您了解所要做的事情。

有點晚了,但還是盡快:

開始語法:

S → 01S | XY
X → 110Y | 0 | ε
Y → YY | 1

將串聯拆分為單獨的產生式:

S → 01S
S → XY
X → 110Y
X → 0
X → ε
Y → YY
Y → 1

刪除 epsilon(內聯X ):

S → 01S
S → 110YY
S → 0Y
S → Y
Y → YY
Y → 1

刪除生產S → Y

S → 01S
S → 110YY
S → 0Y
S → YY
S → 1
Y → YY
Y → 1

用右側有符號的新產生式替換所有終端符號:

S → ABS
S → BBAYY
S → AY
S → YY
S → 1
Y → YY
Y → 1
A → 0
B → 1

打破所有右側有兩個以上非終結符號的產生式:

S → CS
S → DE
S → AY
S → YY
S → 1
Y → YY
Y → 1
A → 0
B → 1
C → AB
D → BB
E → AF
F → YY

然后你就完成了。

轉換 CHOMSKY 范式的算法::

步驟 1 - 如果起始符號 S 出現在某個右側,則創建一個新的起始符號 S' 和一個新的產生式 S'→ S。

第 2 步 - 刪除 Null 產品。 (使用前面討論的 Null 生產刪除算法)

步驟 3 - 刪除單位產品。 (使用前面討論過的單位生產去除算法)

第 4 步 - 將每個產品 A → B1…Bn 替換為 A → B1C,其中 n > 2,其中 C → B2 …Bn。 對右側有兩個或多個符號的所有產品重復此步驟。

步驟 5 - 如果任何產生式的右側是 A → aB 的形式,其中 a 是終端,A、B 是非終端,則產生式將替換為 A → XB 和 X → a。 對形式為 A → aB 的每個產生式重復此步驟。

問題:

將以下 CFG 轉換為 CNF

S → ASA | aB, A → B | S, B → b | ε

解決方案(1)由於 S 出現在 R.HS 中,我們添加一個新的 state S0 並將 S0→S 添加到生產集,它變為 -

S0→S, S→ ASA | aB, A → B | S, B → b |

(2) 現在我們將刪除 null 產品 -

B → ∈ 和 A → ∈

去除 B → ε 后,生產集變為 -

S0→S, S→ ASA | 甲乙| a, A → B | 小號 | ∈, B → b

去除 A → ∈ 后,生產集變為 -

S0→S, S→ ASA | 甲乙| 一個 | 作為 | 南非 | S, A → B | S, B → b

(3) 現在我們將刪除單元產品。

去除 S → S 后,生產集變為 -

S0→S, S→ ASA | 甲乙| 一個 | 作為 | SA, A → B | S, B → b

去除 S0→ S 后,生產集變為 -

S0→ ASA | 甲乙| 一個 | 作為 | SA, S→ ASA | 甲乙| 一個 | 作為 | 南非

A → B | S, B → b

去除 A→ B 后,生產集變為 -

S0 → ASA | 甲乙| 一個 | 作為 | SA, S→ ASA | 甲乙| 一個 | 作為 | 南非

A → S | b

乙→乙

去除 A→ S 后,生產集變為 -

S0 → ASA | 甲乙| 一個 | 作為 | SA, S→ ASA | 甲乙| 一個 | 作為 | 南非

A → b |ASA | 甲乙| 一個 | 作為 | SA, B → b

(4)現在我們將在R.HS中找出兩個以上的變量

這里,S0→ ASA, S → ASA, A→ ASA 違反了 R.HS 中的兩個非終結符

因此,我們將應用第 4 步和第 5 步來獲得 CNF 中的以下最終生產集 -

S0→ 斧頭 | 甲乙| 一個 | 作為 | 南非

S→ 斧頭 | 甲乙| 一個 | 作為 | 南非

A → b |AX | 甲乙| 一個 | 作為 | 南非

乙→乙

X → SA

(5) 我們必須改變產生式 S0→ aB, S→ aB, A→ aB

最終的生產集變為 -

S0→ 斧頭 | YB | 一個 | 作為 | 南非

S→ 斧頭 | YB | 一個 | 作為 | 南非

A → b A → b |AX | YB | 一個 | 作為 | 南非

乙→乙

X → SA

Y → 一個

暫無
暫無

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

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