Escolar Documentos
Profissional Documentos
Cultura Documentos
Computabilidade
1
Introdução
Vimos na aula anterior que a principal motivação para o
desenvolvimento da computação foi a busca por resolver
problemas de forma mais ágil e precisa.
Exemplos:
Calculadora, régua de cálculo.
Bombe – decifrar mensagens produzidas pela máquina Enigma.
ENIAC – cálculos balísticos.
Algoritmo de Euclides
Euclides, 300 a.C.
3
Outro exemplo
Problema: determinar o menor número perfeito maior do
que N.
Um número é dito ser perfeito caso seja igual à soma de todos os
seus divisores (exceto ele próprio).
Exemplos:
6=1+2+3
Não é possível provar
28 = 1 + 2 + 4 + 7 + 14 que este procedimento
sempre termina.
4
Tipos de problemas
Podemos perceber, portanto, a existência de dois tipos de
problemas:
Problemas
5
Procedimento
Propriedades de um procedimento:
1. A descrição do procedimento deve ser finita, composta por
uma sequência finita de palavras e símbolos que o
descrevem.
2. Há sempre um conjunto de dados de entrada e pode ser
previsto um resultado, ou um conjunto de resultados, como
ocorre no caso do MDC.
3. Algum agente pode executar o procedimento, tratando e
armazenando resultados intermediários e finais.
4. Toda instrução – passo atômico do procedimento – deve
estar bem definida e ser passível de execução em tempo
finito.
6
Procedimento
Propriedades de um algoritmo:
1. A descrição do procedimento deve ser finita, composta por
uma sequência finita de palavras e símbolos que o
descrevem.
2. Há sempre um conjunto de dados de entrada e pode ser
previsto um resultado, ou um conjunto de resultados, como
ocorre no caso do MDC.
3. Algum agente pode executar o procedimento, tratando e
armazenando resultados intermediários e finais.
4. Toda instrução – passo atômico do procedimento – deve
estar bem definida e ser passível de execução em tempo
finito.
5. Deve garantidamente terminar sua execução após um
número finito de passos para qualquer entrada.
7
Computabilidade
Passos para resolver um problema com o auxílio de um
computador:
O procedimento
Crio um
Problema procedimento
comprovadamente Algoritmo
para encontrar gera um resultado
sua solução em tempo finito?
O problema é
computável!
9
Computabilidade
Alan M. Turing:
Em seu brilhante trabalho intitulado “On Computable Numbers, with an
application to the Entscheidungsproblem” (1936), Turing traduz a noção
de computabilidade em termos da existência de uma máquina
abstrata – a chamada máquina de Turing (MT).
10
Computabilidade
Alan M. Turing:
11
Computabilidade
Exemplo de MT:
Estado Símbolo Ação Novo Estado Legenda:
L – mover para esquerda
P ə; R; P ə; R; P0;
A Em branco B R – mover para direita
R; R; P0; L; L
P – imprimir
B 1 R; P x; L; L; L B E - apagar
B 0 Nenhuma C O que esta máquina faz?
C 0 ou 1 R; R C Lida em notação binária,
produzimos a seguinte
C Em branco P 1; L D sequência (com cada
D x E x; R C número separado por
um 0 dos adjacentes):
D ə R E
1, 3, 7, 15, 31, 63, 127, …
D Em branco L; L D
14
Computabilidade
Como Turing resolveu o problema da parada?
15
Computabilidade
Como Turing resolveu o problema da parada?
1 0 0 1 1 1 0 1 …
1 1 0 1 1 0 0 0 …
0 1 0 1 0 1 0 1 …
1 0 1 1 1 1 1 0 …
1 1 1 1 1 1 1 0 …
0 0 0 0 1 0 0 0 …
0 1 1 1 0 0 1 0 …
0 0 1 1 0 1 1 1 …
16
Computabilidade
Como Turing resolveu o problema da parada?
1 0 0 1 1 1 0 1 …
1 1 0 1 1 0 0 0 …
0 1 0 1 0 1 0 1 …
1 0 1 1 1 1 1 0 …
1 1 1 1 1 1 1 0 …
0 0 0 0 1 0 0 0 …
0 1 1 1 0 0 1 0 …
0 0 1 1 0 1 1 1 …
Sequência extraída:
1 1 0 1 1 0 1 1 …
0 0 1 0 0 1 0 0 …
17
Computabilidade
Como Turing resolveu o problema da parada?
O método diagonal que descrevemos é apenas um processo
algorítmico para o qual se poderia projetar uma máquina de Turing.
Afinal, ele corresponde ao processo de computar para cada dígito x o
valor (1 – x). Logo, a nova sequência de dígitos gerada obviamente é
computável.
Dica: D. Leavitt, “O homem que sabia demais: Alan Turing e a invenção do computador”,
Editora Novo Conceito, 2011.
20
Computabilidade
Exemplos de problemas não-computáveis:
21
Computabilidade
Exemplos de problemas não-computáveis:
23
Computabilidade
Exemplos de problemas não-computáveis:
24
Computabilidade
Exemplos de problemas não-computáveis:
25
Computabilidade
Saber que um problema é computável é suficiente?
É importante que o algoritmo termine, isto é, execute o número
finito de passos, em um tempo razoável.
27