Gramática sensível ao contexto

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Tipo de gramática formal

Uma gramática sensível ao contexto (CSG) é uma gramática formal na qual os lados esquerdo e direito de quaisquer regras de produção podem ser cercados por um contexto de símbolos terminais e não terminais. As gramáticas sensíveis ao contexto são mais gerais do que as gramáticas livres de contexto, no sentido de que existem linguagens que podem ser descritas por uma CSG, mas não por uma gramática livre de contexto. As gramáticas sensíveis ao contexto são menos gerais (no mesmo sentido) do que as gramáticas irrestritas. Assim, os CSGs estão posicionados entre gramáticas livres de contexto e irrestritas na hierarquia de Chomsky.

Uma linguagem formal que pode ser descrita por uma gramática sensível ao contexto, ou, de forma equivalente, por uma gramática não contrativa ou um autômato limitado linear, é chamada de linguagem sensível ao contexto. Alguns livros realmente definem CSGs como não contratuais, embora não seja assim que Noam Chomsky os definiu em 1959. Essa escolha de definição não faz diferença em termos de idiomas gerados (ou seja, as duas definições são fracamente equivalentes), mas faz uma diferença diferença em termos de quais gramáticas são consideradas estruturalmente sensíveis ao contexto; esta última questão foi analisada por Chomsky em 1963.

Chomsky introduziu gramáticas sensíveis ao contexto como uma forma de descrever a sintaxe da linguagem natural, onde muitas vezes uma palavra pode ou não ser apropriada em um determinado lugar, dependendo do contexto. Walter Savitch criticou a terminologia "sensível ao contexto" como enganoso e propôs "não apagar" como explicando melhor a distinção entre um CSG e uma gramática irrestrita.

Embora seja bem conhecido que certos recursos de linguagens (por exemplo, dependência serial cruzada) não são livres de contexto, é uma questão em aberto quanto dos CSGs' o poder expressivo é necessário para capturar a sensibilidade ao contexto encontrada nas línguas naturais. A pesquisa subseqüente nesta área se concentrou nas linguagens levemente sensíveis ao contexto mais tratáveis computacionalmente. As sintaxes de algumas linguagens de programação visual podem ser descritas por gramáticas gráficas sensíveis ao contexto.

Definição formal

Gramática formal

Vamos anotar uma gramática formal como G = (N, Σ, P, S), com N um conjunto de símbolos não terminais, Σ um conjunto de símbolos terminais, P um conjunto de regras de produção e SN o símbolo de início.

Uma string u ∈ (NRihannaΣ)* rendimento directoou deriva diretamente para, uma string v ∈ (NRihannaΣ)*, denotado como uv, se v pode ser obtido a partir de u por uma aplicação de alguma regra de produção em P, isto é, se u= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =γ γ Lδ δ {displaystyle u=gamma Ldelta ? e v= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =γ γ Rδ δ {displaystyle v=gamma Rdelta, onde (L→ → R)∈ ∈ PNão. (Lto R)in P} é uma regra de produção, e γ γ ,δ δ ∈ ∈ (NTelecomunicações Telecomunicações Σ Σ )∗ ∗ {displaystyle gammadelta in (Ncup Sigma)^{*}} é a parte esquerda e direita não afetada da corda, respectivamente. Mais geralmente, u é dito rendimentoou derivar, v, denotado como u* v, se v pode ser obtido a partir de u por aplicação repetida de regras de produção, isto é, se u = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = u1 ⇒... ⇒ un = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = v para alguns n≥0 e algumas cordas u2, un-1 ∈ (NRihannaΣ)*. Em outras palavras, a relação (⇒*) é o fechamento reflexivo transitivo da relação (⇒).

A linguagem da gramática G é o conjunto de todas as strings de símbolos terminais deriváveis de seu símbolo inicial, formalmente: L(G) = { w ∈ Σ*: S* w }. Derivações que não terminam em uma string composta apenas por símbolos terminais são possíveis, mas não contribuem para L(G).

Gramática sensível ao contexto

Uma gramática formal é sensível ao contexto se cada regra entrar P é qualquer uma das formas S→ → ε ε Não. Sto varepsilon } Onde? ε ε - Sim. é a string vazia, ou da forma

αAβ → αγβ

com AN, α α ,β β ∈ ∈ (NTelecomunicações Telecomunicações Σ Σ ∖ ∖ (S?)∗ ∗ {displaystyle alphabeta in (Ncup Sigma setminus {S})^{*}}e γ γ ∈ ∈ (NTelecomunicações Telecomunicações Σ Σ ∖ ∖ (S?)+{displaystyle gamma in (Ncup Sigma setminus {S})^{+}}.

O nome sensível ao contexto é explicado pelos α e β que formam o contexto de A e determinam se A pode ser substituído por γ ou não. Isso é diferente de uma gramática livre de contexto, onde o contexto de um não-terminal não é levado em consideração. De fato, toda produção de uma gramática livre de contexto é da forma Vw onde V é um único símbolo não terminal, e w é uma cadeia de terminais e/ou não terminais; w pode estar vazio.

A única diferença entre gramáticas sensíveis ao contexto e gramáticas irrestritas é que γ pode estar vazio no caso irrestrito.

A adição da cadeia vazia permite a afirmação de que as linguagens sensíveis ao contexto são um superconjunto adequado das linguagens livres de contexto, em vez de ter que fazer a afirmação mais fraca de que todas as gramáticas sem contexto sem nenhum → → ε ε {displaystyle to varepsilon } as produções também são gramáticas sensíveis ao contexto.

Definições (fracamente) equivalentes

Algumas definições de uma gramática sensível ao contexto exigem apenas que, para qualquer regra de produção da forma u → v, o comprimento de u seja menor ou igual ao comprimento de v. Este requisito aparentemente mais fraco é de fato fracamente equivalente, consulte Gramática não contrativa#Transformando-se em gramática sensível ao contexto. Se a possibilidade de adicionar a string vazia a uma linguagem for adicionada às strings reconhecidas pelas gramáticas não contrativas (que nunca podem incluir a string vazia), então as linguagens nessas duas definições são idênticas.

As gramáticas sensíveis ao contexto esquerdo e ao contexto direito são definidas restringindo as regras apenas à forma αA → αγ e para apenas Aβ → γβ, respectivamente. As linguagens geradas por essas gramáticas também são a classe completa de linguagens sensíveis ao contexto. A equivalência foi estabelecida pela forma normal de Penttonen.

Exemplos

Anbncn

A seguinte gramática sensível ao contexto, com o símbolo inicial S, gera a linguagem canônica não livre de contexto { anbncn: n ≥ 1 }:

1.S umBC
2.SumSBC
3.CBCZ.
4.CZ.WZ.
5.WZ.WC
6.WCBC
7.umBumb)
8.b)Bb)b)
9.b)Cb)c
10.cCcc

As regras 1 e 2 permitem explodir S para anBC(BC)n-1; as regras 3 a 6 permitem trocar sucessivamente cada CB para BC (são necessárias quatro regras para isso, pois uma regra CBBC não caberia no esquema αAβ → αγβ); as regras 7–10 permitem a substituição de não terminais B e C por seus terminais correspondentes b e c, respectivamente, desde que esteja no lugar certo. Uma cadeia de geração para aaabbbccc é:

S
2 A SBC
2 umA SBCBC
1 AaBCBCBC
3 aaaaaCZCBC
4 aaaaaWZCBC
5 aaaaaWCCBC
6 aaaaaBCCBC
3 aaaaBBCCZC
4 aaaaBBCWZC
5 aaaaBBCWCC
6 aaaaBBCBCC
3 aaaaCZCC
4 aaaaWZCC
5 aaaaWCCC
6 aaaaBCCC
7 AABBCCC
8 aaabbBCCC
8 aaabbbCCC
9 A sério?b)CC
10. Aberturac)C
10. Aberturac)

Anbncndn, etc.

Gramáticas mais complicadas podem ser usadas para analisar { umnb)ncnDn: n ≥ 1 } e outras línguas com ainda mais letras. Aqui mostramos uma abordagem mais simples usando gramáticas não-contratantes: Comece com um kernel de produções regulares gerando os formulários sentenciais (ABCD)numb)cD(ABCD)^{n}abcd} e, em seguida, incluir as produções não contratantes pDum:Dum→ → umDNão. p_{Da}: Darightarrow aD}, pDb):Db)→ → b)DNão. p_{Db}:Dbrightarrow bD}, pDc:Dc→ → cDNão. p_{Dc}:Dcrightarrow cD}, pDD:DD→ → DDNão. p_{Dd}:Ddrightarrow dd}, pCum:Cum→ → umCNão. p_{Ca}:Carightarrow aC}, pCb):Cb)→ → b)CNão. p_{Cb}: Cbrightarrow BC, pCc:Cc→ → ccNão. p_{Cc}:Ccrightarrow cc}, pBum:Bum→ → umBNão. p_{Ba}:Barightarrow aB}, pBb):Bb)→ → b)b)Não. p_{Bb}:Bbrightarrow bb), pAum:Aum→ → umumNão. p_{Aa}:Aarightarrow aa}.

Ambncmdn

Uma gramática não contratante (para a qual há um CSG equivalente) para a língua LCRoSS= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =(ummb)ncmDn:m≥ ≥ 1,n≥ ≥ 1?Não. L_{Cross}={a^{m}b^{n}c^{m}d^{n}:mgeq 1,ngeq 1}} é definido por

p1:R→ → umRC|umCNão. p_{1}:Rrightarrow aRC|aC},
p3:T→ → BTD|BDNão. p_{3}: Trightarrow O que é isso?,
p5:CB→ → BCNão. p_{5}:CB AC.,
p0:S→ → RTNão. p_{0}:Srightarrow RT,
p6:umB→ → umb)Não. p_{6}:aBrightarrow ab},
p7:b)B→ → b)b)Não. p_{7}:bBrightarrow bb),
p8:CD→ → cDNão. p_{8}:Cdrightarrow cd}e
p9:Cc→ → ccNão. p_{9}:Ccrightarrow cc}.

Com estas definições, uma derivação para um3b)2c3D2{displaystyle a^{3}b^{2}c^{3}d^{2}} é: S⇒ ⇒ p0RT⇒ ⇒ p12p2um3C3T⇒ ⇒ p3p4um3C3B2D2⇒ ⇒ p56um3B2C3D2⇒ ⇒ p6p7um3b)2C3D2⇒ ⇒ p8p92um3b)2c3D2{displaystyle SRightarrow _{p_{0}}RTRightarrow _{p_{1}^{2}p_{2}}a^{3}C^{3}TRightarrow _{p_{3}p_{4}}a^{3}C^{3}B^{2}d^{2}Rightarrow _{p_{5}^{6}}a^{3}B^{2}C^{3}d^{2}Rightarrow _{p_{6}p_{7}}a^{3}b^{2}C^{3}d^{2}Rightarrow _{p_{8}p_{9}^{2}}a^{3}b^{2}c^{3}d^{2}}.

A2i

Uma gramática não contrativa para a linguagem { a2i: i ≥ 1 } é construída no Exemplo 9.5 (p. 224) de (Hopcroft, Ullman, 1979):

  1. S→ → Não.ACumB]Não. Srightarrow [ACaB]}
  2. (Não.Cum]um→ → umumNão.Cum]Não.Cum]Não.umB]→ → umumNão.CumB]Não.ACum]um→ → Não.Aum]umNão.Cum]Não.ACum]Não.umB]→ → Não.Aum]umNão.CumB]Não.ACumB]→ → Não.Aum]Não.umCB]Não.CumB]→ → umNão.umCB]{displaystyle {begin{cases} [Ca]arightarrow aa[Ca]\ [Ca][aB]rightarrow aa[CaB] [ACa]arightarrow [Aa]a[Ca]\\\ [ACa][aB]rightarrow [Aa]a[CaB]\\\ [ACaB]rightarrow [Aa][aCB]\\ [CaB]rightarrow a[aCB]end{cases}}}
  3. Não.umCB]→ → Não.umDB]{displaystyle [aCB]rightarrow [aDB]}
  4. Não.umCB]→ → Não.umE]{displaystyle [aCB]rightarrow [aE]}
  5. (umNão.Dum]→ → Não.Dum]umNão.umDB]→ → Não.DumB]Não.Aum]Não.Dum]→ → Não.ADum]umumNão.DumB]→ → Não.Dum]Não.umB]Não.Aum]Não.DumB]→ → Não.ADum]Não.umB]{displaystyle {begin{cases} a[Da]rightarrow [Da]a\ [aDB]rightarrow [DaB]\\ [Aa][Da]rightarrow [ADa]a\ a[DaB]rightarrow [Da][aB]\ [Aa][DaB]rightarrow [ADa][aB]end{cases}}}
  6. Não.ADum]→ → Não.ACum][ADa]rightarrow [ACa]}
  7. (umNão.Eum]→ → Não.Eum]umNão.umE]→ → Não.Eum]Não.Aum]Não.Eum]→ → Não.AEum]um{displaystyle {begin{cases} a[Ea]rightarrow [Ea]a\ [aE]rightarrow [Ea]\\ [Aa] [AEa]aend{cases}}}
  8. Não.AEum]→ → um[exibir]

Forma normal de Kuroda

Toda gramática sensível ao contexto que não gera a string vazia pode ser transformada em uma equivalente fraca na forma normal de Kuroda. "Pouco equivalente" aqui significa que as duas gramáticas geram a mesma linguagem. A forma normal em geral não será sensível ao contexto, mas será uma gramática sem contração.

A forma normal de Kuroda é uma forma normal real para gramáticas não contrativas.

Propriedades e usos

Equivalência com autômato limitado linear

Uma linguagem formal pode ser descrita por uma gramática sensível ao contexto se e somente se for aceita por algum autômato limitado linear (LBA). Em alguns livros didáticos, esse resultado é atribuído apenas a Landweber e Kuroda. Outros o chamam de teorema de Myhill–Landweber–Kuroda. (Myhill introduziu o conceito de LBA determinístico em 1960. Peter S. Landweber publicou em 1963 que a linguagem aceita por um LBA determinístico é sensível ao contexto. Kuroda introduziu a noção de LBA não determinístico e a equivalência entre LBA e CSGs em 1964.)

A partir de 2010, ainda é uma questão em aberto se toda linguagem sensível ao contexto pode ser aceita por um LBA determinístico.

Propriedades de fechamento

As linguagens sensíveis ao contexto são fechadas em complemento. Este resultado de 1988 é conhecido como o teorema de Immerman-Szelepcsényi. Além disso, eles são fechados sob união, interseção, concatenação, substituição, homomorfismo inverso e Kleene plus.

Toda linguagem recursivamente enumerável L pode ser escrita como h(L) para alguma linguagem sensível ao contexto L e algum homomorfismo de string h.

Problemas computacionais

O problema de decisão que pergunta se uma certa string s pertence à linguagem de uma determinada gramática sensível ao contexto G, é PSPACE-completo. Além disso, existem gramáticas sensíveis ao contexto cujas linguagens são PSPACE-completas. Em outras palavras, existe uma gramática sensível ao contexto G tal que decidir se uma determinada string s pertence ao idioma de G é PSPACE- completo (então G é fixo e apenas s faz parte da entrada do problema).

O problema do vazio para gramáticas sensíveis ao contexto (dada uma gramática sensível ao contexto G, é L(G)=∅ ?) é indecidível.

Como modelo de línguas naturais

Savitch provou o seguinte resultado teórico, no qual ele baseia sua crítica aos CSGs como base para a linguagem natural: para qualquer conjunto recursivamente enumerável R, existe uma linguagem/gramática sensível ao contexto G que pode ser usado como uma espécie de proxy para testar a associação em R da seguinte maneira: dada uma string s, s está em R se e somente se existe um inteiro positivo n para o qual scn está em G, onde c é um símbolo arbitrário que não faz parte de R.

Foi demonstrado que quase todas as linguagens naturais podem, em geral, ser caracterizadas por gramáticas sensíveis ao contexto, mas toda a classe de CSGs parece ser muito maior do que as linguagens naturais. Pior ainda, uma vez que o problema de decisão acima mencionado para CSGs é PSPACE-completo, isso os torna totalmente impraticáveis para uso prático, já que um algoritmo de tempo polinomial para um problema PSPACE-completo implicaria em P=NP.

Foi provado que algumas linguagens naturais não são livres de contexto, com base na identificação das chamadas dependências seriais cruzadas e fenômenos de embaralhamento ilimitado. No entanto, isso não implica necessariamente que a classe de CSGs seja necessária para capturar a "sensibilidade ao contexto" no sentido coloquial desses termos em línguas naturais. Por exemplo, os sistemas lineares de reescrita livre de contexto (LCFRSs) são estritamente mais fracos do que os CSGs, mas podem explicar o fenômeno das dependências entre séries; pode-se escrever uma gramática LCFRS para {anbncndn | n ≥ 1} por exemplo.

Pesquisas em andamento sobre lingüística computacional têm se concentrado na formulação de outras classes de linguagens que sejam "levemente sensíveis ao contexto" cujos problemas de decisão são viáveis, como gramáticas de conjunção de árvores, gramáticas categoriais combinatórias, linguagens livres de contexto acopladas e sistemas de reescrita lineares livres de contexto. As linguagens geradas por esses formalismos estão apropriadamente entre as linguagens livres de contexto e as linguagens sensíveis ao contexto.

Mais recentemente, a classe PTIME foi identificada com gramáticas de concatenação de intervalo, que agora são consideradas as mais expressivas das classes de linguagem sensíveis ao contexto leve.

Contenido relacionado

Diedrich Hermann Westermann

Diedrich Hermann Westermann foi um missionário, africanista e linguista alemão. Ele estendeu e revisou substancialmente o trabalho de Carl Meinhof, seu profe...

Autor

Um autor é o escritor de um livro, artigo, peça teatral ou outro trabalho escrito. Uma definição mais ampla da palavra "autor"...

Recurso semântico

Um traço semântico é um componente do conceito associado a um item lexical ('feminina' + 'performer' = 'atriz'). De forma mais.

Noah Webster

Noah Webster Jr. foi um lexicógrafo americano, pioneiro de livros didáticos, reformador da ortografia da língua inglesa, escritor político, editor e...

Discurso

Discurso é uma generalização da noção de conversa para qualquer forma de comunicação. O discurso é um tópico importante na teoria social, com...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save