2

手始めに、これは宿題の質問です。アイデアはありますが、それでも正しい答えを得ることができません。私は答えを求めているのではなく、質問に答えるために助けを求めているだけです。

私は現在、その言語の文脈自由文法を書き込もうとしています。

a(iterated i times)db(iterated j times),  for i and j>=0,  and j = 2 * i.

したがって、基本的には、2の間にbとadの2倍のaがあります。次に例を示します。

d,  adbb,  aadbbbb,  …… 

これが私が持っているものについてです、私はあまり持っていません...私はこれらのCFGの概念を理解しています。私はこの質問の論理についてよくわかりません。私が正しい方向に進んでいるかどうかはわかりません...

S -> AdB
A -> EMPTY
A -> aAB
B -> DD

ありがとう。

4

2 に答える 2

1

私はこれを解決するために2つのステートメントだけが必要であると言うことからヒントを始めると思います。しかし、私があなたにこれ以上与えるつもりなら、私はむしろあなたの仕事のいくつかを(間違った方向にさえ!)見たいです。

編集

あなたが持っているものを投稿してくれてありがとう。うまくいけば正しい方向に進むことができるいくつかの思考演習があります:

n>0の場合のanb n表す文法を記述します(ab、aabb、aaabbb、...)

CFGに関するウィキペディアの記事は、まだ行き詰まっている場合にこれについていくらかの助けを持っています。

n >0の場合のndbnを表す文法を記述します(adb、aadbb、aaadbbb、...)

最後の1つを取得すると、文法に到達するための簡単な追加が表示されます。

于 2010-11-01T21:00:44.947 に答える
1

次の文字列のサブ文字列内の各文字列が単純な再帰文法を書くのはかなり簡単な言語である場合はいつでも、このようにリストすることができます。最初の(最短の)文字列を作成するルールと、前の文字列からそれぞれ長い文字列を作成するルールが必要です。

于 2010-11-01T21:02:26.380 に答える