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

11

У меня есть следующий язык

{0i1j2k0ijk}

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

Кажется, что лемма прокачки проходит потому, что если помещен в третью часть любого слова (раздел со всеми с). Он может качать и столько раз, сколько вы хотите, и он останется на языке. Если я ошибаюсь, не могли бы вы сказать мне, почему, если я прав, я все еще думаю, что этот язык не является контекстно-свободным, так как я могу доказать это?2 V Xuvwxy2vx

justausr
источник
Я не уверен, как сделать это формальным доказательством, но для обеспечения i <= j <= k требуется контекст (значение предыдущей переменной).
Кевин
@ Рафаэль, я читал этот пост до этого и не знал, как применить его к моему примеру из-за его абстрактности. Поскольку отношение каждого символа> = количество предыдущих символов, я не мог понять, как разделить uxyzv на слово, чтобы использовать лемму Огдена. BlueMagister и jmad расширились на другой пост, чтобы прояснить для моего примера.
justausr
@ Рафаэль Я не согласен, что это тривиальное применение общего случая. Выбрать, какой метод использовать и к какому примеру применять, не так просто.
Жиль "ТАК ... перестать быть злым"

Ответы:

7

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

Предположим, что он не содержит контекста, тогда лемма Огдена дает вам , вы даете ему который есть в языке, и вы «помечаете» все 0. Тогда любая факторизация должна быть такой , что существует в или . Вы также можете принять и поскольку и должны быть подстроками вашего языка.w = 0 p 1 p 2 p w = u x y z v 0 x z x = a k z = b m x x z zp>0w=0p1p2pw=uxyzv0xzx=akz=bmxxzz

  1. Если то имеет больше 0, чем 1w = u x 2 y z 2 vz=0...0w=ux2yz2v

  2. Если и то имеет больше 1, чем 2.z = 1..1 w = u x 2 y z 2 vx=0..0z=1..1w=ux2yz2v

  3. Если и то имеет больше 0, чем 1.z = 2..2 w = u x 2 y z 2 vx=0..0z=2..2w=ux2yz2v

Так что - это не слово вашего языка. Следовательно, он не является контекстно-свободным.ux2yz2v

Для других методов, см. Обсуждение: Как доказать, что язык не является контекстно-свободным?

jmad
источник
Это для того же языка, что у меня есть? Похоже, что для аналогичного языка все 0, 1 и 2 имеют одинаковую длину. Этот язык имеет число 2> = число 1> = количество 0
justausr
1
Да, это так, но используя любую из всех лемм прокачки, вы можете выбрать слово (и я выбрал ): лемма Огдена должна работать для всех из них. 0p1p2p
Джмад
Попался, я никогда не слышал о лемме Огден , поэтому я буду смотреть в него. Был ли я прав, заявляя, что лемма прокачки не удалась?
justausr
@justausr ни у меня, до недавнего времени (и благодаря дискуссии я упомянул). И да , вы были правы: насосное лемма делает почти то же самое , но не выбирая , где насос делает его бесполезным здесь.
jmad
5

Насосная лемма следует решить вашу проблему в отношении третьей части слова; обратите внимание , что , когда вы разделяете , любая комбинация также на языке, в том числе при . Попробуй это.у V п ш х п у п = 0z=uvwxyuvnwxnyn=0

РЕДАКТИРОВАТЬ: Как утверждает jmad , Лемма прокачки похожа на игру:

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

Итак, вам нужно указать слово, разбить 3 на случаи и показать, что для каждого случая вы можете найти так, чтобы полученное слово отсутствовало в языке.n

Когда вы разделяете , подумайте обо всех случаях, в которые может попасть . Вы заметите, что если не попадает в 2, то легко прокачивать 0 и 1, пока они не превосходят 2, и тогда у вас есть слово, которого нет в языке. Мое предложение состоит в том, что, если попадает на 2 территории, вы также можете заставить и исчезнуть, установив , поэтому . Затем, исключив 2, вы можете получить слово, которое не входит в язык.v x y v x y v x y v y n = 0 u v n x y n z = u x zs=uvxyzvxyvxyvxyvyn=0uvnxynz=uxz

Синий магистр
источник
Ты хочешь сказать, что все разделы uvwxy должны быть в 2?
justausr
Если ему дали правильное слово. Я уточню в своем ответе.
Синий Магистр
Вот, попробуй сейчас. Я не уверен, совпадает ли моя лемма накачки с вашей леммой накачки, поэтому я обращаюсь к Википедии .
Синий Магистр