Если вы имеете дело с системой регулярных выражений, эквивалентной формальным регулярным выражениям (которые описывают регулярные языки; нет подсчета, нет заглядывания назад, нет соответствующих пар скобок и т. Д.), ИЛИ, если вы будете иметь дело только с регулярными выражениямикоторые используют эти функции (несмотря на то, что ваша система регулярных выражений способна описывать нерегулярные языки), тогда существует точное понятие сложности (или, по крайней мере, вы могли бы получить его), и есть определенный смысл, в котором регулярные выражения могут быть «минимизированы».".
По теореме Майхилла-Нерода все регулярные языки имеют конечное число классов эквивалентности при условии отношения неразличимости на строках.Эти классы эквивалентности непосредственно соответствуют состояниям в минимальном детерминированном конечном автомате для регулярного языка.Вы можете взять число состояний минимального детерминированного конечного автомата, чтобы язык был «фундаментальной» сложностью самого языка.
Существуют алгоритмы, которые могут привести вас от (формального) регулярного выражения кминимальный детерминированный конечный автомат, а затем снова обратно к регулярному выражению.Это должно дать вам каноническое регулярное выражение для каждого регулярного языка.Я представляю - но не выработал доказательств - что процесс создания регулярного выражения из минимального детерминированного конечного автомата мог бы быть изменен так, чтобы он давал возможное закороченное (с точки зрения количества операций) регулярное выражение.
Сложность языка может заключаться в количестве операций в таком каноническом регулярном выражении.Фактическая сложность любого заданного регулярного выражения может быть количеством операций в нем.Отношение может дать вам представление о том, насколько «неэффективно» или «неоправданно сложно» ваше регулярное выражение.
Если вам действительно нужны нерегулярные функции регулярного выражения, то вам не повезло;в языковых классах высшего порядка нет понятия вычислимой минимизации.Вы можете изобретать показатели сложности в течение всего дня, но вы никогда не получите общий алгоритмический ответ на вопрос «насколько это неэффективно по сравнению с базовым уровнем?»Еще один способ сказать, что я имею в виду: сделать торт может быть сложнее, чем сделать попкорн, но если вам нужен торт, вам придется приложить дополнительные усилия, чтобы получить то, что вам нужно.