Даны ли два слова , w 2 , разрешимо ли, если язык L слов, содержащих одинаковое количество w 1 и w 2 , регулярен?w1w2Lw1w2
Сначала некоторые определения:
они могут быть сделаны более краткими, и примечания могут быть улучшены, если они будут использоваться в доказательствах. Это только первый черновик.
Учитывая два слова и w 2 , мы говорим, что: w1w2
всегда происходитс w 2 , отмечается w 1 ◃ w 2 , если w1 w2w1◃w2
- для любой строки такой, что
s = x w 2 y с ∣ x ∣ ,ss=xw2y и | х | 0 , | х | 1 | , | у | 0 , | у | 1 | ≥ 1 существует другое разложение s = x ′ w 1 y ′ . Примечание: условие, что х и у∣x∣,∣y∣ ≥∣w1∣+∣w2∣|x|0,|x|1|,|y|0,|y|1|≥1s=x′w1y′
xyкаждый из них содержит как минимум 0 и 1 требуется в патологическом случае (найденном @sdcvvc): , w 2 = v 1 i + j и y ∈ 1 ∗ и его симметричные варианты.w1=1i0w2=v1i+jy∈1∗
- есть строка с ∣ x ∣ ,s=xw2y , что существует не более одного разложения s = x ′ w 1 y ′∣x∣,∣y∣ ≥∣w1∣+∣w2∣s=x′w1y′
всегда взаимодействуетс w 2 , отмечается w 1 ◃ ▹w1 w2 , если каждый из них всегда встречается с другим,w1◃▹w2
и ш 2 происходит независимо другдруга, отмечено ш 1 ▹ ◃w1w2 , если ни один не всегда встречается с другим,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 mw2w1◃mw2ss=xw2y∣x∣, ∣y∣| ≥∣w1∣+∣w2∣ms=xiw1yiдля
такой, что из i ≠ j следует x i ≠ x j .i∈[1,m]i≠jxi≠xj
Эти определения построены так, что мы можем игнорировать то, что происходит на концах строки, где должны присутствовать и w 2 . Граничные эффекты в конце строки должны анализироваться отдельно, но они представляют конечное число случаев (на самом деле я думаю, что я забыл один или два таких граничных подслуча в моем первом анализе ниже, но это не имеет большого значения). Определения совместимы с перекрытием случаев.w1w2
Необходимо рассмотреть 4 основных случая (игнорируя симметрию между и w 2 ):w1w2
Оба слова обязательно встречаются вместе, за исключением, возможно, на концах строки. Это касается только пар вида 1 i 0 и 01 i или 0 i 1 и 10 i . Это легко распознаетсяконечным автоматом,который только проверяет наличие одиночных вхождений на обоих концах строки, которая должна быть распознана, чтобы убедиться, что в обоих концах или ни на одном конце нет ни одного случая. Существует также вырожденный случай, когда w 1 = w 2 : тогда язык L, очевидно, регулярен.w1◃▹w2
1i001i0i110iw1=w2
, но не w 2 ◃ w 1
Одно из двух слов не может встречаться без другого, но обратное неверно (за исключением, возможно, в конце строки). Это происходит, когда:w1◃w2w2◃w1
является подстрокой w 2 : тогда конечный автомат может просто проверить, что w 1 не встречается вне экземпляра w 2 .w1w2w1w2
и w 2 = v 1 j для некоторого слова v ∈ { 0 , 1 } ∗ , v ≠ 01 i : тогда конечный автомат проверяет, как в предыдущем случае, что w 1 не встречается отдельно от w 2 , Однако автомат позволяет считать один дополнительный экземпляр w 1 , который позволит принять, если w 2w1=1i0w2=v1jv∈{0,1}∗v≠01iw1w2w1w2это суффикс строки. Есть три других симметричных случая (симметрия 1-0 и симметрия слева-справа).
Одно из двух слов встречается дважды в другом. Это может быть распознано конечной автоматизацией, которая проверяет, что меньшее слово никогда не встречается в строке. Это также немного более сложный вариант, который объединяет два варианта случая 2. В этом случае автомат проверяет, что меньшая строка 1 i 0 никогда не встречается, за исключением, возможно, как часть v в большей v 1 j, которая появляется как суффикс строки (и 3 других случая по симметрии).w1◃2w2
1i0vv1j
2 слова могут встречаться независимо друг от друга. Мы создаем обобщенную последовательную машину (gsm) G, которая выводит a, когда распознает вхождение w 1 и
b при распознавании вхождения w 2 , и забывает все остальное. Язык L регулярен, только если язык G ( L ) регулярен. Но G ( L ) = { w ∈ { a , b } ∗ ∣ ∣ w ∣ aw1▹◃w2
Gaw1bw2LG(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, КПК подсчитывает разницу в количестве с стека.ab