Conceitos Básicos. Vocabulário Cadeias Linguagens Problema

Documentos relacionados
Conceitos Básicos. Vocabulário Cadeias Linguagens Expressões Regulares Problema X Linguagem

Definições Hierarquia de Chomsky Exemplos de gramáticas. Gramáticas. Objetivo de ensinar o inglês pelo computador e conseguir um tradutor de línguas

Definições Exemplos de gramáticas

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

Alfabeto, Cadeias, Operações e Linguagens

Linguagem (formal) de alfabeto Σ

Linguagens Formais e Problemas de Decisão

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos

Linguagens Formais - Preliminares

Revisões de Conjuntos

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

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

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

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

Conceitos básicos de Teoria da Computação

Modelos de Computação

Linguagens Formais e Autômatos

Prof. Adriano Maranhão COMPILADORES

Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)

Teoria da Computação

Notas de aula: Cálculo e Matemática Aplicados às Notas de aula: Ciências dos Alimentos

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

Curso: Ciência da Computação Turma: 6ª Série. Teoria da Computação. Aula 3. Autômatos Finitos

Como construir um compilador utilizando ferramentas Java

Compiladores Aula 4. Celso Olivete Júnior.

LINGUAGENS FORMAIS E AUTÔMATOS

Linguagens Formais e Autômatos (LFA)

Um alfabeto é um conjunto de símbolos indivisíveis de qualquer natureza. Um alfabeto é geralmente denotado pela letra grega Σ.

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

Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens

Alfabeto e palavras. Alfabeto conjunto finito de símbolos (Σ).

1 INTRODUÇÃO E CONCEITOS BÁSICOS

a n Sistemas de Estados Finitos AF Determinísticos

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

IBM1088 Linguagens Formais e Teoria da

Seja S = {2, 5, 17, 27}. Quais da sentenças a seguir são verdadeiras? 3. Quantos conjuntos diferentes são descritos abaixo? Quais são eles?

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

Gramática. Gramática. Gramática

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

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

Linguagens Formais e Autômatos P. Blauth Menezes

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

MATEMÁTICA. Aula 2 Teoria dos Conjuntos. Prof. Anderson

INE5317 Linguagens Formais e Compiladores. AULA 4: Gramáticas

Propriedades das Linguagens Livres do Contexto

Compiladores. Análise lexical. Plano da aula. Motivação para análise lexical. Vocabulário básico. Estrutura de um compilador

LFA. Aula 04. Sintaxe e Semântica. Conceitos Básicos Alfabeto Palavra Linguagem

LINGUAGENS FORMAIS E AUTÔMATOS

Linguagens Regulares. Prof. Daniel Oliveira

Modelos de Computação Folha de trabalho n. 8

Notas sobre Definições Recursivas

Revisão de conceitos Matemáticos. Matemática e Fundamentos de Informática

COMPILADORES. Revisão Linguagens formais Parte 02. Prof. Geovane Griesang

INE5317 Linguagens Formais e Compiladores AULA 3: Introdução a Teoria da Computação

A = B, isto é, todo elemento de A é também um elemento de B e todo elemento de B é também um elemento de A, ou usando o item anterior, A B e B A.

Teoria das Linguagens. Linguagens Formais e Autómatos (Linguagens)

Linguagens e Programação Gramáticas. Paulo Proença

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

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

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

Matemática Discreta - 07

Fundamentos da Teoria da Computação

Linguagens Formais e Autômatos. Conceitos Básicos Prof. Anderson Belgamo

I.2 Introdução a Teoria da Computação

Exercícios Associados à Aula 02 (14/08/2013)

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO. Aula 25

Aula1 Noções de matemática Discreta Técnicas de Demonstração. Prof. Dr. Ricardo Luis de Azevedo da Rocha

Linguagens e Programação Automátos Finitos. Paulo Proença

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

Construção de Compiladores

INE5317 Linguagens Formais e Compiladores AULA 6: Propriedades das Linguagens Regulares

MAC5722 Complexidade Computacional

MAT105 - Fundamentos de Matemática Elementar I

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

Linguagens Livres de Contexto

Capítulo 1: Alfabetos, cadeias, linguagens

Apostila 05 Assunto: Linguagens dos tipos 0 e 1

Definição: Um ou mais elementos que tenham características iguais ou atendam a uma regra que lhes permitam fazer parte de um mesmo meio.

DISCIPLINA: MATEMÁTICA BÁSICA PROF. ELIONARDO ROCHELLY TEC. ALIMENTOS TEC. SISTEMAS INTERNET MATUTINO/VESPERTINO

Matéria: Matemática Assunto: Teoria dos Conjuntos Prof. Dudan

Linguagens Formais e Autômatos

Curso: Ciência da Computação Turma: 6ª Série. Teoria da Computação. Aula 2. Conceitos Básicos da Teoria da Computação

AFNs, Operações Regulares e Expressões Regulares

ÁLGEBRA. AULA 1 _ Conjuntos Professor Luciano Nóbrega. Maria Auxiliadora

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

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

Lema do Bombeamento Operações Fechadas sobre LR s Aplicações

Gramáticas e Linguagens independentes de contexto

Linguagens e Autômatos

Transcrição:

Conceitos Básicos Vocabulário Cadeias Linguagens Problema

Alfabeto ou Vocabulário: Conjunto finito não vazio de símbolos. Símbolo é um elemento qualquer de um alfabeto. Ex: {A,B,C,.Z} alfabeto latino (maiúsculas) {,,,,,, } alfabeto grego {0,1} alfabeto binário {0,1,2,3,4,5,6,7,8,9} alfabeto de dígitos {a, b} Cadeia ou palavra: Concatenação de símbolos de um alfabeto. Define-se como cadeia vazia ou nula uma cadeia que não contém nenhum símbolo. Ex: aab 123094 l - cadeia nula

Comprimento de cadeia: Número de símbolos de uma cadeia. Ex: aab = 3 123094 =6 l =0 Concatenação de cadeias: Define-se a concatenação z de uma cadeia x com uma cadeia y como sendo a concatenação dos símbolos de ambas as cadeias, formando a cadeia xy. z = x + y Ex: x = abaa; y = ba z = abaaba z =4+2=6 x = ba; y = l z = ba z =2+0=2

Produto de alfabetos: É o produto cartesiano de alfabetos. Ex: V1 = {a,b}; V2 = {1, 2, 3} V1.V2 = V1xV2 = {a1, a2, a3, b1, b2, b3} Observe que V1.V2 V2.V1 Exponenciação de alfabetos: São todas as cadeias de comprimento n sobre V (V n ). V 0 ={l}, V 1 =V, V n =V n-1.v Ex: V = {0, 1} V 3 = V 2.V = (V.V).V = {00, 01, 10, 11}.{0,1} = {000, 001, 010, 011, 100, 101, 110, 111} V =8 V n = m n onde V = m

Fechamento (Clausura) de um Alfabeto: Seja A um alfabeto, então o fechamento de A é definido como A * = A 0 A 1 A 2... A n... Portanto A * = conjunto das cadeias de qualquer comprimento sobre o alfabeto A. Ex: A = {1} A * = {l, 1, 11, 111,...} Fechamento Positivo de A: A + = A * - {l} (todas as cadeias não vazias sobre o alfabeto A)

Linguagem é um conjunto de cadeias de símbolos sobre um alfabeto/vocabulário, V. É um subconjunto específico de V*. Estas cadeias são denominadas sentenças da linguagem, e são formadas pela justaposição de elementos individuais, os símbolos da linguagem. Ex: V = {a, b, c} e bc) L = {ab, bc} ( linguagem formada pelas cadeias ab

Formadores de Conjuntos Expressões que ajudam a descrever uma linguagem (em geral infinita): L = { w algo sobre w } O conjunto de palavras w tais que (o que for dito sobre w à direita) Exs.: 1. L={ w w consiste de um número igual de 0 s e 1 s } 2. L={ w w é um número inteiro binário primo } 3. L={ w w é um programa em C sintaticamente correto } 4. L={ 0 n 1 n n 1} = {01, 0011, 000111,...} 5. L={0 i 1 j 0 i j} = {l, 01, 011, 011,..., 0011, 00111,...} 6. L={ab n a n b n>=0} (linguagem formada por todas as cadeias que começam com "a" seguido de um número qualquer de "b"'s OU começam com um número qualquer de "a"'s seguidos de um "b", por exemplo a, b, ab, abb, aab, aaab,...)

Um Problema na Teoria dos Autômatos consiste em decidir se uma dada cadeia é elemento (sentença) de alguma linguagem específica. Assim, um problema é sinônimo de decidir a pertinência a um conjunto (uma linguagem). Mais precisamente: Se é um alfabeto e L é uma linguagem sobre, então o problema L é: Dada uma cadeia w em *, decidir se w está ou não em L. (Questão de Decisão) Ex.: O problema de testar o caráter primo de um número binário pode ser expresso pela linguagem Lp que consiste em todas as cadeias binárias cujo valor como número binário é primo. Ou seja, dada uma cadeia de 0 s e 1 s, diremos sim se a cadeia for a representação binária de um primo e diremos não caso contrário. Lp é então o conjunto-solução do problema.

Linguagem Lp ou Problema P? São dois lados da mesma moeda. A Linguagem Lp é o conjunto das soluções de um problema P. Todo problema P tem um problema de decisão associado: dada uma (cadeia) candidata à solução, decidir se ela de fato é solução (se tem as características de solução). Ou seja, se pertence à Lp. Diferentemente, um algoritmo que busca uma solução tem o trabalho extra de verificar mais de uma possibilidade.

Encarar problemas como uma questão de pertinência de conjunto (pertence ou não à linguagem) tem sido útil aos estudos da teoria da complexidade. Problemas de Decisão têm se mostrado tão difíceis quanto suas versões do tipo resolva isso. Ao reduzirmos um problema para sua versão de pertinência e provarmos que é difícil resolvê-la, então podemos concluir que resolver o problema inicial será igualmente difícil. (Técnica de Prova por Redução) P i Lp?

Exemplo Seja o problema P1, de compilar um programa na linguagem de programação X. Quão difícil é resolvê-lo? (qual sua complexidade?). Considere agora o problema de decisão P2: dada uma cadeia, ela pertence à linguagem Lx (de cadeias válidas na linguagem de programação X)? Se provarmos que é difícil resolver P2 (H), então não será mais fácil converter programas na linguagem X para código-objeto (C). Por contrapositiva: se fosse fácil (eficiente) gerar código-objeto, poderíamos usar o próprio compilador para, ao ter sucesso ao produzir o código para um programa (cadeia), concluir que essa entrada se trata de um elemento válido de Lx. Assim, seria fácil testar a pertinência. Ou seja, se ~C ~H.

Assim, temos uma prova por contrapositiva da afirmação: Se o teste de pertinência a Lx é difícil, então compilar programas na linguagem de programação X é difícil. Essa técnica de redução é extremamente útil no estudo da complexidade de problemas, e é facilitada pela noção de que problemas são questões sobre pertinência a uma linguagem, e não tipos mais gerais de questões.