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


16

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

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


Интересный момент об этом кажется противоречивым. Действительно, контекстно-свободные языки не закрываются при принятии дополнения ... поэтому существует множество примеров неконтекстно-свободных языков, которые могут быть "приняты" в том смысле, в котором вы намекаете. Я не теоретик и, как таковая, не могу с этим смириться, но, может быть, кто-то другой может понять, почему это не то, о чем беспокоиться?
— 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 |S→xSy|X|Y;X→x|xX;Y→y|yYa+c+ . S→aSc|A|C;A→aB|aA;C→Bc|Cc;B→ε|bB
— Йонас Кёлкер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.