2012-01-14 11 views
17

正規表現の操作と簡略化のために、最近はKleene algebraが見つかりました。Mathematicaでの正規表現の簡略化

これがMathematicaのようなコンピュータソフトウェアに組み込まれているのだろうか?大規模な表現の結合や連結を行うための計算ツールを用意し、コンピュータにそれらを単純化させることは素晴らしいことです。

この代数が組み込まれているプログラムを認識していない場合は、新しい代数を使ってエンジンを拡張できるプログラムを知っていますか? http://www.maplesoft.com/msw/program/MSW04FinalProgram.pdf

+1

Mathematicaのドキュメントには、[文字列パターンの操作](http://reference.wolfram.com/mathematica/tutorial/WorkingWithStringPatterns.html)に関する詳細なチュートリアルが含まれています。それは始めるのに良い場所かもしれません。 – kglr

+2

@kguler:このチュートリアルを含む私が見つけたすべてのドキュメントは、基本的な文字列の一致と操作の目的で正規表現を使用することのみを考慮しています。 –

+4

解決したい特定の問題の例を追加できますか?必要な機能を説明するためのおもちゃの例があります。 –

答えて

5

は、それは述べて:有限オートマトンの理論の基本的な結果の

一つは言語が 有限オートマトンで受け入れ可能であると述べて 有名なクリーネの定理、になる場合だけです。通常の 式で表すことができます。

の正規表現 のアルゴリズム治療の主な問題は、しかし、彼らの単純化です。正規表現に関しては、いくつかの具体例が知られているが、例えば、Kleene代数の規則 のように、正規表現の簡略化問題を解く有効なアルゴリズムは存在しない。状況下

、残された唯一の方法は、正規表現を簡略化するためにヒューリスティック アルゴリズムを開発することです。 autパッケージの場合、 このペーパーではMapleプロシージャRsimplify、Rabsorbおよび Rexpandの概要を説明します。

Kleene Algebraアルゴリズムのオープンソースの実装が存在するかどうか疑問に思っています。

+1

参照してください。私はグループのクヌス=ベクディクのようなすべての代数を単純化するためのシステムがあると思ったが、今は明らかにそうではない。この質問は次のとおりです:http://stackoverflow.com/questions/7540227/strategies-for-simplifying-math-expressions標準的な算術演算を簡略化するためのルールベースのシステムとこのペーパー:http://alleystoughton.us/forlan/book-and -slides/slides-3.2-twoup.pdfには、始めるための多くの良いルールがあります。しかし、私は本当に用語書き直しシステムを最初から書く必要があるか、それともプラグインできるシステムがあるかどうかは疑問です。おそらくそれらのAutomated_theorem_proverのいくつか? –