Faculdade Anhanguera de Taubaté – Ciência da Computação Teoria da Computação Aula Prof. Fabiano Sabha 1 1 Teoria da Computação Faculdade Anhanguera de Taubaté – Ciência da Computação Conteúdo Introdução e Conceitos Básicos Alfabeto; Cadeia de símbolos, palavra; Linguagem formal; Palavras e Subpalavras; Concatenações;e Exercícios de Fixação. Prof. Fabiano Sabha 2 Teoria da Computação Faculdade Anhanguera de Taubaté – Ciência da Computação O que é Teoria da Computação? Pode ser vista como um guia (um roteiro) que nos orienta no sentido de informar o que pode e o que não pode ser efetivamente computável, explicando porque, de que forma e com que complexidade. Neste sentido, a Teoria da Computação classifica os problemas computacionais em três classes: Prof. Fabiano Sabha 3 Teoria da Computação Faculdade Anhanguera de Taubaté – Ciência da Computação Classes dos problemas computacionais Problemas Indecidíveis (ou impossíveis de serem solucionados); Problemas Intratáveis (possíveis com recursos ilimitados, porém impossíveis com recursos limitados); Problemas Tratáveis (possíveis de serem solucionadas com recursos limitados). Esta classificação engloba problemas de toda a natureza, envolvendo desde problemas clássicos que fundamentam a teoria da computação até problemas (ou instâncias de problemas) práticos da ciência da computação, tais como: Prof. Fabiano Sabha 4 Teoria da Computação Faculdade Anhanguera de Taubaté – Ciência da Computação Problemas computacionais Existe programa para solucionar um determinado problema? Qual o poder de expressão de um determinado modelo de especificação? Dado um programa qualquer, ele sempre tem parada garantida? Dois programas P1 e P2 são equivalentes entre si? Uma determinada solução é a melhor solução para um dado problema? Qual o significado de um determinado programa? Dado um programa qualquer, este programa está correto? Prof. Fabiano Sabha 5 Teoria da Computação Faculdade Anhanguera de Taubaté – Ciência da Computação O Propósito da Teoria da Computação Formalização dos conceitos de programa e de máquina Existem diferentes computadores, com diferentes arquiteturas, e existem diversos tipos de linguagens de programação, Modelos matemáticos simples. Programas e máquinas são tratados como entidades distintas, mas complementares e necessárias para a definição de computação. Prof. Fabiano Sabha 6 Teoria da Computação Faculdade Anhanguera de Taubaté – Ciência da Computação Conceitos Básicos - Conjuntos Conjunto é um grupo de objetos representado como uma unidade. Os conjuntos podem conter qualquer tipo de objeto. Esses objetos são chamados de elementos ou membros. {7,21,57} – é a notação de um conjunto que contem os elementos ou membros 7, 21, e 57, a ordem não importa. Alguns símbolos : Pertence e não Pertence Subconjunto e Subconjunto próprio União Interseção Prof. Fabiano Sabha 7 Teoria da Computação Faculdade Anhanguera de Taubaté – Ciência da Computação Conceitos Básicos - Conjuntos Multiconjunto: Consideramos a repetição dos elementos Conjunto Finito: Contém uma quantidade finita de elementos Conjunto Infinito: Contém uma quantidade infinita elementos Conjunto Vazio: conjunto sem elementos Conjuntos “elementares” Conjunto dos números naturais {1,2,3...} Conjunto dos números inteiros {...,-2 ,-1,0,1,2...} Prof. Fabiano Sabha 8 Teoria da Computação Faculdade Anhanguera de Taubaté – Ciência da Computação Conceitos Básicos - Alfabeto Para o nosso propósito definimos um ALFABETO como podendo ser qualquer conjunto finito não vazio. Normalmente usamos a letra grega ∑ (sigma) para designar alfabetos, como nos exemplos abaixo: ∑ = {0,1} ∑ = {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,x,z} Prof. Fabiano Sabha 9 Teoria da Computação Faculdade Anhanguera de Taubaté – Ciência da Computação Cadeia de Símbolos, palavra Uma Cadeia de Símbolos sobre um conjunto é uma seqüência de zero ou mais símbolos (do conjunto) justapostos. Uma Cadeia de Símbolos Finita é usualmente denominada de Palavra. ε (epsilon) Representa uma cadeia ou palavra vazia. Se ∑ representa um conjunto de símbolos (um alfabeto), ∑ * denota o conjunto de todas as palavras possíveis sobre ∑; ∑+ denota ∑* - {ε} Prof. Fabiano Sabha 10 Teoria da Computação Faculdade Anhanguera de Taubaté – Ciência da Computação Comprimento ou Tamanho de uma Palavra. O Comprimento ou Tamanho de uma palavra w, representado por |w|, É o número de símbolos que compõem a palavra. Exemplos: |011| = 3 | | = 0 |abba| = 4 Palavra de comprimento zero = palavra nula = 0; Prof. Fabiano Sabha 11 Teoria da Computação Faculdade Anhanguera de Taubaté – Ciência da Computação Prefixo, Sufixo e Subpalavra Um Prefixo (respectivamente, Sufixo) de uma palavra é qualquer seqüência inicial (respectivamente, final) de símbolos da palavra. Uma Subpalavra de uma palavra é qualquer seqüência de símbolos contígüa da palavra. Exemplos: abcb é uma palavra sobre o alfabeto {a, b, c}; Qualquer prefixo ou sufixo de uma palavra é uma sub-palavra. Se ∑ = {a, b}, então: ∑ + = {a, b, aa, ab, ba, bb, aaa,...} , a, ab, abc, abcb são os prefixos; , b, cb, bcb, abcb são os respectivos sufixos. Prof. Fabiano Sabha 12 Teoria da Computação Faculdade Anhanguera de Taubaté – Ciência da Computação SubPalavras Subpalavra = Qualquer cadeia finita de símbolos de constante em W. Uma palavra x é subpalavra de y e escrevemos x<<y. Se existirem palavras u e v tal que u x v= y Exemplo: A) 415 << 415 u =0 ; v = 0; B) 755 << 37554 u = 3; v =4; Prof. Fabiano Sabha 13 Teoria da Computação Faculdade Anhanguera de Taubaté – Ciência da Computação Concatenação A Concatenação de Palavras é uma operação binária, definida sobre uma linguagem L, a qual associa a cada par de palavras uma palavra formada pela justaposição da primeira com a segunda tal que: é associativa; v(wt) = (vw)t = vwt possui elemento neutro à esquerda e à direita, o qual é a palavra vazia. ε w = w = w ε Prof. Fabiano Sabha 14 Teoria da Computação Faculdade Anhanguera de Taubaté – Ciência da Computação Concatenação Exemplos: Suponha o alfabeto ∑ = {a, b}. Então, para as palavras v = baaaa e w = bb, tem-se que: a) vw = baaaabb b) v ε = v = baaaa c) w4 = bbbbbbbb (concatenação sucessiva) 35 8 = 358 e cas e x a = casa Note que: 0 x =x Prof. Fabiano Sabha 0=x 15 (y z) = (x y) Teoria da Computação z Faculdade Anhanguera de Taubaté – Ciência da Computação Linguagem Formal Uma Linguagem Formal ou simplesmente Linguagem é um conjunto de palavras sobre um alfabeto. Exemplo Suponha o alfabeto ∑ = {a, b}. Então: a) O conjunto vazio e o conjunto formado pela palavra vazia são linguagens sobre ∑. Obviamente, { } ¹ { e }. b) O conjunto de palíndromos (palavras que têm a mesma leitura da esquerda para a direita e vice-versa) sobre å é um exemplo de linguagem infinita. e, a, b, aa, bb, aaa, aba, bab, bbb, aaaa,... Prof. Fabiano Sabha 16 Teoria da Computação Faculdade Anhanguera de Taubaté – Ciência da Computação Exercícios de Fixação Com suas palavras defina conjunto: Defina: Multiconjunto: Conjunto Finito: Conjunto Infinito: Conjunto Vazio: O que é uma cadeia de símbolos? O que é um alfabeto? Defina subpalavra. Prof. Fabiano Sabha 17 Teoria da Computação