Как доказать, что язык не является контекстно-свободным?


89

Мы узнали о классе контекстно-свободных языков . Он характеризуется как контекстно-свободными грамматиками, так и автоматами, работающими на понижение, поэтому легко показать, что данный язык не зависит от контекста.CFL

Как мне показать обратное, хотя? Моя ТА была непреклонна, что для этого нам пришлось бы показать всем грамматикам (или автоматам), что они не могут описать язык под рукой. Это кажется большой задачей!

Я читал о некоторой лемме прокачки, но она выглядит действительно сложной.


Ntpick: неразрешимо показать, является ли язык контекстным.
reinierpost

1
@reinierpost Я не понимаю, как ваш комментарий относится к вопросу. Речь идет о доказательстве , а не о решении (алгоритмически).
Рафаэль

Просто делает точку , что это не легко показать , что язык является контекстно-свободной, в целом . Если это легко сделать с помощью frafl, это должно быть связано с определенными особыми условиями, которые не выполняются для языков в целом, например, с предоставлением автомата нажатия, который описывает язык.
reinierpost

@reinierpost Эта линия рассуждений предполагает, что неразрешимое подразумевает (равно?) трудно доказать. Интересно, правда ли это?
Рафаэль

Ответы:


69

Чтобы мне известен насосная лемма является , безусловно , самым простым и наиболее часто используемых методом. Если вам сложно, попробуйте сначала обычную версию , это не так уж плохо. Есть несколько других средств для языков, которые далеки от контекста. Например, неразрешимые языки обычно не являются контекстно-свободными.

Тем не менее, я также заинтересован в других методах, кроме леммы прокачки, если таковые имеются.

РЕДАКТИРОВАТЬ: Вот пример для леммы накачки: предположим, что язык зависит от контекста ( является набором простых чисел). Насосная лемма имеет много квантификаторов , поэтому я сделаю это немного похоже на игру:P / L={akkP}P/

  1. Лемма прокачки дает вамp
  2. Вы даете слово языка длиной не менеерsp
  3. Насосная лемма переписывает это так: с некоторыми условиями ( и )| V X Y | p | V y | 1s=uvxyz|vxy|p|vy|1
  4. Вы даете целое числоn0
  5. Если не в , вы выиграли, не является контекстно-свободным.L LuvnxynzLL

Для этого конкретного языка для любой (с и является простым числом) сделает свое дело. Тогда лемма прокачки дает вам с . Чтобы опровергнуть контекстную свободу, вам нужно найти такой, чтоне простое число.a k k p k u v x y z | V y | 1 н | u v n x y n z |sakkpkuvxyz|vy|1n|uvnxynz|

|uvnxynz|=|s|+(n1)|vy|=k+(n1)|vy|

И тогда будет делать: не является простым , так . Лемма прокачки не может быть применена, поэтому не является контекстно-свободной.k + k | V y | = k ( 1 + | v y | ) u v n x y n z L Ln=k+1k+k|vy|=k(1+|vy|)uvnxynzLL

Второй пример - это язык . Мы (конечно) должны выбрать строку и показать, что нет никакого способа, которым она может быть разбита на эти пять частей, и чтобы каждая производная перекачиваемая строка оставалась на языке.{www{a,b}}

Строка является подходящим выбором для этого доказательства. Теперь нам просто нужно посмотреть, где могут быть и . Ключевыми частями является то, что в или должно быть что-то (возможно, оба), и что и (и ) содержатся в подстроке длины поэтому они не могут быть слишком далеко друг от друга. v y v y v y x ps=apbpapbpvyvyvyxp

Эта строка имеет несколько возможностей для определения местоположения и , но оказывается, что некоторые случаи на самом деле выглядят довольно схожими.yvy

  1. v y b a b | V y | = k pvya или . Итак, оба они содержатся в одном из разделов непрерывного s или s. Это относительно легкий случай, чтобы спорить, так как это не имеет значения, в каком они находятся. Предположим, что . vybab|vy|=kp
    • Если они находятся в первом разделе s, то когда мы качаем, первая половина новой строки - , а вторая - . Очевидно, что это не имеет форму .a p + k b p - k / 2 b k / 2 a p b p w waap+kbpk/2bk/2apbpww
    • Аргумент для любого из трех других разделов работает в основном одинаково, именно там и заканчиваются в индексах.к / 2kk/2
  2. vxy охватывает два раздела. В этом случае перекачиваемого вниз ваш друг. Опять же, есть несколько мест, где это может произойти (3, если быть точным), но я просто сделаю одно иллюстративное, а остальное должно быть легко выяснить.
    • Предположим, что перекрывает границу между первым разделом и первым разделом . Пусть (не имеет значения, где именно s и s находятся в и , но мы знаем, что они в порядке). Затем, когда мы откачиваем (то есть, случай ), мы получаем новую строку , а затем , если может быть разделена на , средняя точка должна быть где - то во второй секции, так что первая половинаa b v y = a k 1 b k 2 a b v y i = 0 s = a p - k 1 b p - k 2 a p b p s w w a a p - k 1 b p - k 2 a ( k 1 + k 2 )vxyabvy=ak1bk2abvyi=0s=apk1bpk2apbpswwa a p - ( k 1 + k 2 ) / 2 b p vyapk1bpk2a(k1+k2)/2и вторая половина - . Очевидно, что это не одна и та же строка, поэтому мы не можем поместить туда и .ap(k1+k2)/2bpvy

Остальные случаи должны быть довольно прозрачными - это те же самые идеи, просто помещая и в другие 3 точки в первом случае и 2 точки во втором случае. Во всех случаях, однако, вы можете накачать его таким образом, чтобы упорядоченность была явно испорчена, когда вы разделяете строку пополам.yvy


на самом деле, игра Козена - это то, что нужно.
Сократ

45

Лемма Огдена

Лемма (Огден). Пусть будет контекстно-свободным языком. Тогда существует постоянная такая, что для каждого и любого способа пометить или более позиций (символов) как «выделенные позиции», тогда можно записать как , так чтоN z L N z z z = u v w x yLNzL Nzzz=uvwxy

  1. vx есть хотя бы одна отличительная позиция.
  2. Nvwx имеет не более выдающихся позиций.N
  3. Для всех , .u v i w x i y Li0uviwxiyL

Пример. Пусть . Предположим, что зависит от контекста, и пусть будет константой, определенной леммой Огдена. Пусть (Который принадлежит ), и предположим, что мы помечаем как выделенные все позиции символа (то есть первые позиций ) , Пусть - разложение удовлетворяющее условиям леммы Огдена.L N z = a N b N + N ! c N + 2 N ! L a N z z = u v w x y zL={aibjck:ij,jk,ik}LNz=aNbN+N!cN+2N!LaNzz=uvwxyz

  • Если или содержат разные символы, тогда , потому что будут символы в неправильном порядке.x u v 2 w x 2 y Lvxuv2wx2yL
  • По крайней мере, один из и должен содержать только символы , потому что только были выделены. Таким образом, если или , то . Пусть, Тогда , что означает, что делит, Пусть . Тогда должна принадлежать . Однако . Так как имеет ровно символов , тоx a a x L ( b ) x L ( c ) v L ( A + ) p = | V | 1 p N p N ! q = N ! / p z = u v 2 q + 1 w x 2 q + 1 y LvxaaxL(b)xL(c)vL(A+)p=|v|1pNpN!q=N!/pz=uv2q+1wx2q+1yL u w y N - p a z 2 N ! + N a v x c z 2 N ! + Н с г 'L х L ( + ) х L ( сv2q+1=a2pq+p=a2N!+puwyNpazимеет символов . Но и и не имеют 's, поэтому также имеет символов , что означает , что противоречит лемме Огдена. Аналогичное противоречие возникает, если или . Мы заключаем, что не является контекстно-свободным.2N!+Navxcz2N!+NczLxL(A+)LxL(c)L

Упражнение. Используя лемму Огдена, покажите, что не является контекстно-свободным.L={aibjckd:i=0 or j=k=}

Насосная лемма

Это частный случай леммы Огдена, в которой все позиции различаются.

Лемма. Пусть будет контекстно-свободным языком. Тогда существует постоянная такая , что для каждого , можно записать в виде , таким образом, чтоN z L z z = u v w x yLNzLzz=uvwxy

  1. |vx|>0 .
  2. |vwx|N .
  3. Для всех , .u v i w x i y Li0uviwxiyL

Теорема Париха

Это даже более технически, чем лемма Огдена.

Определение. Пусть . Мы определяем помощью где - количество появлений в .Σ={a1,,an}ΨΣ:ΣNn

ΨΣ(w)=(m1,,mn),
miaiw

Определение. Подмножество из называется линейным, если его можно написать: SNn

S={u0+1ikaiui: for some set of uiNn and aiN}

Определение. Подмножество из называется полулинейным, если оно является объединением конечного набора линейных множеств.SNn

Теорема (Парих). Пусть - язык над . Если зависит от контекста, то является полулинейным.LΣL

ΨΣ[L]={ΨΣ(w):wL}

Упражнение. Используя теорему Париха, покажите, что не является контекстно-свободным.L={0m1n:m>n or (m is prime and mn)}

Упражнение. Используя теорему Париха, покажите, что любой контекстно-свободный язык над унарным алфавитом также является регулярным.


1
Я принял ответ Джмада, потому что в вопросе явно упоминается Лемма прокачки. Я очень ценю ваш ответ; собрать все основные методы здесь - это здорово.
Рафаэль

1
Это хорошо, но учтите, что лемма прокачки является частным случаем леммы Огдена ;-)
Janoma

Конечно. Тем не менее, большинство людей сначала попробуют PL; многие даже не знают ПР.
Рафаэль

1
Теорема Гинзбурга и Спанье, основанная на теореме Париха, дает необходимое и достаточное условие свободы контекста в ограниченном случае. math.stackexchange.com/a/122472
sdcvvc

Можете ли вы определить «выдающиеся позиции» с точки зрения других операций? Или хотя бы неофициально? Я нахожу определение дословно скопированного OL во многих разных местах, но ни одно из них до сих пор не пыталось объяснить, что это значит.
wvxvw

34

Закрытие недвижимости

Если у вас есть небольшая коллекция , не контекстно-свободных языков часто можно использовать закрывающие свойства из , как это:CFL

Предположим, что . Тогда по свойству замыкания X (вместе с Y) . Это противоречит который мы знаем, чтобы держать, поэтому .LCFLLCFLLCFLLCFL

Это часто короче (и часто менее подвержено ошибкам), чем использование одного из других результатов, которые используют меньше предварительных знаний. Это также общая концепция, в которой могут применяться все виды классов объектов.

Пример 1: Пересечение с обычными языками

Отметим регулярный язык, заданный любым регулярным выражением .L(e)e

Пусть . КакL={ww{a,b,c},|w|a=|w|b=|w|c}

LL(abc)={anbncnnN}CFL

и замкнут при пересечении с обычными языками, .CFLLCFL

Пример 2: (обратный) гомоморфизм

Пусть . С гомоморфизмомL={(ab)2ncmd2nm(aba)nm,nN}

ϕ(x)={ax=aεx=bbx=cx=d

у нас естьϕ(L)={a2nb2na2nnN}.

Теперь с

ψ(x)={aax=ax=cbbx=bandL1={xnbnynx,y{a,c}nN},

мы получаем .L1=ψ1(ϕ(L)))

Наконец, пересекая с обычным языком мы получаем язык .L1L2=L(abc)L3={anbncnnN}

В общей сложности мы имеем .L3=L2ψ1(ϕ(L))

Теперь предположим, что не зависит от контекста. Тогда, поскольку замкнут относительно гомоморфизма, обратного гомоморфизма и пересечения с регулярными множествами, зависит от контекста. Но мы знаем (через лемму , если это необходимо), что не является контекстно-свободным, так что это противоречие; мы показали, что .LCFLL3L3LCFL


Лемма об обмене

Interchange Лемма [1] предлагает необходимое условие для контекстно-свободности , что еще сильнее , чем леммы Огдена . Например, его можно использовать, чтобы показать, что

{xyyzx,y,z{a,b,c}+}CFL

который сопротивляется многим другим методам. Это лемма:

Пусть . Тогда существует константа такая, что для любого целого числа , любого множества и любого целого числа с существует строк сLCFLcLn2QnLn=LΣnmnm2k|Qn|cLn2ziQn

  1. zi=wixiyi для ,i=1,,k
  2. |w1|=|w2|==|wk|,
  3. |y1|=|y2|==|yk|,
  4. m|x1|=|x2|==|xk|>m2 и
  5. wixjyiLn для всех .(i,j)[1..k]2

Применять это означает найти и такие, что 1.-4. держать, но 5. нарушается. Пример применения, приведенный в оригинальной статье, очень многословен и поэтому здесь опущен.n,mQn

В настоящее время у меня нет свободно доступной ссылки, и приведенная выше формулировка взята из препринта [1] от 1981 года. Я ценю помощь в поиске лучших ссылок. Похоже, что то же свойство было (пере) открыто недавно [2].


Другие необходимые условия

Boonyavatana и Slutzki [3] рассматривают несколько условий, сходных с леммой Pumping and Interchange.


  1. «Лемма об обмене» для контекстно-свободных языков У. Огдена, Р. Дж. Росса и К. Винклмана (1985)
  2. Замена лемм для регулярных и контекстно-свободных языков Т. Ямаками (2008)
  3. R. Boonyavatana и G. Slutzki (1988). Леммы об обмене или помпе (DI) для контекстно-свободных языков.


19

Общепринятого метода не существует, поскольку установленные неконтекстно-свободные языки не являются полуразрешимыми (akare). Если бы существовал общий метод, мы могли бы использовать его для полуопределения этого набора.

Ситуация еще хуже, поскольку, учитывая два КЛЛ, невозможно решить, является ли их пересечение КЛЛ.

Ссылка: Хопкрофт и Ульман, «Введение в теорию автоматов, языков и вычислений», 1979.


2
Интересным (но, вероятно, более сложным и открытым вопросом) будет классификация подкласса не-КЛЛ, который может быть доказан как не-КЛЛ с использованием определенного метода.
Каве

Я не ищу вычислимый метод, но для методов доказательства ручки и бумаги. Последнее не обязательно означает первое.
Рафаэль

13

Более сильная версия условия Огдена ( OC ) является

Состояние Бадера-Моуры (BMC)

Язык удовлетворяет BMC, если существует константа такая, что если и мы помечаем в ней «различимые» позиции и «исключенные» позиции, с , тогда мы можем написать такой, что:LΣnzLd(z)e(z)d(z)>ne(z)+1z=uvwxy

  1. e ( v x ) = 0d(vx)1 иe(vx)=0
  2. d(vwx)ne(vwx)+1 и
  3. для каждого , в .u v i w x i y Li0uviwxiyL

Мы говорим, что язык если удовлетворяет условию Бадера-Моуры.LLBMC(Σ)L

У нас есть , поэтому BMC строго сильнее, чем OC.CFL(Σ)BMC(Σ)OC(Σ)

Ссылка: Bader, C., Moura, A., Обобщение леммы Огдена. JACM 29, нет. 2, (1982), 404–407


2
Почему бы просто не пройти весь путь до обобщения Дёмоси и Кудлека dx.doi.org/10.1007/3-540-48321-7_18 ...
Саламон,

@ AndrásSalamon: я этого не знал! :-) ... возможно, вы можете опубликовать его как новый ответ о том, что OC, BMC, PC являются особыми случаями (все выделенные или не исключенные позиции).
Вор

Вы можете опубликовать его, не успевайте прямо сейчас.
Андрас Саламон

Этот ответ выиграл бы от примера.
Рафаэль
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.