O documento discute os principais conceitos da Teoria da Computação, incluindo: (1) A Tese de Church afirma que qualquer função efetivamente computável pode ser computada por uma Máquina de Turing; (2) Problemas são decidíveis ou indecidíveis dependendo se podem ou não ser resolvidos por algoritmos; (3) A computabilidade está relacionada aos modelos formais que descrevem processos computacionais como Máquina de Turing e Cálculo Lambda.
4. Introdução a Teoria da Computação
● Inúmeras categorias como:
➢ Algoritmos
➢ Autômatos
➢ Complexidade
➢ Linguagens Formais
5. Introdução a Teoria da Computação
● Seu conceito teve início nos primeiros anos do século
XX
● Busca determinar quais problemas podem ser
computados em um dado modelo de computação
6. Introdução a Teoria da Computação
● Naquela época não existia um método simples de
resolver um problema, então era necessário um
método forma para a computação
8. Tese de Church
Historia
● A tese leva o nome dos matemáticos Alonzo Church e Alan Turing.
● A tese teve inicio em 1936 depois de um artigo publicado por Alan
Turing, mostrando que o problema “Entscheidungsproblem” não
havia solução, a partir dai Alonzo Church mostrou que existia uma
solução usando noções de funções recursivas e definidas. Dando
inicio a Tese de Church.
9. Tese de Church
Conceito
● afirma que qualquer função efetivamente computável pode ser
computável por uma maquina de turing apropriadamente definida,
está intimamente ligada á noção de “dedução em um sistema
formal (simbólico)”
10. Tese de Church
● É uma hipótese sobre artefatos mecânicos de cálculo, como
computadores, e sobre que tipo de algoritmos eles podem executar.
Geralmente assume-se que um algoritmo deve satisfazer os
seguintes requisitos:
● O algoritmo consiste de um conjunto finito de instruções simples e
precisas, que são descritas com um número finito de símbolos.
11. Tese de Church
● O algoritmo sempre produz resultado em um número finito de
passos.
● O algoritmo pode ser executado por um homem com apenas papel e
lápis. A execução do algoritmo não requer inteligência do ser
humano além do necessário para entender e executar as instruções.
● Um exemplo de tal método é o algoritmo de Euclides para a
determinação do máximo divisor comum de dois números naturais.
13. Decidibilidade
● O termo decidibilidade refere-se ao estudo das linguagens formais,
com vistas à determinação das classes a que estas pertencem.
14. Decidibilidade
● Um problema de decisão é um problema cuja formulação conduz a
apenas duas respostas: SIM ou NÃO.
15. Decidibilidade
● Para qualquer conjunto X não recursivo, a pergunta "x Є X?" não
admite solução através de um algoritmo que aceite x como entrada
e responda SIM ou NÃO corretamente à pergunta.
17. Decidibilidade
Conjunto Enumerável e não Enumerável
● A diferença entre um conjunto não recursivamente enumerável, e
um conjunto recursivamente enumerável que não é recursivo pode
ser considerada pequena.
18. Conjunto Enumerável
Definição: Um conjunto é dito enumerável se um dos critérios abaixo
for válido: (a)K é finito; (b) Existe uma bijeção. F: NK
20. Decidibilidade
Problema indecidível
● Um problema indecidível é um conjunto de questões que pode ser
reduzido por codificação ao problema da pertinência em uma
linguagem não recursiva, e, assim, não pode ser respondido por
uma mT que sempre para; se um problema pode ser reduzido por
codificação ao problema de pertinência em uma linguagem
recursiva, dizemos que é decidível.
21. Decidibilidade
Problema indecidível
● Um ponto importante é que um problema indecidível sempre
envolve uma família de questões, ou questões em que aparece um
parâmetro. O problema P(i) - "Mi aceita xi?" pode ser indecidível,
mas o problema P(23) - "M23 aceita x23?" é decidível.
22. Decidibilidade
Problema indecidível
● Certamente uma das duas maquinas resolve corretamente o
problema. De fato, o que é indecidível em "Mi aceita xi ?" é
exatamente qual das duas respostas corresponde a um valor de i
arbitrário, ou seja, qual das duas máquinas consideradas deve ser
usada em cada caso.
23. Decidibilidade
Redução
● Uma das técnicas mais comuns de estabelecer se um problema é
decidível ou indecidível é através de redução desse problema a
outro problema cuja resposta é conhecida.
24. Decidibilidade
Redução
● Dizemos que P1 se reduz a P2 se a resposta a qualquer consulta a P1
pode ser deduzida da resposta a uma consulta apropriada a P2.
● Se P1 se reduz a P2, podemos dizer que, de certa forma, P2 é mais
geral que P1
25. Decidibilidade
Redução
● Exemplo: Supondo que P2 é indecidível, e que P2 se reduz a P1,
podemos concluir que P1 também é indecidível; por outro lado, se
P1 é decidível, e P2 se reduz a P1, podemos concluir que P2 também
é decidível
28. Computabilidade
Definição
● Computabilidade é uma propriedade fundamental das máquinas
ditas computáveis.
● Computadores possuem capacidade de receber como entrada de
dados uma sentença escrito em uma linguagem artificial
computável e executar tarefas bem definidas, baseadas na
interpretação da sentença recebida. O ato de interpretação desta
sentença corresponde à execução do programa.
29. Computabilidade
Execução
● Durante sua execução o programa recebe entradas de dados informadas pelo usuário e
produz saídas de dados que são captadas pelo usuário.
● A entrada de dados efetuada pelo usuário do programa também é formada por sentenças
em uma linguagem, visto que o conjunto de símbolos que o usuário digita também é
composto conforme um alfabeto e regras de formação bem definidas. Sendo assim, a
entrada de dados do programa pertence à linguagem artificial definida pelo
programador.
30. Computabilidade
Modelos Formais
● Um modelo da computação é uma descrição formal de um tipo
particular de processo computacional. A descrição normalmente
toma forma de uma máquina abstrata cujo objetivo é realizar uma
dada tarefa. Modelos gerais da computação equivalentes à
máquina de Turing incluem:
31. Computabilidade
Calculo Lambda
● Uma computação consiste de uma expressão lambda inicial (ou
duas, se deseja-se separar a função e suas entradas) mais uma
sequência finita de termos lambda, cada um deduzido de termo
precedente por uma aplicação de redução Beta.
32. Computabilidade
Lógica Combinatória
● É um conceito que possui muitas similaridades com cálculo lambda,
mas existem diferenças importantes. Lógica combinatória foi
desenvolvida com grandes ambições: entender a natureza dos
paradoxos, fazer as bases da matemática mais econômicas e
eliminar a noção de variáveis.
33. Computabilidade
Funções μ-recursivas
● Uma computação consiste em funções μ-recursiva, i.e. a sequência
que a define, quaisquer valores de entrada e uma sequência de
funções recursivas aparecendo na sequência que a define com
entradas e saídas.
34. Computabilidade
Autômato finito determinístico (AFD)
● Também é chamada de máquina de estados finita. Todos os
instrumentos computacionais existentes nos dias de hoje podem
ser modelados como uma máquina de estados finita, visto que
todos os computadores reais operam com recursos finitos. Tal
máquina tem um conjunto de estados, e um conjunto de transições
de estados, que são afetados pela entrada. Alguns estados são
definidos como "estados aceitáveis".
35. Computabilidade
Autômato finito não-determinístico (AFN)
● É um outro modelo simples de computação, apesar de sua
sequência de processos não ser univocamente determinada. Pode
ser interpretada como tomando várias soluções de computação ao
mesmo tempo através de estados finitos. Apesar disso, é
demonstrável que qualquer AFN pode ser reduzido a um AFD
equivalente.
36. Computabilidade
Autômato com pilha
● Similar ao AFD, exceto que há uma pilha de execução que pode ter
tamanho arbitrário indefinido. As transições de estado
adicionalmente especificam se adiciona um símbolo à pilha ou
removem-no. É muito mais poderoso que o AFD, visto que possui
uma memória infinita em forma de pilha, apesar de apenas o
elemento do topo ser acessível a qualquer momento.
37. Conclusão
● A releção é que computabilidade, tese de Church e Maquina de
Turing estão ligadas umas as outras, pois a maquina de turing e
tese de church são formulas, equações e teses que ajudam
programadores a solucionar problemas encontrados que podem ser
computáveis.