Post on 18-Apr-2015
Recursos Computacionais
Maquinas de Turing: Uma visão pragmática
Álvaro Vinícius de Souza Coêlho
alvaro_degas@yahoo.com.br
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 Ao operador cabia somente iniciar a somente iniciar a cadeia de cadeia de operações, e a operações, e a seguir a máquina seguir a máquina tomava seu curso tomava seu curso de cálculos, de cálculos, preparando preparando totalmente a totalmente a tabela prevista tabela prevista
• 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
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
int satisfaz(int N,M) {int R cria_programa(N) cria_dados(M) R = system(N(M)) if (R = previsto)
return TRUE else
return FALSE}
main() {int N=1while(!(satisfaz(N,M)))
N++}
Esquema Geral 1: Beco sem saída
Se a chamada N(M) entra em “laço infinito”, R jamais recebe um valor!
int satisfaz(int N,M) {int R cria_programa(N) cria_dados(M) if pára(N,M) {
R = system(N(M)) if (R = previsto)
return TRUE else
return FALSE } else
return FALSE}
main() {int N=1while(!(satisfaz(N,M)))
N++}
Esquema Geral 2: Beco sem saída?
Este teste, se exeqüível, impede que nosso gerador de programas “trave”!
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...
• Ficou também demonstrado a existência de problemas sem solução algorítmica e chegou-se 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
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
• 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
John von Newmann
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
• Limite: futuro incerto da computação
quântica, desenvolvimento de máquinas não
determinísticas.
Conclusão
Turing.
FIM!
“A soma da inteligência no planeta é uma constante; a população está crescendo”
Lei de Murphy aplicada ao PensamentoEscher