2017-02-16 2 views
2

は、私はL1が正規言語であるとL2はPDAで表すことができることを知っている言語2つの言語の共通点は何ですか?

L1={anb2m|n,m≥1} 
L2={anb3n|n≥0} 

L = L1 ∩ L2 

を考えます。

しかし、私はL{a2nb6n|n≥1}であるという答えを理解していません。このソリューションはどのように計算されましたか?

+0

[異なるアルファベットの2つの言語の共通点は何ですか?](http://stackoverflow.com/questions/15213955/what-is-the-intersection-of-two-languages-with-different-アルファベット) – veganaiZe

+0

@riciそれは私がそれについて理解していないもの、 'L'は基本的に解決策を提供しています – totoro

+0

@totoro:あなたの混乱の点を明確にするためにあなたの質問を編集しようとしました。このような質問は、実際にプログラミングとは関係がないので、http://cs.stackexchange.com/で尋ねられるべきです。しかし、あなたの仕事を見せようとしない限り、あなたの質問がうまく受け入れられないことに注意してください。 – rici

答えて

3

言語は単なる(有効な文字列の)セットなので、ここでは整数演算では単なる単純な問題です。問題の本質に到達するためには、正式な言語のエレガントな衣装を取り除くことだけが必要です。

L1L2の両方のセットは{acount(a)bcount(b)|j,k≥0}のサブセットです。すなわち、いくつかの番号asと、その後にいくつかの番号bsが続きます。 の条件では、m≥1の場合は2mである必要があるため、count(b)は正の偶数に制限されます。 L2の条件は、count(b)が正確に3×count(a)であることを制限します。

ここで、述語で定義された2つの集合の共通部分は、両方の述語が真となるような要素の集合です。したがって、count(b)は、2と3で割り切れる必要があります。つまり、6で割り切れる必要があります。換言すれば、ある正の整数nに対しては6nでなければならない。つまり、count(a)は、bのちょうど3倍多くあるので、2nでなければなりません。それはあなたに答えを提供します。

L2と同様に、Lは規則的ではありませんが、非常によく似たPDAで実装できます。

関連する問題