Розбірливість мов граматик та автоматів


16

Зауважте, це питання, пов’язане з навчанням у курсі CS в університеті, це НЕ домашнє завдання і його можна знайти тут під іспитом осінь 2011 року2.

Ось два питання, які я розглядаю з минулого іспиту. Вони, здається, пов'язані першими:

Дозволяти

FINITECFG={<G>∣G is a Context Free Grammar with |L(G)|<}

Доведіть, що - це рішуча мова. FINITECFG

і ...

Дозволяти

FINITETM={<M>∣M is a Turing Machine with |L(M)|<}

Доведіть, що - мова, яку не можна визначити. FINITETM

Я трохи розгублений, як вирішити ці проблеми, але у мене є кілька розумінь, які, на мою думку, можуть бути в правильному напрямку. Перше, що мені відомо, це те, що мова , деAREX

AREX={<R,w>∣R is a regular expression with wL(R)}

є рішучою мовою (докази містяться в « Теорії обчислень» Майкла Сіпсера , стор. 168). Це ж джерело також доводить, що Контекстну вільну граматику можна перетворити на регулярний вираз, і навпаки. Таким чином, також має бути рішучим, оскільки він може бути перетворений у регулярний вираз. Це, а також той факт , що Т М є іпомею -разрешімого, по- видимому, пов'язаний з цією проблемою.ACFGATM

Єдине , що можна думати про проходження G Тьюрингу машиною для (після перетворення G з регулярним виразом) і Т М . Тоді прийняття, якщо G робить, і відхилення, якщо G - ні. Оскільки A T M не можна визначити, цього ніколи не відбудеться. Я якось відчуваю, що я тут помиляюся, але я не впевнений, що це таке. Може хтось, будь ласка, допоможе мені тут руку?AREXATMATM


5
"Контекстну вільну граматику можна перетворити на звичайний вираз, і навпаки" Це неправда (якщо ви не трактуєте це як "існує CFG, який можна перетворити на регулярний вираз", але я не думаю, що це ви означало). Регулярні граматики можуть бути перетворені в регулярні вирази. Не існує алгоритму для перетворення CFG в регулярні вирази з тієї простої причини, що більшість контекстних вільних мов (тобто всі контекстні вільні мови, які також не є звичайними мовами) не можуть бути описані за допомогою регулярного виразу.
sepp2k

Відповіді:


9
  1. Перетворіть G в Хомський нормальний вигляд . Таким чином, єдиним порожнім виведенням буде символ запуску, який не з’являється ніде більше, і, отже, якщо є деяка продукція, яка, можливо, зможе в кінцевому рахунку генерувати себе, то граматика нескінченна. Якщо такого виробництва не існує, кожен символ зможе генерувати лише кінцевий набір рядків, і тоді граматика буде кінцевою. Отже, побудуйте спрямований графік, де кожне виробництво є вузлом, а кожен символ у виробництві - це край, орієнтований на цей символ. Якщо графік має деякий цикл, CFG нескінченний, інакше це не так. Отже, машина Тьюрінга для може бути побудована саме так, і тоді F NFINITECFG можна визначити.FINITECFG

  2. Припустимо, що можна визначити. Припустимо , що Н є машина Тьюринга , яка має певну рядок в якості вхідних даних і використовує себе в якості вхідних даних для Р Я Н Я Т Е Т М . Якщо F I N I T E T M повертає істину (тобто H приймає лише кінцеву мову), то HFINITETMHFINITETMFINITETMHHприймає вхід, що призводить до суперечності, оскільки набір вводу нескінченний (довжина вводу не обмежена, тому приймайте будь-який можливий рядок як введення означає прийняття нескінченного набору рядків). Якщо повертає помилкові (тобто мова H нескінченна), то H відхиляє введення, що означає, що мова H кінцева, тому що він не приймає жодного вводу (тобто мова його порожня), що призводить і до суперечності. Таким чином, припущення про існування H призводить до суперечності, і це припущення грунтується на припущенні, що F I N I EFINITETMHHHH можна визначити. Отже, суперечливістю ми маємо, щоFINIT E T M не можна вирішити.FINITETMFINITETM

Це ж джерело також доводить, що Контекстну вільну граматику можна перетворити на регулярний вираз, і навпаки.

Я дуже сумніваюся, що Сіпсер заявив би про це, ви, мабуть, неправильно прочитали чи не зрозуміли. Це означає, що без контекстних граматик генеруються точно такі ж мови, що і праволінійні граматики. Це помилково; праволінійні граматики, що генеруються, є належним набором мов, без контексту, граматики dp. Це означає, що те, як ви намагалися використовувати звичайні мови для відповіді на питання, просто не приводить вас нікуди.

Як ви бачите вище в моїх доказах, ці два питання - це справді два дуже чіткі, не пов'язані між собою питання. Просто буває так, що вони були сформульовані аналогічно.


1
У мене виникають проблеми після доказування двох. Гаразд, щоб ви перейшли H до G, так? Якщо G повертає вірно, ніж H є кінцевим, це має сенс. Однак я не вважаю, що набір входів є нескінченним, що таке вхід, на який ви звертаєтесь?
BrotherJack

1
@BrotherJack Вхід може бути будь-якої довжини, його довжина не обмежена. Це може бути рядок із лише одним символом, або це може бути вхід на мільйон терабайт. Таким чином, можливі входи для H - це нескінченна множина, оскільки ми можемо зробити її довільно великою. HH
Віктор Стафуса

1
ДОБРЕ. Це, здається, має сенс. Чи було б точно вказати цей вклад як "будь-який можливий рядок в мові введення H"?
BrotherJack

1
@BrotherJack - я змінив відповідь, щоб зробити це зрозумілішим.
Віктор Стафуса

1
Відмінне пояснення! Дуже дякую за ваш час.
BrotherJack

2

Інший спосіб вирішити FINITECFG - це через насосну лему.

Лемма накачування говорить, що кожен CFL має число N (яке можна обчислити з граматики, або принаймні верхню межу його можна легко обчислити), так що будь-який x L довший ніж NLNxLN може бути «накачаний ".

Це означає, що якщо кінцеве, усі слова в L коротші ніж NLLN .

N2NLL

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.