História do Computador

Máquinas de Turing e Teoria da Computabilidade

Máquinas de Turing e Teoria da Computabilidade

A máquina de Turing é a construção teórica central na ciência da computação. A máquina de Turing é um modelo matemático abstrato de computação. O uso de máquinas de Turing ajuda a explicar o que é computação, demarcando as chamadas “funções computáveis.”

As primeiras pesquisas de Alan Turing em lógica se concentraram em um famoso problema não resolvido conhecido como Entscheidungsproblem. O Entscheidungsproblem (traduzido aproximadamente do alemão como o problema de decisão) foi proposto pelo filósofo e matemático David Hilbert em 1928. O problema perguntou se havia um algoritmo que decidiria cada declaração em uma linguagem formal.

Uma linguagem formal é um sistema de axiomas e regras de inferência, como as da aritmética ou da lógica de primeira ordem. Os axiomas podem ser quaisquer símbolos e as regras de inferência podem ser qualquer lista de regras para manipular esses símbolos.  "Decidir cada afirmação" significava emitir se a afirmação era verdadeira / falsa ou se a afirmação era derivável / não derivável. O teorema da completude de Kurt Gõdel provou que um algoritmo decidindo pela validade é equivalente a um procedimento efetivo decidindo pela derivabilidade. O artigo de Alan Turing de 1936 “On Computable Numbers, with an Application to the Entscheidungsproblem”, provou um resultado negativo, que era impossível decidir algoritmicamente cada declaração em um sistema formal.

Alan Turing

Para provar um resultado negativo para o Entscheidungsproblem, Turing precisava formalizar a noção de um algoritmo. A formalização de um algoritmo por Turing foi um modelo matemático de computação que mais tarde ficou conhecido como a máquina de Turing. Uma máquina de Turing tem um conjunto finito de estados em que a máquina pode estar. A máquina de Turing tem uma fita infinitamente longa que é dividida em quadrados. Em cada quadrado da fita, há um símbolo extraído de um conjunto finito de símbolos. Em qualquer momento do cálculo, a máquina de Turing está lendo o símbolo em um quadrado da fita. A máquina de Turing pode substituir esse símbolo por outro símbolo e mover para o quadrado à direita ou o quadrado à esquerda. A ação que a máquina de Turing realiza é determinada automaticamente pelo estado em que a máquina está. Após o símbolo de substituição e mover para uma ação quadrada diferente ter ocorrido, a máquina de Turing pode fazer a transição para um estado diferente. Cada estado diferente tem um conjunto diferente de regras sobre como substituir os símbolos e em que direção se mover.

Uma implementação física rara do projeto da máquina de Turing (sem uma fita infinita)

A formulação canônica da máquina de Turing geralmente consiste em um alfabeto binário exclusivamente de 0s e 1s. Esta formulação corresponde à intuição dos programadores de computador modernos, uma vez que todos os computadores modernos usam binários. Na verdade, as máquinas de Turing são neutras em relação ao tamanho do alfabeto de símbolos. Uma máquina de Turing também pode usar qualquer símbolo, seja numeral ou extraído de qualquer outro tipo de alfabeto, como símbolos pictóricos ou o alfabeto latino. Qualquer formulação de cada alfabeto finito possível é comprovadamente redutível a uma máquina de Turing binária.

As máquinas de Turing assumem que uma quantidade infinita de memória está disponível. Nenhuma máquina real fisicamente instanciada pode atender a esse requisito de ser uma máquina de Turing. Uma máquina de Turing também assume que uma quantidade de tempo potencialmente infinita pode ser gasta computando a função. Essas suposições foram feitas para gerar a classe mais expansiva de funções possíveis para a definição de Turing de funções computáveis. As funções computáveis ​​de Turing são quaisquer funções que podem ser calculadas por uma máquina de Turing. Muitas dessas funções computáveis ​​podem nunca ser computáveis ​​por qualquer máquina fisicamente instanciada porque requerem muito tempo ou memória.

A Tese de Church-Turing afirma a equivalência de funções computáveis ​​e funções que podem ser calculadas por uma máquina de Turing. Isso implica que todas as funções não computáveis ​​por máquinas de Turing não podem ser computadas por qualquer outro método. David Hilbert esperava uma resposta positiva para o Entscheidungsproblem, o que significaria que todos os problemas são computáveis. O resultado de Turing levou à descoberta de muitos problemas incomputáveis.

O problema incomputável mais famoso é o problema da parada. O problema da parada é o problema de criar um algoritmo que pode, no caso geral, decidir se um programa de computador com sua entrada irá parar ou continuar para sempre. Embora existam casos específicos em que o problema da parada possa ser resolvido, ele não pode ser resolvido para todos os programas de computador com qualquer entrada. Este resultado teve consequências importantes para a programação de computadores, pois os programadores de computador precisam estar cientes da possibilidade de loops infinitos e da impossibilidade de detectar todos os loops infinitos antes de executar seus programas.

Outra implicação da máquina de Turing é a possibilidade de máquinas de Turing universais. Implícito no design de Turing está o conceito de armazenar o programa que modifica os dados juntamente com os dados que ele modifica. Isso sugeriu a possibilidade de computadores de uso geral e reprogramáveis. Os computadores modernos são tipicamente máquinas de Turing universais, no sentido de que podem ser programados para executar qualquer algoritmo. Isso eliminou a necessidade de hardware diferente para cada programa de computador potencial e introduziu a distinção de hardware / software.

O modelo da máquina de Turing levou diretamente à invenção dos computadores, mas não é o mesmo projeto usado para projetar computadores modernos. A arquitetura de von Neumann usada como um projeto para computadores modernos usa o conceito de programa armazenado implícito no modelo da máquina de Turing, mas é diferente do resto do modelo da máquina de Turing em vários aspectos importantes. As maiores diferenças são que a arquitetura de von Neumann não usa um cabeçote de leitura e gravação e, em vez disso, inclui vários registros, memória de acesso aleatório, barramentos de dados, um pequeno conjunto de instruções básicas de máquina e vários recursos de processamento de bits. A arquitetura von Neumann também permite explicitamente dispositivos de entrada e saída especializados, como teclados e monitores.

O modelo da máquina de Turing foi o primeiro modelo matemático de computação. Isso levou diretamente à invenção de computadores físicos. Os computadores físicos têm todos os mesmos recursos que as máquinas de Turing, assumindo uma memória limitada e restrições de tempo na computação real. A formulação de Turing ainda desempenha um papel central no estudo da computação. Os cientistas da computação ainda estão ativamente envolvidos na pesquisa se funções específicas são computáveis ​​por máquinas de Turing.

Como reverter a direção de rolagem do Mouse e Touchpads no Windows 10
Mouse e Touchpads não apenas torna a computação mais fácil, mas mais eficiente e menos demorada. Não podemos imaginar uma vida sem esses dispositivos,...
Como alterar o ponteiro do mouse e tamanho do cursor, cor e esquema no Windows 10
O ponteiro do mouse e o cursor no Windows 10 são aspectos muito importantes do sistema operacional. Isso também pode ser dito para outros sistemas ope...
Mecanismos de jogos gratuitos e de código aberto para o desenvolvimento de jogos Linux
Este artigo cobrirá uma lista de mecanismos de jogo gratuitos e de código aberto que podem ser usados ​​para desenvolver jogos 2D e 3D no Linux. Exist...