Gramática sensível ao contexto




Em Teoria da computação uma gramática sensível ao contexto (GSC), também conhecida como Tipo 1 da Hierarquia de Chomsky, é uma gramática formal em que os lados esquerdo e direito de qualquer regra de produção podem ser cercados por um contexto de símbolo terminal e símbolo não-terminal. Gramáticas sensíveis ao contexto são mais gerais do que as gramáticas livres de contexto mas ainda ordenadas o suficiente para serem verificadas por um autômato linearmente limitado.


O conceito de gramática sensível ao contexto foi introduzido por Noam Chomsky na década de 1950 como uma maneira de descrever a sintaxe de linguagem natural, em que, de fato, é frequentemente o motivo de uma palavra poder ou não ser apropriada em um determinado lugar, dependendo do contexto. A linguagem formal, que pode ser descrita por uma gramática sensível ao contexto, é chamada de linguagem sensível ao contexto.




Índice






  • 1 Definição formal


  • 2 Exemplos


  • 3 Formas Normais


  • 4 Propriedades e usos computacionais


  • 5 Referências


  • 6 Ver também


  • 7 Ligações externas





Definição formal |


A gramática formal G= (N, Σ,P,S) (equivalente a G= (V,T,P,S), basta que V(ariável) não-Terminal seja substituída por N e T(erminal) passa a ser Σ) é sensível ao contexto se todas as regras em P são da forma


αAβ → αγβ

em que AN(isto é, A é um único não-terminal), α,β ∈ (N U Σ)* (ou seja, α e β são sequências de não-terminais e símbolo terminal) e γ ∈ (N U Σ)+ (isto é, γ é uma sequência não vazia de não-terminais e terminais).


Algumas definições ainda acrescentam que para qualquer regra de produção da forma u → v de uma gramática sensível ao contexto, deve ser verdade que |u| ≤ |v|. Aqui |u| e |v| denotam o comprimento das cadeias, respectivamente.


Além disso, uma regra da forma


S → λ desde que S não apareça no lado direito de qualquer regra

em que λ representa a cadeia vazia é permitido. A adição de uma cadeia vazia permite a afirmação de que as linguagens sensíveis ao contexto são um superconjunto adequado das linguagens livre do contexto, ao invés de ter que fazer uma declaração mais fraca de que todas as gramáticas livres de contexto, sem produções → λ são também gramáticas sensíveis ao contexto.


O nome sensível ao contexto é explicado pelo α e β que formam o contexto de A e determinar se A pode ser substituído por γ ou não. Isto é diferente de uma gramática livre de contexto, em que o contexto de um não-terminal não é levado em consideração. (Na verdade, todas as produções de uma gramática livre de contexto é da forma V → w, em que V é um único símbolo não-terminal, e w é uma cadeia de terminais e/ou não-terminais (w pode ser vazio)).


Se a possibilidade de adicionar a cadeia vazia para uma linguagem, é adicionada às cadeias reconhecidas pelas gramáticas não-contratuais (que nunca podem incluir a cadeia vazia), então as linguagens, nessas duas definições, são idênticas.



Exemplos |


  • Essa gramática gera a linguagem não-livre do contexto canônica {anbncn|n≥1}{displaystyle {a^{n}b^{n}c^{n}|ngeq 1}}{displaystyle {a^{n}b^{n}c^{n}|ngeq 1}}:


  1. S→aSBC{displaystyle Srightarrow aSBC}{displaystyle Srightarrow aSBC}

  2. S→aBC{displaystyle Srightarrow aBC}{displaystyle Srightarrow aBC}

  3. CB→HB{displaystyle CBrightarrow HB}{displaystyle CBrightarrow HB}

  4. HB→HC{displaystyle HBrightarrow HC}{displaystyle HBrightarrow HC}

  5. HC→BC{displaystyle HCrightarrow BC}{displaystyle HCrightarrow BC}

  6. aB→ab{displaystyle aBrightarrow ab}{displaystyle aBrightarrow ab}

  7. bB→bb{displaystyle bBrightarrow bb}{displaystyle bBrightarrow bb}

  8. bC→bc{displaystyle bCrightarrow bc}{displaystyle bCrightarrow bc}

  9. cC→cc{displaystyle cCrightarrow cc}{displaystyle cCrightarrow cc}


A derivação para aaabbbccc é:



S{displaystyle S}S

1aSBC{displaystyle Rightarrow _{1}aSBC}{displaystyle Rightarrow _{1}aSBC}

1aaSBCBC{displaystyle Rightarrow _{1}a{boldsymbol {aSBC}}BC}{displaystyle Rightarrow _{1}a{boldsymbol {aSBC}}BC}

2aaaBCBCBC{displaystyle Rightarrow _{2}aa{boldsymbol {aBC}}BCBC}{displaystyle Rightarrow _{2}aa{boldsymbol {aBC}}BCBC}

3aaaBHBCBC{displaystyle Rightarrow _{3}aaaB{boldsymbol {HB}}CBC}{displaystyle Rightarrow _{3}aaaB{boldsymbol {HB}}CBC}

4aaaBHCCBC{displaystyle Rightarrow _{4}aaaB{boldsymbol {HC}}CBC}{displaystyle Rightarrow _{4}aaaB{boldsymbol {HC}}CBC}

5aaaBBCCBC{displaystyle Rightarrow _{5}aaaB{boldsymbol {BC}}CBC}{displaystyle Rightarrow _{5}aaaB{boldsymbol {BC}}CBC}

3aaaBBCHBC{displaystyle Rightarrow _{3}aaaBBC{boldsymbol {HB}}C}{displaystyle Rightarrow _{3}aaaBBC{boldsymbol {HB}}C}

4aaaBBCHCC{displaystyle Rightarrow _{4}aaaBBC{boldsymbol {HC}}C}{displaystyle Rightarrow _{4}aaaBBC{boldsymbol {HC}}C}

5aaaBBCBCC{displaystyle Rightarrow _{5}aaaBBC{boldsymbol {BC}}C}{displaystyle Rightarrow _{5}aaaBBC{boldsymbol {BC}}C}

3aaaBBHBCC{displaystyle Rightarrow _{3}aaaBB{boldsymbol {HB}}CC}{displaystyle Rightarrow _{3}aaaBB{boldsymbol {HB}}CC}

4aaaBBHCCC{displaystyle Rightarrow _{4}aaaBB{boldsymbol {HC}}CC}{displaystyle Rightarrow _{4}aaaBB{boldsymbol {HC}}CC}

5aaaBBBCCC{displaystyle Rightarrow _{5}aaaBB{boldsymbol {BC}}CC}{displaystyle Rightarrow _{5}aaaBB{boldsymbol {BC}}CC}

6aaabBBCCC{displaystyle Rightarrow _{6}aa{boldsymbol {ab}}BBCCC}{displaystyle Rightarrow _{6}aa{boldsymbol {ab}}BBCCC}

7aaabbBCCC{displaystyle Rightarrow _{7}aaa{boldsymbol {bb}}BCCC}{displaystyle Rightarrow _{7}aaa{boldsymbol {bb}}BCCC}

7aaabbbCCC{displaystyle Rightarrow _{7}aaab{boldsymbol {bb}}CCC}{displaystyle Rightarrow _{7}aaab{boldsymbol {bb}}CCC}

8aaabbbcCC{displaystyle Rightarrow _{8}aaabb{boldsymbol {bc}}CC}{displaystyle Rightarrow _{8}aaabb{boldsymbol {bc}}CC}

9aaabbbccC{displaystyle Rightarrow _{9}aaabbb{boldsymbol {cc}}C}{displaystyle Rightarrow _{9}aaabbb{boldsymbol {cc}}C}

9aaabbbccc{displaystyle Rightarrow _{9}aaabbbc{boldsymbol {cc}}}{displaystyle Rightarrow _{9}aaabbbc{boldsymbol {cc}}}


Gramáticas mais complicadas podem ser usadas para verificar {anbncndn|n≥1}{displaystyle {a^{n}b^{n}c^{n}d^{n}|ngeq 1}}{displaystyle {a^{n}b^{n}c^{n}d^{n}|ngeq 1}}, e outras linguagens ainda com mais letras.


  • A gramática seguinte gera a linguagem de cópia não-livre do contexto, C={xx|x∈{a,b}∗}{displaystyle C={xx|xin {a,b}^{*}}}{displaystyle C={xx|xin {a,b}^{*}}}:


  1. S→aAS|bBS|T{displaystyle Srightarrow aAS|bBS|T}{displaystyle Srightarrow aAS|bBS|T}

  2. Aa→aA{displaystyle Aarightarrow aA}{displaystyle Aarightarrow aA}

  3. Ba→aB{displaystyle Barightarrow aB}{displaystyle Barightarrow aB}

  4. Ab→bA{displaystyle Abrightarrow bA}{displaystyle Abrightarrow bA}

  5. Bb→bB{displaystyle Bbrightarrow bB}{displaystyle Bbrightarrow bB}

  6. BT→Tb{displaystyle BTrightarrow Tb}{displaystyle BTrightarrow Tb}

  7. AT→Ta{displaystyle ATrightarrow Ta}{displaystyle ATrightarrow Ta}

  8. T→ϵ{displaystyle Trightarrow epsilon }{displaystyle Trightarrow epsilon }


A derivação para abab é:



S{displaystyle S}S

1aAS{displaystyle Rightarrow _{1}aAS}{displaystyle Rightarrow _{1}aAS}

1aAbBS{displaystyle Rightarrow _{1}aA{boldsymbol {bBS}}}{displaystyle Rightarrow _{1}aA{boldsymbol {bBS}}}

1aAbBT{displaystyle Rightarrow _{1}aAbB{boldsymbol {T}}}{displaystyle Rightarrow _{1}aAbB{boldsymbol {T}}}

4abABT{displaystyle Rightarrow _{4}a{boldsymbol {bA}}BT}{displaystyle Rightarrow _{4}a{boldsymbol {bA}}BT}

6abATb{displaystyle Rightarrow _{6}abA{boldsymbol {Tb}}}{displaystyle Rightarrow _{6}abA{boldsymbol {Tb}}}

7abTab{displaystyle Rightarrow _{7}ab{boldsymbol {Ta}}b}{displaystyle Rightarrow _{7}ab{boldsymbol {Ta}}b}

8abab{displaystyle Rightarrow _{8}abab}{displaystyle Rightarrow _{8}abab}



Formas Normais |


Toda gramática sensível ao contexto que não gera a cadeia vazia pode ser transformada em uma equivalente na forma normal de Kuroda. "Equivalente" aqui significa que as duas gramáticas geram a mesma linguagem. A forma normal não vai, em geral, ser sensível ao contexto, mas vai ser uma gramática não-contratual.



Propriedades e usos computacionais |


O problema da decisão que pergunta se uma certa cadeia s pertence à linguagem de uma certa gramática sensível ao contexto G, é PSPACE-completo. Existem mesmo algumas gramáticas sensíveis ao contexto, cujo problema de reconhecimento fixo de gramática é PSPACE-completo.


O problema da vacuidade para gramáticas sensíveis ao contexto (dada a gramática sensível ao contexto G, é L(G)=∅{displaystyle L(G)=emptyset }{displaystyle L(G)=emptyset } ?) é indecidível.


Tem sido demonstrado que quase todas as linguagens naturais podem, em geral, serem caracterizadas por gramáticas sensíveis ao contexto, mas toda a classe de GSC parece ser muito maior do que as linguagens naturais . Pior ainda, pois o problema da decisão para GSC é PSPACE-completo, que os torna totalmente inviáveis para o uso prático, como um algoritmo de tempo polinomial para um problema PSPACE-total implicaria P=NP. Investigações em andamento sobre linguística computacional têm se centrado na formulação de outras classes de linguagens que são "levemente sensíveis ao contexto" cujos problemas de decisão sejam factíveis, assim como as gramáticas de árvores-adjuntas, gramáticas de categoria combinatória, linguagens livre de contexto acopladas, e sistemas lineares reescrevíveis livres de contexto. As linguagens geradas por esses formalismos, estão entre as linguagens livres de contexto, e as sensíveis ao contexto.



Referências



  • Introduction to Languages and the Theory of Computation by John C. Martin McGraw Hill 1996 (2nd edition)


Ver também |


  • Hierarquia de Chomsky


Ligações externas |


  • Earley Parsing for Context-Sensitive Grammars








































Teoria de autômatos: linguagem formal e gramática formal

Hierarquia
Chomsky

Gramática

Linguagem

Reconhecedor
Tipo-0

Irrestrita

Recursivamente enumerável

Máquina de Turing
--
--

Recursiva

Máquina de Turing que sempre para
Tipo-1

Sensível ao contexto

Sensível ao contexto

Autômato linearmente limitado
Tipo-2

Livre de contexto

Livre de contexto

Autômato com pilha
Tipo-3

Regular

Regular

Autômato finito



Popular posts from this blog

Contact image not getting when fetch all contact list from iPhone by CNContact

count number of partitions of a set with n elements into k subsets

A CLEAN and SIMPLE way to add appendices to Table of Contents and bookmarks