Несколько заметок о терминологии: Регулярные выражения не имеют состояний - отклонение, принятие или иное. (Чистые) регулярные выражения описывают регулярные языки. У обычных языков тоже нет состояний; просто строки, которые являются элементами или не-элементы языка. Можно обсудить дополнение языка: набор строк по одному и тому же алфавиту, которые не являются элементами языка. Так получилось, что дополнение обычного языка также является обычным языком. Каждый регулярный язык может быть описан конечным автоматом, и именно этот автомат отклоняет или принимает состояния.
Неправильно давать регулярное выражение, и попросить его «отвергающие государства» - может быть много автоматов, которые описывают один и тот же регулярный язык, и один будет иметь , чтобы определить, какие из этих возможностей рассматриваются ,
Я предполагаю, что вы просите некоторые описания строк, которые не на языке , указанного вашего выражение (аb + ба) *, возможно, даже регулярное выражение, которое описывает дополнения этого языка по отношению к (a + b) *.
Один подход, который вы можете попробовать, - найти DFA, который распознает этот язык, затем изменить все принимающие состояния на отклонения состояний и наоборот. Получаемый DFA распознает дополнение к исходному языку, и (с некоторой уловкой - в качестве упражнения для читателя) это можно преобразовать обратно в обычное выражение .
Хм? Что означает «отвергать состояние»? – Matchu
Ваш английский перевод регулярного выражения кажется неправильным. Его нулевые или более группы от нуля до многих строк, заканчивающихся символом a. – Akusete
@Matchu Это состояние, в котором вы не можете перейти в принимающее состояние или состояние, которое не принимается. Я видел обе интерпретации. – NullUserException