Niejednoznaczna gramatyka

W teoretycznej informatyki i teorii języka , niejednoznaczne lub niejednoznaczna gramatyki jest algebraiczne gramatyka , która przyjmuje słowo z dwóch różnych lewych indeks lub - równoważnie - dwa odrębne drzewami pochodne . Niejednoznaczność lub jednoznaczność jest właściwością gramatyki, a nie języków. Wiele języków dopuszcza zarówno gramatyki niejednoznaczne, jak i jednoznaczne, podczas gdy inne mają tylko gramatyki niejednoznaczne. Jeden język, dla którego wszystkie gramatyki są niejednoznaczne, nazywany jest z natury niejednoznacznym (lub z natury niejednoznacznym) , pozostałe nazywane są językami jednoznacznymi .

Gramatyka odniesienia języków programowania jest czasami niejednoznaczna z powodu konstrukcji, które prowadzą do problemów, takich jak problem wiszący else . Takie niejasności są zwykle rozwiązywane poprzez dodanie reguł pierwszeństwa lub innych reguł, kontekstowych, które czynią ostateczną gramatykę jednoznaczną.

Przykłady

Dodawanie i odejmowanie

Gramatyka algebraiczne zdefiniowany przez następującą zasadą

A → A + A | A - A | w

jest niejednoznaczne, ponieważ słowo a + a - a ma dwie różne lewe wyprowadzenia:

A → A - A → A + A - A → a + A - A → a + a - A → a + a - a

i

A → A + A → a + A → a + A - A → a + a - A → a + a - a

W pierwszym kroku reguła A → A + A jest używana w drugim kroku; w drugiej, przeciwnie, stosuje się regułę A → a.

Te wyprowadzenia dają dwa różne drzewa derywacji:

Leftmostderivations jaredwf.svg

Sam język jest jednoznaczny (tj. Nie jest z natury niejednoznaczny), ponieważ jest generowany na przykład przez jednoznaczną gramatykę, która następuje:

A → A + a | A - a | w

Palindromes

Język palindromów jest jednoznaczny. Jest generowany (na przykład na alfabecie a, b) przez jednoznaczną gramatykę, zdefiniowaną przez następującą regułę:

A → aAa | bAb | a | b | ε

Z natury niejednoznaczne języki algebraiczne

Przykład 1  -  Język jest algebraiczny i z natury niejednoznaczny.

Każdy z języków i jest algebraiczny. Pierwsza jest na przykład generowana przez następującą gramatykę:

S → Sc | T T → aTb | ε

jest algebraiczny jako związek tych dwóch języków algebraicznych.

Słowa są problemem. Możemy udowodnić, używając lematu Ogdena (dowód jest na odpowiedniej stronie), że nie ma jednoznacznej gramatyki dla tego języka. Inne przykłady podano w książce Harrisona lub w książce Cartona. Inną metodą zademonstrowania nieodłącznej niejednoznaczności języka jest przejście przez funkcję generatora, która wylicza liczbę słów danej długości w języku. Zgodnie z twierdzeniem Chomsky'ego-Schützenbergera , ten szereg jest algebraiczny dla języka generowanego przez jednoznaczną gramatykę.

Przykład 2  -  Goldstine język jest z natury niejednoznaczne.

To jest przykład zastosowania tej metody.

Przykład 3  -  Język utworzony przez słowa , gdzie i są palindromami, jest z natury niejednoznaczny.

Podczas gdy sam język palindromów jest jednoznaczny.

Przykład 1 '  -  Język słów składających się z trzech liter i utworzonych słów, takich jak lub, jest z natury niejednoznaczny.

Ten język jest zbliżony do pierwszego podanego przykładu.

Demonstracja

Demonstracja jest interesująca, ponieważ przechodzi przez komplementarność. Próbujemy pokazać, że generujący ciąg języka nie jest algebraiczny. Wystarczy, aby udowodnić, że szereg generujący język komplementarny

nie jest algebraiczne. Teraz ta seria jest

a według wzoru Stirlinga współczynnik asymptotycznie równa się

.

Jednak zgodnie z ogólnym wynikiem Philippe'a Flajoleta , asymptotyczny odpowiednik formy jest charakterystyczny dla funkcji transcendentnej.

Nieruchomości

W deterministycznych językach algebraicznych zawsze występuje niejednoznaczna gramatyka. Stanowią ścisłą podklasę rodziny języków jednoznacznych. Powyższy język palindromów stanowi przykład niedeterministycznego języka algebraicznego, który jest jednoznaczny.

Własność  -  następujący problem jest nierozstrzygalny  : „Czy dana gramatyka jest niejednoznaczna?” ”.

Dowód podany poniżej dotyczy problemu korespondencji Post .

Demonstracja

Możemy zmniejszyć korespondencji problemu Post mogą problemu niejednoznaczności.

Rozważmy przykład problemu korespondencji pocztowej (PCP) w alfabecie . Wprowadzamy nowy alfabet złożony z liter nienależących do . Na alfabecie definiujemy dwa języki:

.

Organ PCP dopuszcza rozwiązanie wtedy i tylko wtedy, gdy . Język jest generowany przez gramatykę z następującymi zasadami:

Łatwo zauważyć, że ta gramatyka jest niejednoznaczna wtedy i tylko wtedy  , gdy ; i że to skrzyżowanie jest puste wtedy i tylko wtedy, gdy dopuszcza rozwiązanie. Redukcja jest obliczeniem powyższej gramatyki z instancji PCP . Dowodzi to, że problem niejednoznaczności jest nierozstrzygalny.

Stopień niejednoznaczności

Stopień dwuznaczności wyrazu w generowanego przez gramatykę jest liczba pozostawionych indeks, inne, które sprawiają, że można dojść do słowa wag . Stopień niejednoznaczności gramatyki to maksymalna (prawdopodobnie nieskończona) liczba stopni słów wygenerowanych przez tę gramatykę.

Własność  -  istnieją języki z natury niejednoznaczne, dla których stopień niejednoznaczności dowolnej gramatyki jest nieskończony.

Rozstrzygalność z następującym stwierdzeniem jest problemem otwartym (w roku 1977): „Biorąc pod uwagę gramatykę, jest jego stopień niejednoznaczności skończoności?” "

Uwagi i odniesienia

  1. Hopcroft i Ullman 1969 .
  2. Harrison 1978 .
  3. Ramka 2014 , sekcje 2.3.3 i 2.3.4.
  4. Berstel i Boasson 1990 .
  5. Flajolet 1987 .
  6. Hopcroft, Motwani i Ullman 2007 .
  7. Mateescu i Salomaa 1997 - Rozdział 6.5: „  Niejednoznaczność  ”, s.  238-240 .

Powiązany artykuł

Bibliografia

<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">