Двадцать лет назад я создал пакет регулярных выражений, который включал преобразования из регулярных выражений в конечный автомат (DFA) и поддерживал множество закрытых операций с регулярными выражениями (звезда Клина, конкатенация, обратное, операции над множествами и т. Д.). Я не был уверен в худшем случае производительности моего пакета.
DFA обладает той же выразительной силой, что и NDFA, поскольку NDFA в n-состоянии можно легко преобразовать в DFA, имеющий 2 ^ n состояний. Однако существуют ли какие-либо нижние ограничения верхней границы для такого преобразования, которые не требуют экспоненциального взрыва в состоянии?
Я не смог придумать примеры некорректных регулярных выражений или NDFA, но я не тратил много времени на размышления об этом. Я предполагаю, что регулярное выражение типа ((((e | A | B | C) * (e | D | E | F)) * (e | G | H | I)) * (e | J | K | L | M)) *, который смешивает много чередований, и у звезд Клини будет NDFA линейного размера, но обширный DFA.