2012-01-14 27 views
17

Niedawno dowiedziałem się o Kleene algebra do manipulowania i upraszczania wyrażeń regularnych.Uproszczenie wyrażeń regularnych w Mathematica

Zastanawiam się, czy zostało to wbudowane w jakiekolwiek oprogramowanie komputerowe, takie jak Mathematica? Byłoby wspaniale mieć narzędzie obliczeniowe do robienia związków i konkatenacji dużych wyrażeń i upraszczania ich przez komputer.

Jeśli nie znasz żadnych programów z wbudowaną algebrą, czy znasz jakieś programy, które umożliwiają rozszerzenie swoich silników o nowe algebry?

+1

Dokumentacja Mathematica zawiera szczegółowy samouczek dotyczący pracy z wzorami łańcuchowymi (http://reference.wolfram.com/mathematica/tutorial/WorkingWithStringPatterns.html). To może być dobre miejsce na rozpoczęcie. – kglr

+2

@kguler: Cała dokumentacja, którą znalazłem, łącznie z tym samouczkiem, uwzględnia tylko użycie wyrażeń regularnych do podstawowego dopasowywania ciągów i celów manipulacyjnych. –

+4

Czy możesz dodać przykład konkretnego problemu, który chciałbyś rozwiązać? Może to być zabawny przykład ilustrujący potrzebną funkcjonalność. –

Odpowiedz

5

Na http://www.maplesoft.com/msw/program/MSW04FinalProgram.pdf, stwierdza:

Jednym z podstawowych wyników teorii automatów skończonych jest znanym twierdzeniem Kleene, w którym stwierdza się, że język jest do zaakceptowania przez skończonego automatu wtedy i tylko wtedy, może być reprezentowany przez regularne wyrażenie .

i

Główną trudność algorytmicznego leczeniu regularnych wyrażeń jest jednak ich uproszczenie. Chociaż znanych jest kilka tożsamości dotyczących wyrażeń regularnych, np. Reguł algebry Kleene'a, nie istnieje skuteczny algorytm do rozwiązania problemu uproszczenia wyrażeń regularnych przez .

i

W tej sytuacji jedynym sposobem, w lewo jest opracowanie algorytmów heurystycznych dla uproszczenia wyrażeń regularnych. W przypadku pakietu , w tym dokumencie przedstawiono procedury klonowania Rsimplify, Rabsorb i Rexpand.

Zastanawiam się, czy istnieją algorytmy Kleene Algebra o otwartym kodzie źródłowym.

+1

Rozumiem. Myślałem, że istnieją systemy upraszczające wszystkie algebry, takie jak Knuth-Bendix dla grup, ale teraz wyraźnie nie ma. To pytanie: http://stackoverflow.com/questions/7540227/strategies-for-simplifying-math-expressions mówi o systemach opartych na regułach dla uproszczenia standardowej arytmetyki i niniejszego dokumentu: http://alleystoughton.us/forlan/book-and -slides/slides-3.2-twoup.pdf daje wiele dobrych zasad, aby zacząć. Jednak wciąż zastanawiam się, czy naprawdę muszę napisać od nowa system przepisywania od nowa, czy są te, do których mogę podłączyć. Być może niektóre z tych zautomatyzowanych_autoryzacji? .. –