Está en la página 1de 7

UNIVERSIDAD NACIONAL

DE CHILECITO

INGENIERÍA EN SISTEMAS

TEORÍA DE LA
COMPUTACIÓN

COMPLEJIDAD Y EFICIENCIA DE
ALGORITMOS Y SU RELACIÓN CON
LA COMPUTACIÓN CUÁNTICA

ALUMNO:
ENZO MATÍAS DE LA FUENTE

TITULAR DE CÁTEDRA:
DR. JOSÉ TEXIER

CHILECITO – LA RIOJA

2019
2

Introducción
Un algoritmo es un procedimiento computacional que recibe uno o más valores como
entrada y produce uno o más valores como salida. Es una secuencia de pasos
computacionales que transforman entradas en salidas.
Si para cada entrada el algoritmo devuelve salidas correctas, podemos decir que este
algoritmo es eficaz y resuelve un problema computacional. Sin embargo, en la
actualidad, no basta con que este algoritmo sea eficaz debido a los grandes volúmenes
de datos que se generan, por lo que el algoritmo, además, debe ser eficiente. La
eficiencia implica que el algoritmo produzca una salida correcta en el menor tiempo
posible, es por ello que el diseño cumple un rol fundamental a la hora de mejorar el
desempeño. Este diseño viene acompañado de una serie de estudios, técnicas, análisis
de la complejidad y el uso eficiente de los recursos para reducir el tiempo de
ejecución.
A continuación, se profundizará sobre estos conceptos y se dará una breve reseña de la
computación cuántica y su relación con la complejidad y eficiencia de los algoritmos.

Orden de complejidad de un algoritmo


Un algoritmo será más eficiente en comparación a otro, siempre que consuma menos
recursos, como el tiempo y espacio de memoria necesarios para ejecutarlo. El tiempo
de ejecución se representa como T en función de n que es el tamaño de entrada de los
datos.
El Principio de invarianza afirma que para un algoritmo y dos implementaciones suyas
I1 e I2, que tardan T1(n) y T2(n) respectivamente, existe una constante real c > 0 y un
número natural n0 tales que para todo n ≥ n0 se verifica que:
T1(n) ≤ cT2(n)
Es decir, el tiempo de ejecución de dos implementaciones distintas de un algoritmo
dado
no va a diferir más que en una constante multiplicativa. Lo que significa que el tiempo
necesario para resolver un problema mediante un algoritmo depende de la naturaleza
de éste y no de su implementación.
Se dice entonces que el tiempo de ejecución de un algoritmo es del orden de T(n) si
existen dos constantes reales c y n0 y una implementación I del algoritmo
tales que el problema se resuelve en menos de cT(n) para toda n > n0.
Para medir T(n) se usa el número de operaciones elementales que pueden ser:
 Operación aritmética.
 Asignación a una variable.
 Llamada a una función.

COMPLEJIDAD Y EFICIENCIA DE ALGORITMOS


3

 Retorno de una función.


 Comparaciones lógicas (con salto).
 Acceso a una estructura (arreglo, matriz, lista enlazada…)

La notación O(f(n)) representa una de las medidas asintóticas más comunes para
analizar qué tan rápido crece el tiempo conforme crecen los datos de entrada,
independiente del lenguaje y el tipo de máquina en la que se ejecute.
Los principales órdenes de complejidad son:
Orden Nombre
O(1) constante
O(log n) logarítmica
O(n) lineal
O(n log n) casi lineal
O(n²) cuadrática
O(n³) cúbica
O(a^n) exponencial

T(n) se representa como una expresión matemática que describe la cantidad de


operaciones en un algoritmo para finalmente determinar el orden de complejidad. El
ejemplo siguiente muestra un análisis basado en un algoritmo que calcula los números
primos comprendidos entre 1 y N:
int primos = 0;
for(i= 1; i<=n; i++) {
cantDivisores = 0;
for(j= 1; j< i; j++) {
if(i%j == 0)
cantiDivisores++;
}
if(cantDivisores == 2)
primos ++;
}

COMPLEJIDAD Y EFICIENCIA DE ALGORITMOS


4

Problemas polinómicos vs. problemas exponenciales


Los problemas de complejidad polinomial se dividen en P (polinomiales) y NP
(polinomiales no deterministas). Si la complejidad es P se dice que son tratables,
mientras que NP son aquellos problemas que se pueden reducir a un problema de
decisión que se resuelve mediante un algoritmo no determinista en un tiempo
polinomial.

El orden de complejidad exponencial genera muchos inconvenientes a la hora de


resolver problemas por su considerable crecimiento conforme aumenta el número de
estos. Existen diversas técnicas como “ramificación y poda” que permite recorrer un
árbol de soluciones para encontrar la más óptima de ellas o “programación dinámica”
que permite eliminar el problema de complejidad exponencial cuando la solución utiliza
algún método recursivo de resolución de problemas.

La máquina de Turing permite lidiar con ambos tipos de complejidad siempre y cuando
exista una solución. Los problemas que pueden ser resueltos por una máquina de Turing
determinista son de tiempo polinomial, mientras que una máquina de Turing no
determinista puede resolver problemas de tiempo exponencial.

COMPLEJIDAD Y EFICIENCIA DE ALGORITMOS


5

Computación cuántica
Los estudios de la Computación Cuántica se remontan a 1981, por parte de Paul
Benioff, cuando surge la computadora cuántica de Benioff que es una idea que expone
que la cinta de la máquina de Turing podría ser reemplazada por una serie de sistemas
cuánticos. Es decir, que en lugar de trabajar con voltajes eléctricos sea a nivel de cuánto.
Posteriormente en la década de los 90, y luego del aporte de especialistas como el físico
David Deutsh, surgieron los primeros algoritmos cuánticos, aplicaciones cuánticas y las
primeras máquinas capaces de realizar cálculos cuánticos.

La computación cuántica es un paradigma de computación distinto al de la computación


clásica. Se basa en el uso de qubits en lugar de bits, y da lugar a nuevas puertas lógicas
que hacen posibles nuevos algoritmos. Un bit solo puede tomar dos valores y un qubit
toma dos valores y además los toma a la vez (00,01,10,11). Por ello, existen mayores
facilidades al momento de realizar operaciones al mismo tiempo. Con respecto al
espacio de estado, cuando utilizamos los qubits estos espacios crecen
exponencialmente, pero cuando utilizamos los bits, crece, de forma lineal.

De manera tradicional, juntando n bits, podemos representar números y operar sobre


esos números, pero con limitaciones ya que sólo podemos representar hasta 2n estados
distintos, y si queremos cambiar x bits tenemos que realizar al menos x operaciones
sobre ellos, es decir, no hay forma de cambiarlos sin modificarlos. La superposición y el
entrelazamiento nos permiten reducir esas limitaciones, con la superposición, podemos
muchos más estados, y el entrelazamiento mantiene fijas ciertas relaciones entre qubits
de tal forma que las operaciones en un qubit afectan forzostamente al resto.

Otra de las ventajas que aporta la computación cuántica son la aplicación masiva de
operaciones en paralelo y la capacidad de aportar nuevas soluciones a problemas que no
son abarcables por la computación cuántica debido a su elevado coste computacional.
Sin embargo, y a pesar de las ventajas expuestas anteriormente, un ordenador cuántico
solo será eficiente para un rango de tareas determinado. Esto implica que habrá ciertas
funciones en las que no será una ventaja utilizar la tecnología cuántica frente a la
computación clásica actual.

La teoría de la complejidad computacional le asigna la clase BQP a los algoritmos que


pueden ser resueltos en un computador cuántico en tiempo polinómico con un margen
de error promedio a 1/3. En el análisis de los algoritmos cuánticos es habitual comparar
la cota superior asintótica con el mejor algoritmo clásico conocido, o, si el problema
está resuelto, con el mejor algoritmo clásico posible.

Otra clase conocida de la complejidad computacional cuántica es QMA el análogo de la


clase polinomial no determinista NP que conforma a todos los problemas de decisión en
tiempo polinomial.

COMPLEJIDAD Y EFICIENCIA DE ALGORITMOS


6

La teoría de complejidad algorítmica cuántica sigue en constante desarrollo conforme


crece el número de algoritmos cuánticos. Muchos de esos algoritmos mejoran
considerablemente el orden de complejidad como es el caso del algoritmo de Shor que
descompone en factores un número N en tiempo O((log N)3) y espacio O(logN). La
implementación de este algoritmo se puede llevar a cabo de manera clásica o utilizando
circuitos cuánticos (que no han sido llevados a la práctica todavía). Esta última
implementación es (por supuesto) la más conveniente cuando se desea encontrar el
orden, un parámetro muy necesario a la hora de encontrar los factores primos de un
cierto número.

Los algoritmos clásicos conocidos no pueden hacer esto en tiempo O((log N)k) para
ningún k, así que llegan a ser rápidamente poco prácticos a medida que se aumenta N.
Por el contrario, el algoritmo de Shor puede romper RSA (Rivest, Shamir y Adleman,
algoritmo para encriptar firmas digitales) en tiempo polinómico. También se ha
ampliado para atacar muchas otras criptografías públicas.

Conclusión
La teoría de complejidad de algoritmos continúa avanzando y se desarrollan nuevos
conceptos que permiten mejorar la eficiencia y atacar de distintas maneras un problema
difícil de tratar. El tiempo y el espacio se volvieron elementos sensibles en un mundo en
el que la información se multiplica a cada segundo, el hardware potente es muy costoso
y la paciencia se desborda aun cuando el procesamiento trabaja en términos de
nanosegundos. Con la computación cuántica vendrán muchos cambios que seguramente
favorecerán todos los ámbitos informáticos. Por el momento, las técnicas de diseño de
algoritmos, los análisis de complejidad, el paralelismo, los sistemas distribuidos siguen
creciendo y nos ofrecen soluciones en muchos casos intelectuales y de muy bajo costo
para mejorar considerablemente el rendimiento.

La teoría de complejidad cuántica, por otro lado, sigue evolucionando, aunque, en la


mayoría de los casos, sin poder llegar a la práctica. De todas maneras, son avances que
algún día verán la luz y serán el nexo hacia nuevos avances en el mundo de la
informática y la computación.

Bibliografía
María del Carmen, Gómez Fuentes, Jorge Cervantes Ojeda. Introducción al análisis y
diseño de algoritmos. Universidad Autónoma Metropolitana. México. 2014.

COMPLEJIDAD Y EFICIENCIA DE ALGORITMOS


7

Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. Introduction


to Algorithms. The MIT Press. London, England. 2009.

Rosa Guerequeta García, Antonio Vallecillo Moreno. Técnicas de diseño de


algoritmos. Universidad de Málaga. 1997.

Wikipedia
http://www.wikipedia.org

TextosCientíficos
http://www.textoscientificos.com

Giematic
http://www.giematic.eui.upm.es

COMPLEJIDAD Y EFICIENCIA DE ALGORITMOS

También podría gustarte