Я нахожусь в безумном поручении, пытаясь построить автомат Pushdown для неконтекста -бесплатный язык L = {a^(n) b^(n) c^(n) | n> = 1} и думал о двух подходах.PushDown Automaton (PDA) для L = {a^(n) b^(n) c^(n) | n> = 1}
Первый подход: -
Я думал, что для каждого «а» в строке I подтолкнет 3 «а» в стек и для каждого «Ъ» в строке, я выскочит 2 'a' из стека теперь для каждого 'c' в строке, я все равно буду иметь 1 'a' в стеке.
Проблема с первым подходом: - язык, порождаемый становится чем-то вроде этого L = {а^(р) Ь (т) с^(п) | р> = 1 и не мог определить, как т и п могут быть определены}
Второй подход: -
Мы знаем, что L = {а^(п) Ь (m) c^(m) d^(n) | n> = 0} - контекстно-свободный язык и L = {wxw | w∈ (a, b) *} также является контекстно-свободным языком.
Итак, я думал, что L = {a^(n) b^(m) b^(m) c^(n) | п> = 1 и т = пол ((п + 1)/2)}
Проблема со вторым подходом: - не знаю, если мы можем вычислить пол (п + 1/2) в КПК без нарушения элементов стека.
Помогите определить, как m и n могут быть определены в первом подходе, и как я могу найти пол ((n + 1)/2) в КПК.
Файлы JFLAP доступны как при необходимости.
Во-первых, я хотел бы указать на " Fool's errand ", а второй я знаю, что PDA не существует, поэтому, пожалуйста, полностью прочтите описание вопроса. – NeoR
Возможно, мне нужно обновить вопрос, добавив изображения JFlap. – NeoR
@NeoR. Вы можете подумать об изменении названия, чтобы отразить ваш фактический вопрос и поставить свой актуальный вопрос в верхней части тела вопроса, с любым объяснением или мотивацией обсуждения под ним. – Patrick87