Більш розширений коментар із припущенням, але ось умова, яка, здається, охоплює проблему, в контексті регулярного для S ( L ) без контексту.LS(L)
Умова
У мінімальному DFA для L будь-який приймаючий шлях містить щонайменше один цикл.AL
Виняток: дві петлі дозволені, якщо їх мітки та мітка префікса перед першим циклом коментуються, а суфікс після другого циклу порожній. Наприклад, нормально.aa∗b(aa)∗
Нагадаємо, що два слова і v змінюються, якщо вони є силами одного слова t . Ми можемо вважати суфікс порожнім, оскільки він не може бути не порожнім і комутувати з міткою другого циклу в DFA.uvt
Достатні
Нехай виконуються умови, ви будуєте КПК для , розглядаючи кожну приймаючу зразок х U у з А , де у мітки простого циклу. Ми хочемо прийняти слова форми x u n y x u n y . Ми читаємо x , натискаємо символ на кожну появу u , читаємо y x , потім виводимо символ на кожне виникнення u і, нарешті, читаємо y .LxuyAuxunyxunyxuyxuy
Щодо винятку, якщо ми знаходимося в цьому випадку, основний приймаючий шлях має вигляд де u , v - мітки циклів. Ми приймаємо слова форми x u n y v m x u n y v m , але за припущенням ( x , u , v commute) це те саме, що u n x y u n v m x y v m , яке може робити PDA: натисніть nxuyvu,vxunyvmxunyvmx,u,vunxyunvmxyvmnраз (для випадків ), прочитати x y , pop n разів, push m разів (для v ), прочитати x y , pop m разів.uxynmvxym
Остаточний КПК - це об'єднання КПК для кожного зразків.
Необхідне
(ручне розмахування) Якщо є шлях з двома петлями, навіть у найпростішому випадку, коли ви повинні взяти один, а потім інший (наприклад, ), ви повинні пам'ятати, скільки разів кожен з них взятий, але структура стека заважає повторити їх у тому ж порядку. Зауважте, що той факт, що DFA мінімальний, є важливим для характеристики, щоб уникнути використання двох циклів, коли їх може вистачити.a∗b∗
Наразі необхідною частиною є лише здогадка, і щоб отримати точний стан, могло б бути більше винятків, я б зацікавився зустрічними прикладами.