Gramática de concatenação de intervalo

Fonte: testwiki
Saltar para a navegação Saltar para a pesquisa

Predefinição:Reciclagem Gramática de concatenação de intervalo, em tradução livre de range concatenation grammar (RCG), é uma gramática formal desenvolvida por Pierre Boullier [1] em 1998 como uma tentativa de representar uma série de fenômenos da linguagem natural, como os números chineses e embaralhamento de palavras alemãs, que não pertencem às linguagens moderadamente sensíveis ao contexto (tradução livre de Mildly context-sensitive languages[2]).

De um ponto de vista teórico, qualquer linguagem pode ser analisada em tempo polinomial se, e somente se, pertencer ao subconjunto de RCG chamado gramáticas de Concatenação de Intervalo Positivo (tradução livre de positive range concatenation grammars).[3]

Embora projetada como uma variante das Gramáticas de Movimento Literal de Groenink (sigla LMG), as RCGs tratam o processo gramático mais como prova do que produção. Enquanto LMGs produzem uma cadeia final de um predicado inicial, RCGs focam em reduzir o predicado inicial (que implica na cadeia final) para a cadeia vazia, que constitui a prova do pertencimento da cadeia final à linguagem.

Descrição

Definição Formal

Uma gramática de Concatenação de Intervalo Positivo - tradução livre de positive range concatenation grammar, PRCG - é uma tupla G=(N,T,V,S,P), onde:

  • N, T e V são conjuntos disjuntos finitos de (respectivamente) predicados, simbolos teminais e variáveis. Cada nome de predicado tem uma aridade associada dada pela função dim:N{0}.
  • SN é o início do predicado e verifica dim(S)=1.
  • P é um conjunto finito de cláusulas da forma ψ0ψ1ψm, onde os ψi são predicados da forma Ai(α1,,αdim(Ai)) com AiN e αi(TV).

Uma gramática de Concatenação de Intervalo Negativo - tradução livre de Negative Range Concatenation Grammar, NRCG - é definida como uma PRCG, mas com o adicional de que alguns predicados ocorrendo no lado direito das cláusulas podem ter a forma Ai(α1,,αdim(Ai)). Estes predicados são chamados predicados negativos.

Uma gramática de Concatenação de Intervalo é ou positiva ou negativa. Embora PRCGs sejam tecnicamente NRCGs, dizemos que essas gramáticas são de intervalos negativos ou positivos enfatizar a ausência ou presença de predicados negativos.

Um intervalo no palavra wT são alguns l,rw, com 0lrn, onde n é o comprimento de w. Dois intervalos l1,r1w and l2,r2w podem ser concatenados sse r1=l2, então nós temos: l1,r1wl2,r2w=l1,r2w.

Para uma palavra w=w1w2wn, com wiT, a notação pontuada para intervalos é: l,rw=w1wl1wlwr1wrwn.

Reconhecimento de cadeias

Como LMGs, cláusulas de RCG tem o esquema geral A(x1,...,xn)α, onde em uma RCG, α é, ou a cadeia vazia ou uma cadeia de predicados. Os argumentos xi consistem de cadeias de símbolos terminais e/ou símbolos de variáveis, padrão o qual corresponde com os valores do argumento atual como no LMG. Variáveis adjascentes constituem uma família de correspondências em partições, então esse argumento xy, onde duas variáveis, correnpondem a cadeias de litais ab em três modos diferentes: x=ϵ, y=ab; x=a, y=b; x=ab, y=ϵ.

Termos predicados vêm de duas formas, positiva (que produz a cadeia vazia em caso de sucesso), e negativa (que produz a cadeia vazia em caso de falha ou se termos positivos não produzem a cadeia vazia). Termos negativos são denotados da mesma forma que os positivos, com uma barra sob si, como em A(x1,...,xn).

A re-escrita da semântica para RCGs é bastante simples, idêntica à semântica correspondente de LMGs. Dado uma cadeia de predicado A(α1,...,αn), onde os símbolos αi são cadeias finais, se há uma regra A(x1,...,xn)β na gramática que corresponde à cadeia de predicado , a cadeia de predicado é substituida por β, substituindo as variáveis correspondentes em cada xi.

Por exemplo, dada uma regra A(x,ayb)B(axb,y), onde x and y são símbolos de variáveis e a e b são símbolos terminais, a cadeia de predicado A(a,abb) pode ser re-escrita como B(aab,b), porque A(a,abb) corresponde a A(x,ayb) onde x=a, y=b. Da mesma forma, se houvesse uma regra A(x,ayb)A(x,x) A(y,y), A(a,abb) poderiamos re-escrever como A(a,a) A(b,b).

A prova/reconhecimento de uma cadeia α é feita mostrando que S(α) produz a cadeias vazia. Para os passos de re-escrita individuais, quando multiplas correspondecias alternativas de variáveis são possíveis, qualquer re-escrita que pode guiar a prova por inteiro é considerada.

Exemplo

RCGs são capazes de reconhecer uma linguagem de índice não-linear {www:w{a,b}*} como segue:

Sejam x, y, and z símbolos de variáveis:


S(xyz)A(x,y,z)

A(ax,ay,az)A(x,y,z)

A(bx,by,bz)A(x,y,z)

A(ϵ,ϵ,ϵ)ϵ

A prova para abbabbabb é então

S(abbabbabb)A(abb,abb,abb)A(bb,bb,bb)A(b,b,b)A(ϵ,ϵ,ϵ)ϵ

Ou, usando a mais correta "notação pontuada" para intervalos:

S(abbabbabb)A(abbabbabb,abbabbabb,abbabbabb)A(abbabbabb,abbabbabb,abbabbabb) A(abbabbabb,abbabbabb,abbabbabb)A(ϵ,ϵ,ϵ)ϵ

References

Predefinição:Linguagens formais e gramáticas