1

次の CFG を作成しようとしています。

L = {az n |a ∈ {x, y}* および n = a の x の数または a の y の数}

どのように、またはどこから始めればよいかわかりません。

言語の説明は、x と y の文字列の後に z の文字列が続くことを理解しています。z の数は、x または y のいずれかと同じでなければなりません。

例:{xxyxyyxxyzzzzz, yxyxyxyyyzzzzzz, etc...}

これが私の「最善の」解決策です:

S => xSz | ySz | ϵ

z は、x または y を個別に生成するのではなく、x と y を組み合わせて同じ数を生成するため、これが間違っていることはわかっています。

編集:

これが答えだと思いますが、よくわかりません。うまくいくようです。

S => xSz | ySz | xS | yS | ϵ

編集:

無効な文字列も受け入れるため、うまくいきません...

4

2 に答える 2

0

これが答えだと思います:

S = A | B
A = C xSz | C
B = D ySz | D
C = yC | e
D = xD | e

削減できるかは不明ですが、

于 2013-11-08T14:50:31.010 に答える