Introducción a la computación cuantica (Parte 1)
Tags: quantumcomputing, science, spanish
Published: 2023-02-18 00:09:41

*La imagen de portada fue hecha por [Manuel](https://unsplash.com/es/@manueljota?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) y rescatada de [Unplash](https://unsplash.com/es)*

<hr/>

Esta es una serie donde voy a documentar mi proceso de aprendizaje, voy a investigar sobre la computación cuántica, como funciona, como programar con Qiskit y otros temas a futuro. Esta serie va a detallar mi viaje por el conocimiento de uno de los temas que en mi opinión personal considero importante para el futuro de la computación. 

La estructura de los artículos y su orden se basa en la estructura de distintos libros de computación cuántica que puedes encontrar en la bibliografía.

Computación cuántica es un campo multidisciplinario que consiste en usar los fenómenos y conocimientos actuales de la mecánica cuántica a pequeña escala para poder realizar cálculos sobre estructuras informáticas con una mayor velocidad respecto a la computación cotidiana (computación clásica).

Si bien los computadores cuánticos no ofrecen un reemplazo a los computadores actuales, si nos ofrecen un gran complemento para poder acelerar las capacidades de cómputo actuales. 

Actualmente, la computación cuántica se usa como complemento en muchos casos al hardware común. En este artículo veremos algunas diferencias y conceptos básicos para entender la computación cuántica y los artículos futuros. 


## ¿Por qué es importante la computación cuántica?
En 1985, en un artículo llamado "Simulating Physics with computers" publicado en 1982, Richard Feynman (Físico teórico) habló sobre el problema de simular la física cuántica con computación clásica, y planteo un sistema de computación para simular sistemas cuánticos con mayor precisión, ese sistema se llamó Computadora Cuántica. También planteo que los problemas que podía resolver el nuevo sistema de computación, no eran posibles de simular en una computadora clásica.


### Superposición y el Q-Bit
La superposición es algo curioso, nosotros damos por hecho de que si compramos un cuaderno rojo en la tienda, si lo llevamos a una capa de abstracción, podríamos pensar en el color del cuaderno como una propiedad, y tendríamos el color rojo como una constante en nuestra estructura, lo compramos rojo, no tendría sentido que mañana fuera azul. 

Ahora, si pensamos en términos de mecánica cuántica, es un poco distinto, el cuaderno sigue teniendo una propiedad color, el cual puede ser rojo y azul al mismo tiempo, es decir, pensando en términos cuánticos, el cuaderno en su propiedad de color tiene dos colores al mismo tiempo, es decir, es rojo y azul al mismo tiempo. 

Entendiendo que el color es una **propiedad física** inherente al cuaderno, imagina que hacemos una medición sobre esa propiedad, lo curioso es que la medición solo nos arrojará un resultado, **rojo** o **azul**, nunca nos dará un indicio que es de dos colores al mismo tiempo. 

Aunque esto suene un poco extraño, es la forma exacta sobre como funcionan los Q-Bits, ahora hagamos el paralelo donde la propiedad de color, la renombramos como "espín". Pero más adelante volveremos a esta noción, pero para abrir el apetito, a decir lo siguiente: Las computadoras clásicas se basan en 0 y 1, y también hay una notación simbólica parecida en la computación cuántica y es, |0〉 y |1〉. Por ahora solo quédate con esta noción de la superposición y la propiedad de espín.

### Aplicaciones
El título intenta dar razones para aprender computación cuántica, y aquí vamos a repasar aplicaciones comunes para la computación cuántica. 

#### Simulaciones Físicas
La computación cuántica, como la planteó Feynman fue principalmente propuesta por su potencial de simular sistemas cuánticos complejos con mayor precisión, podríamos por ejemplo simular materiales, reacciones químicas, o interacciones moleculares. Esto nos podría ayudar a entender mejor estos sistemas y como manipularlos.

#### Machine Learning
La computación cuántica podría acelerar de gran el proceso de entrenamiento y evaluación de modelos de Machine Learning, en la computación cuántica el aprendizaje de máquina aún es un campo relativamente prematuro, pero los avances de la tecnología nos ayudará a seguir expandiendo las capacidades de estas máquinas. 

Otra forma de aprovechar las capacidades cuánticas en este campo  es la computación híbrida, en esta se combinarían ambos enfoques, el clásico y el cuántico y de este modo hacer procesamiento de imágenes o procesamiento del lenguaje natural. 

#### Finanzas
También la computación cuántica puede tener aplicaciones en las finanzas, principalmente por su capacidad de optimizar y automatizar con más fidelidad el proceso de toma de decisiones de inversión, también se podría mejorar significativamente el proceso de evaluación de riesgos de inversión y significativamente mejorar las predicciones.

#### Criptografía
La criptografía está más presente que nunca en nuestro día a día seamos conscientes o no. La criptografía clásica se apoya en un principio que informalmente se describiría así: "Confío que tu tecnología no es tan avanzada como para factorizar este gran número", ese gran número se llama llave, y nos sirve para encriptar y desencriptar mensajes

Este campo está actualmente en crecimiento y hay bastante investigación al respecto. 

#### Y más
La computación cuántica aún es un campo poco explorado respecto a la computación clásica, por lo tanto, los avances están a la orden del día, y el número de aplicaciones igualmente va al alza, es por esto que te recomiendo que no cierres tu mente solo a las posibilidades expuestas aquí, hay mucho más que aún no se ha descubierto. 

¿En qué son diferentes las computadoras cuánticas a las clásicas?, si estás aquí es porque algo sabes del tema, siempre se dice que la computación cuántica es distinto a la computación clásica, pero ¿en qué son distintas?, ¿realmente sabes por qué lo son?

## ¿Es el computador cuántico, parecido a un computador clásico?

Cuando te sientas en tu computador, aunque sepas poco sobre *arquitectura de computación*, sabes más o menos cuáles son las partes principales que componen tu computador, por ejemplo:

- CPU (Unidad de procesamiento central)
- RAM (Memoria de acceso aleatorio)
- GPU (Unidad de procesamiento de gráficos)
- Discos Duros

De todos estos dispositivos de la computación clásica, para entender la diferencia entre la computación cuántica y la clásica, primero detallaré como funcionan todos estos dispositivos, la placa madre y la fuente de poder se excluyen a propósito.

Las unidades de procesamiento central, son los cerebros de nuestros computadores, y en la computación moderna se componen de distintas partes: 
- CU (Unidad de control)
- ALU (Unidad Aritmética Lógica)


No entraré en muchos detalles, sino que daré una explicación bastante escueta de cada una de las tareas que cumple cada una: 
- CU: La unidad de control decodifica las operaciones del ciclo de instrucciones. La principal (MU o RAM) función de la unidad de control es decodificar las instrucciones que se leen de la memoria principal del computador. La forma en que la unidad de control obtiene la información desde la memoria principal es usando el contador de programa (PC), el PC es un registro del procesador que retiene la dirección de la instrucción que se está ejecutando en el momento, alterando el registro se pueden acceder a distintos sectores de la RAM. La unidad de control también se encarga de regular la velocidad del ciclo de instrucciones, regulando la velocidad del reloj. La unidad de control igualmente regula las operaciones de varios componentes del hardware del computador, generando las señales de control. Estas señales de control son transmitidas al hardware a través de los Bus de control. 

- ALU: es la encargada de ejecutar las instrucciones aritméticas y lógicas, la unidad de control se encarga de decodificar la información como operandos y operadores para que la ALU pueda llevar a cabo las operaciones del procesador.
	- Las operaciones de las que se encarga la ALU son: suma, resta, incremento, decremento, and, or, xor, rotl, rotr, comparaciones y complementos.

La memoria RAM funciona como un almacenamiento temporal, la RAM almacena valores en que se usan los programas para realizar sus operaciones, puede almacenar tanto resultados completos como incompletos. El procesador accede a la RAM para leer instrucciones, la dirección se almacena en el PC. A través de los buses de conexión de la RAM se pueden leer y escribir valores, cada vez que abrimos un programa en nuestros computadores, cada variable, instrucción, se va directamente a la memoria RAM.

La GPU es un poco distinta al procesador, debido a que la GPU puede procesar una cantidad mayor de valores al mismo tiempo. Las GPU son sumamente eficientes en la manipulación, cálculo y transformación de matrices, es por eso que la forma principal de usarlas es a través de transformaciones lineales ([¿Qué son las transformaciones lineales?](https://www.youtube.com/watch?v=YJfS4_m_0Z8&t=326s&ab_channel=3Blue1BrownEspa%C3%B1ol])). Las GPU también tienen su memoria RAM donde almacenan los datos que el procesador mueva para que la GPU pueda calcular y comunicar los resultados de vuelta a la unidad de control.

Teniendo todo esto en cuenta, quizás una de las representaciones más pobres en donde encaja nuestro computador cuántico, es en la comparación directa con la GPU, Aunque son distintos a las GPU en la mayoría de los aspectos, ambas requieren al álgebra lineal para comunicarse, quizás la forma de trabajar con ambos sea totalmente distinta, pero su funcionamiento más que pensar en una pieza de Hardware completa como la que tenemos en nuestros hogares, bolsillos etc., es pensarlo como un complemento para acelerar la computación. 

## Aritmetica

Como bien sabemos, los procesadores normales trabajan con la aritmética binaria. La forma en que tenemos de generar resultados con los computadores convencionales es a través de manipulación de bits. Los bits tienen un valor conocido que puede ser 1 o 0. Por otro lado, en la computación cuántica, tenemos que hacer manipulación de Qbits, estos pueden estar en un estado de superposición, es decir, que pueden ser 0 y 1 a la vez. 

La manipulación de Qbits se basa en las leyes de la mecánica cuántica, lo cual puede llevarnos a fenómenos cuánticos como la interferencia o entrelazamiento cuántico. Pero el funcionamiento de los Qbits a fondo, será tema para el siguiente artículo, espero que este artículo haya servido para abrir tu apetito respecto al potencial de la computación cuántica. 

## Conclusión

Si bien la computación clásica no será reemplazada por la computación cuántica, es importante aprender a usarla, ya que puede acelerar la capacidad de cómputo considerablemente. Hoy en día "computación cuántica" es un término empleado por las personas comunes, pero no todas saben exactamente a que se refiere, espero este primer artículo te dé una mejor idea sobre a lo que se refiere el término "computación cuántica".

## Agradecimientos

Si estás leyendo esto, te agradezco el interés por este artículo, recuerda compartirlo con tus contactos, seguirme para estar enterado de los futuros artículos.
## Bibliografia
1. Sutor. Robert. _Dancing with Qubits_. 1st ed. Packt Publishing Ltd.; 2019.

2. Fisher, Tim. Everything You Need to Know About Computer Hardware. Lifewire. Accessed February 17, 2023. https://www.lifewire.com/computer-hardware-2625895

3. Wong D. How to Backdoor Diffie-Hellman. Accessed February 17, 2023. https://eprint.iacr.org/2016/644.pdf

4. Wong D. How to Backdoor Diffie-Hellman. Published online 2016. Accessed February 17, 2023. https://eprint.iacr.org/2016/644

5. Ledin J, Farley D. _Modern Computer Architecture and Organization: Learn x86, ARM, and RISC-V architectures and the design of smartphones, PCs, and cloud servers, 2nd Edition_.; 2022.

6. IBM. Quantum computing use cases for financial services. IBM. Published September 12, 2019. Accessed February 17, 2023. https://www.ibm.com/thought-leadership/institute-business-value/en-us/report/exploring-quantum-financial

7. Grasselli F. _Quantum Cryptography: From Key Distribution to Conference Key Agreement_. Springer International Publishing; 2021. doi:10.1007/978-3-030-64360-7

8. Li T, Yin ZQ. Quantum superposition, entanglement, and state teleportation of a microorganism on an electromechanical oscillator. _Science Bulletin_. 2016;61(2):163-171. doi:10.1007/s11434-015-0990-x

9. Feynman RP. Simulating physics with computers. _Int J Theor Phys_. 1982;21(6):467-488. doi:10.1007/BF02650179

10. Sutor. Robert. What’s inside a computer? In: _Dancing With Qubits_. 1st ed. Packt Publishing Ltd.; 2019:445.