Escolar Documentos
Profissional Documentos
Cultura Documentos
Decidabilidade e Computabilidade
Historico e Conceitos
Visao geral
Denicao: Conceitos teoricos (como os modelos) que habilitam a pratica (construcao de sistemas computacionais), aplicando ` a teoria a pratica. Historico: Conceitos usados desde a Grecia antiga
Algoritmos (Euclides: calculo do MDC) Reducao de Problemas
Historico e Conceitos
Areas de Atuacao
Historico e Conceitos
Achar um modelo computacional generico Implementar qualquer funcao computavel O ponto de partida foi o trabalho de Hilbert Procedimento para demonstrar se uma formula matematica era
verdadeira
Historico e Conceitos
Tese de Hilbert
Todo problema bem denido tem solucao Caso houvesse fracasso na resolucao, seria por:
Historico e Conceitos
Teorema da Incompletude
mostrou que um sistema formal e consistente (usando numeros naturais, adicao e multiplicacao) nao era suciente para provar que toda sentenca era um teorema (numeros godel)
Historico e Conceitos
Meritos de Godel
1. Foi o primeiro a denir a nocao de procedimento efetivo 2. Fez uso do naturais para codicar smbolos, formulas e sequencia de formulas de modo bem denido. 3. Em sua prova, as formulas eram representadas por classes de funcoes
Surgiu a nocao de computabilidade e procedimento efetivo para a de problemas solucao Descobriu a classe de funcoes primitivas recursivas
Historico e Conceitos
Tese de Church
Historico e Conceitos
Maquina de Turing
Turing propos a Maquina de Turing Modelo para representacao de procedimento efetivo Simular atitudes humanas relacionadas a computacao `
Historico e Conceitos
Outras Maquinas
Apos Turing, surgiram outros formalismos Porem, todo formalismo tem, no maximo, o mesmo poder
Maquina de Turing (36) Maquina Norma (76) Sistema Canonico de Post (43) Algoritmo de Markov e linguagem Snobol (54) Maquina de Registradores (63) RASP - Ramdom Access Stored Programa (64)
Historico e Conceitos
Programas e Maquinas
A nocao de programa e denida como um procedimento efetivo Entao um programa pode ser descrito por um dos formalismos citados
anteriormente
Computabilidade Complexidade
Denicoes e Conceitos
Computabilidade Complexidade
Complexidade
diculdades computacionais
A teoria da complexidade afeta diretamente, por exemplo, o campo da
Computabilidade Complexidade
Computabilidade
verdadeira
Apesar de ser simples, os computadores nao conseguem responder
isso
Devido a esses resultados, ideias de modelos teoricos que ajudam a
Computabilidade Complexidade
difceis
Computabilidade: a classicacao dos problemas e com relacao aos
problemas serem ou nao resolvveis (introduz varios conceitos usado na teoria da complexidade)
Computabilidade Complexidade
Denicoes
Procedimento e um conjunto nito de passos executados num tempo xo e com um esforco xo, como um programa em linguagem de maquina, por exemplo, determinar se um numero e ou nao primo. Algoritmo e um procedimento que sempre para, ou seja, a execucao chega ao seu nal independente das entradas, por exemplo, dado um programa determinar se para alguma entrada este programa entrara em loop.
Computabilidade Complexidade
Exemplo de procedimento
inteiros positivos m e n 1. Adote como valores iniciais de x e y os valores m e n, respectivamente. 2. Adote como valor de r o resto da divisao do valor de x pelo valor de y. 3. Adote como o novo valor de x o valor de y, e como novo valor de y o valor de r. 4. Se o valor de r e nulo, entao o valor de x e o mdc procurado, e o calculo termina; caso contrario, volte a executar as instrucoes do procedimento a partir do passo 2.
Computabilidade Complexidade
Descricao Finita: todo procedimento possui dados pertencentes a um conjunto de objetos (como m e n sao inteiros positivos) e, espera-se um certo numero de resultados (como o valor nal de x), que mantem uma relacao especca com os dados (funcao). Agente computacional: supoe-se que exista um agente computacional humano, mecanico, eletronico, que execute as instrucoes do procedimento.
Computabilidade Complexidade
Nao ambgua: cada instrucao deve ser bem denida. No exemplo, haveria problemas se x e y pudessem ser inteiros quaisquer, a menos que denssemos o que seria o resto de divisao para inteiros nao positivos. Efetividade: as instrucoes devem ser efetivas, ou seja, devem ser tao simples que poderiam ser executadas, em princpio, por uma pessoa e num tempo nito. No exemplo, elas nao o seriam se, por exemplo, x e y pudessem ser numeros reais quaisquer em representacao decimal, possivelmente de comprimento innito.
Computabilidade Complexidade
Termino de Procedimentos
dados de entrada
Outros procedimentos terminam apenas para alguns valores
Computabilidade Complexidade
Exemplo de Termino
Exemplo 1 (MDC): Calcula o maximo divisor comum entre dois inteiros
positivos m e n.
Computabilidade Complexidade
Exemplo do MDC
Se no passo 2 do procedimento os valores de x e y sao inteiros e positivos, entao os passos 2, 3 e 4 serao executados apenas um numero nito de vezes, com os calculos terminando no passo 4.
Computabilidade Complexidade
1. se y = 1, entao apos o passo 2, r = 0. Portanto, os passos 2, 3 e 4 sao executados uma unica vez e o calculo termina no passo 4. 2. suponhamos que a proposicao e verdadeira para qualquer x > 0 e qualquer y, com 1 y < k , e demonstraremos que ela e verdadeira para y = k. 3. por denicao do resto da divisao de inteiros positivos, teremos, apos a execucao do passo 2, 0 r < k . 4. Se r = 0, entao a execucao termina, numa unica vez. Se r > 0, com a execucao dos passos 3 e 4, teremos x = k > 0 e y = r com 0 < r < k , e a execucao volta ao passo 2. 5. Por hipotese de inducao, os passos 2, 3 e 4 serao executados um numero nito p de vezes, com os calculos terminando no passo 4. Ao todo teremos, entao, p + 1 execucoes para y = k . 6. Notemos, ainda, que os valores iniciais x = m e y = n resultantes da execucao do passo 1 satisfazem as condicoes da proposicao acima. 7. Conclui-se, entao, que o Algoritmo de Euclides termina para quaisquer inteiros positivos m e n.
Computabilidade Complexidade
Exemplo 2 (Perfeito)
Procedimento para determinar o menor numero perfeito maior do que
` um inteiro positivo m dado. Um numero k e perfeito se for igual a soma de todos os seus divisores exceto o proprio k .
Computabilidade Complexidade
Computabilidade Complexidade
Computabilidade Complexidade
Este procedimento sempre termina? Apenas para certos valores de m. Por exemplo, se m = 4, entao ele para com x = 6, pois 6=1+2+3. Porem, no caso geral, a resposta nao e conhecida, pois a existencia ou nao de um numero innito de numeros perfeitos e um problema em aberto. Se existirem innitos numeros perfeitos, entao a execucao do procedimento termina para qualquer m; caso contrario, se K e o maior numero perfeito, entao o procedimento executa uma sequencia innita de calculos.
Computabilidade Complexidade
Exemplo 3 (Somatorio)
Calculo de s
Computabilidade Complexidade
Somatorio e algoritmo?
Computabilidade Complexidade
Somatorio e algoritmo?
Pergunta: Esse procedimento sempre para? Termina apenas para valores pares de m, pois os valores da sequencia
sao 0, 2, 4, 6, . . .. Para valores mpares, a igualdade x = m nunca e verdadeira e a execucao do procedimento nao termina.
Computabilidade Complexidade
Resumindo...
1. O Algoritmo de Euclides e realmente um algoritmo; 2. Nada podemos armar sobre o procedimento que determina o menor numero perfeito maior do que um inteiro positivo m dado; 3. O procedimento que efetua o calculo do somatorio nao e um algoritmo.
Computabilidade Complexidade
Concluindo...
Decidir se um procedimento e um algoritmo nao e tarefa trivial! Todo procedimento e um metodo para o calculo de alguma funcao,
eventualmente nao denida para certos argumentos. O procedimento visto, que calcula o somatorio de i variando de 0 ate m (sendo m um inteiro positivo) e entao uma funcao parcial, descrita por: h (m ) =
i =0
i,
Representacao e Contextualizacao
no computador.
Uma LP e denida por um conjunto de smbolos, chamado alfabeto, e
um conjunto de regras que especicam como compor as representacoes de procedimentos e quais sao as acoes associadas a estas representacoes.
Um programa e uma sequencia de smbolos de uma LP que representa
um ou mais procedimentos.
As LP tem caractersticas variadas, dependendo de sua nalidade. Ha
desde as muito simples, porem de grande interesse para a teoria da computacao (ex. a linguagem da Maquina de Turing), como as de mais alto nvel, usadas para proposito geral e comercialmente.
Universalidade das LP
Pergunta:
Tese de Church
Qualquer procedimento pode ser representado em Linguagem de
procedimento.
Uma maneira de negar a tese e encontrar um procedimento que nao
Conjuntos RE e Rec
Conjuntos Recursivamente enumeraveis sao representados por um procedimento. Conjuntos Recursivos sao representados por um algoritmo.
Algoritmos e procedimentos podem ser denidos pelos modelos
formais (automatos e gramaticas), logo os conjuntos recursivos e recursivamente enumeraveis tambem podem ser denidos por tais modelos.
um conjunto recursivo e (semi) decidvel caso tal conjunto seja recursivamente enumeravel.
Decidabilidade e tratada formalmente na teoria das linguagens formais
1. Problemas indecidveis: impossveis de serem solucionados; 2. Problemas intrataveis: possveis com recursos ilimitados, mas impossveis com recursos limitados; 3. Problemas trataveis: possveis de serem solucionados com recursos limitados.
1. Existe programa para solucionar um determinado problema? 2. De que forma um programa pode ser especicado? 3. Qual o poder de expressao de um determinado modelo de especicacao? 4. Dado um programa qualquer ele sempre tem parada garantida? 5. Dois programas P1 e P2 sao equivalentes entre si? 6. Uma determinada solucao e a melhor solucao para um determinado problema? 7. Qual o signicado de um determinado programa? 8. Como obter (construir) um programa correto?
Maquinas de turing (Turing 1936) Gramaticas (Chomsky 1959) Algoritmos de markov (Markov 1951) Lambda Cauculus (Church 1941) Sistemas post e sistemas de producao (Emil Post 1936) Funcoes recursivas (kleene 1936)
Algumas conclusoes
sendo aceita.
A equivalencia dos formalismos e das maquinas de turing reforca a
tese de Church.
necessario, primeiramente, saber o que e uma linguagem. Linguagem e um conjunto de elementos (smbolos) e metodos (regras) para combinar estes elementos, usado e entendido por uma determinada comunidade.
Reconhecedores e geradores
As representacoes nitas sao classicadas em sistemas
reconhecedores e sistemas geradores: Reconhecedores: sao mecanismos formais que permitem vericar se uma sentenca pertence ou nao a uma linguagem, os chamados automatos. Automatos nitos e maquinas de turing sao importantes classes de automatos. Sistemas geradores: sao mecanismos formais que permitem a geracao sistematica das sentencas de uma linguagem, as chamadas gramaticas. Por exemplo, as Gramaticas de Chomsky. Linguagens formais: sao linguagens que podem ser representadas de modo nito e preciso atraves de modelos e dispositivos matematicos. Linguagem recursiva: e uma linguagem para a qual existe um algoritmo que reconheca/gere sentencas que compoem a linguagem. Linguagem recursivamente enumeravel: e uma linguagem cujas sentencas sao reconhecidas/geradas por procedimentos.
da computacao (decidabilidade, computabilidade, complexidade computacional), como fundamenta diversas aplicacoes computacionais (processamento de linguagens, reconhecimento de padroes, modelagem de sistemas).
Gramaticas e Linguagens
Uma gramatica dene uma estrutura sobre um alfabeto de forma a
permitir que apenas determinadas combinacoes sejam validas, isto e, sejam consideradas sentencas.
O que e uma gramatica?
Um sistema gerador; Um sistema de reescrita; Uma maneira nita de descrever (representar) uma linguagem; Um dispositivo formal usado para especicar de modo nito e preciso uma linguagem potencialmente innita.
linguagem), producoes e o smbolo inicial. As derivacoes (ou reducoes) de uma gramatica sao obtidas atraves das producoes.
Linguagem: L(G), linguagem gerada pela gramatica G. Gramaticas equivalentes: G1
= G2 L(G1 ) = L(G2 )
Tipos de gramaticas
Tipo 0: gramaticas sem restricoes ou recursivamente numerada ou com estrutura de frase. (Maquinas de Turing) Tipo 1: gramatica sensvel ao contexto (GSC). (Automato limitado linear) Tipo 2: gramatica livre de contexto (GLC). (Automato de pilha) Tipo 3: gramatica regular (GR), expressoes regulares. (Automato nito)