2つの通常言語の連結が明確になるのはいつですか?


16

言語と与えられた場合、すべての単語について、それらの連結が明確であるとしましょう。正確に1つの分解とおよび、そうでない場合はあいまいです。(このプロパティに確立された用語があるかどうかはわかりません。検索するのは難しいです!)簡単な例として、とそれ自体の連結はあいまいです()、ただし、とそれ自体の連結は明確です。ABABwABw=abaAbB{ε,a}w=a=εa=aε{a}

2つの標準言語の連結が明確であるかどうかを決定するアルゴリズムはありますか?


1
ああ、これは完全に新入生のCSの問題ですね。正直なところ、私はあまり試していません。文献のどこかにこのための確立されたアルゴリズムがあることを望んでいたので、車輪を再発明する必要はありません。ここでソフトウェアを書いています。数年前にCSコースを2、3しか受けていなかったので、基本的にはウィキペディアから始めています。答えを求めて仕事をしたくない人は誰も好きではないので、教科書や論文、またはアルゴリズムを渡してくれる代わりに私に指摘できるものがあれば、それは役に立ちます!ありがとう!
rstern

私はこれをコメントとして追加しました。というのは、比較的話題が限られていますが、おそらくあなたを助けに導くことができるからです。Unicodeコンソーシアムには、言語間の共通性を判断するためのプロセスがいくつかあります。私は彼らのサイトで非常に有益なリンクを読んだことがありますが、今日の私の人生では、代わりにこれを見つけることはできませんでした。あなたはこれを研究する時間を持っている場合は、ここで彼らのFAQページには、あるunicode.org/faq
htm11h

回答:


10

ヒント:と DFAが与えられた場合、少なくとも2つの異なる分解を持つ単語を受け入れるNFAを構築します。NFAは、の標準NFAの2つのコピー(と DFA を遷移で結合することにより形成)を追跡し、からへの切り替えが2つの異なるポイントで発生するようにします。ABABABABϵAB


ヒントをありがとう!したがって、理解できれば、あいまいな単語のNFAを作成し、そのオートマトンの空性をテストできます。トリッキーな部分は、「からへの切り替えが2つの異なるポイントで発生することを保証する」ようです。2つの DFAの外積(?)を取得し、( -terminal、 -terminal)のすべての製品状態を削除する以外に、それを行う方法がわかりません。 NFAから DFA への移行は、ターミナルのアイデアとねじ込みます。聞こえますが、非効率的です。ソフトウェアに適した既知のアルゴリズムはありますか?ABABABAAABABA
rstern

はい、それはあまり効率的ではありませんが、スマートな方法でそれを行うオプションが常にあります。この問題の特定のアルゴリズムは知りませんが、存在する可能性があります。
ユヴァルフィルマス

7

更新(Yuval Filmusに感謝)。

2つの言語とが与えられた場合、 私は、言語が空の場合に限り、が明確であることを主張します。XYA

X1Y={uAthere exists xX such that xuY}YX1={uAthere exists xX such that uxY}
XYX1XYY1A+

証明。仮定曖昧です。次に、に2つの分解を持つ単語が存在します。たとえば、。ここで、とです。一般性を失うことなく、我々がいることを仮定してもよいの接頭辞である、ある、いくつかのために。その結果、、それからです。したがって、。XYuXYu=x1y2=x2y1x1,x2Xy1,y2Yx1x2x2=x1zzA+u=x1y2=x1zy1y2=zy1zX1XYY1

今仮定する含んでいるいくつかの空でない単語。次に、およびとなるようにおよびがます。その次ひいては製品曖昧です。X1XYY1zx1,x2Xy1,y2Yx2=x1zy2=zy1x2y1=x1zy1=x1y2XY

場合及び規則的で、両方の及び規則的であり、したがって、のためのYuvalの回答を参照しても規則的ですこの言語を受け入れるオートマトン)。XYX1XYY1X1XYY1


が空の単語である場合はどうなりますか?z
ユヴァルフィルマス

おっと。更新します。
J.-E.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.