Известно, что язык слов, содержащих одинаковые числа 0 и 1, не является регулярным, а язык слов, содержащих одинаковые числа 001 и 100, является регулярным ( см. Здесь ).
Учитывая два слова , разрешимо ли, если язык слов, содержащий равное количество и является регулярным?
Ответы:
Даны ли два слова , w 2 , разрешимо ли, если язык L слов, содержащих одинаковое количество w 1 и w 2 , регулярен?w1 w2 L w1 w2
Сначала некоторые определения:
они могут быть сделаны более краткими, и примечания могут быть улучшены, если они будут использоваться в доказательствах. Это только первый черновик.
Учитывая два слова и w 2 , мы говорим, что:w1 w2
всегда происходитс w 2 , отмечается w 1 ◃ w 2 , еслиw1 w2 w1◃w2
всегда взаимодействуетс w 2 , отмечается w 1 ◃ ▹w1 w2 , если каждый из них всегда встречается с другим,w1◃▹w2
и ш 2 происходит независимо другдруга, отмечено ш 1 ▹ ◃w1 w2 , если ни один не всегда встречается с другим,w1▹◃w2
всегда встречается m раз или больше,чем w 2 , отмечается w 1 w m w 2 , если для любой строки s такой, что s = x w 2 y с ∣ x ∣ , ∣ y ∣ | ≥ ∣ w 1 ∣ + ∣ w 2 ∣ существует m других разложений s = x i w 1 y iw1 m w2 w1◃mw2 s s=xw2y ∣x∣, ∣y∣| ≥∣w1∣+∣w2∣ m s=xiw1yi для
такой, что из i ≠ j следует x i ≠ x j .i∈[1,m] i≠j xi≠xj
Эти определения построены так, что мы можем игнорировать то, что происходит на концах строки, где должны присутствовать и w 2 . Граничные эффекты в конце строки должны анализироваться отдельно, но они представляют конечное число случаев (на самом деле я думаю, что я забыл один или два таких граничных подслуча в моем первом анализе ниже, но это не имеет большого значения). Определения совместимы с перекрытием случаев.w1 w2
Необходимо рассмотреть 4 основных случая (игнорируя симметрию между и w 2 ):w1 w2
Оба слова обязательно встречаются вместе, за исключением, возможно, на концах строки. Это касается только пар вида 1 i 0 и 01 i или 0 i 1 и 10 i . Это легко распознаетсяконечным автоматом,который только проверяет наличие одиночных вхождений на обоих концах строки, которая должна быть распознана, чтобы убедиться, что в обоих концах или ни на одном конце нет ни одного случая. Существует также вырожденный случай, когда w 1 = w 2 : тогда язык L, очевидно, регулярен.w1◃▹w2
1i0 01i 0i1 10i w1=w2
, но не w 2 ◃ w 1 Одно из двух слов не может встречаться без другого, но обратное неверно (за исключением, возможно, в конце строки). Это происходит, когда:w1◃w2 w2◃w1
является подстрокой w 2 : тогда конечный автомат может просто проверить, что w 1 не встречается вне экземпляра w 2 .w1 w2 w1 w2
и w 2 = v 1 j для некоторого слова v ∈ { 0 , 1 } ∗ , v ≠ 01 i : тогда конечный автомат проверяет, как в предыдущем случае, что w 1 не встречается отдельно от w 2 , Однако автомат позволяет считать один дополнительный экземпляр w 1 , который позволит принять, если w 2w1=1i0 w2=v1j v∈{0,1}∗ v≠01i w1 w2 w1 w2 это суффикс строки. Есть три других симметричных случая (симметрия 1-0 и симметрия слева-справа).
Одно из двух слов встречается дважды в другом. Это может быть распознано конечной автоматизацией, которая проверяет, что меньшее слово никогда не встречается в строке. Это также немного более сложный вариант, который объединяет два варианта случая 2. В этом случае автомат проверяет, что меньшая строка 1 i 0 никогда не встречается, за исключением, возможно, как часть v в большей v 1 j, которая появляется как суффикс строки (и 3 других случая по симметрии).w1◃2w2
1i0 v v1j
2 слова могут встречаться независимо друг от друга. Мы создаем обобщенную последовательную машину (gsm) G, которая выводит a, когда распознает вхождение w 1 и b при распознавании вхождения w 2 , и забывает все остальное. Язык L регулярен, только если язык G ( L ) регулярен. Но G ( L ) = { w ∈ { a , b } ∗ ∣ ∣ w ∣ aw1▹◃w2
G a w1 b w2 L G(L) который явно не зависит от контекста и не является регулярным. Следовательно, L не является регулярным.
На самом деле мы имеем L = G - 1 ( G ( L ) ) . Так как обычные языки и языки без контекста закрыты при отображении gsm и обратном отображении gsm, мы также знаем, что L не зависит от контекста.G(L)={w∈{a,b}∗∣ ∣w∣a=∣w∣b} L
L=G−1(G(L)) L
Один из способов организовать формальное доказательство может быть следующим. Сначала создайте КПК, который распознает язык. На самом деле это можно сделать на машине с 1 счетчиком, но проще иметь два символа стека, чтобы избежать дублирования конечного элемента управления. Затем для случаев, когда это должен быть FA, покажите, что счетчик может быть ограничен константой, которая зависит только от двух слов. Для остальных случаев покажите, что счетчик может достигать любого произвольного значения. Конечно, КПК должен быть организован так, чтобы доказательства были достаточно легкими для переноски.
Представление FA как двухпакетных символов PDA, вероятно, является самым простым представлением для него. В нерегулярном случае конечная управляющая часть КПК такая же, как у GSM в приведенном выше наброске проверки. Вместо того , чтобы выводить «ы и б » S , как в GSM, КПК подсчитывает разницу в количестве с стека.a b
источник