O que significa ser completo de Turing?


34

Vejo que a maioria das definições do que é ser completo em Turing é tautológica até certo ponto. Por exemplo, se você pesquisar no Google "o que significa ser completo de Turing", você obtém:

Um computador é Turing completo se puder resolver qualquer problema que uma máquina de Turing possa ...

Embora esteja muito bem definido se sistemas diferentes são Turing completos ou não, não vi uma explicação de quais são as implicações / consequências de ser Turing completo.

O que uma máquina de Turing pode fazer quando não existe uma máquina que não seja de Turing que também possa executar a mesma tarefa? Por exemplo, um computador pode executar cálculos simples como (1+5)/3=?, mas uma calculadora comum também pode fazê-los, o que não é de Turing completo, se eu estiver correto.

Existe uma maneira de definir os recursos da Turing Machine sem apenas dizer "ser capaz de simular outra máquina de Turing"?


31
Pesquise a definição de "máquina de turing". Não há definição circular, já que uma máquina de turing não é definida como "ser capaz de simular outra máquina de turing" - é um computador teórico totalmente projetado (basicamente, uma máquina de estado de fita infinita). Você está apenas misturando "turing-complete" e "turing machine". Até onde eu sei, ainda não conhecemos algoritmos que não possam ser executados em uma máquina de turing, mas isso pode ser apenas minha própria ignorância.
Luaan 13/03/19

2
@Luaan A tese de Church-Turing concorda com você.
Brian McCutchon

"Existe uma maneira de definir os recursos da Turing Machine". Certo. A teoria aborda a quantidade de espaço e tempo necessários para resolver algoritmos com máquinas de Turing (L, NL, P, NP, PSPACE, etc.), e também existem problemas que não podem ser resolvidos (que geralmente podem ser resolvidos por reduções para outros problemas insolúveis). Um exemplo de um problema que não pode ser resolvido pelas máquinas de Turing é o problema da parada.
Millie Smith

Quando se trata da teoria do CS (ou de qualquer outra), é sempre melhor ler um livro sobre um tópico do que pesquisá-lo no Google e ler algumas postagens de blog que, em muitos casos, são escritas por pessoas que não entendem completamente o tópico si mesmos. Um bom livro economiza seu tempo, oferece uma imagem mais ampla e uma melhor compreensão.
Bozidar Sikanjic 14/03

A função Ackermann é um exemplo proeminente de algo que uma máquina de Turing pode calcular, mas um modelo mais limitado de computação ( recursão primitiva ) não pode.
Zwol

Respostas:


13

Pensei um pouco sobre se deveria acrescentar outra resposta. As outras respostas se concentram no meio de sua pergunta (sobre "completar", "tautologia" e assim por diante). Deixe-me pegar a primeira e a última parte e, portanto, a imagem maior e um pouco filosófica:

Mas o que isso significa?

O que significa ser completo de Turing?

Existe uma maneira de definir os recursos da Turing Machine sem apenas dizer "ser capaz de simular outra máquina de Turing"?

Informalmente, ser Turing completo significa que seu mecanismo pode executar qualquer algoritmo que você possa imaginar, não importa quão complexo, profundo, recursivo, complicado, longo (em termos de código) seja, e não importa quanto tempo ou armazenamento seria necessário para avaliá-lo. Escusado será dizer que só será bem-sucedido se o problema for computável, mas se for computável, será bem - sucedido (parada).

(NB: para descobrir por que isso é "informal", confira a tese de Church-Turing que segue essas linhas, com uma redação mais elaborada; sendo uma tese, ela pode ou não estar correta. Obrigado a @DavidRicherby por apontando esta pequena omissão em um comentário.)

"Algoritmo" significa o que geralmente entendemos como algoritmo de computador hoje; isto é, uma série de etapas discretas manipulando armazenamento, com alguma lógica de controle misturada. Porém, não é como uma máquina Oracle, ou seja, não pode "adivinhar".

Exemplo para uma linguagem prática não-tc

Se você se programou, provavelmente conhece expressões regulares, usadas para corresponder as strings a algum padrão.

Este é um exemplo de uma construção que não é Turing Complete. Você pode encontrar facilmente exercícios onde é simplesmente impossível criar uma expressão regular que corresponda a determinadas frases.

Por exemplo (e isso certamente irritou muitos programadores em aplicações reais reais), é teórica e praticamente impossível criar uma expressão regular que corresponda a uma linguagem de programação ou a um documento XML: é impossível para um regexp encontrar a estrutura do bloco ( do ... endou { ... }em idiomas; abrindo e fechando tags em documentos XML) se eles puderem ser arbitrariamente profundos. Se houver um limite lá, por exemplo, você só pode ter 3 níveis de "recursão", e poderá encontrar uma expressão regular; mas se não for limitado, é impossível.

Como é obviamente possível criar um programa em uma linguagem completa de Turing (como C) para analisar o código-fonte (qualquer compilador faz isso), expressões regulares nunca serão capazes de simular o referido programa, portanto, por definição, não são completas de Turing

Motivação

A idéia da máquina de turing em si não é nada prática; isto é, Turing certamente não o inventou para criar um computador real ou algo parecido, ao contrário de Charles Babbage ou von Neumann, por exemplo. O ponto de ter o conceito da Máquina de Turing é que é extremamente simples. Consiste em quase nada. Reduz os computadores possíveis (e reais) ao mínimo que se possa imaginar.

O objetivo dessa simplificação, por sua vez, é que isso facilita (ish) refletir sobre questões teóricas (como problemas de interrupção, classes de complexidade e qualquer que seja a ciência da computação teórica que se incomode). Uma característica em particular é que geralmente é muito fácil verificar se um determinado idioma ou computador pode simular uma máquina de Turing simplesmente programando a referida máquina de Turing (que é tão fácil!) Nessa linguagem.

Ao infinito

Observe que você nunca precisa de tempo ou armazenamento infinitos ; mas o tempo e o armazenamento são ilimitados. Eles terão um valor máximo para cada execução computável, mas não há limite para o tamanho desse valor. O fato de que um computador real acabará ficando sem memória RAM é encoberto aqui; é claro que isso é um limite para qualquer computador físico, mas também é óbvio e não interessa ao "poder computacional" teórico da máquina. Além disso, não estamos interessados ​​em quanto tempo realmente leva. Portanto, nossa pequena máquina pode usar quantidades arbitrárias de tempo e espaço, o que a torna absolutamente impraticável.

... e além

Um último ponto surpreendente, então, é que tal simples, coisa simples pode fazer tudo o que qualquer computador real concebível poderia nunca , em todo o universo, realizar (apenas muito muito mais lento) - pelo menos tanto quanto nós sabemos hoje.


"Informalmente, ser Turing completo significa que seu mecanismo pode executar qualquer algoritmo em que você possa pensar" Bem, isso depende da aceitação da tese de Church-Turing, que diz que as máquinas de Turing podem implementar qualquer algoritmo que você possa imaginar. Ou, alternativamente, você pode considerar as máquinas de Turing como a definição de algoritmo; nesse caso, a declaração informal é apenas uma versão informal de "pode ​​simular qualquer máquina de Turing" (o que não é uma coisa ruim; apenas uma observação).
David Richerby

Minha impressão foi que o OP pergunta sobre um entendimento intuitivo do que significa estar completo. Portanto, esse tipo de resposta irreverente e não-teórica da ciência da computação. Obrigado por apontar isso, vou integrá-lo à resposta. @DavidRicherby
AnoE 14/03

Obrigado! Esse é o tipo de resposta que eu estava procurando. Eu estava pensando sobre o problema da parada e como as linguagens com simples loops limitados são previsíveis (elas sempre param) - e, portanto, não são de Turing. Eu estava pensando que talvez ser Turing completo significa ser potencialmente imprevisível de alguma maneira (é caótico o termo certo para essas funções?)
sashoalm

@ Sashoalm, que bom que você gostou da resposta. Não, a imprevisibilidade não leva em consideração o problema. For-loops limitados (como não-tc) também é um bom exemplo. De fato, outro bom exemplo para uma linguagem tc simples (e mais do mundo real) seria aquela que apenas possui variáveis ​​e (ilimitada) while- isso já é suficiente para ser tc. O (des) limite da estrutura de controle é um dos elementos principais.
AnoE 15/03

38

Não é tautológico.

Um modelo de computação é Turing-completo se puder simular todas as máquinas de Turing, ou seja, é pelo menos tão poderoso quanto as máquinas de Turing.

Uma coisa que as máquinas de Turing podem fazer é simular outras máquinas de Turing (através da máquina universal de Turing). Isso significa que, se seu modelo de computação não pode simular máquinas de Turing, ele não pode fazer pelo menos uma coisa que as máquinas de Turing podem fazer, para que não satisfaça a definição, portanto, não está completo. Não há circularidade porque não definimos a completeza de Turing em termos de si mesma: dissemos que a completude de Turing é a propriedade de poder fazer tudo o que as máquinas de Turing podem.

umab

Existe uma maneira de definir os recursos da Turing Machine sem apenas dizer "ser capaz de simular outra máquina de Turing"?

Não sei ao certo o que você quer dizer com "definir os recursos das máquinas de Turing". Os recursos são definidos em termos do autômato de estado finito operando na fita infinita. (Não repetirei a definição completa, mas você pode encontrá-la, por exemplo, na Wikipedia .)


19
Eu acho que OP mistura máquina de Turing e Turing completo. O que ele está realmente procurando é a definição de uma máquina de Turing; sua última frase é a resposta. en.wikipedia.org/wiki/Turing_machine ajudaria.
jollyjoker

Então, o que uma máquina de Turing pode fazer? Como se quisesse provar que algo pode emular uma máquina de Turing, que conjunto mínimo de comportamentos devo ser capaz de demonstrar que minha máquina também pode?
Akshat Mahajan

2
Não importa - concluí que é suficiente demonstrar que uma linguagem pode imitar a maneira como uma máquina de Turing opera, a fim de provar que ela é completa em Turing.
Akshat Mahajan

17

O modelo de computação de Turing é apenas um dos muitos modelos equivalentes de computação. Ele tem o mesmo poder que as funções recursivas de Gödel e o cálculo lambda de Church, que foram propostos na mesma época, assim como outros modelos, como a máquina de apontar. Você pode, portanto, afirmar que

Um computador é Turing-complete se puder resolver qualquer problema que o Excel possa.

Isso funciona, pois o Excel também é Turing-complete. Eu recomendo dar uma olhada na página da Wikipedia sobre a tese de Church-Turing e em um artigo de pesquisa de Blass e Gurevich, Algorithms: A Quest for Absolute Definitions .


Com relação à sua pergunta, o que uma máquina de Turing pode fazer e não uma máquina de Turing, geralmente a resposta infelizmente depende da máquina não de Turing.

É possível, no entanto, definir noções não triviais de problemas completos de Turing, por exemplo:

euUMAfumaUMAf(uma)eu

Sob essa definição, as codificações adequadas do problema de parada são completas de Turing e, portanto, para uma classe razoável de máquinas (dependendo da definição de "computável eficientemente"), a máquina é completa de Turing se puder realizar algumas (equivalentemente, todas ) Linguagem completa de Turing.

Existem muitos outros problemas de Turing-completo capturados por esse formalismo, dependendo da definição de "computável eficientemente", como o problema de correspondência de Turing e problemas relacionados às peças de Wang e ao Jogo da Vida. Qualquer um desses problemas pode funcionar como uma referência em vez do problema de parada.


"a resposta infelizmente depende da máquina não-Turing" - editei minha pergunta porque não estava clara. Você pode escolher qualquer máquina que não seja de Turing, desde que ela possa executar a tarefa enquanto permanecer não concluída como Turing.
sashoalm

5
Excel is also Turing-complete.- somente se você puder fornecer uma memória infinita ao Excel. O Excel é limitado a 1.048.576 linhas e 16.384 colunas, o que é muito pouco infinito.
MattClarke

5
@MattClarke: Verdade, mas da mesma forma que nenhum sistema já construído é o Turing-complete.
Emil

3
@Emil: exatamente, e é importante que os alunos de CS façam a distinção entre os recursos dos modelos de computação e os recursos das máquinas reais. Aqueles de nós que atingiram repetidamente os limites físicos de nossas máquinas reais acham fácil fazer essa distinção, é claro. Portanto, sabemos como definiríamos uma versão irrestrita do modelo de computação do Excel e que ela seria completa em Turing. Mesmo que escrever essa definição seja meio complicado.
21417 Steve Joplin

4
@SteveJessop Limites físicos de máquinas? Como alguém poderia acertar uma coisa dessas? 640k é suficiente para qualquer um!
David Richerby

4

Antes de mais, gostaria de salientar que a definição de completeza de Turing não é de todo tautológica. Não apenas provar um modelo computacional Turing-complete é um resultado interessante por si só, mas também permite que você estenda imediatamente todos os resultados da teoria da computabilidade para esse outro modelo computacional; por exemplo: máquinas de 2 contadores são completas de Turing, as máquinas de Turing não podem resolver o problema de parada, portanto, nem as máquinas de 2 contadores podem.

μ

Essa classe incorpora as funções que são "intuitivamente computáveis", ou seja, cuja computação pode ser realizada por um ser humano seguindo um algoritmo preciso com lápis e papel.

Obviamente, "intuitivamente computável" não é realmente uma definição formal, a identificação de "intuitivamente computável" com "Turing computável" é conhecida como a tese de Church-Turing. Como muitas tentativas formais de caracterizar a computação convergem para um modelo computacional completo de Turing, embora nunca haja uma prova formal de tal afirmação no sentido matemático, há fortes razões para acreditar nisso.


0

Uma máquina de Turing pode calcular o mesmo conjunto de funções que um computador quântico universal, que pode simular qualquer sistema físico:

https://www.cs.princeton.edu/courses/archive/fall04/cos576/papers/deutsch85.pdf

Como tal, uma máquina de Turing é capaz de executar qualquer processamento de informações permitido pelas leis da física, embora nem sempre faça esse processamento da maneira mais eficiente possível.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.