2012-01-14 2 views
17

Недавно я узнал о Kleene algebra для управления и упрощения регулярных выражений.Упростить регулярное выражение в Mathematica

Мне интересно, было ли это встроено в любые вычислительные программы, такие как Mathematica? Было бы здорово иметь вычислительный инструмент для объединения союзов и конкатенаций больших выражений и упростить их компьютер.

Если вам неизвестны какие-либо программы с этой встроенной алгеброй, знаете ли вы какие-либо программы, позволяющие расширять их двигатели новыми алгебрами?

+1

Документация Mathematica содержит подробное руководство по [Работа со строковыми шаблонами] (http://reference.wolfram.com/mathematica/tutorial/WorkingWithStringPatterns.html). Это может быть хорошее место для начала. – kglr

+2

@kguler: Вся документация, которую я нашел, включая этот учебник, рассматривает только регулярные выражения для базового соответствия строк и манипуляций. –

+4

Не могли бы вы добавить пример конкретной проблемы, которую вы хотели бы решить? Это может быть какой-то игрушечный пример, чтобы проиллюстрировать необходимую функциональность. –

ответ

5

На http://www.maplesoft.com/msw/program/MSW04FinalProgram.pdf, говорится:

Одним из основных результатов теории конечных автоматов известна теорема Клини , в котором говорится о том, что язык является приемлемым по конечного автомата, если и только если он может быть представлен регулярным выражением .

и

Основная трудность алгоритмической обработки регулярных выражений , однако, их упрощение. Хотя известно несколько тождеств относительно регулярных выражений, например правил алгебры Клейна, не существует эффективного алгоритма для , решающего проблему упрощения регулярных выражений.

и

В этих условиях, единственный оставшийся путь заключается в разработке эвристических алгоритмов для упрощения регулярных выражений. Для пакета aut, в этой статье описываются процедуры Maple Rsimplify, Rabsorb и Rexpand.

Мне интересно, существуют ли алгоритмы Аллеебры с открытым исходным кодом с открытым исходным кодом.

+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's? .. –

Смежные вопросы