Я снова подумал об этой проблеме и думаю, что у меня есть полное доказательство. Это немного сложнее, чем я ожидал. Комментарии очень приветствуются! Обновление: я представил это доказательство на arXiv, на случай, если это кому-нибудь пригодится: http://arxiv.org/abs/1207.2819
Пусть будет контекстно-свободным языком над алфавитом . Пусть будет автоматом, который распознает , с алфавитом стека . Обозначим черезчисло состояний . Без ограничения общности мы можем предположить, что переходы выталкивают верхний символ стека и либо не помещают символ в стек, либо помещают в стек предыдущий верхний символ и какой-либо другой символ.Σ A L Γ | A | A ALΣALΓ| A |AA
Определими длина накачки, и покажет, что все такие, что имеет разложение вида такое, что , и .р = | A | ( | Γ | + 1 ) p ′ w ∈ L | ш | > p w = u v x y z | V X Y | ≤ p | V y | ≥ 1 ∀ n ≥ 0 , u v n xп'= | A |2| Γ |р = | A | ( | Γ | + 1 )п'w ∈ L| ш | >рw = u v x yZ| VXY| ≤р| Vy| ≥1∀ n ≥ 0 , u vNх уNZ∈ L
Пусть такое, что . Пусть - принимающий путь минимальной длины для (представленный в виде последовательности переходов ), обозначим его длину через, Мы можем определить, для, размер стека в позиции принимающего пути. Для всех мы определяем
уровень над как набор из трех индексов с такой что:| ш | > p π w A | π | 0 ≤ i < | π | s i i N > 0 N π i , j , k 0 ≤ i < j < k ≤ pw ∈ L| ш | >рπвесA| π|0 ≤ i < | π|sяяN>0Nπi,j,k0≤i<j<k≤p
- si=sk,sj=sя+ N
- для всех таких, что ,i ≤ n ≤ j s i ≤ s n ≤ s jNi ≤ n ≤ jsя≤ сN≤ сJ
- для всех таких, что , .j ≤ n ≤ k s k ≤ s n ≤ s kNj ≤ n ≤ ksК≤ сN≤ сК
(Для примера, см. Рисунок для случая 2 ниже, который иллюстрирует уровень.)N
Определим уровень of как максимальный такой, что имеет
уровень. Это определение мотивируется следующим свойством: если размер стека по пути становится больше, чем его уровень , то символы стека глубиной более уровней никогда не будут выталкиваться. Теперь мы будем различать два случая: либо , и в этом случае мы знаем, что одна и та же конфигурация для состояния автомата и самых верхних символов стека встречается дважды на первых шагах , илиπ N π N π l l l < p ′ l p + 1 π l ≥ p ′ vLπNπNπLLл < р'Lп+ 1πl ≥ p'и должна существовать позиция укладки и расстегивания, которую можно повторять произвольное количество раз, из которой мы строим и .vY
Случай 1. . Мы определяем конфигурации как пары состояния и последовательность из символов стека (где стеки размером менее должны быть представлены путем дополнения их до специальным пустым символом, поэтому мы используем при определении ). По определению есть
таких конфигураций, что меньше . Следовательно, на первых шагах та же конфигурация встречается дважды в двух разных позициях, скажем, . Обозначить через A A l l l | Γ | + 1 р | A | ( | Г | + 1 ) л р р + 1 π я < J я J ш я J π я ≤ J ш = U v х у г у г = ε у = шл < р'AALLL| Γ | +1п| A | ( | Γ | + 1 )Lпр + 1πя < jяˆ (соответственно
) позиция последней буквы прочитанной на шаге (соответственно
) из . У нас есть . Следовательно, мы можем разложить с помощью , , , . (Через мы обозначаем буквы от включительно до эксклюзивно.) По построению .JˆвесяJπяˆ≤ jˆw = u v x yZYZ= ϵ v= ш я ⋯ J х= ш J ⋯ | ш | ш Купить ⋯ у шху | VXY | ≤рты = ш0 ⋯ яˆV = Wяˆ⋯ jˆх = шJˆ⋯ | ш |весх ⋯ увесИксY| VXY| ≤р
Мы также должны показать, что , но это следует из нашего наблюдения выше: стековые символы глубже, чем , никогда не выталкиваются, поэтому нет никакого способа различить конфигурации, которые равны в соответствии с нашим определением, и путь принятия для строится из пути путем повторения шагов между и , раз.l u v n x w i j n∀ n ≥ 0 , u vNх уNZ= U vNx ∈ LLу vNИксвесijn
Наконец, у нас также есть , потому что если , то, потому что у нас одинаковая конфигурация на шагах и в , будет приемлемый путь для , противоречащий минимальности .v = ε я J π π ' = π 0 ⋯ я π J ⋯ | π | w π|v|>0v=ϵijππ′=π0⋯iπj⋯|π|wπ
(Обратите внимание, что этот случай сводится к применению леммы прокачки для регулярных языков путем жесткого кодирования самых верхних символов стека в состоянии автомата, что является достаточным, поскольку достаточно мало, чтобы гарантировать, что больше, чем число состояний этого автомата Основной трюк в том, что мы должны приспособиться к
-transitions.)л | ш | εll|w|ϵ
Случай 2. . Пусть будет -уровнем. С любым размером стека , , мы связываем последний push и первый pop . По определению и . Вот иллюстрация этой конструкции. Чтобы упростить рисование, я опускаю различие между позициями пути и позициями слов, которые мы должны будем сделать позже. i , j , k p ′ h s i ≤ h ≤ s j lp ( h ) = max ( { y ≤ j | s y = h } ) fp ( h ) = min ( { y ≥ j | s y = h } ) i ≤ lp ( hl≥p′i,j,kp′hsi≤h≤sj
lp(h)=max({y≤j|sy=h})
fp(h)=min({y≥j|sy=h})j ≤ fp ( h ) ≤ ki≤lp(h)≤jj≤fp(h)≤k
Мы говорим, что полное состояние размера стека - это тройка, образованная:h
- состояние автомата в положенииlp(h)
- самый верхний символ стека в позицииlp(h)
- состояние автомата в позицииfp(h)
Существует возможных полных состояний и размеров стека между и
, поэтому по принципу pidgeonhole существуют два размера стека с
такие что полные состояния в и одинаковы. Как и в случае 1, мы определяем с помощью , , и позиции последних букв прочитанных на соответствующих позициях в . Фактор гдеp ′ + 1 s i s j g , h s i ≤ g < h ≤ s j g h ^ lp ( g ) ^ lp ( h ) ^ fp ( h ) ^ fp ( g ) w π w = u v x y z u = w 0 ⋯ ^ lp (p′p′+1sisjg,hsi≤g<h≤sjghlp(ˆg)lp(ˆh)fp(ˆh)fp(ˆg)wπw=uvxyz v= w ^ lp ( g ) ⋯ ^ lp ( h ) x= w ^ lp ( h ) ⋯ ^ fp ( h ) y= w ^ fp ( h ) ⋯ ^ fp ( g ) z= w ^ fp ( г ) ⋯ | ш |u=w0⋯lp(ˆg),
,
,
и .v=wlp(ˆg)⋯lp(ˆh)x=wlp(ˆh)⋯fp(ˆh)y=wfp(ˆh)⋯fp(ˆg)z=wfp(ˆg)⋯|w|
Эта факторизация гарантирует, что (потому что по нашему определению уровней).k ≤ p|vxy|≤pk≤p
Мы также должны показать , что . Для этого обратите внимание, что каждый раз, когда мы повторяем , мы начинаем с одного и того же состояния и одной и той же вершины стека, и мы не попадаем ниже нашей текущей позиции в стеке (в противном случае нам пришлось бы снова нажимать на текущую позицию, нарушая максимальный размер ), поэтому мы можем следовать по одному и тому же пути в и поместить одну и ту же последовательность символов в стек. Из-за максимального значения и минимальности при чтении мы не попадаем ниже нашей текущей позиции в стеке, поэтому путь в автомате одинаков независимо от числа раз мы повторилиv lp ( g ) A lp ( h ) fp ( h ) x v w v v v fp ( g ) A u v n x y n z w∀n≥0,uvnxynz∈Lvlp(g)Alp(h)fp(h)xv, Теперь, если мы повторяем столько раз, сколько повторяем , так как мы начинаем с одного и того же состояния, поскольку мы поместили одну и ту же последовательность символов в стек с нашими повторениями , и поскольку мы не выскакиваем больше, чем то, что имеет суммированные с минимальностью , мы можем следовать по одному и тому же пути в и извлечь ту же последовательность символов из стека. Следовательно, принимающий путь из может быть построен из принимающего пути для .wvvvfp(g)Auvnxynzw
Наконец, у нас также есть , потому что, как и в случае 1, если и , мы можем построить более короткий путь принятия для , удалив и .v = ϵ y = ϵ w π lp ( g ) ⋯ lp ( h ) π fp ( h ) ⋯ fp ( g )|vy|>1v=ϵy=ϵwπlp(g)⋯lp(h)πfp(h)⋯fp(g)
Следовательно, мы имеем адекватную факторизацию в обоих случаях, и результат доказан.
(Благодарю Марка Жанмугина за то, что он помог мне с этим доказательством.)