Recursos Computacionais

Slides:



Advertisements
Apresentações semelhantes
Decidibilidade e Indecidibilidade
Advertisements

Programação em Java Prof. Maurício Braga
Evolução da Computação
Amintas engenharia.
MÁQUINAS UNIVERSAIS Fabrício Dias
Linguagem de Montagem Visão geral.
Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento de Sistemas e Computação – DSC Máquina de.
TEORIA DA COMPUTAÇÃO Parte III  Máquina de Turing
Álgebra Booleana e Circuitos Lógicos
Software Básico Silvio Fernandes
Histórico e Evolução dos Computadores
História dos Computadores
Introdução a Programação
Processamento da Informação BC-05045
História da Informática Necessidade de realizar cálculos matemáticos Ábaco – criado por volta de 2000 A.C., foi a primeira.
Informática Teórica Engenharia da Computação
Arquitetura de Computadores Hardware
Revisão de Conceitos Básicos Hardware (Parte 1)
Introdução à Informática
Introdução ao Processamento de Dados
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Introdução à Programação
ENGENHARIA DE AUTOMAÇÃO INDUSTRIAL
TECNOLOGIA EM REDES DE COMPUTADORES INTRODUÇÃO A COMPUTAÇÃO Aula /02/2013 Professor Leomir J. Borba- –
Introdução a Programação
Informática Teórica Engenharia da Computação
Do supercomputador de neurônios ao Ruindows? ...Ábaco?
Fábio de Oliveira Borges
Algoritmos 1º Semestre Materia: Informática Profº: Cristiano.
Fundamentos da Computação
História e Evolução do Computador
UNIDADE I.
Teoria da Computação Aula 5 Prof. Fabiano Sabha.
Informática nas Organizações
Inteligência Artificial
Máquina de Turing Universal
Marcos da Arquitetura de Computadores
Evolução e Desempenho de Computadores
Fundamentos de Arquitetura da Computação
Os engenhos calculadores
História do Computador.
Fontes de Erros Aula 1 Introdução; Erros em processos numéricos;
Igor Steinmacher, MSc. O maravilhoso mundo da Lógica de Programação.
Módulo 7 Arquitetura de Computadores
HISTÓRIA DOS COMPUTADORES.
História dos Computadores
Alan Turing.
Introdução à Computação
Complexidade computacional: Shannon e Turing
Fundamentos de Sistemas Operacionais
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA ENGENHARIA DE AUTOMAÇÃO INDUSTRIAL DISCIPLINA PROGRAMAÇÃO COMPUTACIONAL I Prof. Marcelo Maciel de Souza
COMPUTADOR - EVOLUÇÃO HISTÓRICA
Arquitetura de Computadores
Arquitectura de computadores
MÁQUINAS DE TURING Acadêmicos: Karen Juliani Tosta Tomaz RA – 47566
introdução História da Informática
SISTEMAS DE INFORMAÇÃO
INTRODUÇÃO AOS COMPUTADORES Informática e Comunicação Liliana silva nº85661.
Jackson Eduardo da Silva
Introdução à Programação
Evolução dos computadores
Introdução à Ciência da Computação I
História e Evolução dos computadores.
Histórico da evolução dos computadores
O que é Hardware ? Conjunto de unidades físicas, componentes, circuitos integrados, discos e mecanismos que compõem um computador ou seus periféricos.
1.1 Ossos de Napier Os ossos de Napier é um dispositivo de cálculo de funcionamento manual criado por John Napier de Merchiston para cálculo de produtos.
Informática Básica Karine Alessandra Córdova Informática: é o tratamento da informação de forma automática.
Transcrição da apresentação:

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 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 N=1 while(!(satisfaz(N,M))) 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 } Se a chamada N(M) entra em “laço infinito”, R jamais recebe um valor!

Esquema Geral 2: Beco sem saída? main() { int N=1 while(!(satisfaz(N,M))) N++ } 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 } 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...

Turing 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 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! “A soma da inteligência no planeta é uma constante; a população está crescendo” Lei de Murphy aplicada ao Pensamento Escher