2

私は、通常の言語を使用し、別の言語と「連結しない」操作を見つけようとしています。例:正規の言語の閉鎖Unconcatenation

a * L - a * = L |ここでLは普通の言語です

私はその差(減算)が私が望む操作ではないことを知っています。しかし、私は私のポイントを取得していると信じています。

論理的に(A∪B)に等しい集合Lがあるが、我々はAへのアクセス権を持たない場合もある。したがって、L、B、およびこのように、私たちは何とかAを得ることができますか?基本的に:

L - B = A | L =(A∪B)

普通の言語の相補性、交差点、およびその他の閉鎖特性の多くのバリエーションを使用して、この問題を十分に考慮していますが、わかりません。

私が思い付くことができた最高のは、次のとおりです。

A =((L - B)∪(A∩B)| L =(∪のB)

しかし、これは右側に必要

答えて

2

L場合= AUBは、演算子を定義 - 。

B = A. - そのようなLこと

この問題は、演算子が明確に定義されていないことが原因です:LとBを指定すると、L = AU Bを満たす言語がいくつか存在する可能性があります。特に、AがLのサブセットであり、 L \ Bの場合、Aは解です。すなわち、A =(L \ B)U Cである場合、CはBの(おそらく不適切な)サブセットであり、L-Bはそのセットと同じである可能性がある。

ここで、このようなすべてのAの集合を意味するように定義することができます。その場合、集合差分、集合体、および電力集合演算子を使用してこれを実行可能にすることができます。すると、Q = {(L \ B)U {}、(L \ B)U {B [0]}、...、(L \ B)U B = L}である。

指定した場合、これを明確にすることができます。 - 常にQの「最小」要素を返します(有限集合の場合は要素数が最も少なく、無限集合の場合は他のすべての集合の部分集合です)L = BA場合は、単にL \ B.

を回復その場合、オペレータを定義 - 、同様の問題がここに存在

B = A. - そのようなLこと:いくつかがあるかもしれませんたとえば、B = a *と空の集合のみを含む言語A:a *と{e}の2つの選択肢を考えてみましょう。 a * a * = a * eなので、Lは同じでBは同じで、L - Bはa *または{e}の2つの異なる値を生成しなければなりません。