Você está na página 1de 8

{{Para|o uso desse termo na teoria da computao relativa por mquinas orculo|Reduo de Turing}}

Na [[teoria da computao|teoria da computao]], um sistema de regras de manipulao de dados (como em um [[conjunto de instrues]], uma [[linguagem de programao]], ou um [[autmato celular]]) dito Turing completo ou computacionalmente universal [[se e somente se]] puder ser usado para manipular qualquer [[Mquina de Turing]] de nica fita e assim, a princpio, qualquer [[computador]]. Um exemplo clssico o [[Lambda Clculo]]. O conceito nomeado em memria a [[Alan Turing]].

Na prtica, Turing completude significa que regras seguidas em sequncia sobre dados arbitrrios podem produzir o resultado de qualquer clculo. Em linguagens procedurais isso poder ser satisfeito tendo-se, no mnimo, saltos condicionais (e.g., um "if" ou "goto") e a habilidade de modificar arbitrariamente locais da [[Memria de computador|memria RAM]] (e.g., variveis). Para mostrar que algo Turing completo, suficiente mostrar que ele pode ser usado para simular o computador mais primitivo, pois mesmo o tipo mais simples de computador pode ser usado para simular os tipos mais complexos. Todas as linguagens de programao de uso geral e todos os conjuntos de instrues de mquina modernos so Turing completos, no obstante limitaes de memria finita.

Um ''''computador universal'''' definido como um dispositivo com um conjunto de instrues Turing completo, memria infinita, e um tempo de vida infinito. Todos os sistemas do mundo real necessariamente possuem memria finita, fazendo do verdadeiro computador universal apenas uma construo terica.

Na teoria da computao, h um conceito bastante relacionado chamado de Turing equivalncia. Dois computadores P e Q so ditos Turing equivalentes se P puder simular Q e Q puder simular P. Assim, um sistema Turing completo aquele que pode simular uma mquina de Turing. Porm, o termo normalmente usado com o significado de Turing equivalente a uma mquina de Turing. A razo que qualquer mquina do mundo real pode ser simulada por uma mquina de Turing, observao esta codificada como a [[Tese de Church-Turing]].

Um computador com acesso a uma fita infinita de dados s vezes mais poderoso que uma mquina de Turing, pois a fita, a princpio, pode conter a soluo para o [[Problema da parada]], ou para algum outro problema indecidvel. Uma fita infinita de dados chamada de Turing orculo. At mesmo um Turing orculo com dados randmicos no computvel (com probabilidade 1), pois h um nmero contvel de computaes, mas um nmero incontvel de

orculos. Ento, um computador com um Turing orculo randmico pode computador coisas que uma mquina de Turing no pode. Uma mquina que universal, exceto que no possui um turing orculo, chamada de mquina fracamente universal.

== Definies formais ==

Na [[teoria da computao|teoria da computao]], alguns termos bastante relacionados so usados para descrever o poder computacional de um sistema computacional (como uma [[mquina abstrata]] ou uma [[linguagem de programao]]):

;Turing completude :Um sistema computacional que pode computar qualquer funo Turing-computvel chamado Turing completo (ou Turing poderoso). Com outras palavras, tal sistema aquele que pode simular uma [[Mquina de Turing universal]].

;Turing equivalncia :Um sistema Turing-completo chamado Turing equivalente se toda funo que ele puder computar for tambm Turing computvel; e.g., ele computa precisamente a mesma classe de funes que [[Mquina de Turing]]. Com outras palavras, um sistema Turing-equivalente aquele que pode simular, e ser simulado por, uma mquina de Turing universal. (Todos os sistemas Turing-completo conhecidos so Turing equivalentes, o que confirma a tese de Church-Turing.)

;(Computacional) universalidade :Um sistema dito universal com respeito a uma classe de sistemas se ele puder computar toda funo computvel pelos sistemas daquelas classe (ou pode simular cada um daqueles sistemas). Normalmente o termo universalidade taticamente usado com respeito a uma classe de sistemas Turing-completos. O termo fracamente universal s vezes usados para distinguir um sistema (e.g. a [[autmato celular]]) cuja universalidade alcanada apenas pela modificao da definio padro de [[mquina de Turing]] a fim de incluir entradas com uma quantidade infinita de 1s.

== Viso geral ==

Turing completude, nomeado assim em memria a [[Alan Turing]], importante para que todo dispositivo de computador do mundo real possa ser simulado por uma [[mquina de turing universal]]. A [[tese de Church-Turing]] diz que uma lei da natureza o fato de que uma mquina de Turing pode, a princpio, efetuar qualquer tipo de clculo que qualquer outro computador programvel efetue. Obviamente, isso no diz nada a respeito do esforo requerido para escrever o [[programa de computador|programa]], ou o tempo que seria gasto pela mquina para efetuar o clculo, ou quaisquer habilidades que a mquina possua que no tenham a ver com computao.

Enquanto mquinas verdadeiramente Turing completas precisam de quantidade ilimitada de memria, Turing completude normalmente atribuido a mquinas fsicas ou linguagem de programao que seriam universais se tivessem capacidade de endereamento e memria ilimitadas. Todos os computadores modernos so Turing completos nesse sentido mais livre, eles so [[autmato linearmente limitado]] ou autmatos linearmente limitados completos.

A [[mquina analtica]] de [[Charles Babbage]] (1830) teria sido a primeira mquina de Turing completa se tivesse sido construda na poca em que foi desenhada. Babbage admirava a forma como a mquina era capaz de realizar grandes clculos, at mesmo raciocnios de lgica primitiva, mas ele no gostava do fato de que nenhuma outra mquina pudesse fazer melhor. De 1830 a 1940, mquinas mecnicas de calcular como somadores ou multiplicadores foram construidas e aprimoradas, mas elas no podiam realizar saltos como if/goto e dessa forma no podiam ser chamadas de computadores.

Em meados do sculo 19, [[Leopold Kronecker]] formulou noes de computao, definindo funes recursivas primitivas. Essas funes, porm, no so suficientes para a construo de um computador universal, pois as instrues que computam elas no permitem um lao infinito. No incio do sculo 20, [[David Hilbert]] fez um programa axiomatizar tudo da matemtica com axiomas precisos e regras lgicas de deduo precisas, o que era possvel de ser feito por uma mquina. Pouco tempo depois, ficou claro que um pequeno conjunto de regras de deduo era suficientes para produzir as consequencias de qualquer conjunto de axiomas. Essas regras foram provadas serem suficientes para produzir qualquer teorema, por [[Kurt Gdel]] em 1930. O [[teorema da completude de Gdel]] de 1930, implicitamente contem a definio de computador universal, pois as regras lgicas agindo em alguns axiomas da aritmtica ir eventualmente provar, como um teorema, o resultado de qualquer computao.

A noo atual de computao foi isolada logo depois, comeando com o [[teorema da incompletude de Gdel]]. Esse teorema mostrou que sistemas axiomticos eram limitados quando lidavam com computaes que deduziam seus prprios teoremas. Church e depois Turing identificaram o ncleo computacional do teorema da incompletude, e foram capazes de

produzir problemas indecidveis. Esse trabalho, junto com o trabalho de Gdel sobre funes recursivas gerais, estabeleceram que existem conjuntos simples de instrues, que, quando colocados juntos, so capazes de produzir qualquer computao. O trabalho de Gdel mostrou que a noo de computao essencialmente nica.

[[John von Neumann]] foi inspirado por esses resultados e desenhou as atuais mquinas de computao universais. As primeiras linguagens formais de programao, da dcada de 30, mostraram que tais computadores eram teis. A verdadeira primeira implementao de uma mquina Turing completa apareceu em 1941: o computador controlado por programas, mas a primeira mquina explicitamente desenhada para ser Turing completa e ser apreciada como sendo universal foi o [[ENIAC]], de 1946. Essa mquina era capaz de resolver uma grande variedade de problemas importantes na dcada de 40, muitos deles relacionados a construo de bombas atmicas.

Todas as leis da fsica tm consequencias que so computveis atravs de uma srie de aproximaes em um computador digital. Uma hiptese chamada fsica digital diz que isso no coincidncia, que porque o [[universo]] por si s computvel em uma mquina de Turing universal. Isso implicaria que no possvel construir fisicamente um computador mais potente que uma mquina de Turing universal.

==Teoria da computao==

O primeiro resultado da teoria da computao foi a descoberta de que impossvel, no geral, prever o que um programa Turing completo ir fazer em um tempo arbitrariamente longo. Por exemplo, impossvel determinar para qualquer par <entrada,programa> se o programa, operando sobre a entrada, ir parar ou ira entrar em lao infinito(veja [[problema da parada]]). impossvel determinar se o programa ir retornar verdadeiro ou falso . Para qualquer caracterstica do programa sobre uma eventual sada, impossvel determinar se essa caracterstica se confirmar. Isso pode causar problemas na prtica, quando se vai analisar programas do mundo real. Uma forma de previnir isso fazer com que o programa pare depois de um certo perodo de tempo, ou limitar a quantidade de instrues de controle de fluxo. Tais sistemas no so Turing completo pela sua construo.

Outro teorema mostra que h problemas que podem ser resolveidos por linguagens Turing completes e que no podem ser resolvidos por nenhuma linguagem com apenas a habilidade sobre laos infinitos. (e.g., qualquer linguagem que garantir que um programa ir sempre parar). Dada uma linguagem que garante parada, a funo computvel que produzida pelo

[[argumento de diagonalizao de Cantor]] sobre todas as funes computveis naquela linguagem no computvel naquela linguagem.

==Exemplos==

Os sistemas computacionais(algebra, clculo) que so discutidos como sistemas Turing completos so aqueles com intuito de estudo[[cincia da computao]]. Eles foram feitos com a inteno de ser os mais simples possveis, de tal forma que seria mais fcil de entender os limites da computao. Exemplos de alguns:

*[[Teoria dos autmatos]] *[[Mquina de Turing universal]] *[[Lambda Clculo]] *[[gramtica formal]] (geradores de linguagem) *[[linguagem formal]] (reconhecedores de linguagem) *[[Mquina de Post-Turing]]

Maioria das [[linguagem de programao]],convencionais e no convencionais, so Turingcompletas. Isso inclui:

*Todas as linguagens de uso geral em largo uso. **Linguagens de [[programao procedural]] como [[Pascal (linguagem de programao)]] **[[linguagem orientada a objeto]] como [[Java (linguagem de programao)]], [[Smalltalk]] **[[linguagem de programao multiparadigma]] como [[Ada (linguagem de programao)]], [[C++]], [[Common Lisp]], [[Object Pascal]] *Maioria das linguagens usam paradigmas poucos comuns **linguagens de [[programao funcional]] como [[Lisp (linguagem de programao)]] e [[Haskell (linguagem de programao)]]. **Linguagens de [[programao lgica]] como [[Prolog]]. **Linguagens de [[programao declarativa]] como [[XSLT]].

**[[Linguagem de programao esotrica]] como [[brainfuck]].

As tcnicas especficas de linguagem usadas para atingir a Turing completude podem ser um pouco diferentes uma das outras; Sistemas [[Fortran]] usariam construtores de lao ou at mesmo [[goto (programao)]] para conseguir repeties; Haskell e Prolog, com sua falta de loop quase total, usaria [[recurso]]. Turing completude uma colocao abstrata de habilidade, mais que uma prescrio de tcnicas especficas de uma linguagem utilizadas para implementar aquela habilidade.

Turing completude em [[SQL]] implementado atravs de componentes padres avanados, ilustrando uma razo pela qual linguagens no Turing completas relativamente poderosas so raras: quanto mais poderosa a linguagem inicialmente, mais complexos so os deveres aos quais aplicado e mais cedo a sua falta de completudo vista como uma barreira, encorajando sua extenso at que se torne Turing completa.

[[Lambda Clculo]] sem tipo Turing completo, mas muitos lambda clculos tipados, incluindo System F, no so. A importncia de sistemas tipados baseada na sua habilidade de apresentar o maiot nmero de programas de computador tpicos na mesma medida em que detecta erros.

Regra 110 e o Jogo da Vida de Conway, ambos [[autmato celular]], so turing completos.

== Linguagens no Turing completas ==

H muitas linguagens computacionais que no so Turing completas. Um exemplo o conjunto de [[linguagem regular]], mais comumente [[expresso regular]], que so geradas por [[mquina de estados finitos]]. Uma extenso mais podera mais ainda no Turing completa de automato o [[autmato com pilha]].

Em algumas linguagens, todas as funes so totais e devem terminar, como em Charity e Epigram. Charity usa um sistema de tipos e construtores de controle baseado na teoria da categoria, enquanto Epigram usa tipos dependente.

==Linguagem de dados==

Linguagens como [[XML]], [[JSON]], [[YAML]] e S-expression no so Turing completas porque elas so usadas apenas para representar dados estruturados, e no descrever computao. Elas so normalmente referidas como [[linguagem de marcao]], ou mais adquadamente como linguagem de descrio de dados .

Linguagens no Turing completas, especialmente linguagens de dados, so desejveis no sentido em que permitem que sejam manipuladas , o que, contudo, s vezes tambm se aplica a linguagens Turing completas, mais notavelmente [[Lisp (linguagem de programao)]] e muitos de seus dialetos como Scheme. Isso codificado no princpio de web design conhecido como Regra do Menor Poder , que recomenda evitar o uso de linguagens Turing completas, e usar linguagens menos poderosas que satisfazem uma tarefa, para que dessa forma os dados possam ser reutilizados e transformados mais facilmente.

==Veja tambm==

*[[Tese de Church-Turing]] *[[Teoria da computao]] *[[Teoria da informao]] *[[Hierarquia de Chomsky]]

==Referencias== {{Reflist}} {{Refbegin}} * Brainerd, W.S., (1974), ''Theory of Computation'', Wiley. ISBN 0-471-09585-0 * http://technology.newscientist.com/article/dn12826-simplest-universal-computer-winsstudent-25000.html Simplest 'universal computer' wins student $25,000 by Jim Giles, ''New Scientist'', October 24, 2007. * ''The Universal Turing Machine: A Half-Century Survey'' (1995), ed.[Rolf Herken, Springer Verlag. ISBN 3-211-82637-8 {{Refend}}

== Links externos == {{DEFAULTSORT:Turing Completude}} [[Category:teoria da computao]]

[[cs:Turing-kompletn]] [[de:Turing-Vollstndigkeit]] [[es:Turing completo]] [[fr:Turing-complet]] [[ko: ]]

[[ia:Turing complete]] [[it:Turing equivalenza]] [[nl:Turingvolledigheid]] [[ja: [[pl:Kompletno ]] Turinga]]

[[pt:Turing completa]] [[ru: [[simple:Turing complete]] [[en:Turing completeness]] [[fi:Turing-vahva]] [[sv:Turingkomplett]] [[uk: [[zh: ]] ]] ]]

Você também pode gostar