2つの正規表現が等しいかどうかを判断するアルゴリズム


11

2つの任意の正規表現が与えられた場合、それらが同じ文字列のセットと一致するかどうかを判断するための「効率的な」アルゴリズムはありますか?

より一般的には、2つの一致セットの共通部分のサイズを計算できますか?

これを行うにはどのアルゴリズムがあり、それらはどの複雑なクラスに住んでいますか?

クリーネスターを許可しない場合、それによって画像が変更されますか?


「交差点の大きさ」とはどういう意味ですか?最も興味深いケースでは、それは無限に大きくなります。あなたはWRTのサイズに興味があるΣ
ラファエル

@Raphael私の理解では、Kleeneスターを削除すると、セットのサイズが有限になります。
MathematicalOrchid

依存します。他にどんなオペレーターが許可されていますか?補完を許可する場合、あなたの言うことは真実ではありません。また、クリーネスターについても状況を尋ねるので、とにかく明確にする必要があります。
ラファエル

参照してくださいcs.stackexchange.com/q/12624/755
DW

回答:


12

Hendrik Janは複雑度のクラスに対して適切な回答を提供していますが、アルゴリズム自体については回答していません。

私が知っている、これを行う最も簡単なアルゴリズムは、正規表現をDFAに変換することです。正規表現をNFAに、NFAをDFAに変換するための既知の技術があります。

2つのDFAを取得すると、DFAの最小形式は同型まで一意であるため、等価性のテストは効率的で決定可能です。

ただし、これらのDFAをNFAから構築すると、多くの時間がかかり、最悪の場合は指数関数的に大きな、非常に大きなDFASが生成される可能性があります。


10

正規表現の同等性はPSPACE完全であることが知られており、かなり悪いです。「単純な正規表現の決定問題の複雑さ」という論文には、正規表現のいくつかのサブクラスがそれぞれの複雑さとともにリストされています。(リンク


1
e2ee

@dkuper追加説明をありがとう。回答を編集して、この参照または適切な参照を追加してください。(または、独自の回答を開始することもできます。)
Hendrik Jan

一般的な正規表現がPSPACE完全であるためのリファレンスはありますか?
ライアン

あなたのリンクは死んでいます。新しいもの、または少なくとも紙からの関連情報のいくつかを提供できますか?
D.ベンノーブル

@ D.BenKnobleリンクは私にとってはうまくいきます。
Hendrik Jan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.