Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Complejidad Computacional y Máquina de Turing

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 4

1

Complejidad computacional y máquina de Turing


P. B. Betancourt, J. D. Riofrío, J. W. Torres y Y. E. Urrego

Resumen- En el siguiente documento se expondrá acerca de la ensayo se detallará la historia de la complejidad computacional,
complejidad computacional, la cual, se refiere a la medida del sus usos en las técnicas de diseño de algoritmo, la relación entre
tiempo y del espacio requeridos para resolver un problema los autómatas finitos y la máquina de Turing.
computacional usando un algoritmo específico. La teoría de la
complejidad computacional se originó con la introducción de las
máquinas de Turing, que representan un modelo abstracto de una II. COMPLEJIDAD COMPUTACIONAL
computadora. La computación tiene sus inicios en el diseño de algoritmos
Existen varias clases de complejidad computacional, cada clase por Euclides, el inicio de la complejidad asintótica y la
se caracteriza por su tiempo y espacio de solución y se utiliza para reducibilidad por parte de los babilónicos. La ciencia de la
clasificar y comparar los problemas computacionales, la computación tiene sus bases en dos áreas básicas: los conceptos
clasificación en diferentes clases de complejidad nos permite
fundamentales subyacentes al cálculo que trajo como
comparar y clasificar los problemas computacionales y entender
mejor las limitaciones y posibilidades de las computadoras. Se consecuencia la existencia de funciones probablemente no
determinó que la complejidad computacional y las máquinas de calculables o computables, y, por otra parte, las técnicas de
Turing son importantes en la investigación de la teoría de la ingeniería para el diseño de sistemas de computación basadas en
computación. técnicas de diseño de algoritmos: algoritmos voraces (divide y
vencerás), algoritmos aleatorizados, algoritmos con retroceso,
Abstract-- In the following document, it will be exposed about etc.
computational complexity, which refers to the measure of time and En las ciencias de la computación (más específicamente en
space required to solve a computational problem using a specific complejidad computacional), los procesos computacionales o
algorithm. The theory of computational complexity originated with algorítmicos son fundamentales, pues una computadora no
the introduction of Turing machines, which represent an abstract podrá solucionar problemas que no tengan soluciones
model of a computer.
algorítmicas, esto significando que las limitaciones en los
There are several classes of computational complexity, each
class is characterized by its solution time and space and is used to
procesos algorítmicos, será a su vez limitantes para las
classify and compare computational problems, classification into computadoras [2]. Aunque la labor de calcular la complejidad o
different complexity classes allows us to compare and classify eficiencia de un algoritmo, se ve bien recompensada con
computational problems and better understand the limitations and algoritmos de alta calidad y fiabilidad, aún antes de su puesta en
capabilities of computers. Computational complexity and Turing práctica o ejecución.
machines were found to be important in computation theory a) Teoría de la complejidad
research. La teoría de la complejidad computacional es la parte de la
computación que estudia los recursos requeridos durante el
I. INTRODUCCIÓN cálculo para resolver un problema específico (un cálculo
complejo significa que es difícil de realizar). En el contexto de
La complejidad computacional parte del principio de que esta materia se puede definir a la complejidad de cálculo como
la cantidad de recursos necesario para que un computador realice
no basta con que un algoritmo resuelva un problema, sí no que, un cálculo. Los recursos que más se suelen usar para los estudios
también debe de ser razonable en relación con la memoria son: tiempo (cantidad de pasos de ejecución para resolver un
requerida y los tiempos de ejecución. Dado esto, para poder algoritmo) y espacio (total de memoria usada por el computador
profundizar en las clases de complejidad es necesario una para resolver el problema planteado). Es necesario tener en
definición informal del concepto de un algoritmo, es por ello que cuenta que para que un algoritmo sea de utilidad debe de tener
se utiliza la máquina de Turing la cual es la formulación más un equilibrio en los recursos que utilice, pues no sirve de nada
conocida del concepto del algoritmo o también son una que se un algoritmo veloz para resolver problemas, pero use por
formulación matemática del concepto intuitivo de algoritmo [1], completo la memoria disponible, de la misma forma, no será de
es por ello que esta surge como una manera de formalizar y con utilidad un algoritmo que use una cantidad muy limitada de
esto poder razonar matemáticamente un algoritmo, por ende, su memoria, pero su tiempo de ejecución se alargue excesivamente.
sencilles se basa en una persona realizando cálculos, borrando y Para distinguir las complejidades que puede tener un algoritmo
escribiendo .Así mismo, estas máquinas se basan en autómatas en función de los recursos que este utilice se usan nombres
finitos los cuales son un modelo matemático de una máquina que como: complejidad temporal y complejidad espacial, algunas de
acepta cadenas de un lenguaje definido sobre un alfabeto L, estas clases son: complejidad temporal y complejidad espacial.
consiste en un conjunto finitos de estados, y las transiciones Al ser el análisis de la complejidad de un algoritmo una
entre estos, para ello se basan en los símbolos de la cadena de cuestión teórica, es necesaria la aplicación de un marco formal,
entrada, los autómatas finitos reciben una cadena x y si se siendo la formalidad y abstracción aspectos fundamentales en la
cumple una secuencia determinada se avanzará desde e; inicio computación, ciencia donde se prioriza siempre el diseño y
hasta el final de la cadena. razonamiento, sobre las depuraciones a prueba y error en un
Es por ello que tomando en cuenta que entre estos tres contexto “artesanal” [3].
conceptos se establece una relación directa, en el siguiente b) Clases de complejidad
2

Las clases de complejidad son definidas tomando en cuenta el por una máquina de Turing determinista en tiempo O(2𝑝(𝑛) ),
tiempo o espacio ocupado por el algoritmo, dentro de estas las donde p(n) es un función polinomial sobre n.
más importantes son: En términos de DTIME se define como:
DTIME (f(n))
Es el conjunto de los problemas de decisión que pueden ser
resueltos en una máquina de Turing determinista en tiempo (2)
O(f(n)), y espacio ilimitado. iv. NTIME(f(n))
La clase de complejidad en un tiempo polinómico P se puede A diferencia de DTIME(f(n)), es esta los problemas de
definir a partir de DTIME como: decisión que pueden ser resueltos en una máquina de Turing no
determinista en tiempo O(f(n)), y espacio ilimitado.
Puede ser definida en términos de NTIME como:

(1)
i. P
La clase de complejidad P es llamada a los problemas que (3)
pueden ser resueltos en un tiempo polinómico calculado, a v. NP (clase de complejidad)
través de una máquina de Turing determinista. NP es una clase de complejidad que describe problemas para
La clase P es aquella que tiene problemas grandes los cuales los cuales una solución correcta puede ser verificada en tiempo
pueden llegar a se resueltos por un ordenador de forma eficiente. polinómico usando una máquina no determinista, pero encontrar
una solución puede ser tardado y requerir un tiempo exponencial
en el peor de los casos. [7]

vi. NEXPTIME
Es una clase de complejidad en la teoría de la computación
que describe los problemas para los cuales el tiempo necesario
para encontrar una solución es exponencial en relación al
tamaño de la entrada usando una máquina no determinista. La
clase NEXPTIME es una clase de complejidad más alta que NP
y describe problemas que son aún más difíciles de resolver. [7]
Fig 1. Diagrama de clases de complejidad. Si P = NP, P contendría
las zonas NP y NP-completo [4].

ii. PP
Es una clase de problema de decisión, la cual se refiere a un
tiempo polinomial probabilístico, el cual puede ser resuelto por
una máquina de Turing probabilística, diferente de la máquina
de Turing general o determinística en que las transiciones entre
estados tienen la misma probabilidad de ocurrencia [5].

Fig 3.Clases de complejidad divididas en deterministas y no


deterministas [7].

vii. DSpace
Es una clase de complejidad en la teoría de la computación
que describe la cantidad de memoria que un algoritmo necesita
para resolver un problema. La clase DSPACE se refiere a los
algoritmos que requieren una cantidad de memoria proporcional
a una potencia de n, donde n es el tamaño de la entrada.

Fig 2.PP en relación con otras clases de complejidad probabilística (4)


(ZPP, RP, co-RP, BPP, BQP), que generalizan P dentro de PSPACE viii. LSPACE
[6].
Es una clase de complejidad en la teoría de la computación
que describe la cantidad de memoria que un algoritmo necesita
iii. EXPTIME
para resolver un problema. La clase LSPACE se refiere a los
La clase de complejidad EXPTIME, se basa en un conjunto
de problemas de decisión los cuales pueden llegar a ser resueltos
3

algoritmos que requieren una cantidad logarítmica de memoria


con respecto al tamaño de la entrada.
(8)
Estos problemas son considerados como de menor dificultad
(5) en comparación a los problemas en PSPACE, debido a que la
ix. PSPace cantidad de memoria necesaria es mucho más eficiente. Algunos
Un algoritmo en la clase PSpace utiliza una cantidad de ejemplos de este tipo de problemas o en donde son aplicados es
memoria que es proporcional a un polinomio en relación al en la evaluación de expresiones regulares y en la verificación de
tamaño de la entrada. Por ejemplo, si el tamaño de la entrada es autómatas finitos. [9]
n, entonces la cantidad de memoria utilizada será proporcional a A diferencia de las demás clases de complejidad, NSPACE
n^k para algún exponente k. no incluye una medida de tiempo, en consecuencia, estos
En el contexto de la máquina de Turing, los algoritmos en la problemas pueden requerir de un tiempo exponencial o
clase PSpace son considerados más eficientes que los algoritmos polinómico para su solución, dependiendo siempre del
en la clase EXP (complejidad exponencial), pero menos algoritmo que se haya utilizado. [8]
eficientes que los algoritmos en la clase NP (complejidad xii. NL
polinómica no determinista). Se refiere a espacio logarítmico no determinista, es decir que
contienen los problemas solubles no determinística mente es
espacio logarítmico. El modelo de cómputo destinado para esta
clasificación es una máquina de Turing no determinista en
(6) espacio log(n). Estos problemas pueden ser resueltos en tiempo
x. EXPSPACE polinómico y logarítmico en cuanto al tamaño de entrada. [9]
Esta clasificación corresponde a el conjunto de problemas de La clase L está contenida en NL y de manera estricta en
decisión que mediante una máquina de Turing determinista PSPACE, en conclusión:
pueden resolverse. Se puede decir que es una combinación entre
la complejidad PSPACE y EXPTIME, esto debido a que es (9)
necesario tanto un tiempo exponencial como una cantidad Al igual que la anterior clasificación estos problemas son de
exponencial de memoria para resolver estos problemas. El menor, debido a su mayor eficiencia en la cantidad de tiempo y
modelo de cómputo destinado para esta clasificación es una memoria para su solución. De esto se puede decir que NL es una
clase intermedia en términos de complejidad, ya que es más
máquina de Turing determinista en espacio 𝑂(2𝑝(𝑛) ), donde
eficiente que PSPACE, pero menos eficiente que P.
p(n) corresponde a una función polinomial con respecto a n. [8]
xiii. NPSPACE
Su conjunto de problemas de decisión que pueden ser
Es el conjunto de los problemas de solución que pueden ser
resueltos, en términos de DSPACE es:
resueltos mediante el modelo de cómputo de una máquina de
Turing determinista en espacio de polinomios:

(7) (10)
El mayor inconveniente con esta clasificación de problemas Esto quiere decir que se pueden resolver en tiempo
es que son considerados de muy complicada resolución ya que polinómico y en una cantidad de memoria polinómica, la
combinan exponencialmente los dos elementos limitantes para definición formal de esta clasificación es:
la máquina de Turing, como son la memoria y tiempo, por esta
razón a menudo son utilizados como medida de los límites de
las máquinas y los algoritmos. [9]
Una particularidad es que, a diferencia de otras clases de (11)
complejidad, como la P y NP, aún no se ha conseguido Estos problemas presentan algunos inconvenientes pues son
demostrar que EXPSPACE sea equivalente a otras clases de considerados de difícil resolución, debido a que a comparación
complejidad. Sin embargo, esta es de gran importancia debido a de otras complejidades la cantidad de tiempo y memoria son
que proporciona una medida en dificultad y eficiencia de los relativamente grandes. Aunque sea considerado una clase de
problemas computacionales. difícil resolución que sigue siendo más eficiente que PSPACE.
xi. NSPACE [8]
Esta clasificación corresponde a el conjunto de problemas de xiv. NEXPSPACE
decisión que podrán ser resueltos por una máquina de Turing no Corresponde al grupo de problemas de decisión resolubles
determinista en espacio f(n) y en un tiempo que está limitado. mediante el modelo de cómputo dado por una máquina de
Estos problemas ocupan una cantidad logarítmica de memoria Turing determinista en espacio 𝑂(2𝑝(𝑛)), donde p(n)
para su resolución. Esta clase de complejidad es una medida de corresponde a una función polinomial con respecto a n. Esta
la eficiencia en términos de uso de memoria de los algoritmos y clase representa a problemas que pueden resolverse en tiempo
las máquinas de Turing. [8] polinómico y una cantidad de memoria exponencial.
Esta clase de complejidad está definida a partir de NSPACE Su conjunto de problemas de decisión que pueden ser
como: resueltos, en términos de DSPACE es:
4

IV. CONCLUSIONES
La Complejidad Computacional y la Teoría de las Máquinas
(12) de Turing han sido, son y serán los conceptos más
La clase de complejidad NEXPSPACE es una generalización fundamentales en cuanto a la investigación y desarrollo de la
de la clase PSPACE. La diferencia clave entre NEXPSPACE y informática. Ya que juntos, proporcionan un medio para
PSPACE es que los problemas en NEXPSPACE pueden entender la eficiencia y dificultad de los problemas
requerir una cantidad de memoria que crece exponencialmente computacionales, así como el comportamiento de los
con la entrada, mientras que los problemas en PSPACE algoritmos.
requieren una cantidad de memoria polinómica. [9] Las máquinas de Turing y la complejidad computacional
Uno de los problemas más conocidos en NEXPSPACE es la están estrechamente relacionadas. Esto debido a la capacidad de
verificación de autómatas no determinísticos. Este problema estas de representar y simular la solución de problemas
implica verificar si un autómata no determinístico acepta o computacionales, esto permite a los investigadores comparar y
rechaza una cadena dada. La solución a este problema requiere clasificar los problemas en diferentes clases de complejidad y
una cantidad de memoria que crece exponencialmente con la entender mejor las limitaciones y posibilidades de las
entrada, lo que lo hace un problema en NEXPSPACE. [9] computadoras. Esto constituye a las máquinas de Turing como
una herramienta esencial para el estudio de la complejidad
III. MÁQUINA DE TURING computacional.
En 1935, Hilbert había planteado un problema de decisión,
que consistía en comprobar si existe un método para cualquier V. REFERENCIAS
enunciado, que determine si este es verdadero. Esta pregunta
llamó la atención de un matemático y lógico inglés Alan [1] J. C. Martínez, «Sobre algoritmos, máquinas de Turing
Mathison Turing, quién con un enfoque algo diferente desarrolló y complejidad,» Universidad de Barcelona, Barcelona,
la llamada máquina de Turing, la cual sentó las bases de la España, 2022.
computación moderna [10].
[2] J. Glean, Teoría de la computación, Addisson Wesley
En primer lugar, la Máquina de Turing es un tipo de autómata
iberoame-ricana Wilmington Delaware, 1993.
finito. Es un modelo de cálculo formal que se basa en un
conjunto finito de reglas para procesar una secuencia de [3] A. Cortéz, «TEORÍA DE LA COMPLEJIDAD
símbolos. Al igual que otros autómatas finitos, la Máquina de COMPUTACIONAL Y TEORÍA DE,» Investigación de
Turing es un modelo de máquina de estado finito, lo que sistemas informáticos, vol. I, nº 1, pp. 102-105, 2004.
significa que solo puede estar en un número finito de estados y [4] Ascánder, Artist, Diagrama de la clase NP. [Art]. GNU
que se mueve entre ellos en función de un conjunto finito de Free Documentation License, 2004 .
transiciones. [11] [5] Academic, «PP (clase de complejidad),» Academic,
Además, la Máquina de Turing ha sido utilizada como una España, 2010.
herramienta para definir y describir el concepto de
[6] Thumb, Artist, PP (complejidad). [Art]. Hmong, 2009.
computabilidad. Alan Turing utilizó la Máquina de Turing para
demostrar que hay ciertos problemas matemáticos que no [7] L. Baez, «Luchonet,» 06 03 2015. [En línea]. Available:
pueden ser resueltos por ninguna máquina de computación. Este http://www.luchonet.com.ar/aed/?page_id=241. [Último
resultado se conoce como la Teorema de Indecidibilidad de acceso: 02 02 2023].
Turing y es una de las bases de la teoría de la computabilidad. [8] M. Sipser, Introduction to the Theory of Computation,
La complejidad computacional y la máquina de Turing están United States of America: CENGAGE Learning , 2012.
estrechamente relacionadas, ya que la máquina de Turing es [9] J. E. Hopcroft y J. D., Theory of Computation, United
ampliamente utilizada como un modelo de referencia para la States of America: Addison-Wesley Publishing Company,
teoría de la complejidad computacional. La teoría de la 1979.
complejidad computacional se enfoca en la evaluación de la
eficiencia de los algoritmos y la cantidad de recursos (como el [10] R. Grimaldi, Matemática dis-, Addisson Wesley ibero-
tiempo y el espacio) que necesitan para ejecutarse. La máquina americana Wilmington Delaware, 1997.
de Turing es un modelo abstracto de una computadora que puede [11] Interpolados, «Interpolados,» 03 03 2017. [En línea].
ser usado para simular cualquier algoritmo y, por lo tanto, es una Available:
herramienta útil para la evaluación de la complejidad de los https://interpolados.wordpress.com/2017/03/03/automata-
algoritmos. finito/. [Último acceso: 02 02 2023].
[12] Mike Davey. A Turing Machine - Overview. (7 de marzo
de 2010). Accedido el 31 de octubre de 2022.
https://www.youtube.com/watch?v=E3keLeMwfHY.

Fig 4 Máquina de Turing construida sobre hardware [12].

También podría gustarte