Враховуючи два слова , w 2 , чи вирішується, якщо мова L слів, що містять рівну кількість w 1 і w 2w1w2Lw1w2 є регулярною?
Спочатку кілька визначень:
їх можна зробити більш короткими, а позначення можна вдосконалити, якщо вони будуть використані в доказуванні. Це лише перший проект.
Давши два слова і w 2 , ми скажемо, що: w1w2
завжди відбуваєтьсяз w 2 , відзначається w 1 ◃ w 2w1 w2w1◃w2 , iff
- для будь-якого рядка такого, що
s = x w 2 y з ∣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∗ та його симетричні варіанти.
- є рядок з ∣ xs=xw2y таким чином, що існує максимум одне розкладання s = x ′ w 1 y ′∣x∣,∣y∣ ≥∣w1∣+∣w2∣s=x′w1y′
завжди триваєз w 2 , відзначено w 1 ◃ ▹w1 w2 , якщо кожен завжди відбувається з іншим,w1◃▹w2
і w 2 відбуваються незалежно, відзначається w 1 ▹ ◃w1w2 , якщо ні один не трапляється з іншим,w1▹◃w2
завжди відбувається т раз або більшеніж ш 2 , відзначено ш 1 ◃ м ш 2 , якщо для будь-якого рядка s такещо
s = х ш 2 у с | х | , | у | | ≥ ∣ w 1 ∣ + ∣ w 2 ∣ є m інші розклади s = x i w 1 yw1 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
w1◃w2, but not w2◃w1
One of the 2 words cannot occur without the other, but the converse is not true (except possibly at the ends of the string). This happens when:
w1 is a substring of w2:then a finite automaton can just check that w1 does not occur outside an instance of w2.
і 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 симетрія та ліво-права симетрія).
w1◃2w2
One of the 2 words occurs twice in the other. That can be recognized by an a finite automation that checks that the smaller word never occurs in the string. The is also a slightly more complex variant that combines the two variations of case 2. In this case the automaton checks that the smaller string 1i0 never occurs, except possibly as part of v in the larger one v1j coming as a suffix of the string (and 3 other cases by symetry).
w1▹◃w2
The 2 words can occur independently of each other. We build
a generalized-sequential-machine (gsm) G that output a when it recognizes an occurrence of w1 and
b when recognizing an occurrence of w2, and forgets everything
else. The language L is regular only if the language G(L) is
regular. But G(L)={w∈{a,b}∗∣ ∣w∣a=∣w∣b} which is clearly context-free and not regular. Hence L is not regular.
Actually we have L=G−1(G(L)). Since regular languages and context-free languages are closed under gsm mapping and inverse gsm mapping, we know also that L is context free.
One way to organize a formal proof could be the following. First build
a PDA that recognizes the language. Actually it can be done with a
1-counter machine, but it is easier to have two stack symbols to avoid duplicating the finite control. Then, for the cases where it should be a FA, show
that the counter can be bounded by a constant that depends only on the
two words. For the other cases show that the counter can reach any
arbitrary value. Of course, the PDA should be organized so that the
proofs are easy enough to carry.
Representing the FA as a 2-stack-symbols PDA is probably the simplest representation for it. In the non-regular case, the finite control part of the PDA is the same as that of the GSM in the proof sketch above. Instead of outputting a's and b's like the GSM, the PDA counts the difference in number with the stack.