Неоднозначність у регулярних та без контексту мовах


11

Я розумію, що такі твердження є правдивими:

  1. Два різних похідних рядка в даній CFG можуть іноді приписувати одне і те ж дерево розбору для рядка.
  2. Коли в даній CFG є виводи деяких рядків, які приписують різні дерева розбору, CFG є неоднозначним.
  3. Деякі безконтекстні мови, породжені неоднозначними CFG, також породжуються однозначними CFG.
  4. Деякі мови є такими, що єдині CFG, які можуть їх генерувати (а є такі), неоднозначні.

Q1. Я розумію, що це також не можна визначити, чи є довільна CFG неоднозначною, у значенні пункту 3 вище. Або, скоріше, не можна визначити, чи є без контексту мова неоднозначною, у розумінні пункту 4? Або обидва не можна визначити?

Q2. Який із пунктів 1-4 стає хибним, коли замінимо "без контексту" на "регулярний"? Чи завжди граматики та мови завжди однозначні?


Мови, які ви згадуєте у пункті 4, є "суттєво неоднозначними". Для Q1 я вважаю, що не можна визначити, чи є GRAMMAR неоднозначним. Таким чином, 3 і 4 не можна визначити.
— Ламінь

Правильно, мови 4 пункту називають "за своєю суттю неоднозначною".
— сумнівним

4
Q1: обидва не можна визначити. Q2: 1 неможливий, тому що існує максимум один нетермінальний пункт, який з’являється в будь-якій сентенційній формі, тому будь-яка деривація є і лівою, і правою крайньою; 2 це все-таки вірно; 3 все ще вірно, якщо ви видалите біт `` також ''; 4 вже не відповідає дійсності, наприклад, визначаючи свою граматику, ви отримаєте однозначну.
— Sylvain

1
@Sylvain зробить це відповіддю?
— Yuval Filmus

@Sylvain, дякую, і так, зроби це відповідь. Чи можу я підтвердити, що я зрозумів? re 2: Отже, існує звичайна граматика, яка може генерувати один і той же рядок з різними деревами розбору? (З тих пір я натрапив на посилання на "неоднозначні НФА", але я не впевнений, що він використовує "амбіт" у тому сенсі, який я є). Щодо 3 і 4, я думаю, ви говорите про те, що деякі регулярні мови можуть бути породжені неоднозначними звичайними граматиками, але завжди також породжуватимуться однозначні звичайні граматики?
— sumiousjim

Відповіді:


19

Про Q1: Як проблема неоднозначності (з урахуванням CFG, чи є неоднозначною), так і притаманна проблема неоднозначності (з урахуванням CFG, чи є її мова по суті неоднозначною, тобто чи будь-яка еквівалентна CFG є неоднозначною). Ось оригінальні посилання:


Про Q2: Звичайна граматика - це "однобічна лінійна" без контексту граматика, де щонайбільше один нетермінал з'являється в будь-якій правій частині правила, і де цей нетермінал знаходиться в останньому (у правій лінійній граматиці) або першому (у ліва лінійна граматика) положення. Такі граматики легко переводяться в еквівалентні автомати з кінцевим станом (приблизно, розглядаючи кожний нетермінал як стан), які є однозначними, якщо звичайна граматика є однозначною. Клас однозначних регулярних граматик та однозначних автоматів вивчали, зокрема, Стірнс і Хант (1985) , які показують, що вони користуються простежуваними алгоритмами для проблеми включення.

  1. βAγ⇒βαγA→αAX1,…,XmA→X1⋯Xm

    γAηBθABA→αγαηBθB→βγAηβθγαηβθ(Завжди висновок крайніх лівого нетермінала в будь-якій формі сентенціальной) або праві похідні накладають фіксований порядок для відвідування дерев виведення, і потім один висновок для даного дерева виведення.

    У лінійній безконтекстній граматиці такого вибору немає, оскільки існує максимум одна нетермінальна в будь-якій сентенційній формі, і є одна деривація для даного дерева деривації, яка є і лівою крайньою, і правою крайньою.

  2. www

  3. і 4. Якщо ви переглядаєте автоматичні пристрої з кінцевим станом, достатньо визначити ваш неоднозначний автомат, щоб отримати однозначний автомат для тієї самої мови: для будь-якого слова буде один запуск. Цей детермінований автомат рівнозначний однозначній регулярній граматиці. 

    S→A∣B,A→a,B→aaS⇒A⇒aS⇒B⇒aS→a

O(|G|2)(q,q′)q≠q′


1

GΣ∗

Я не зовсім зрозумів про те, якими мовами ви розмовляєте в 4. Кожна мова CF має неоднозначну граматику.

Q2. Все вирішується, якщо у вас є угода з звичайною граматикою. Ви просто повинні побудувати мінімальний DFA, використовуючи його, ви можете побудувати однозначну граматику. Якщо у вас є угода з регулярною мовою, визначеною CF-граматикою, відповідь ні - див. Q1.


Дякую, гарне уточнення щодо Q2. Питання щодо звичайної мови можуть бути вирішеними, якщо мова визначена звичайною граматикою; але це ще не означає, що їх можна вирішити, якщо мова визначена CFG --- це те, що ви говорите, правда? Тож чи ми знаємо, що так трапляється, що питання про неоднозначність і так далі, які не можна визначити для довільних CFG, також не можна визначити, якщо вони обмежені лише тими CFG, які трапляються для генерування звичайних мов?
— сумнівний

Не може бути, але вони завжди вирішальні. Я маю на увазі, коли ви маєте справу з мовою, описаною звичайною граматикою - підкласом CFG, будь-яке вподобане вам питання вирішується. Але деякі нерегулярні CFG можуть створювати звичайну мову, і це навіть не можна визначити, чи CFG виробляє звичайну мову.
— Олександр Рубцов

2
@ alexandr-rubtsov "Коли ви маєте справу з мовою, описаною звичайною граматикою, будь-яке вподобане вам питання вирішується". Це виглядає як надто оптимістичний вислів ...
— J.-E.

Дякую, я мав на увазі "може бути" у своїй риторичній функції, а не в сенсі "хто знає?"
— сумнівним

@ J.-E.Pin так, я мав би бути делікатнішим і сказати щось на кшталт «усі природні питання, такі як неоднозначність».
— Олександр Рубцов

0

Це залежить від того, ви замінюєте "без контексту" на "регулярне" лише перед "мовою (мовами)" або також перед "граматикою".

Усі звичайні мови породжуються звичайними граматиками , зокрема, однозначними регулярними граматиками, наприклад LL (1) правильно-регулярні граматики, які всі однозначно.

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