Recursos Computacionais
Maquinas de Turing: Uma visão
pragmática
Álvaro Vinícius de Souza Coêlho
[email protected]
Roteiro
• Introdução
• Contextualização
• O problema que o mundo queria resolver
• Maquinas de Turing específicas (MT)
• Maquina de Turing Universal (MTU)
• Arquitetura de Von Newman
• Conclusão
Introdução
• Para entender “esse” Turing:
– MTU: autômatos finitos determinísticos
– Matemática abstrata e não um objeto
– Maquina capaz de resolver todo tipo de
problema matemático
Introdução
• Computar: fazer cálculos, contar, efetuar
operações aritméticas
• Os computadores eletrônicos já estão entre nós
há cerca de 60 anos
• Fundamentos em que se baseiam remontam a
centenas ou até mesmo milhares de anos
Introdução
• Computador: mecanismo ou máquina que auxilia essa
tarefa, com vantagens no tempo gasto e na precisão
• Motivação: livrar-se dos trabalhos manuais,
repetitivos e ergonomicamente contra-indicados
– Cálculos
– Tarefas repetitivas
– Monitoramento
– ...
Ábaco
• Primeiro dispositivo manual de cálculo;
servia para representar números no sistema
decimal e realizar operações com eles
• O mais antigo: 3500 a.C. no Vale entre os
rios Tigre e Eufrates
• Suan-Pan: China
• Soroban: Japão
Ábaco
Uma vareta para cada dígito
John Napier
• Nobre escocês de Edimburgo, o
matemático John Napier, inventou os
logaritmos
• Régua de cálculos (primeiro computador
analógico da história): pequena régua que
deslizava sobre uma base fixa, na qual
haviam diversas escalas para a realização de
determinadas operações
John Napier
Blaise Pascal
• Em 1642, aos 18 anos, inventou a primeira
máquina automática de calcular, feita de rodas
dentadas que simulavam o funcionamento do
ábaco (sistema decimal)
• Ajudar no seu serviço de contabilidade
Blaise Pascal
• Realizava apenas soma e subtração e o
resultado era mostrado numa seqüência de
janelinhas.
• Pascalina ou Máquina Aritmética de Pascal:
primeira calculadora mecânica
Blaise Pascal
Gottfried Wilhelm von Leibnitz
• Introduziu o conceito de realizar
multiplicações e divisões através de adições e
subtrações sucessivas
• Aos 12 anos já estudava Latim e Grego como
autodidata. Antes de ter 20 anos já possuía
mestrado em matemática, filosofia, teologia e
leis
Gottfried Wilhelm von Leibnitz
• Em 1672, aperfeiçoou a Máquina de Pascal,
construindo a calculadora universal
Joseph Marie Jackuard
• Em 1801 construiu um tear automático que
aceitava entrada de dados através de cartões
perfurados para controlar a confecção e
desenho dos tecidos
• Esta máquina pode ser considerada a
primeira máquina mecânica programável
Joseph Marie Jackuard
Charles Babbage
• Em 1822, idealizou a Máquina das Diferenças,
que consistia num dispositivo mecânico
baseado em rodas dentadas, para a avaliação de
funções e a obtenção de tabelas
• Mas esta máquina não chegou a ser construída
devido as limitações tecnológicas da época
(limites do ferramental industrial)
Charles
Babbage

Ao operador cabia
somente iniciar a
cadeia de
operações, e a
seguir a máquina
tomava seu curso
de cálculos,
preparando
totalmente a
tabela prevista
Charles Babbage
• Em 1833, projetou a Máquina Analítica ou
Diferencial, dispunha de programa, memória,
unidade de controle e aritmética e periféricos
de entrada e saída
• Realizava automaticamente tabelas de
logaritmos e funções trigonométricas
• Babbage o “ Pai da Informática ”
Charles
Babbage
O Problema que o Mundo Queria
Resolver
• Máquinas que resolviam problemas
específicos
• Décimo problema de Hilbert –
Entscheidungsproblem (1900 – 1928):
– Será possível se definir um procedimento
mecânico para resolver os problemas da
matemática um após o outro?
Turing
• Alan Mathison Turing nasceu em 23 de junho
de 1912 em Londres
• Na infância distraia-se fatorando números
• A maior parte do seu trabalho foi desenvolvido
no serviço de espionagem, durante a II Grande
Guerra
• Matemático extraordinário decifrador de
códigos e cientista da computação
Turing
• 1975 foi reconhecido como um dos grandes
pioneiros no campo da computação
• Em 1936 Alan M. Turing desenvolveu a
construção teórica das “Máquinas de Turing”
(1935 –36)
– Matemática abstrata e não um objeto
– Maquina capaz de resolver todo tipo de problema
matemático (?)
Turing
• Questão1 : existe um procedimento mecânico
geral para resolver todos os problemas
matemáticos? Um após outro?
• Questão 2: existe limitação àquilo que um
algoritmo pode fazer a princípio?
Turing
• Teoria Matemática da Computação define um
algoritmo como a representação formal e
sistemática de um processo, e através da qual
se demonstra que nem todos os processos são
representáveis
Turing
• De qualquer ângulo que se examine a
idealização de Turing sempre se verá uma
semelhança muito grande com os
computadores atuais
• 1º Passo: mostrou que poderia ser construída
uma MT para cada problema com solução
algorítmica
– De somar 1 a um número a decifrar código
Turing
• Arquitetura: Uma fita infinita, uma cabeça de
leitura-gravação, uma máquina de estados que
pode se mover na fita à direita ou à esquerda
Turing
• Arquitetura: seqüência linear de marcas na fita (0´s e
1´s) representando números finitos lidas uma por vez
• Não se trata de codificação binária!
• A descrição do algoritmo deve ser finita e executável
em tempo finito
• Função de Transição: diz “o que vazer”, ou seja,
comanda as leituras e gravações, o sentido de
movimento da cabeça e define o estado da máquina
Turing
• Idéia de Turing: a partir do símbolo lido na
fita e da função de transição atual a máquina
decide o que fazer (determinística)
• Operações rotuladas: substituições explícitas
– Ex: 101 ->131E
Turing
• MT: definição matemática de uma operação
mecânica
• Familiarizando-nos com MT simples o
entendimento das complexas será mais fácil
• MT N+1:
–
–
–
–
00  00D
01  11D
10  01PARE
11  11D
Turing
• Exemplo: Na fita: ...00001110000... (o
número 3)
• Saída esperada: ...00001111000 ... (o número
4)
... Acompanhando o trabalho da MT ...
Turing
• 2º Passo: Uma máquina de Turing Universal
– Crítica: Construir uma MT para cada problema?
Impraticável!
– MTU!
– Problema: Onde armazenar as informações de que
MTU precisa para simular qualquer MT?
– Alternativa: E se houvesse uma MT que lesse na
fita a entrada do problema E as instruções?
Turing
• Modelo matemático dos computadores de
hoje:
– Propósito geral
• Como armazenar as instruções na fita?
– Os dados são armazenados com codificação
binária estendida (poderia ser binário simples)
Turing
• Mostraremos os princípios, detalhes são
muito complicados
• Idéia básica: codificar a lista de instruções de
MT arbitrária num grupo de 0´s e 1´s para
serem representados na fita
• Parte inicial da fita tem as instruções que
atuarão sobre os dados que vêm em seguida
Turing
• Chegamos no famoso: Número de Turing!!!!!
– Código binário final transformado em decimal!!!!
– Todo programa de computador (tira de bits) pode
ser mapeado em um e somente um número
natural e vice-versa!!!!!!
– Geração automática de programas... Perderemos
nossos empregos!!!!!!!!
– Vejamos:
• MTn: Máquina de Turing que executa o algorítmo N
Esquema Geral 1: Beco sem
saída
main() {
int satisfaz(int N,M) {
int N=1
int R
while(!(satisfaz(N,M))) cria_programa(N)
N++
cria_dados(M)
}
R = system(N(M))
if (R = previsto)
return TRUE
Se a chamada
else
N(M) entra em
return FALSE
“laço infinito”, R
}
jamais recebe um
valor!
Esquema Geral 2: Beco sem
saída?
main() {
int satisfaz(int N,M) {
int N=1
int R
while(!(satisfaz(N,M)))
cria_programa(N)
N++
cria_dados(M)
}
if pára(N,M) {
R = system(N(M))
if (R = previsto)
return TRUE
Este teste, se
else
exeqüível, impede
return FALSE
que nosso gerador
}
de programas
else
“trave”!
return FALSE
}
Turing
• Supor que há Pára(N,M) retorna 1 se N(M)
pára e 0 caso contrário
• Multiplicar Pára(N,M) por N(M) dá N(M)
(1*resultado de N(M)) ou 0 (0*qualquer coisa)
• Imaginar Pára(N,N)*(N(N)) é possível? Sem
problemas. Dá N(N) ou 0
• Criar K(N) = Pára(N,N)*N(N) + 1
Turing
• K(K) pára?
– então K(k) = 1*K(K) + 1 = K(K) + 1. Absurdo.
– senão K(K) = 0*K(K) + 1 = 1. Absurdo (K(K) não
tem valor!)
• Portanto não pode haver K(K). Não pode haver
K(N). Não pode haver Pàra(N,N). Não pode
haver Pàra(N,M).
• É impossível fazer o programa gerador de
programas!
Turing
• O décimo problema de Hilbert não tem
solução!
“Será possível se definir um procedimento
mecânico para resolver os problemas da
matemática um após o outro?”
• Não se pode garantir!
Turing
• Todos os computadores modernos de uso geral são
efetivamente máquinas de Turing universais!
• Problema da parada: saber se uma MTn pára ou não
ao atuar sobre o número m
• Impossível decidir...
• Algoritmos que não param não são muito úteis...
Turing
• Ficou também demonstrado a existência de
problemas sem solução algorítmica e chegouse a seguinte conclusão:
Um problema terá solução algorítmica se
existir uma Máquina de Turing para
representá-lo
• Desses estudos surgiu a Teoria da
Computabilidade: Problemas Turing
Computáveis e Não Turing Computáveis (MT
e ~MT)
Turing
• Decidir se MT´s param: importante questão
matemática:
– Teorema de Fermat: análise de todos os quádruplos
naturais (x,y,z,w) possíveis
(x+1)w+3 + (y+1)w+3 = (z+1)w+3
– Conjectura de Goldbach: todo número maior que 2
é a soma de números primos
• Desdobrá-lo em números primos (saber se é primo)
Turing
• A equação x2 – 2x = 0 possui quantas raízes?
– 2 e 4 são raízes óbvias!
– Há uma terceira?
• Não computabilidade da geração dos números
reais
– Corte Diagonal de Cantor
• Programa gerador de programas...
John von Newmann
• Em 1944 desenvolveu a idéia de programa
interno e fundamento teórico de um
computador eletrônico denominado Modelo de
Von Newmann
• Idéia: existência simultânea de dados e
instruções e a possibilidade do computador ser
programado
• Publicou o artigo "Teoria e Técnicas dos
Computadores Eletrônicos", uma tentativa de
projeto de um computador do ponto de vista
lógico
Processador
e memória
de 8 bits
John von Newmann
• Em 1952 esse computador foi construído,
recebeu o nome de EDVAC (Eletronic Discrete
Variable Automatic Computer) e era uma
modificação do ENIAC
• Utilizava tecnologia estranha
– “linhas de retardo acústico de mercúrio por onde
circulavam sinais elétricos sujeitos a retardo”
John von Newmann
• Em 1951 Mauchly constrói o primeiro
computador da série a ser posto à venda, o
UNIVAC-I (computador automático
universal), que já utilizava válvulas e fitas
magnéticas
• No ano seguinte foram construídos os
computadores MANIAC-I, MANIAC-II,
UNICAC-II
• PDP-8 – levou os computadores para
laboratórios e linhas de produção, em 1965
Com o surgimento destas
máquinas acaba a pré-história da
informática ...
... a partir daqui entramos na fase
da EVOLUÇÃO ELETRÔNICA
Conclusão
• As idéias de computabilidade não estavam
formalizadas antes dos resultados de Alan
Turing
• Von Newmann conseguiu tornar factível as
idéias de Turing e Babbage
• As idéias de Babbage, Turing e Newmann
são empregados nos computadores até hoje
• Supercomputadores usam estas mesmas
idéias
Conclusão
• Limite: futuro incerto da computação
quântica, desenvolvimento de máquinas não
determinísticas.
Turing.
FIM!
Escher
“A soma da inteligência no planeta é uma constante;
a população está crescendo”
Lei de Murphy aplicada ao Pensamento
Download

Turing_pragmatico