Máquina de Turing

Unha máquina de Turing é un dispositivo abstracto que funciona como hipótese de computación. Conceptualmente, manipula símbolos sobre unha tira de cinta de acordo cunha táboa de regras de transición. A pesar da súa simplicidade aparente, unha máquina de Turing pode ser adaptada para simular a lóxica de calquera algoritmo de computador. É particularmente útil na explicación das funcións dunha CPU dentro dun computador.
Foi definida en orixe polo matemático inglés Alan Turing en 1936 como unha «máquina automática» na revista Proceedings of the London Mathematical Society. Dise, xa que logo, que as máquinas de Turing serven de apoio aos profesionais das ciencias da computación en canto que permiten diferenciar problemas resolubles por un computador daqueles que non o son (ver Tese de Church-Turing). Turing definiu o concepto no seu ensaio «Máquinas intelixentes», de 1948. Referíndose á súa publicación de 1936, escribiu que a máquina de Turing, aquí chamada unha "máquina de computación lóxica", consistía en: [. .. ] unha memoria de capacidade ilimitada obtida baixo a forma dunha cinta infinita marcada con cadros, en cada un dos cales se pode imprimir un símbolo. Sempre hai un símbolo na máquina: o símbolo lido. A máquina pode modificar o símbolo lido e o comportamento posterior desta está determinado por ese mesmo símbolo, pero os símbolos doutros lugares da cinta non afectan o comportamento da máquina. Non obstante, a cinta pode moverse cara a adiante e cara a atrás a través da máquina, na que é unha das operacións elementais dela. Polo tanto, calquera símbolo na cinta pode ter finalmente unha oportunidade.
Alan Turing, «Máquinas intelixentes» (1948)Existen diferentes variacións da máquina de Turing clásica. Entre elas atópanse:
Máquina de Turing con opción de non-movemento
Máquina de Turing con cinta semiinfinita
Máquina de Turing con cinta de entrada
Ademais, outras máquinas requiren un almacenamento máis complexo como: Máquina de Turing multicinta
Máquina de Turing multidimensional
sen obviar a máquina de Turing non determinista (que é posible simular cunha máquina de Turing determinista).
Cabe resaltar que todas estas máquinas funcionan como modelos conceptuais: non hai razón práctica para computar problemas en sistemas que non sigan a arquitectura de Von Neumann, mais a súa importancia teórica xustifica que o seu estudo sexa fundamental nas ciencias da computación.
Destaca especialmente a máquina universal de Turing (UTM), capaz de simular as demais máquinas de Turing. Alonzo Church contribuíu a unha definición matemática das máquinas de Turing a través do cálculo lambda, especialmente á súa capacidade de definir un algoritmo de forma precisa baseándose nos campos da lóxica e as matemáticas. Este sistema formal foi introducido por Alonzo Church e Stephen Kleene nos anos 30, e considérase unha linguaxe de programación minimalista e pioneira: unha aproximación equivalente á máquina de Turing desde un punto de vista funcional non baseado en hardware. As propiedades abstractas da máquina de Turing asentaron a maior parte dos desenvolvementos teóricos das ciencias da computación, así como a teoría da complexidade computacional que distingue os problemas computacionais en distintos niveis de complexidade. Historia
Alan Turing introduciu o concepto de máquina de Turing en On computable numbers, with an application to the Entscheidungsproblem, publicado pola Sociedade Matemática de Londres en 1936. O Entscheidungsproblem ("problema de decisión", en galego) foi un reto de lóxica simbólica no que se estudaba a existencia dun algoritmo que decidise se unha fórmula en cálculo de primeira orde era un teorema. Tanto Church como Turing chegaron á mesma solución (a non existencia dese algoritmo), aínda que mediante métodos distintos. Church afrontouno mediante o cálculo lambda e os traballos previos de Kleene; mentres que Turing ideou un modelo formal de computador, a máquina de Turing, e demostrou que existían problemas que unha máquina non podía resolver (coma o célebre problema da parada para máquinas de Turing).
O modelo teórico da máquina de Turing e os fundamentos teóricos de clases de complexidade permitiron distinguir entre as clases de problemas P e NP. Os primeiros (P) son o conxunto de problemas con solución por unha máquina de Turing en tempo polinómico, mentres que os segundos (NP) son problemas resolubles mediante unha máquina de Turing non determinista en tempo polinómico. Os problemas da clase P considéranse tratables, e o resto, intratables (tese de Cook-Karp); é dicir, computables á custa de tal cantidade de recursos (tempo e memoria) que a implementación resulta ineficiente ou, nalgúns casos, imposible.
Entre os argumentos máis potentes a favor da hipótese formulada por Church e Turing encóntranse os seguintes: Non hai problemas resolubles algoritmicamente para os que non se poida escribir un programa para unha máquina de Turing.
Calquera problema resoluble nun computador é tamén resoluble cunha máquina de Turing.
Os modelos alternativos de computación non probaron ser máis potentes que o modelo da Tese de Church-Turing. Definición informal
Unha máquina de Turing pode considerarse un autómata apoiado nun dispositivo de almacenamento infinito (cinta) así como unha cabeza de lectura/escritura. Nesta cinta hai símbolos que terán que pertencer ao alfabeto da cinta (ou ao de entrada) para poderen ser lidos/escritos. Todo o labor da máquina de Turing pode ser realizado por persoas, non necesariamente por computadores, como explica o artigo orixinal "Sobre números computables cunha aplicación ao Entscheidungsproblem". Nunha máquina de Turing a entrada está escrita ao comezo, e a saída vaise gravando na cinta durante as sucesivas operacións. O procesamento desta finaliza cando alcanza un estado de parada. Asúmese que nun estado final non hai transicións definidas, polo que a máquina deterase ao chegar a un estado final. Polo tanto, non é necesario ler todo o contido da cinta para acabar o procesamento, ao contrario doutro tipo de autómatas da Xerarquía de Chomsky (autómatas de estados finitos e autómatas con pila).
Polo tanto, poderíamos resumir informalmente as características dunha máquina de Turing estándar da seguinte forma: Cinta infinita (ambas as direccións).
Función de transición determinista (cada configuración estado-símbolo ten un movemento definido como máximo).
Entradas e saídas codificadas explicitamente na cinta.
Para tales propósitos, é común empregar os espazos en branco a ambos os lados das cadeas escritas na cinta como delimitadores da cadea de entrada. De adoptar esta aproximación, a cadea baleira (ε) terá que ser excluída da linguaxe que se vai tratar. Definición formal
Unha máquina de Turing estándar (baseada nunha soa cinta) pode definirse como unha 7-tupla M
( Q, Σ, Γ, δ, q 0, B, F ), {\displaystyle M
(Q, \Sigma, \Gamma, \delta, q_{0}, B, F), \! } onde: Q {\displaystyle Q\! }: conxunto finito de estados. Σ {\displaystyle \Sigma \! }: alfabeto de entrada (funciona como subconxunto do alfabeto de cinta prescindindo do espazo en branco). Γ {\displaystyle \Gamma \! }: alfabeto de cinta sabendo que Σ ⊆ Γ − { B } {\displaystyle \Sigma \subseteq \Gamma -\{B\}}. δ {\displaystyle \delta }: función de transición. q 0 ∈ Q {\displaystyle q_{0}\in Q}: estado inicial. B ∈ Γ {\displaystyle B\in \Gamma \! }: espazo en branco ( B ∉ Σ {\displaystyle B\notin \Sigma } ). F ⊆ Q {\displaystyle F\subseteq Q}: conxunto de estados finais. Descrición instantánea
Secuencia da forma α 1 q i α 2 {\displaystyle \alpha _{1}q_{i}\alpha _{2}} na cal α 1, α 2 ∈ Γ ∗ {\displaystyle \alpha _{1}, \alpha _{2}\in \Gamma ^{*}} e q i ∈ Q {\displaystyle q_{i}\in Q} onde q i {\displaystyle q_{i}} describe o estado actual da máquina. Por convención, a cabeza de lectura/escritura apunta ao primeiro símbolo que conforma α 2 {\displaystyle \alpha _{2}}.
Por tanto, consta dos seguintes elementos: Estado.
Contido da cinta.
Posición da cabeza de lectura/escritura.
Así, dise que para M
( Q, Σ, Γ, δ, q 0, B, F ), {\displaystyle M
(Q, \Sigma, \Gamma, \delta, q_{0}, B, F), \! } con posibles transicións que movan a cabeza de lectura/escritura á esquerda como δ ( q 0, x k )
( q 1, y, L ) {\displaystyle \delta (q_{0}, x_{k})
(q_{1}, y, L)} e transicións que fagan o propio á dereita δ ( q 0, x k )
( q 1, y, R ) {\displaystyle \delta (q_{0}, x_{k})
(q_{1}, y, R)}. Baseándonos nunha descrición instantánea xenérica de M {\displaystyle M}: x 1 … x k − 1 q 0 x k … x n, x i ∈ Γ, q 0 ∈ Q {\displaystyle x_{1}\ldots x_{k-1}q_{0}x_{k}\ldots x_{n}, x_{i}\in \Gamma, q_{0}\in Q} podemos executar: Desprazamentos á esquerda: x 1 … x k − 1 q 0 x k … x n ⊢ x 1 … x k − 2 q 1 x k − 1 y x k + 1 … x n {\displaystyle x_{1}\ldots x_{k-1}q_{0}x_{k}\ldots x_{n}\vdash x_{1}\ldots x_{k-2}q_{1}x_{k-1}yx_{k+1}\ldots x_{n}} Desprazamentos á dereita: x 1 … x k − 1 q 0 x k … x n ⊢ x 1 … x k − 1 y q 1 x k + 1 … x n {\displaystyle x_{1}\ldots x_{k-1}q_{0}x_{k}\ldots x_{n}\vdash x_{1}\ldots x_{k-1}yq_{1}x_{k+1}\ldots x_{n}} considerando o caso α 1 q i α 2 ⊢ ∗ β 1 q j y β 2 {\displaystyle \alpha _{1}q_{i}\alpha _{2}\vdash ^{*}\beta _{1}q_{j}y\beta _{2}} que implicará parada cando a transición δ ( q j, y ) {\displaystyle \delta (q_{j}, y)} non estea definida.
Ademais, o caso α 1 q 0 α 2 ⊢ ∗ ∞ {\displaystyle \alpha _{1}q_{0}\alpha _{2}\vdash ^{*}\infty } implica non parar nunca. Diagrama de estados
É posible representar máquinas de Turing mediante grafos con arestas dirixidas tamén chamados diagramas de estados. As principais convencións son as seguintes: Estado inicial cunha única aresta incidente que non provén doutro vértice.
Estado final representado por unha dobre circunferencia.
Arestas etiquetadas coas transicións. Exemplo
Unha aplicación sinxela dunha máquina de Turing estándar é a conversión dun número en alfabeto unario (é dicir, unicamente con 1's) a binario. Por simplicidade empregarase o alfabeto Σ
{ 0, 1, , x, B } {\displaystyle \Sigma
\{0, 1, , x, B\}}. O x {\displaystyle x} terá como obxectivo "marcar" as cifras en unario xa traducidas en formato binario. B {\displaystyle B} refírese ao espazo en branco. Posible contido inicial de cinta: "
1111111111 {\displaystyle
1111111111} " (equivalente ao número 10 en alfabeto decimal).
Respectivo contido final: " 1010
1111111111 {\displaystyle 1010
1111111111} "
O conxunto de estados requiridos será Q
{ q 0, q 1, q 2, q 3, q 4, q 5 } {\displaystyle Q
\{q_{0}, q_{1}, q_{2}, q_{3}, q_{4}, q_{5}\}} con q 0 {\displaystyle q_{0}} estado inicial e q 5 {\displaystyle q_{5}} estado final. Así, a táboa de transicións (equivalente ás arestas da imaxe) será: Seguindo a computación da máquina de acordo coa cadea de entrada "
11 {\displaystyle
11} " (resáltase a cabeza de lectura/escritura): Unha vez entrado no estado q 4 {\displaystyle q_{4}}, a máquina substitúe cada x {\displaystyle x} por 1 {\displaystyle 1}, dando por finalizada a tradución do número. Modificacións
As versións modificadas da máquina de Turing estándar descritas a continuación non engaden ningún tipo de capacidade computacional, soamente simplifican algunhas aplicacións a nivel conceptual.
Máquina de Turing con opción de non-movemento
δ: Q ∗ Γ → Q ∗ Γ ∗ { R, L, E } {\displaystyle \delta: Q*\Gamma \rightarrow Q*\Gamma *\{R, L, E\}} onde E {\displaystyle E} representa unha situación estática da cabeza de lectura/escritura. A MT con opción de non-movemento pódese simular cunha MT estándar, o que demostra que, en efecto, esta modificación non engade ningún tipo de complexidade computacional. δ ′ ( q j, a )
( q j, b, L o u R ) {\displaystyle \delta '(q_{j}, a)
(q_{j}, b, L\ ou\ R)} sempre que na MT con opción de non-movemento haxa δ ( q j, a )
( q j, b, L o u R ) {\displaystyle \delta (q_{j}, a)
(q_{j}, b, L\ ou\ R)} δ ′ ( q i, a )
( q j M, b, R ) {\displaystyle \delta '(q_{i}, a)
(q_{jM}, b, R)} e δ ′ ( q j M, c )
( q j, c, L ) {\displaystyle \delta '(q_{jM}, c)
(q_{j}, c, L)} sempre que na MT con opción de non-movemento haxa unha situación estática do tipo δ ( q i, a )
( q j, b, E ) {\displaystyle \delta (q_{i}, a)
(q_{j}, b, E)}.
Neste último caso haberá transicións para cada elemento c ∈ Γ {\displaystyle c\in \Gamma }.
Máquina de Turing con cinta semiinfinita
Pista superior co contido da máquina de Turing estándar M {\displaystyle M} desde a cabeza de lectura/escritura ata a dereita.
Pista inferior co contido da máquina de Turing estándar M {\displaystyle M} desde a cabeza de lectura/escritura ata a esquerda en orde invertida.
A cinta semiinfinita con dúas pistas (ambas limitadas nun extremo) ten como consecuencia que cada estado funcione con dous conxuntos, cada un referido a unha das pistas (inferior e superior). Para cambiar de pista serán necesarios marcadores especiais #.
Máquina de Turing con cinta de entrada
Cinta de só lectura
Unidade de control
Cinta estándar
Nesta modificación, a entrada (input) está escrita nunha cinta que funciona como só de lectura (non se pode escribir). Unha unidade de control le os símbolos da entrada así como o que se encontra baixo a cabeza de lectura/escritura na cinta estándar para executar as transicións.
Máquina de Turing multicinta
δ: Q ∗ Γ n → Q ∗ Γ n ∗ { L, R } n {\displaystyle \delta: Q*\Gamma ^{n}\rightarrow Q*\Gamma ^{n}*\{L, R\}^{n}} Unha MT con n {\displaystyle n} cintas podería simularse con 2 n {\displaystyle 2n} pistas. n {\displaystyle n} para representar o contido das n {\displaystyle n} cintas da máquina multicinta. n {\displaystyle n} para representar as cabezas das n {\displaystyle n} cintas da máquina multicinta.
Máquina de Turing multidimensional
Ao aumentar o número de dimensións tamén o fan os extremos infinitos da cinta. O caso máis sinxelo é unha MT bidimensional: δ: Q ∗ Γ → Q ∗ Γ ∗ { R, L, U, D } {\displaystyle \delta: Q*\Gamma \rightarrow Q*\Gamma *\{R, L, U, D\}} onde U {\displaystyle U} e D {\displaystyle D} sinalan "up" e "down".
Máquina de Turing non determinista
δ: Q ∗ Γ → 2 Q ∗ Γ ∗ { L, R } {\displaystyle \delta: Q*\Gamma \rightarrow 2^{Q*\Gamma *\{L, R\}}} Unha MT non determinista pode estar en varios estados á vez. É dicir, considera cada estado de cada momento como unha hipótese ("é posible que esteamos en q 0 {\displaystyle q_{0}}, mais quizais tamén en q 1 {\displaystyle q_{1}} "). Vista desde a perspectiva dunha máquina estándar, a MT non determinista é replicable creando 2 n {\displaystyle 2n} pistas con n {\displaystyle n} sendo o número de MT que se vai simular.