Построить КПК для дополнения


16

Мне интересно, возможно ли это вообще, так как . Поэтому КПК, который может отличить слово от остальной части вполне может принять его , что звучит противоречиво для меня. w { a n b n c nn 0 } { a b c }{anbncnn0}CFLw{anbncnn0}{abc}

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


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

Обратите внимание, что это обобщает: дополнение является CFG. {aNбNсNdNеN}
sdcvvc

Ответы:


15

Нет, это не зависит от контекста. Чтобы принять , вам нужно убедиться, что три числа равны. Чтобы принять a b c a n b n c n , вам просто нужно убедиться, что вы находитесь в одном из следующих трех случаев:aNбNсNa*б*с*aNбNсN

  1. Число s отличается от числа b s; илиaб
  2. Число s отличается от числа c s; илиaс
  3. Число s отличается от числа c s.бс

Запишите КПК для каждого из этих случаев, затем объедините их, недетерминированно перейдя к каждому из начального состояния.


Я хорошо записал эти случаи, но мне не хватало идеи соединить их. Спасибо!
hauptbenutzer

4
На самом деле вам нужны только любые два случая.
sdcvvc

@sdcvvc Хороший вопрос. :)
Patrick87

Для различного числа символов, это может быть источником вдохновения: . Она должна быть простой , чтобы клей либо + на левой это или с + на правой и превратить это в КПК. Для сложного случая (который вам не нужен) S a S c | A | С ; A a B |SxSy|X|Y;Xx|xX;Yy|yYa+c+ . SaSc|A|C;AaB|aA;CBc|Cc;Bε|bB
Йонас Кёлкер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.