Почему дополнение к регулярному языку по-прежнему остается регулярным языком?

Согласно моему учебнику, дополнение L1 = A * - L1 является обычным языком до тех пор, пока L1 является обычным языком.
Разве A * также не включает контекстно-свободные языки, контекстно-зависимые языки и языки с рекурсивным перечислением? A * -L1 тоже будет включать их всех, не так ли? Как же тогда он может быть регулярным?
Под представлением конечного автомата я понимаю, почему дополнение по-прежнему является обычным языком. Однако я не могу понять теорию, лежащую в основе этого.

Кроме того, A * - L1 = A * дополнение к пересечению (L1). Разве определение дополнения чем-то, определяемым дополнением, не является тавтологией? Я действительно не понимаю, как это может быть правдой.

Спасибо.


comment
Ваш учебник не определяет А как обычный язык?   -  person Vaughn Cato    schedule 29.10.2011
comment
Регулярен не только A (алфавит) (что очевидно, потому что он конечен), но и A* (набор всех возможных строк) также регулярен. Это могло бы еще лучше осветить суть вопроса. Машина принимает все, что принимает A*, поэтому регулярность - это не свойство размера языка, а, скорее, его структуры.   -  person Ray Toal    schedule 29.10.2011


Ответы (3)


Я думаю, что вас смущает то, что когда вы говорите: «Разве A* также не включает языки без контекста, языки с учетом контекста и языки с рекурсивным перечислением?» вы путаете A*, который представляет собой набор строк, с Powerset(A*), который представляет собой набор языков.

Верно, что Powerset(A*) - {L1} - это набор, содержащий «контекстно-свободные языки, контекстно-зависимые языки и рекурсивно перечисляемые языки», но на самом деле это не имеет отношения к теореме, которая просто гласит: если любой регулярный язык L (набор строк), то язык A*-L, также набор строк, также является обычным языком.

TL; DR в вашем вопросе путаница между уровнями: наборы строк и наборы языков. Любое разделение A* на L и A*-L, в котором L является обычным, также должно иметь A*-L регулярное. A* не содержит и не может «содержать языки», потому что это набор строк.

На второй вопрос:

Кроме того, A * - L1 = A * дополнение к пересечению (L1). Разве определение дополнения чем-то, определяемым дополнением, не является тавтологией?

Хороший вопрос. Я подозреваю, что если это представлено как определение, это просто определение оператора -. Насколько я могу судить, это не определение «функции дополнения». Возможно, «дополнение» уже было определено, и теперь ваша книга пытается определить оператор вычитания. Или это скорее теорема, чем определение.

person Ray Toal    schedule 29.10.2011


Если вы понимаете автоматное доказательство, значит, у вас есть все. Интуиция, лежащая в основе этого, заключается в том, что если вы можете распознать обычный язык, запустив автомат и увидев, останавливается ли он в конечном состоянии, то вы можете распознать дополнение этого языка (по набору всех строк), просто запустив тот же автомат. и смотрю, останавливается ли он на неокончательном состоянии. Поскольку все строки останавливаются на каком-то состоянии, а язык является регулярным, если и только если он останавливается на конечном состоянии, то он не является регулярным тогда и только тогда, когда он останавливается на не конечном состоянии. Думаю, это довольно интуитивно понятно. Кроме того, единственное, что вам нужно доказать себе, что язык является регулярным, - это построить для него автомат: просто поменяйте местами все конечные и не конечные состояния.

person Alejandro Piad    schedule 04.04.2012