A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Teoria da Computação Professor: Ciro Meneses Santos Unipac – Computação Bibliografia: ---------------- SUDKAMP, Thomas A.. Languages and machines: an introduction.

Apresentações semelhantes


Apresentação em tema: "Teoria da Computação Professor: Ciro Meneses Santos Unipac – Computação Bibliografia: ---------------- SUDKAMP, Thomas A.. Languages and machines: an introduction."— Transcrição da apresentação:

1 Teoria da Computação Professor: Ciro Meneses Santos Unipac – Computação Bibliografia: SUDKAMP, Thomas A.. Languages and machines: an introduction. New York: Addison - Wesley, SIPSER, M - Introduction to the Theory of Computation - ReferênciaPWS Publishing Company - Ano1997 HOPCROFT, John E. et al. Introdução à teoria dos autômatos linguagens e computação. Rio de Janeiro: Campus, MENEZES, Paulo Fernando Blauth. Linguagens formais e autômatos. 4. Porto Alegre: Editora Sagra Luzzatto, 2002.

2 Decidibilidade, computabilidade e Complexidade O objetivo do estudo da decidibilidade de problemas é investigar a existência ou não de algoritmos que solucionem determinada classe de problemas, evitando a pesquisa de soluções inexistentes. A abordagem apresentada concentra-se nos problemas com respostas binárias do tipo sim/não. Na prática, qualquer problema pode ser tratado equivalentemente como um problema de decisão. Um problema de decisão é conjunto de perguntas cujas respostas são sim/não. Decidibilidade

3 Um problema é decidível (tratável ou não) se e somente se ele é resolvível por um algoritmo, para qualquer entrada pertencente ao seu domínio, caso contrário ele é um problema indecidível. A partir das definições acima, podemos notar claramente a relação entre problemas decidíveis e indecidíveis com conjuntos recursivos e recursivamente enumeráveis; ou seja, um problema é decidível se o conjunto de soluções das diversas instâncias deste problema é um conjunto recursivo, e indecidível caso tal conjunto seja recursivamente enumerável. Assim sendo, torna-se evidente que a questão da decidibilidade pode ser tratada formalmente através dos modelos que compõem a Teoria das Linguagens e Autômatos Decidibilidade, computabilidade e Complexidade

4 A classe dos problemas indecidíveis é significativamente representada pelo HALTING PROBLEM (problema da parada) que consiste em: Dado uma procedure Z e uma entrada X, decidir (determinar) se Z termina quando aplicado a X. A indecidibilidade deste problema é extremamente útil para demonstrar a indecidibilidade de outros problemas através da redução destes para o halting problem Decidibilidade, computabilidade e Complexidade

5 Formalismos conhecidos como propósitos (ou princípios) da Teoria da Computação. Tais formalismos tem sido explorados largamente na Ciência da Computação, onde servem como modelos na solução de diversos problemas práticos. Dentre os formalismos mais importantes, podemos citar: Máquinas de Turing (Turing, 1936); Gramáticas - (Chomsky, 1959); Algoritmos de Markov (Markov, 1951); Lambda Calculus (Church, 1941); Sistemas Post e Sistemas de Produção (Emil Post, 1936); Funções Recursivas (Kleene, 1936). Decidibilidade, computabilidade e Complexidade

6 Uma solução para um problema de decisão é um procedimento eficiente que determina a resposta para cada pergunta do conjunto. Um problema de decisão é não decidível se não existir um algoritmo que resolva o problema. Uma MT pode ser usada como solução em problemas de decisão pela capacidade de retornarem respostas binárias. Problema de decisão Um problema de decisão P é um conjunto de perguntas cujas respostas são sim ou não. Uma solução determina respostas para todas as perguntas p do conjunto P.

7 1.Construir uma representação do problema 2.Construir uma MT para resolver o problema. Problemas Problema: Determinar se um número natural é primo Solução de problemas de decisão por MT 1.Representação: conjunto de todos os números naturais aceita: todos os números naturais e primos 2.Construir uma MT que reconhece um número natural primo. P 0 : é 0 um número primo? P 1 : é 1 um número primo? P 2 : é 2 um número primo?

8 Problemas Problema: Determinar se um conjunto de números e menor que Representação: conjunto de todos os números naturais aceita: todos os números naturais menor que 15 2.Construir uma MT que reconhece um número natural menor que 15. P 0 : é 0 um número menor que 15? P 1 : é 1 um número menor que 15? P 2 : é 2 um número menor que 15?

9 Problemas Problema: Determinar se um conjunto de moedas (de 5, 10 e 25 centavos) contém um subconjunto que totalize 30 centavos. 1.Representação: Um conjunto de moedas será representada por um string de {n,d,q}. aceita: {nq, ddd, nndd, nnnnd, nnnnnn} 2.Construir uma MT que reconhece os conjuntos que totalize 30 centavos. P 0 : é {n} igual a 30 centavos? P 1 : é {ndq}igual a 30 centavos? P 2 : é {ddd}igual a 30 centavos?

10 Algoritmo O que é um algoritmo? Um algoritmo e um método, procedimento mecânico, com as seguintes características: Completo: Produz uma resposta SIM ou NÃO para cada pergunta do problema p P. Mecânico: é um conjunto de instruções que não requerem informações adicionais ou adivinhações. Deterministico: Sempre produz a mesma resposta para a mesma entrada p P.

11 Classes de Problemas Problema decidível: Um problema é dito decidível se existe um algoritmo que solucione o problema tal que sempre pára para qualquer entrada, com uma resposta afirmativa (ACEITA) ou negativa (REJEITA). Problema parcialmente decidível: Um problema e dito parcialmente decidível (parcialmente computável) se existir um aalgoritmo que solucione o problema tal que pare quando a resposta é afirmativa (ACEITA). Entretanto, quando a resposta for negativa, o algoritmo pode parar ou permanecer indefinidamente em loop.

12 Classes de Problemas Problema Insolúvel ou Não computável: Um problema é dito insolúvel se não existe m algoritmo que solucione o problema tal que pare para qualquer entrada, com uma resposta afirmativa (ACEITA) ou negativa (REJEITA). É importante observar que alguns problemas não- devidível são parcialmente devidível. Para qualquer algoritmo que solucione um problema parcialmente decivível, sempre existe pelo menor um dado de entrada que faz com que o algoritmo fique em loop.

13 Universo de Todos os Problemas Alguns problemas não decidível são parcialmente decidível. A união das Classes Decidível, Parcialmente Decidível e Não decidível é o Universo de todos os problemas: Todo problema indecidível e parcialmente decidível. A Classe dos Parcialmente decidível contém: a Classe dos decidível e parte da Classe dos não decidivel. Existem problemas não-decidível que possuem solução parcial. Os problemas não decidível não possuem solução total nem parcial.

14 Universo de Todos os Problemas DecidívelNão-decidível Parcialmente Decidível Completamente Insolúveis Conputável Não Computável

15 Redução de Problemas: Redutibilidade: Um problema de decisão em P é redutível a um problema em P se existe uma MT que para qualquer p i P gera um outro problema p i P. A solução de p i pode ser usada para resolver p i Redução é uma estratégia muito usada para solucionar problemas novos Um problema novo pode ser reduzido a uma problema cuja solução já é conhecida ou que já possua um algoritmo para solucioná-la. Se um problema P é não-decidível e P possue uma redução para P então P também é não decidível.

16 Redutibilidade: Problema A Redução através de uma MT Problema B

17 Redutibilidade: Sejam A e B dois problemas de decisão. Suponha, que é possível modificar reduzir o probelma A de tal forma que ele se porta como um caso do problema B. Se A é não decidível (não-computável), então como A é um caso de B, conclui-se que B também é não decidível. Se B é decidível (computável ) então, como A é um caso de B, conclui-se que A também e computável. Se A é decidível então como A é um caso de B, conclui-se que parte de B que pertençe a A e decidível, entretanto o restante de B não se pode garantir.

18 História da Computabilidade A idéia de se ter um algoritmo, receita para se desenvolver uma determinada tarefa, existe a muitos anos. Durante anos seguidos, as pessoas acreditavam que se um determinado problema fosse precisamente declarado, com esforço suficiente, uma solução poderia eventualmente ser encontrada (ou senão, poderia ser provado que não havia solução). Acreditava-se que nenhum problema era tão difícil, que jamais poderia ser resolvido.

19 David Hilbert O matemático David Hilbert ( ) acreditava que todos os problemas poderiam ser precisamente formulados em um sistema matemático formal, em termos de declarações que seriam falsas ou verdadeiras. Se o objetivo de Hilbert fosse atingido, então qualquer problema bem definido (declarado com precisão) poderia ser resolvido simplesmente pela execução de um algoritmo. Se esta tese fosse verdadeira, o fracasso na resolução de um problema seria devido à escolha insuficiente de hipóteses ou a um raciocínio errado.

20 Teorema de Godel Uma das primeiras descobertas nesta linha deve-se a Kurt Godel que em 1931 sugeriu um Teorema da não- completude. (Incopleteness Theorem). Entre outras coisas, ele mostrou que não existe algoritmo cujas entradas declaradas sejam números inteiros e cuja saída mostre se esta declaração é verdadeira ou não. Nesse teorema, um sistema de axiomas é dito completo, quando todo teorema é verdadeiro ou falso. Se existir um sistema de axiomas consistente (quando os axiomas não entrarem em contradição com outros axiomas) existirá então, teoremas que poderão provar que são falsos e teoremas que poderão provar que são verdadeiros.

21 Teorema de Godel Há também os que não podem provar nem que são verdadeiros ou falsos. Neste caso, o sistema é dado como incompleto, no sentido de que existem coisas que não podem ser provadas em verdadeiras ou falsas. Este teorema parte da premissa de que existe verdadeiros e falsos, levando à conclusão que existe teoremas verdadeiros, falsos, entre outros que não sabem se são um ou outro.

22 A Hipótese de Church-Turing A aceitação destes formalismos dentro da teoria da computação é, em grande parte, decorrente da hipótese (conhecida como Tese de Church) de que todo processo computável – passível de ser descrito por uma procedure – pode ser realizado por uma Máquina de Turing. Esta tese, apesar de não ter sido provada formalmente, também não foi contradita e continua sendo universalmente aceita. Conseqüentemente podemos afirmar que Máquinas de Turing constituem o formalismo mais genérico para a representação de procedure e que qualquer outro formalismo será significativo se for considerado equivalente às máquinas de Turing. A demonstração formal da equivalência entre os diversos formalismos citados e máquinas de Turing, reforça a tese de Church.

23 A Hipótese de Church-Turing Afirma que: Qualquer função computável pode ser processada por uma Máquina de Turing Existe um procedimento eficiente para resolver um probelma de decisão se e somente se, existe uma MT que termina para qualquer entrada que solucione o problema. Todos os modelos razoáveis do processo de computação definidos e por definir são equivalentes Todos os formalismo propostos são equivalentes Nenhuma função intuitivamente computável foi obtida que não pudesse ser expressa nesses formalismo.

24 Church-Turing Tem-se uma boa definição de algoritmo se uma sequência de passos puder ser executada de maneira rotineira (ou mecânica), de maneira formal no desenvolvimento da mesma tarefa. Isto é, existe um algoritmo expresso na forma de Máquina de Turing capaz de processar a função. A tese de Church-Turing não pode ser provada porque falta uma definição de procedimento. Portanto a tese poderia ser contestada através de um contra-exemplo: um procedimento que não pode ser implementado em uma MT.

25 Church-Turing Existe uma forte evidência que sugere que não existe um procedimento eficiente que não possa ser computado por uma MT. A evidência mais forte é a de que todos os procedimentos eficientes conhecidos puderam ser transformados em MT. Um problema é indecidível se não existe uma máquina de turing para resolvê-lo A MT não é limitada fisicamente por nenhum dispositivo real Memória ou CPU não são limitações para MT Se um problema não poder ser resolvido por uma MT, então também não o será por qualquer computador real.

26 Problema de Parada Um dos mais importantes problemas não-computáveis é o de parada. Em problemas não-computáveis, não são conhecidos algoritmos para resolução destes problemas. Estes algoritmos não são conhecidos porque simplesmente não existem. Um problema comum é a ocorrência de erros que impedem a terminação normal do programa (muitas vezes, os programas entram em laços infinitos). Seria muito útil se os programadores pudessem detectar a existência de laços infinitos em seus programas.

27 Problema de Parada Problema de Parada é determinar se um programa arbitrário (qualquer) pára ou não pára. Exemplo: Detector Universal de Loops Dado um programa e uma entrada qualquer, não existe algoritmo genérico capaz de verificar se o programa vai parar ou não à entrada. -Sua solução é um algoritmo no qual, dado um programa qualquer P e sua entrada de dados d, pode-se dizer ou não, se eventualmente P pára, quando executado com a entrada de dados d. Dado um programa p e um dado d, determinar se p pará quando executado tendo como entrada d.

28 Problema da parada PÁRA(p,d) SIM se p(d) pára NÃO se p(d) não pára Prova: Suponha que o problema seja decidível Então um programa – pPARA – que computa a função PÁRA cd(p) if(pPÁRA(p,p)=SIM) while(true) x =x else return SIM cd(p) loop se PÁRA(p,p)=SIM) SIM se PÁRA(p,p)=NÃO

29 Problema da parada c = o código do programa cd cd(c) loop se PÁRA(c,c)=SIM) SIM se PÁRA(m,m)=NÃO cd não pára quando executado tendo ele próprio como entrada

30 Problema Exemplo Suponha que pode-se usá-lo para construir um algoritmo mais limitado o qual testa a terminação de P quando os dados são o próprio P o qual será chamado de novotestaparada. Embora possa parecer estranho, na entrada de dados com o próprio programa, qualquer sequência de caracteres pode ser a entrada de um programa. Assim, existem programas de interesse prático, cuja entrada é uma sequência de caracteres representando outro programa; exemplos são compiladores e editores.


Carregar ppt "Teoria da Computação Professor: Ciro Meneses Santos Unipac – Computação Bibliografia: ---------------- SUDKAMP, Thomas A.. Languages and machines: an introduction."

Apresentações semelhantes


Anúncios Google