Я знаю, что языки, которые можно определить с помощью регулярных выражений, и языки, распознаваемые DFA / NFA (конечными автоматами), эквивалентны. Также не существует DFA для языка . Но все это можно записать с помощью регулярных выражений (в этом отношении любого нерегулярный язык может быть) , как . Но мы знаем, что каждый язык с регулярным выражением имеет DFA, который его распознает (противоречие с моим предыдущим утверждением). Я знаю, что это тривиальная вещь, но включает ли определение регулярного выражения условие, что оно должно быть конечным?{ ϵ } ∪ { 01 } ∪ { 0011 } . , , , , ,
10
Ответы:
Если бы регулярным выражениям было разрешено быть бесконечными, то любой язык был бы регулярным.
Учитывая язык , мы всегда можем определить регулярное выражение , который точно определяет . (Пример: регулярное выражение определяет .)R = W 1 + W 2 + ⋯ L R 1 = ε + 0 + 1 + 00 + 01 + 10 + 11 + ⋯ L 1 = { 0 , 1 } *L={w1,w2,…} R=w1+w2+⋯ L
R1=ϵ+0+1+00+01+10+11+⋯ L1={0,1}∗
Мы знаем, что некоторые языки не являются регулярными, поэтому это показывает, что бесконечные регулярные выражения описывают больший класс языков, чем конечные регулярные выражения.
источник
Да, это должно быть конечно. Представьте, что у вас есть этот бесконечный набор возможных совпадений, и ваш вклад есть
011
. Сможете ли вы когда-нибудь отказаться от этого? Вы когда-нибудь закончили матчи, чтобы проверить?Есть ли язык, который по этому определению не был бы регулярным ? Как насчет набора всех пар программ и входов, так что данная программа останавливается на данном входе?
Теперь, если у вас была программа, которая перечисляла строки на языке в лексикографическом порядке -
Обновить
Чтобы пояснить немного на основе отзывов в комментариях, причина, по которой не все языки этой формы являются регулярными, по определению. Если, например, вы ищете доказательство теоремы Клини, это зависит от того факта, что регулярное выражение должно быть конечным, чтобы доказать, что оно порождает конечный автомат.
Почему мы определяем «обычный» язык таким образом? Поскольку каждый формальный язык является подмножеством строк в алфавите, и каждый набор строк может быть выражен как объединение синглетонов, поэтому, если бы мы назвали любой набор строк «обычным» языком, обычный язык был бы просто синонимом для язык . Это не очень полезное определение, тем более что мы не можем реализовать его на аппаратном или программном уровне. Мы нигде не можем хранить произвольный бесконечный список или строить машину с бесконечным состоянием.
Как я уже говорил, если у вас есть способ перечислить все строки в языке по порядку, вы можете построить решающее значение из этого (принять, когда вы видите эту точную строку, отклонить, если вы встретите строку, которая идет после той, которую вы ищите) и наоборот (для каждой строки по порядку, пропустите ее через решатель и выведите ее тогда и только тогда, когда она принята). Таким образом, если бы мы считали каждый перечисляемый язык регулярным , каждый разрешимый язык был бы «регулярным», и нам потребовался бы новый термин для языков, распознаваемых конечными автоматами и их эквивалентными кодировками в качестве конечных выражений.
источник
Предположим, что регулярные выражения могут быть бесконечными.
Таким образом, язык, определяемый {ϵ} ∪ {01} ∪ {0011} ... будет регулярным. Для каждого обычного языка существует NFA. Один из способов получить этот NFA состоит в том, чтобы иметь отдельные NFA для каждого из {ϵ}, {01}, {0011} ... и объединять их, используя переходы ϵ. Поскольку существует бесконечное количество различных регулярных выражений, нам нужно объединить бесконечные под-NFA. Однако NFA может иметь только конечное число состояний (определение NFA).
Таким образом, не существует NFA, который может определять язык, определенный объединением бесконечных регулярных выражений, что подразумевает, что язык не является регулярным.
Таким образом, не существует регулярного выражения, которое могло бы определять тот же язык, что и язык, определенный объединением бесконечных регулярных выражений.
Таким образом, регулярные выражения могут иметь только конечные выражения.
источник