SCC Capítulo 3 Linguagens Sensíveis ao Contexto e Autômatos Limitados Linearmente

Documentos relacionados
LINGUAGENS SENSÍVEIS AO CONTEXTO E AUTÔMA- TOS LIMITADOS LINEARMENTE

Gramáticas Sensíveis ao Contexto (GSC) Linguagens Sensíveis ao Contexto (LSC) Autômatos Linearmente Limitados (ALL)

SCC Capítulo 2 Linguagens Livres de Contexto e Autômatos de Pilha (versão 2)

SCC Capítulo 3 - Linguagens Sensíveis ao Contexto, Linguagens Recursivamente Enumeráveis e Máquinas de Turing

SCC-5832 Teoria da Computação

SCC Capítulo 1 Linguagens Regulares e Autômatos Finitos

SCC Capítulo 4 Linguagens Recursivamente Enumeráveis e Máquinas de Turing

SCC Capítulo 4 Linguagens Recursivamente Enumeráveis e Máquinas de Turing

SCC Teoria da Computação e Linguagens Formais

SCC Introdução à Teoria da Computação

Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação

SCC 205 Teoria da Computação e Linguagens Formais

Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados.

Capítulo A máquina de Turing (TM) padrão Combinações de máquinas de Turing A Tese de Turing. ADC/TC/Cap.9/ /LEI/DEIFCTUC 375

A. (Autómatos finitos determinísticos e não determinísticos AFD e AFND)

Apostila 05 Assunto: Linguagens dos tipos 0 e 1

Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Curso de Ciências de Computação

SCC Capítulo 2 Linguagens Livres de Contexto e Autômatos de Pilha

Capítulo Métodos para transformar gramáticas ái Duas formas Normais (Chomsky e Greibach) ADC/TC/Cap.6/ /LEI/DEIFCTUC 268

Linguagens Formais e Autômatos P. Blauth Menezes

Computação efectiva. Que linguagens podem ser reconhecidas por algum tipo de autómato?

SCC-5832: II. Ling. Livres de Contexto e Autômatos de Pilha

Teoria da Computação Aula 02 Introdução

SCC Capítulo 4 Máquinas de Turing e a Teoria da Computabilidade

formais e autómatos Linguagens g recursivas e recursivamente enumeráveis Gramáticas não-restringidas

LINGUAGENS FORMAIS E AUTÔMATOS. Prova 2-10/06/ Prof. Marcus Ramos

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

Aula 8: Gramáticas Livres de Contexto

Gramática. Prof. Yandre Maldonado e Gomes da Costa. Prof. Yandre Maldonado - 1

Gramática. Gramática. Gramática

Teoria de Linguagens 2 o semestre de 2015 Professor: Newton José Vieira Primeira Lista de Exercícios Entrega: até 16:40h de 15/9.

Autómatos de pilha e Gramáticas independentes de contexto

Teoria de Linguagens 1 o semestre de 2018 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 17/4/2018 Valor: 10 pontos

Linguagens recursivamente enumeráveis

Gramáticas ( [HMU00], Cap. 5.1)

Teoria da Computação. Computabilidade e complexidade computacional

Autómatos de pilha e GIC

Linguaguens recursivamente enumeráveis e recursivas

Teoria de Linguagens 2 o semestre de 2017 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 19/9/2017 Valor: 10 pontos

Variedades Adicionais das Máquinas de Turing

Linguaguens recursivamente enumeráveis

UNIVERSIDADE DA BEIRA INTERIOR

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

ECO026 TEORIA DA COMPUTAÇÃO. Prof: Rafael Santos Site:

LFA Aula 09. Gramáticas e Linguagens Livres de Contexto 18/01/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior.

7.1. Autómatos de pilha não-determinísticos (NPDA) 7.3. Autómatos de pilha determinísticos e linguagens livres de contexto determinísticas.

Expressões Regulares e Gramáticas Regulares

Curso de Engenharia de Computação - UTFPR Teoria da Computação - Prof. Celso Kaestner Lista de exercícios

Aula 7: Autômatos com Pilha

Linguagens Formais. Aula 01 - Conceitos Básicos. Prof. Othon Batista Mestre em Informática

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

IV Gramáticas Livres de Contexto

Apostila 02. Objetivos: Estudar os autômatos finitos Estudar as expressões regulares Estudar as gramáticas regulares Estudar as linguagens regulares

Apostila 06. Objetivos: Estudar a Computabilidade Estudar a Decidibilidade Estudar a Redutibilidade

Compiladores Aula 4. Celso Olivete Júnior.

LFA Aula 07. Equivalência entre AFD e AFND. Equivalência entre ER s e AF s Equivalência entre GR s e AF s. Linguagens Formais e Autômatos

Apostila 01 Fundamentação da Teoria da Computação e Linguagens Formais

Segunda Lista de Exercícios 2004/2...

Linguagens Formais e Autômatos 02/2015. LFA Aula 02. introdução 28/09/2015. Celso Olivete Júnior.

a n Sistemas de Estados Finitos AF Determinísticos

INE5317 Linguagens Formais e Compiladores AULA 5: Autômatos Finitos

Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000)

Alfabeto, Cadeias, Operações e Linguagens

A. (Autómatos finitos determinísticos e não determinísticos AFD e AFND)

Linguagens Regulares. Prof. Daniel Oliveira

Formas normais. Forma normal de Greibach (FNG) todas as produções são da forma

TEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO

Linguagens Formais e Autômatos P. Blauth Menezes

Máquinas de Turing - Computabilidade

Linguagens Livres de Contexto

Teoria da Computação Gramáticas, Linguagens Algébricas e Autómatos de Pilha

MAC-4722 Linguagens, Autômatos e Computabilidade Lista L3

LFA Aula 05. AFND: com e sem movimentos 05/12/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior.

Linguagens Formais e Autômatos 02/2016. LFA Aula 04 16/11/2016. Celso Olivete Júnior.

Linguagens Formais e Autômatos (BBC242) Professor: Anderson Almeida Ferreira DECOM-UFOP

GBC015: INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO Teoria de Algoritmos: Computabilidade e Máquina de Turing

Teoria da Computação. Capítulo 1. Máquina de Turing. Prof. Wanderley de Souza Alencar, MSc.

LINGUAGENS FORMAIS Modelos Determinísticos e Não Determinísticos. Usam-se modelos matemáticos para representar eventos (fenômenos) do mundo real.

Propriedades das Linguagens Livres do Contexto

1 INTRODUÇÃO E CONCEITOS BÁSICOS

LINGUAGENS FORMAIS E AUTÔMATOS

LINGUAGENS FORMAIS Definições. Desenvolveram-se na História em função da necessidade dos grupos humanos que as empregavam

Universidade Federal de Alfenas

Prof. Dr. Marcos Castilho. Departamento de Informática/UFPR. 22 de Fevereiro de 2018

Linguagens Formais e Autômatos P. Blauth Menezes

As linguagens regulares são I.C Proposição Qualquer linguagem regular é independente de contexto.

Aula 9: Máquinas de Turing

Draft-v0.1. Máquinas de Turing Máquinas de Turing

Marcos Castilho. DInf/UFPR. 16 de maio de 2019

Computabilidade e Complexidade (ENG10014)

Análise Léxica. Fundamentos Teóricos. Autômatos Finitos e Conjuntos Regulares (cap. III da apostila de Linguagens Formais e Compiladores)

Linguagens livres de contexto e autômatos de pilha

Fundamentos da Teoria da Computação

Construção de Compiladores

Faculdade de Computação

COMPILADORES. Revisão Linguagens formais Parte 01. Geovane Griesang

Teoria da Computação (BBC244)

Linguagens Formais e Autômatos. Autômatos Finitos Determinísticos (AFD)

Transcrição:

SCC-505 - Capítulo 3 Linguagens Sensíveis ao Contexto e João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação - Universidade de São Paulo http://www.icmc.usp.br/~joaoluis 2010 João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 1/26

Sumário 1 2 e a Computabilidade João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 2/26

Sumário 1 2 e a Computabilidade João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 3/26

Definição Como uma generalização das regras livres de contexto, introduz-se agora regras sensíveis ao contexto que também especificam a substituição de um símbolo não terminal, mas requer um contexto para aplicação. Portanto a regra bc bc é sensível ao contexto porque ela diz que um não terminal C pode ser substituído pelo símbolo terminal c apenas no contexto de um b precedente. Definição: Uma gramática G é sensível ao contexto se cada produção ou é da forma 1 yaz ywz, para A V, y, z (V Σ), w (V Σ) + ; ou 2 S λ, dado que S não aparece no lado direito de nenhuma produção. Uma linguagem é sensível ao contexto se pode ser gerada por uma gramática sensível ao contexto. João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 4/26

Exemplo de GSC Fato: Seja G uma gramática tal que toda produção de G é da forma v w, com v w, exceto que pode existir uma única produção-λ S λ se S não aparece do lado direito de nenhuma produção. Então, existe uma gramática sensível ao contexto G que é equivalente a G: L(G) = L(G ) [1]. Exemplo de Gramática Sensível ao Contexto: G = (Σ, V, S, P), Σ = {a, b}, V = {S, B, C} e P = { 1 S asbc, 2 S abc, 3 CB BC, 4 ab ab, 5 bb bb, 6 bc bc, 7 cc cc} João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 5/26

Exemplo de GSC A linguagem L(G) contém a palavra a n b n c n para cada n 1, pois pode-se usar a produção (1) n 1 vezes para chegar a S a n 1 S(BC) n 1. Depois usa-se a (2) para S a n (BC) n. A produção (3) permite arranjar os Bs e Cs tal que todo B preceda todos os Cs. Por exemplo, se n = 3: aaabcbcbc aaabbccbc aaabbcbcc aaabbbccc Portanto, S a n B n C n. Depois usa-se (4) uma vez para chegar a S a n bb n 1 C n. Aí usa-se a produção (5) n 1 vezes: S a n b n C n. Finalmente, usa-se a produção (6) uma vez e a produção (7) n 1 vezes para chegar a S a n b n c n. É necessário mostrar também que as cadeias a n b n c n, n 1, são as únicas cadeias terminais em L(G). João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 6/26

Sumário 1 2 e a Computabilidade João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 7/26

Lema da Cadeia Vazia Note que nem toda gramática livre de contexto é sensível ao contexto, porque as produções livres de contexto podem ser da forma A λ. Entretanto, toda linguagem livre de contexto é uma linguagem sensível ao contexto. Lema: (). Seja G uma gramática livre de contexto que envolve regras da forma A λ para qualquer A V. Então existe uma gramática livre de contexto G tal que 1 L(G) = L(G ); 2 Se λ / L(G) então não existem produções da forma A λ em G ; mas 3 Se λ L(G), então existe uma única produção-λ em G, S λ, onde S é o símbolo inicial de G e S não aparece no lado direito de nenhuma produção em G. João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 8/26

Lema da Cadeia Vazia: Prova PROVA: Suponha que λ / L(G). Para C V considere todas as produções C w, onde w não é vazio. Agora suponha que w contém variáveis A 1,..., A k, B 1,..., B j onde A i, 1 i < k, são aquelas variáveis em w para as quais A i λ. Adicione a G a produção C w, onde w é obtida de w apagando zero ou mais ocorrências de uma variável dos A i s. Então, por exemplo, leva a quatro produções C aa 1 BA 2 C aa 1 BA 2 aba 2 aa 1 B ab Quando este processo estiver completo, remova todas as produções-λ, incluindo qualquer produção-λ nova que tenha sido incluída no processo. A gramática resultante é G. Então L(G) = L(G ) como se segue. João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 9/26

Lema da Cadeia Vazia: Prova Se uma derivação de alguma cadeia w L(G) envolveu produções-λ, então a árvore de derivação para w terá nós rotulados com λ, como no seguinte exemplo. Para obter uma derivação G para w a partir de uma derivação G para w, comece no topo da árvore G e apague qualquer sub-árvore da raiz da árvore que deriva λ. O topo da árvore deve agora ilustrar uma produção a partir de G. João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 10/26

Lema da Cadeia Vazia: Prova Então considere os sucessores imediatos do nó raiz que não derivam λ. Aplique o mesmo princípio a cada um deles: se alguma das suas sub-árvores deriva λ, apague a sub-árvore. Continue desta forma para baixo na árvore. A árvore final representa uma derivação G. Além disto, esta árvore deriva w, porque uma subcadeia de w é removida pelo processo de apagamento se e somente se ela for λ. Por outro lado, se w L(G ) e a derivação de w envolve uma regra recém adicionada, então simule a derivação de G usando a regra G original apropriada e regras-λ. Isto é, faça o processo descrito acima na ordem reversa, novamente de cima para baixo. João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 11/26

Lema da Cadeia Vazia No caso onde λ L(G), primeiro adicione um novo símbolo inicial a G, por exemplo S, e adicione duas novas produções, S S e S λ. Depois repita o processo descrito previamente em todas as produções exceto as produções S. Então L(G) = L(G ). Teorema: Uma linguagem L é sensível ao contexto se e somente se existe alguma gramática G tal que L = L(G) onde toda produção de G da forma u v tem a propriedade de que 0 < u v com uma exceção: se λ L(G), então a regra S λ está também presente e neste caso S não pode aparecer no lado direito de nenhuma produção. João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 12/26

Sumário e a Computabilidade 1 2 e a Computabilidade João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 13/26

Máquina de Turing e a Computabilidade Vai-se relacionar agora a teoria das linguagens formais com a teoria abstrata da computação. Como se pode caracterizar o conjunto de funções computadas por programas de computador? Esta questão - quais funções são realizáveis por algoritmos e quais não são? - tem suas raízes mais diretas no trabalho de Alan Turing nos anos 1930 [6]. Usando, o que agora se chama de modelo de máquina de Turing, Turing mostrou que certos problemas naturais em computação não podem ser computados por nenhum algoritmo, real ou imaginado. João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 14/26

Máquina de Turing: Definição e a Computabilidade Uma máquina de Turing T pode ser descrita (Figura 10) como um controle de estados finitos equipado com um dispositivo de armazenamento externo na forma de uma fita finita que pode ser estendida indefinidamente em ambas as direções. Figure: Uma máquina de Turing: A fita pode ser estendida indefinidamente pela adição de B s (brancos) em qualquer lado [7]. João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 15/26

Máquina de Turing: Exemplo e a Computabilidade Exemplo : A seguinte máquina de Turing aceita o conjunto {a 2n n 0} de cadeias de comprimento par de a s: quando começa no estado par no a mais a esquerda, com a configuração de fita inicial Baaa...aaaB ela irá terminar no estado aceitação apenas no caso do número de a s ser par. Aqui está a máquina: (par a ímpar B R) (ímpar a par B R) (par B aceitação B R) Quando ela alcança primeiro um B ela muda para o estado aceitação se ela viu um número par (incluindo 0) de a s mas de outra forma ela irá parar porque não há quíntupla para guiar seu próximo movimento. João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 16/26

Máquina de Turing: Exemplo e a Computabilidade Por outro lado, a máquina com quíntuplas: (par a ímpar B R) (ímpar a par B R) (par B aceitação B R) (ímpar B ímpar B R) tem a propriedade de que em cadeias de comprimento par de a s ela para no estado de aceitação, mas em cadeias de comprimento ímpar ela roda para sempre. Isto ilustra como as máquinas de Turing são realmente diferentes dos Autômatos Finitos (AFDs). Em particular, as computações da máquina de Turing podem fornecer resultados indefinidos - computações que nunca terminam. Tal comportamento não é possível com AFDs. João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 17/26

Máquina de Turing e a Computabilidade Assim como com os AFDs, pode-se dar uma representação equivalente das quíntuplas no Exemplo 4 usando uma tabela de estado, como se segue: estado símbolo percorrido atual a B par ímpar B R aceitação B R ímpar par B R A fim de tornar o comportamento da máquina determinístico, necessita-se que quando duas quíntuplas têm a mesma combinação (estado atual, símbolo percorrido), então as duas quíntuplas são idênticas. Veja agora a definição formal de uma máquina de Turing e a linguagem que ela aceita. João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 18/26

Máquina de Turing: Definição e a Computabilidade Definição: Uma máquina de Turing M é uma quíntupla M = (Q, Σ, q 0, q a, δ), onde 1 Q é um conjunto finito de estados; 2 Σ é um alfabeto finito da fita. Escreve-se Σ = Σ {B, } para Σ aumentado pelo símbolo de fita B, o símbolo branco, e por outros símbolos usados para marcação na fita (escrita); 3 q 0 é o estado inicial distinto; 4 q a é o estado de aceitação distinto; 5 δ é a função (parcial) de transição de estado, δ : Q Σ Q Σ {L, R, S} sujeita a condição de que δ(q a, x) não é definida para nenhum x em Σ. Pode-se representar δ por uma lista de quíntuplas, com (q x q x D) na lista apenas no caso em que δ(q, x) = (q, x, D). João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 19/26

e a Computabilidade Máquina de Turing: Descrição Instantânea Pode-se descrever a configuração de uma máquina de Turing M especificando: 1 a cadeia w 1 impressa na fita a esquerda da cabeça de leitura/escrita; 2 o estado corrente q; e 3 a cadeia w 2 impressa na fita a direita da cabeça de leitura/escrita, com a máquina correntemente lendo o símbolo mais à esquerda de w 2. Pode-se resumir isto na cadeia w 1 qw 2 que é chamada de descrição instantânea (DI) de M. Note que w 1 e w 2 não são únicos - a cadeia w 1 w 2 deve conter todos os quadrados não brancos da fita de M, mas ela pode ser estendida adicionando brancos em qualquer lado: 1q 0 1B11 e BB1q 0 1B11BBB são duas formas de escrever a mesma DI. João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 20/26

Máquina de Turing e a Computabilidade Para uma máquina de Turing M sobre o alfabeto Σ, define-se T (M), o conjunto aceitação de M, como o conjunto das cadeias w sobre Σ tal que se w é escrita em uma fita em branco e M começa processando no estado q 0 no símbolo mais a esquerda de w, então M finalmente para no estado de aceitação. Formalmente: Definição: O conjunto de aceitação T (M) de uma máquina de Turing M sobre o alfabeto Σ é o conjunto T (M) = {w Σ w 1, w 2 (Σ ) q 0 w w 1 q a w 2 }. João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 21/26

Máquina de Turing: Exemplo e a Computabilidade Exemplo: A seguinte máquina de Turing aceita a linguagem {a n b n c n n > 0}: Figure: Uma máquina de Turing para processar a linguagem {a n b n c n n > 0}. João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 22/26

Sumário e a Computabilidade 1 2 e a Computabilidade João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 23/26

ALL: Definição e a Computabilidade Definição: Um autômato limitado linearmente (ALL) é uma máquina de Turing não determinística que deve operar dentro de um espaço delimitado na fita, a esquerda por um símbolo $ e a direita por um. Assume-se que estes símbolos são não apagáveis e que a cabeça não pode mover sobre eles. Estas máquinas são precisamente os aceitadores das linguagens sensíveis ao contexto. João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 24/26

Bibliografia I Apêndice Bibliografia [1] Chomsky, N. On Certain Formal Properties of Grammars. Information and Control, 2, 1959, pp. 137 167. [2] Hopcroft, J. E., Ullman, J. D. Formal Languages and Their Relation to Automata. Addison-Wesley Publishing Company, 1969. [3] Hopcroft, J. E., Ullman, J. D. e Motwani, R. Introdução à Teoria de Autômatos, Linguagens e Computação. Tradução da segunda edição americana. Editora Campus, 2003. João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 25/26

Bibliografia II Apêndice Bibliografia [4] Moll, R. N., Arbib, M. A., and Kfoury, A. J. An Introduction to Formal Language Theory. Springer-Verlag, 1988. [5] Rosa, J. L. G. Linguagens Formais e Autômatos. Editora LTC. Rio de Janeiro, 2010. [6] Turing, A.M. On Computable Numbers, with an Application to the Entscheidungsproblem. Proceedings of the London Mathematical Society, 2 42: 230-65, 1937. [7] Wikipedia - The Free Encyclopedia. http://en.wikipedia.org/wiki/turing_machine João Luís G. Rosa c 2010 - SCC-505: III. Linguagens Sensíveis ao Contexto e 26/26