Whenever a new idea arises, it will be shown that it obeys the need of the times.
Quantum computing is an unanswerable response, with calculations that are astonishingly faster than today, that will make it possible to satisfy the demand for multiples analyzes, with new application methods based on these discoveries in quantum mechanics, both theoretical and experimental.
Mathematics is long overdue to interpret and formalize these processes. Correlatively, work is also underway on the construction of quantum machines that will respond to this need.
So to apply these fundamentals of quantum computing in a practical way, I will use tutorials and the IBM Quantum Experience editor, which is a powerful tool that operates directly from the cloud and It allows you to visually learn how to create quantum circuits, to program graphically with simple and intuitive algorithms.
Incidentally, IBM is not the only giant company that makes it available to developers and academics anywhere in the world.
So does Microsoft, Google, ...etc However, in my opinion, the company that presents the most didactic support and availability for this purpose, until today, is IBM.
Cuando sea que surge una idea nueva se demostrará que obedece a la necesidad de los tiempos.
55
La computación cuántica es una respuesta que se nos avecina inaplazablemente, de cálculos sideralmente más rápidos que los actuales, que harán posible satisfacer la demanda de análisis múltiples,
con nuevos métodos de aplicaciones basadas sobre estos
descubrimientos de la mecánica cuántica,
tanto teórica como experimental.
La matemática está ya hace tiempo para
interpretar y formalizar estos procesos.
Correlativamente,
también se está
trabajando en la construcción de
máquinas cuánticas que responderán a esta
necesidad.
De modo que para aplicar en forma
práctica estos fundamentos de la
computación cuántica, - que intentaré
sintetizar en este vídeo y en el
artículo -,
utilizaré tutoriales y el
editor de IBM Cuantum Experience,
qué es una potente herramienta que opera
directamente desde la nube
y que permite
aprender visualmente cómo crear
circuitos cuánticos, programar
gráficamente con algoritmos simples e
intuitivos.
Por cierto IBM no es la única empresa
gigante que pone a disposición de
desarrolladores y académicos de
cualquier parte del mundo.
También lo
hace Microsoft, Google,.. Sin embargo, según
mi opinión, la empresa que presenta mayor
apoyo didáctico y disponibilidad para
este propósito, hasta hoy, es IBM.
+ Esquema del Contenido
Esquema del Contenido
x
El trabajo está desarrollado como un híbrido texto-aplicación (hiperdocumento), - en ningún caso pensado como para un formato pdf -, su contenido intenta responder un conjunto de preguntas implicitas que se enmarcan dentro de los siguientes puntos:
Articulación de Matemática y Computación Cuántica.
Marco teórico y conceptos claves.
Metodología y Resultados Paralelos.
Recomendaciones y Conclusiones.
El contenido se distribuye en tres partes:
Parte I:
Breve repaso de los conceptos de almacenamiento primario de datos aplicado a los sistemas clásicos de computación y la definición y representación matemática del qubit, incluyendo un conciso análisis matemático del concepto de superposición, complementado con simuladores animados y con una serie de breves notas adjuntas desde el punto de vista de la Mecánica Cuántica.
Parte II: El problema cuántico, orientado al Algoritmo de Deutsch en todas sus dimensiones - Descripción de Puertas, Estados y Circuitos Cuánticos. Desarrollo algebraico del llamado oráculo o 'caja negra' como una realización computacional concreta dentro del 'Circuit Composer - IBM Quantum Experience'. Desagregación detallada del operador lógico del Algoritmo de Deutsch sobre una función binaria, representada finalmente en una reducida formulación.
Parte III
Epílogo del trabajo, donde se hacen consideraciones generales bosquejando un marco teórico, un breve párrafo sobre posibles escenarios en el futuro y el impacto de la computación cuántica en la sociedad. Se cierra el epílogo con los objetivos específicos del trabajo.
+ Preguntas Implícitas
Preguntas Implícitas
x
¿Cómo podemos solucionar complejos problemas informáticos que involucran una gran cantidad de factores paralelos y simultáneos?
¿Cómo comenzar el proceso de pensamiento y aprendizaje de enfoque en la programación cuántica computacional?
Frente a un océano de papers académicos de facultades sagradas, ¿Cuál es el rol de los equipos de pequeñas empresas de tecnología y desarrolladores autónomos en el intento de compartir experiencia y conocimiento?
¿Por qué es necesario buscar nuevas formas de contribuir comunitariamente en el ámbito de la computación cuántica?
El presente artículo no es una monografía académica plana con los patrones tradicionales de las publicaciones científicas, sino que intenta ser una herramienta de conocimiento interactivo simple, pero que efectivamente pueda lograr sus objetivos de entregar los Conceptos Matemáticos Básicos de Computación Cuántica.
Es decir, la publicación no responde a la metodología clásica ni a las exigencias normativas como un abstract (resumen) o citas textuales referenciadas, notación especial para una publicación impresa de índole científica.
El diseño del artículo es más bien una herramienta hipertexto-aplicación para la formación matemática en el ámbito de la computación cuántica. Donde se propone, - en primer lugar-, que sus lectores se sientan jóvenes, quienes logicamente son usuarios y programadores cibérneticos desde el inicio de sus vidas.
Para intentar lograr este efecto amigable e interactivo, el documento está hecho como un híbrido texto-aplicación, dotado de un menú flotante con el índice. El botón localizado en el margen inferior derecho, se utiliza para subir al inicio, pero también sirve para abrir el menú en contexto, presionando el botón derecho sobre este ícono.
Los textos explicativos de contexto acerca de los temas de Introductorios, Esquema del Contenido, Preguntas Implícitas, - que se deben intentar responder-, e incluso este mismo párrafo Estructura y Uso, se diseñaron de manera opcional sin despliegue de su contenido, a fin de que el lector, - a través de un botón-, sea quien elige abrir o cerrar la ventana con ese objeto de lenguaje verbal descriptivo.
Las notas asociadas con definiciones, aclaraciones, etc.. juegan un rol de primer orden en la complementación del tópico. Estas notas se rotulan en un pequeño círculo al final del párrafo, de modo que al presionarlo se despliega la nota en una ventana.
También se anexan un par enlaces a vídeos, se incorporan simuladores dinámicos en función del número de qubits y animaciones didácticas del concepto de superposición y entrelazamiento cuántico.
El argumento cuántico central y constante, a lo largo del cuerpo de la presentación, es converger hacia la comprensión del Algoritmo de Deutsch.
En el epílogo se pretende dar un marco teórico. Del mismo modo las notas utilizadas al pie de los párrafos se agrupan hacia el final del documento.
A continuación se cierra con la Videografía y Bibliografía, la cual admite abrir directamente cada referencia desde su fuente, sólo presionando sobre el links. Todas estas decenas de referencias han sido muy importantes, le agradezco a sus autores y las recomiendo.
Publicaciones tales como el video original de David Deutsch acerca de su algoritmo, las clases con tiza y pizarrón de Eduardo Sáenz de Cabezón en México, los ejercicios de David McMahon, el enfoque de la física de Miguel Orszag, las explicaciones de Felipe Fanchini,.. etc.., Por cierto, muchísimas otras precisiones que obtuve de trabajos, monografías, tesis, comentarios, videos y audios que no me fue posibles mencionar.
Para dotar de interactividad, la publicación en Internet, se desarrolló sobre ASP (Active Server Pages) en un servidor de DocIRS alojado en Amazon (AWS), cuenta con una serie de componentes programadas, sea en .NET, servicios web externos y una serie de Javascript propios y públicos, que permiten al usuario visualizar una buena notación matemática, simuladores y valores dinámicos aleatorios, animaciones con resultados también aleatorios.
El usuario puede comenzar por donde le sea más útil y pertinente, la idea del autor es compartir su acotado conocimiento, dentro del enorme océano de inteligencia y publicaciones existentes acerca del tema. El contenido es libre de uso y gratuito, sin publicidad alguna.
La idea subyacente del artículo, es intentar explicar en forma amistosa la semántica diferente que tienen los algoritmos de computación cuántica, tanto con respecto al lenguaje humano como a los lenguajes estructurados de la computación clásica actual. Hacer un cambio de la forma repetitiva y mecánica que tenemos los equipos de desarrollo computacional tratando de comprender mejor la lógica de la construcción de un algoritmo cuántico y la noción del paralelismo. Así mismo, inspirar hacia la necesidad de equiparnos con más matemática.
En síntesis la finalidad del documento es comunitaria, dirigida a los jóvenes e interesados de todas las disciplinas científicas a prepararse, para ir incorporando paulatinamente la computación cuántica en su futuro quehacer.
I. Computación Clásica versus Computación Cuántica
Clásica ~ Bit
El bit (Binary Digit) es la unidad mínima de información empleada en informática, que se expresa por dos posibles estados $0$ y $1$. Con esta base binaria se hace uso directo del almacenamiento primario de datos.
Es muy importante en esta comparación tener presente, que en el estado que está el bit es el estado que observamos del bit.
En efecto, el estado del bit es físicamente observable, y se puede guardar como tal en un dispositivo de almacenamiento digital, se trabaja con la dirección de magnetización u otras marcas binarias de esos núcleos. Estas asignaciones son apropiadas para construir un sistema de numeración binaria de almacenamiento, porque permite utilizar los dígitos binarios $0$ y $1$ para representar datos.
Sobre esta unidad básica de información, llamada bit se basa la computación clásica.
A continuación se ilustra una interfaz, - que contiene un algoritmo-, que transforma números decimales a su equivalente binario. (Ver Algoritmo para el Cambio de Base Numérica)
La unidad básica de la información cuántica es el qubit.
Un qubit corresponde a un sistema físico que
tiene dos estados ortogonales, que denotamos de acuerdo a la Notación de Dirac1 como:
$|0〉$ y $|1〉$. Los estados del sistema, que denotamos $|ψ〉$ se denominan kets.
Estos estados no vacíos se tratan como vectores de base2. Es decir, se aplica una correspondencia hacia una estructura algebraica de Espacio Vectorial.
Esto implica que la estructura está dotada con una operación interna Adición, y una operación externa Producto por un escalar, definida sobre un cuerpo K (como los números Reales o los números Complejos).
Espacio Vectorial - Notación Dirac
Los qubits se tratan dentro de un Espacio Vectorial Complejo3
y se determina que por las clásicas 8 propiedades fundamentales:
ii. Tiene Elemento Neutro Aditivo $|x〉 + |0〉 = |0〉 + |x〉 = |x〉$
iii. Tiene Elemento Inverso $|x〉 + |-x〉 = |0〉$
iv. Conmutativa $|x〉 + |y〉 = |y〉 + |x〉$
v. Multiplicación de vector por escalar $a(b|x〉) = (ab)|x〉$
vi. Distributiva Escalar $a(|x〉 + |y〉) = a|x〉 + a|y〉$
vii. Distributiva $(a + b)|x〉 = a|x〉 + b|x〉$
viii. Tiene Neutro Multiplicativo $1|x〉 = |x〉$
Superposición
Por tanto, un qubit puede también encontrarse en una Superposición de los estados $|1〉$ y $|0〉$. Es decir, como una combinación lineal de los vectores de base, de la forma:
$\alpha_0|0〉+\alpha_1|1〉$. Estos coeficientes $α_i$, son denominados amplitud de probabilidad4, los cuales son números complejos que se utilizan para describir el comportamiento del sistema. La suma del cuadrado de cada uno de esos módulos,- ($|α_0|^{2} + |α_1|^{2} = 1$) -, representa una probabilidad o densidad de probabilidad. Es decir, estos coeficientes $α_i$ son de la forma $z = x + iy$, donde $i = \sqrt{-1}$.
Esta unidad básica de información cuántica que se denomina qubit, se verá de similar a un bit, pero a medida que avanzamos veremos que son fundamentalmente diferentes y que esta diferencia permitirá hacer un procesamiento de información nuevo y muchísimo más potente. Por ejemplo, se probó que dada una función $f(x)$, un algoritmo cuántico es capaz de evaluar la función en múltiples valores de x simultáneamente. (Esto no es posible en el sistema tradicional con bits. Ver Desarrollo Algoritmo de Deutsch más adelante).
Desde ya la diferencia con el bit en cuanto al almacenamiento es enorme5, dado que el estado de un qubit en Mecánica Cuántica representa niveles de energía de una partícula subatómica y por tanto su almacenamiento físico es en un dispositivo atómico, el cual permite utilizar los múltiples estados en forma simultánea. Es ahí entonces, donde se van guardando los estados intermedios que adquiere el qubit.
De igual modo, la capacidad de ambas unidades básicas de información independientemente de la velocidad, son cuantitativamente diferentes. En efecto, el número de estados que se alcanza al introducir un qubit es exponencial, a diferencia de los estados que se alcanza al introducir un bit. En computación clásica se trabaja con $n$ bits y si se aumenta en un bit, el cambio es a $n+1$ estados de almacenamiento. Es decir, la capacidad de medición física del bit es líneal.
En contraste, en un sistema cuántico si se trabaja con $n$ qubits, al aumentar en $1$ qubit se duplica la información que almacena el estado interno ($2·2^{n} = 2 ^{n+1}$). Es decir, el incremento del número de qubits tiene un efecto de medición física exponencial sobre el numero de estados o vectores. Sin contar con los estados en superposición del qubit, que pueden ser infinitos.
Por ejemplo con $n=2$ bits, se opera con $2$ estados básicos {$01,10$}. Mientras que con $n=2$ se cuentan $4$ estados básicos $|00〉,|01〉,|01〉,|11〉$, y con $3$ qubits 8 estados, $4$ qubits 16 estados,...y la serie en potencias de $2$ continúa así sucesivamente. (Ver Eligir Nº Qubits - Simular Amplitudes Aleatoriamente)
En el párrafo de paralelismo cuántico, - más adelante-, veremos que uno de los efectos más significativos de la aplicación de la superposición cuántica dentro de un algoritmo, justamente se basa en el hecho de poder realizar múltiples operaciones sobre un mismo estado cuántico.
Obviamente, esta propiedad implica un tremendo incremento en la capacidad computacional, dado que se computan secuencias de transformaciones unitarias simultáneas por cada elemento en superposición, generando un procesamiento masivo de datos paralelos.
Es decir, para darnos una idea tomemos un numero aleatorio cualquiera $\alpha \in R ,\quad$ tal que $0 < \alpha < 1$. Entonces la posición del estado básico $|0〉$ tiene la amplitud de probabilidad $\sqrt{\alpha}$ y en la posición del estado básico $|1〉$ la amplitud de probabilidad $\sqrt{1-\alpha}$.
$$\psi=\sqrt{\alpha}\ |0〉 + \sqrt{1-\alpha}\ |1〉$$
Donde la suma de módulos (o normas) de los coeficientes o amplitudes al cuadrado es obviamente igual a $1$.
Esta relación usada para calcular probabilidades de estados cuánticos se llama la Regla de Born6. Este postulado implica que la evolución del sistema no es arbitraria, teniendo en cuenta que debe manejarse manteniendo la propiedad $|α_0|^{2} + |α_1|^{2} = 1$.
y se verifica que $|α_0|^{2} + |α_1|^{2} = 1$, entonces $α_0$ y $α_1$ son amplitudes de probabilidad compleja. De modo que, si $|\alpha_0|^{2}=0.4$ y $|\alpha_1|^{2}=0.6$, esto implica que existe la probabilidad en un 40% de colapsar hacia $|0〉$ y del 60% de que el qubit pudiese colapsar a $|1〉$.
Decimos colapsar, dado que al momento de observar o Medir una superposición8, el sistema sólo permite mostrar uno de los dos estados básicos $|0〉$ o $|1〉$.
Estado Superposición
Estado Colapso
No es posible observar un qubit en estado de superposición. En el sensible mundo microscópico el observador interviene el sistema. En otras palabras, esto significa que sólo es posible saber el sistema estará en uno de esos probables estados cuando midamos, sin saber con certeza cuál será el resultado9.
Es decir, va a colapsar a uno de los estados básicos dependiendo de la distribución de probabilidad que tenga en ese instante. Considerando que en cada micro-nano-segundo de tiempo, el qubit se encuentra en una superposición de estos estados.
$|\alpha_0|^{2}$: Señala la probabilidad de encontrar que el ket $|ψ〉$ en el estado
$|0〉$
$|\alpha_1|^{2}$: Señala la probabilidad de encontrar que el ket $|ψ〉$ en el estado $|1〉$.
Simulador Moneda Girando10
←
Mientras gira la moneda no es posible determinar el estado en que se encuentra.
Según la Física los sistemas cuánticos se propagan como ondas, pero se detectan como partículas. De ahí que los estados en superposición se estiman o intentan detectar probabilísticamente mediante combinaciones lineales11.
Se reitera una vez más, que la velocidad y capacidad de información que admite almacenar un "disco duro" cuántico es gigante comparado con la información que se almacena un sistema digital clásico.
Esta capacidad de un sistema cuántico, está dada porque no sólo contiene los estados básicos, sino una descripción de la probabilidad, - casi infinita-, de que cada qubit se encuentre entre cero o uno.
En computación cuántica el sistema pueda ser manipulable en su evolución12. Sin embargo, existe un obstáculo aun hoy, en cuanto al almacenamiento. El problema de los estados cuánticos que forman los qubits son muy frágiles, y colapsan en cuestión de nanosegundos.
13
Matemáticamente nos referimos a un Sistema Cuántico de n-qubits, cuando dado un entero $n \in \mathbb{N}$, el n-qubits sistema varía en un espacio de estados de $m =2^{n}$ dimensiones. Cualquier vector unitario14 de la forma:
La notación de Dirac incluye una operación llamada producto tensorial, denotada como $⊗$. Esto es importante porque en la computación cuántica, un vector de múltiples qubits, es posible descomponerlo como producto tensorial de los dos vectores de estado básico.
En efecto, podemos extender la notación a varios qubits y configurar matemáticamente un sistema cuántico. A continuación se verá que cuando se trata de múltiples qubits, el número de vectores o de estados que se incorporan a la combinación lineal. Si $n$ es el número de qubits entonces los estados que se generan son $2^{n}$, dado que responde a la cantidad de combinaciones que se configuran con los estados básicos {$|0〉, |1〉$}.
Luego, describiendo los vectores múltiples por extensión, tenemos:
$2^{n}$ Estados Básicos con $n$ qubits en cada vector:
$$|\underbrace{0 0 0\cdots 0}_{n\text{ veces}}〉|000\text{…}10〉|000\text{…}100〉\text{…}|111...1〉$$
Donde cada uno de estos vectores pertenece a la base canónica $C^{2n}$
Frame con Rutina de Simulación Amplitudes Aleatorias en $R$
En la simulación antes descrita, se muestra el cálculo de los múltiples coeficientes (o amplitudes) de los qubits en los números Reales, a fin de que la suma de sus normas al cuadrado sea igual a $1$.
Este cálculo se realiza de la siguiente forma:
i) Tomando un conjunto de $2^{n}$ de valores aleatorios en el intervalo $]0,1[⊂R$
ii) Se normalizan (para que su sumatoria sea igual a 1;
ii) Se extrae la raíz cuadrada de cada uno de ellos, de ese modo que ese conjunto de valores, - sean negativos o positivos-, al elevarlos al cuadrado sumen $1$.
Mientras más qubits maneje un procesador cuántico, la potencia de cálculo es de magnitud astronómica. Los experimentos de cálculo realizados hasta hoy con estos aparatos, son capaces de manejar y calular en segundos estimaciones que en un computador normal demorarìa 10.000 años.
En términos computacionales, se estima que las operaciones de coma flotante por segundo de un computador cuántico de 30 qubits equivaldría a un procesador convencional de 10 teraflops.(billones de operaciones en coma flotante por segundo).
Los gigantes de la tecnología como IBM, Google, Intel, Microsof, D-Wave Systems, Laboratorio Nacional de Ciencias de Información Cuántica en Hefei - China, universidades europeas y norteamericanas están experimentando en fase de desarrollo, con computadoras cuánticas de propiedades específicas de 49, 54, 60, 79,..128,.. qubits.
En términos de dimensión de los espacios vectoriales que están generando estas computadoras son de proporciones de escala logarítmica.
Por ejemplo, un estado cuántico $\psi$ del ordenador de $n=79$ qubits, está representado por una combinación líneal de $m=2^{79}$ vectores. Es decir, $Ln(m)=79·Ln(2)$. Si se estima esta cifra $m$, es la siguiente:
$$Ln(m)= 54,75862726 \qquad \Rightarrow \quad m= 6,04463E+23$$
Dada estas órdenes de magnitud de la dimensión de las bases de estos espacios vectoriales, es que se requiere una notación especial, para poder expresar matemáticamente estas superposiciones y su colapso al medir. A ese efecto, es necesario tratar operaciones complementarias a la notación de Dirac.
Ejemplo de normalización con números aleatorios Reales:
Tomemos arbitrariamente un conjunto con cuatro valores {$0.34, 0.56 , 0.48, 0.67$} ($α_i$=Math.random). Entonces,
Aleatorios
Normalización
Raíz Cuadrada
Cuadrado
0.34
0.165853659
0.407251346
0.165853659
0.56
0.273170732
0.522657375
0.273170732
0.48
0.234146341
0.483886703
0.234146341
0.67
0.326829268
0.571689836
0.326829268
2.05
Σ|αi|2 = 1
La normalización significa que cada uno de los valores reales aleatorios del conjunto {$0.34, 0.56 , 0.48, 0.67$}, se divide por su suma $Σ|α_i| = 2.05$ (Ver primera columna de la tabla).
La segunda columna contiene los valores normalizados de la primera columna, $u_i$ normalizados.
En la tercera columna se extrae la raíz cuadrada de cada uno de ellos los $|u_i|$ y se obtiene la amplitud de probabilidad o coeficiente.
En la cuarta columna se sitúan los valores $u_i^{2}$, cuya suma es igual a $1$.
Por tanto, el conjunto de amplitudes de probabilidad o coeficientes reales estimados es:
Dado un $n∈\mathbb{N}$. Sea $m=2^{n}$, entonces el conjunto $A =${$α_1, α_2, α_3,...., α_m$} de $m$ valores seleccionados aleatoriamente, tal que $Σ|α_i|^{2} = 1$ , donde cada $α_i ∈R$ y $0< α_i< 1$ , con $i = 1,2,3,..m$. Se determina, - en este ejemplo en particular-, con las siguientes funciones en javascript:
<script>
function Signo_Aleatorio()
{
if (Math.random()<0.5)
{
return -1;
}
else
{return 1;}
}
var coef=new Array() //Arreglo global
function Amplitudes(m)
{
var Suma=0;
for (var i=1;i<=Math.pow(2,m);i++)
{
coef[i]=Math.random();
Suma=Suma+coef[i];
}
for (var i=1;i<=Math.pow(2,m);i++)
{
coef[i]=coef[i]/Suma;
coef[i]=Math.pow(coef[i],0.5);
coef[i]=Signo_Aleatorio()*coef[i];
}
}
/*Test suma probabilidades de suma coeficientes al cuadrado*/
alert(Test_Suma_Cuadrados(2))
</script>
Base Notación Dirac y Matricial
Matriz de $\quad 2^{2} \times 2^{2}\quad =\quad$4 $\times$ 4
Seleccione Nº Qubits
Coeficientes Complejos
El hecho de que las probabilidades deben sumar uno, pone algunas restricciones sobre lo que pueden ser los coeficientes o amplitudes en la combinación lineal:
$|ψ〉 = α|0〉 + β|1〉$
Y dado que los cuadrados de estos coeficientes $α$ y $β$ están relacionados con la probabilidad de obtener un resultado de medición, ellos están limitados por el requisito:
$|α|^{2} + |β|^{2} = 1$
De modo que cuando esta condición es satisfactoria para los cuadrados de los coeficientes de un qubit, se dice que el qubit está
normalizado y admite calcular el módulo de estos números de la siguiente manera 16 :
$|α|^{2}=αα^{*}$
$|β|^{2}=ββ^{*}$
Donde $α^{*}$ es el complejo conjugado de $α$ y $β^{*}$ es el complejo conjugado de $β$.
Es decir, si $z = x + iy$ , entonces el conjugado es $z^{*} = x - iy$, donde $x, y \in R$.
Representación Gráfica de $z$ y $z^{*}$ 17
Por tanto el modulo:
|z|2=(x + iy)(x - iy)=x2 + ixy - ixy + y2
$\Rightarrow$ |z|2 =x2 + y2
Ejemplos:
i. Si $\quad z = 3 - 4i\quad \Rightarrow \quad z^{*}=3+4i,\quad \therefore |z|=\sqrt{5}$
ii. Para el siguiente estado cuántico:
$$|ψ〉=(\frac {1+i}{\sqrt{3}})|0〉-\frac {i}{\sqrt{3}}|1〉$$
Si se realiza una medición,
¿Cuál es la probabilidad que se encuentre el qubit en estado $|0〉$?
Respuesta: La probabilidad de que el ket $|ψ〉$ se encuentre en el estado $|0〉$, es el módulo al cuadrado correspondiente a la amplitud de probabilidad o coeficiente parte real $\alpha_0$, asociado a ese vector:
Por tanto, la probabilidad del que el sistema cuántico $|ψ〉$ se encuentre en estado $|0〉$ es $p = \frac {2}{3}$
Obviamente la probabilidad de que $|ψ〉$ se encuentre en estado $|1〉$ es $q = 1 - \frac {2}{3} = \frac {1}{3}$
Función javascript - Normalización
A continuación, el código de una función en javascript para la normalización de un numero complejo, ingresado en forma separada su parte real e imaginaria.
<script>
function Normaliza_Complejo(z_real,z_imag)
{
/* Se valida previamente que z_real y z_img sea números reales
*/
var modulo=(z_real + z_imag)*(z_real-z_imag)
modulo=Math.abs(modulo)
var raiz_modulo=Math.pow(modulo,0.5)
if (raiz_modulo!=0)
{
var u_real=z_real/raiz_modulo
var u_imag=z_imag/raiz_modulo
if (z_imag >=0)
{
var signo_imag=" + i "
}
else
{
var signo_imag=" - i "
}
}
alert(u_real + signo_imag + Math.abs(u_imag))
}
///// EJEMPLOS
Normaliza_Complejo(33,-15)
Normaliza_Complejo(-7,13)
Normaliza_Complejo(-3,-8)
</script>
Amplitudes de Probabilidad con Números Complejos
En las tablas a continuación se ilustra cómo se normaliza un conjunto de números complejos, a fin de satisfacer el requisito de que la suma de los módulos al cuadrado de las amplitudes de probabilidad de todos los estados posibles es igual a 1.
En este caso de simulación se utilizan números enteros sacados, - tanto la parte real como imaginaria -, aleatoriamente entre -100 y 100. Es decir, $z = x + iy\quad$, donde $\quad x,y \in A\quad$ y $\quad A =${$ n \in \mathbb{Z}\quad/\quad -100<n<100$}.
Nótese que al presionar el botón Medir, colapsa el sistema en el estado básico más probable, de inmediato aparece el botón Superposición que al presionarlo activa la generación de amplitudes de probabilidad dinámicamente y vice versa.
Los coeficientes complejos generados dinámicamente en forma aleatoria en la Tabla#1 se normalizan en $u_i$ en la Tabla#2, y permiten representar el estado de un qubit en superposición. En efecto, valores que pueden describir el comportamiento de un sistema cuántico. El cuadrado del módulo de esta cantidad representa una probabilidad o densidad de probabilidad. La cantidad de $2^{n}$ coeficientes generados se realiza en función del número $n$ de qubits que se está operando.
En general en programación cuántica, se utilizan amplitudes de probabilidad que son equiprobables. Cuando se configuran circuitos con puertas cuánticas y se ejecutan múltiples veces (que es lo usual), las probabilidades tienden a al valor esperado. Es decir, si el número de qubits es $n$, entonces se utilizan uniformemente distribuidos los valores en los coeficientes $α_i=1/\sqrt{n}$. Por ejemplo, la Base de Hadamard (denominada así en honor al matemático francés Jacques Hadamard) en $C^{2}$:
Dada una base ortonormal, cualquier estado puro $|ψ〉$ de los vectores $|0〉$ y $|1〉$ de un sistema cuántico de dos niveles se puede escribir como una superposición de los vectores base, donde el coeficiente o la amplitud de cada vector base es un número complejo. Sin embargo, dado que sólo la fase relativa entre los coeficientes de los dos vectores básicos tiene algún significado físico, podemos tomar el coeficiente de $|0〉$ como real y no negativo.
Complejos Normalizados en Coordenadas Polares
Un numero complejo $z = x + iy$ también se representa en coordenadas polares como $z = r (cosΘ + i·senΘ)$. Para ese efecto, se establece un plano cartesiano donde el eje de la ordenadas $Y$ se utiliza para el coeficiente del imaginario $i$ y el eje de las abcisas $X$ para el valor de la parte real.
Es decir, inicialmente todo $z \in C$ puede expresarse cartesiana y gráficamente como un par ordenado $(x,y)$ sobre el plano y el vector que va desde el origen hasta esas coordenadas lo llamaremos $\overrightarrow r$.
Nótese que al normalizar un numero complejo $z$ en su forma polar o bajo la fórmula de Euler18 $u = e^{iΘ}=cosΘ + i·senΘ$, nos aseguramos que $|u|^{2}=cos^{2}Θ + sen^{2}Θ=1$. Es decir, que la suma de los módulos al cuadrado de las amplitudes de probabilidad de todos los estados posibles es igual a 1.
De esta forma podemos trabajar los estados de los qubits sobre el círculo unitario, que es de radio 1, centrado en el origen (0, 0) sobre el plano Cartesiano. Este sistema se puede generalizar y extender a tres dimensiones. (Ver Esfera de Bloch y IBM Gates Glossary).
La representación esférica de Bloch sólo sirve para describir qubits individuades en un espacio tridimensional, pero no para comprender lo que pasa con múltiples qubits, dado que no puede mostrar entrelazamientos.(Ver The Bloch Sphere)
Círculo Unitario 2D Complejos Forma Polar
Esfera de Bloch19
Operación Matricial - Producto Tensorial
El producto tensorial es muy pertinente para operar sintéticamente
con los qubits, por eso se utiliza el llamado Producto de Kronecker.
En efecto, la operación binaria se aplica a dos (o más) matrices cualesquiera,
con dimensiones diferentes. Si A es una matriz de m x n y B es una matriz de p x q,
entonces el producto de Kronecker A⊗B es la matriz bloque mp x nq.
a11B
a21B
a31B
....
....
am1B
a21B
a22B
a32B
...
...
am2B
a31B
a32B
a33B
...
...
am3B
A⊗B =
...
...
...
...
...
...
am1B
am2B
am3B
...
...
amnB
Ejemplo: Sea A =[0 1] y B= [1 0 0]t, entonces al aplicar la operación matricial de Kroneker, se tiene:
Expresión Matemática de las Relaciones entre los Qubits
Un sistema de Estado Básico de n qubits se puede expresar como un producto tensorial de los estados básicos de sus componentes. Es decir, cada uno de los qubits es una componente individual del sistema. En otras palabras, el estado básico del sistema se puede ver como el producto tensorial de los estados básicos de las componentes de un qubit.
A continuación se ilustra un ejemplo con los pasos intermedios de cómo opera Kroneker sobre las componentes que un qubit:
Notación Sintética que Señala la Posición del $1$
Notación para señalar la posición del $1$ en un vector de la base canónica binaria, cuya dimensión es $2{n}$.
Entonces, sea $p∈\mathbb{N}$, tal que $p≤2^{n}$, donde se define la siguiente expresión binaria, $|p_{|2,2^{n}}〉$, que se describe a continuación:
Por tanto, cada estado básico corresponde a un vector de la base $C^{2n}$, dado por la notación $p≤2^{n}〉$
Ejemplo:
Nótese que en lenguajes de programación (Python o C o Javascript o cuando se utiliza el comando "split" para generar un arreglo, etc..). En ese caso, es necesario hacer una corrección partiendo desde $0$, porque en el presente artículo se usa la convención que empieza a contar desde la posición $0$.
Ejemplo:
Modo Numérico de Representar los Vectores Unitarios
En síntesis se puede utilizar la siguiente notación reducida para representar vectores unitarios con $n$ qubits:
Por ejemplo con $n=2$:
Por ejemplo con $n=3$ qubits:
La forma binaria del número $|6〉$ es $|110〉 ↔ 1·2^{2}+1·2^{1}+0·2^{0}$ y la carga de un registro cuántico con este valor se realiza preparando tres qubits en sus estados básicos:
Estado Producto y Entrelazamiento
Un conjunto de qubits está en Estado Producto si su estado puede expresarse como el producto tensorial de los estados de sus componentes. En caso contrario, se dice que está en Estado de Entrelazamiento.
Este fantasmal estado, conocido como entrelazamiento cuántico20, se produce en sistemas de dos o más qubits, cuando algunos qubits podrían formar un único sub-sistema, donde no es posible modificar el estado de un qubit, sin alterar el estado de los otros.
i) La expresión $[3]$ es un Estado No Básico de superposición, dado que es un sistema de más de un qubit. Es decir, se tiene más de una amplitud diferente de cero.
ii) Se comprueba que la sumatoria de las normas de los coeficientes al cuadrado es igual a 1.
iii) Al segundo miembro de la ecuación $[3]$, - que es como "una suma por diferencia" -, le aplicamos la multiplicación uno a uno de sus qubits con sus coeficientes asociados y demostramos que es un Estado Producto.
Demostración
Por demostrar que se cumple la igualdad, tomemos el segundo miembro de la expresión $[3]$
Esta multiplicación tensorial uno a uno de los factores se marcaron en amarillo y sus resultados parciales arriba con rojo. Luego, sumando los términos que se rotularon con el marco rojo se obtiene el primer miembro de la ecuación $[3]$:
Por tanto es un Estado Producto, dado que la expresión $[3]$, es factorizable, - bajo el producto tensorial- en los estados de sus componentes.
Estado Entrelazamiento:
Demostrar que la siguiente expresión de qubits representa un Estado Entrelazamiento:
$$\frac{1}{\sqrt{2}}(|01〉+ |10〉)\qquad\qquad[4]$$
Demostración:
Por demostrar que la expresión no es un Estado Producto. Es decir, que no es posible expresar $[4]$ como el producto tensorial de los estados de sus componentes.
Está claro que es un sistema no básico de dos qubits y que cumple la condición que la suma de sus amplitudes al cuadrado es igual a uno.
Entonces, supongamos que existen coeficientes diferentes de cero que permiten factorizar o separar la expresión bajo el producto tensorial.
Contradicción, no es factorizable o separable bajo el producto tensorial. Dado que en la expresión $\alpha_0\alpha_2 \neq \alpha_1\alpha_3$, al menos uno de los coeficientes debe ser 0.
Por tanto, la expresión $[4]$ representa un Estado Entrelazamiento.
Es decir, no existen coeficientes $α_i ∈ C\quad \alpha_i\neq 0$, tales que cumplan o posibiliten la factorización de $[4]$. Esto implica que $[4]$ no puede describirse en función de los estados de los qubits que lo componen.
Los estados cuánticos de esta forma, - que se ilustra en el simulador en el siguiente párrafo -, son especiales y se conocen como Estados Bell. En efecto, cuando se mide cualquiera de los dos qubits, tiene una probabilidad de 50-50 de medir 0 o 1. Pero una vez que se haya realizado su medición en ese qubit, el otro remoto tiene un 100% de probabilidad de ser exactamente lo que midió el primer qubit.
Paralelismo Cuántico
Dos partículas subatómicas están en Estado de Entrelazamiento, sin considerar métrica o distancia, ni medios existente de comunicación, pero su comportamiento es como si estuvieran en ambos lados al mismo tiempo. En efecto, cuando una de las partículas colapsa hacia un estado cuántico, la otra partícula entrelazada colapsa hacia el mismo estado. Es decir, se produce un procesamiento simultáneo, en paralelo, que permite la evaluación de miles de combinaciones al mismo tiempo y que permite resultados nuevos e imprevisibles.
(Ver Algoritmo de Deutsch, que fue el primero en aprovechar el paralelismo inherente de los estados de superposición cuánticos.
Es necesario remarcar que la dimensión exponencial de los espacios vectoriales de Hilbert, son el instrumento matemático por excelencia que permitió tratar el paralelismo cuántico, porque interpreta un estado cuántico en superposición operando simultáneamente con todos sus $2^{n}$ vectores de $n$-qubits cada uno.
Así mismo, se recomienda consultar la extensión a n-qubit de este algoritmo cuántico, donde el matemático Richard Jozsa en 1992 contribuyó a mejorarlo, tomando el nombre de Algoritmo de Deutsch-Jozsa. Otro caso importante a consultar y comprender el famoso ejemplo de teletransportación cuántica entre Alice y Bob21.
La probabilidad de intervenir es bajísima, la criptografía cuántica cifra la información de una trasmisión en forma segura. Si alguien escucha, la información se modifica de inmediato, produciendo errores. De modo que no es posible recuperar su contenido.
Esta propiedad de paralelismo admite que una función de múltiples variables f(x1,x3,x3...,xn) que pueden ser operadas en forma simultánea con todas sus variables. Por tanto, supera al clásico sistema computacional basado en bits, dado que es posible tener un número exponencial de estados en un espacio reducido y el sistema cuántico realiza de una sola vez todas las computaciones posibles.
Por ejemplo, un algoritmo en computación clásica busca una carta determinada dentro de un naipe barajado, lo hace con un loop sobre un arreglo que lee secuencial o binariamente cada una de las cartas como una entrada de la rutina. No obstante, con un algoritmo cuántico lee todas las cartas simultáneamente, i.e. cada una de ellas como entrada del algoritmo y obviamente la velocidad de éxito es tiene un 100% de confianza con sólo una llamada.
A continuación, se esquematiza un simulador de donde se sacan 5 cartas aleatorias de un Naipe Inglés de 52 unidades.
Nótese que en la parte superior del tablero se localiza un maso de naipes de tapa azul, desde la cual se emula un loop secuencial de lectura de una función de computación clásica con bits.
En la parte inferior del tablero, se localizan cartas de tapas roja, donde también se emula la extración de la 5 cartas, pero con una función de entrada múltiple simultánea, i.e. de computación cuántica con qubits.
El lector puede desplegar y ocultar varias veces utilizando los botones Abrir y Cerrar o presionando sobre los masos de naipes en forma independiente.
Abrir
5
Abrir
La forma más directa y sencilla de ilustrar esta propiedad con dos entradas, es con una variante de la transformación unitaria CNOT, que desarrolló David Deutsch del Instituto Matemático de la Universidad de Oxford y que actualmente es uno de los algoritmos pilares de la computación cuántica. (Ver Desarrollo Algoritmo de Deutsch más adelante)
Estados Cuánticos Frecuentes Importantes
Estados equipobables de un qubit. Paradoja de Bell, donde {$|+〉 , |-〉$} es también una notación utilizada frecuente de la Base de Hadamard.
Estado de Bell o Paradoja EPR (Einstein-Podolsky-Rosen: "A. Einstein, B. Podolsky and N. Rosen, Can Quantum-Mechanical Description of Physical Reality Be Considered Complete?, Physical Review 47 (1935) 777-780).
El experimento planteado por EPR consiste en dos partículas que interactuaron en el pasado y que quedan en un estado entrelazado. La paradoja EPR está en contradicción con la Teoría de la Relatividad22, ya que aparentemente se transmite información de forma instantánea entre las dos partículas (Ver a continuación Simulador de Entrelazamiento Cuántico).
Distancia inmensurable
No existe medio de comunicación conocido entre ellos
Medir
Medir
Las partículas representadas por los dados en el simulador23, corresponden a un, -vector de más de un qubit-, Estado No Producto o Estado de Entrelazamiento. Es decir, es un estado que no es posible factorizar o separar su formulación matemática. Por tanto, los eventos no son independientes y la probabilidad de la medida, - probada experimentalmente-, es exactamente igual entre los qubits.
Puertas Lógicas Clásicas
Computación Clásica
Para manejar la información almacenada en un conjunto de bits, utilizamos las llamadas Puertas Lógicas, que se basan el Algebra de Bool o Lógica Proposicional con tres conectivas básicas y sus variantes: ~p, p ∨ q, p ∧ q, p ⇒ q, p ⇔ q, (p ⇒ q) ⇔ (~p ∨ q), etc.. junto a las Leyes de Morgan.
La puerta lógica más simple y de carácter unitario es NOT. Las puertas AND y OR son de carácter binario. Todas la demás conectivas se pueden expresar en función de esas tres conectivas, i.e de la negación, la conjunción y la disyunción.
Puerta Not
p
Not p
0
1
1
0
Puerta AND
p
p AND q
q
1
1
1
1
0
0
0
0
1
0
0
0
Puerta OR
p
p OR q
q
1
1
1
1
1
0
0
1
1
0
0
0
Puerta NAND
Existe una puerta lógica NAND, que es particularmente importante en computación, la cual es una composición de AND con NOT. Esta conectiva tiene una propiedad de universalidad24 y es muy utilizada en la programación. En efecto, cualquier circuito lógico clásico se puede hacer con una concatenación de puertas NAND.
Tabla de Verdad NAND
p
q
p ∧ q
~(p ∧ q)
V
V
V
F
V
F
F
V
F
V
F
V
F
F
F
V
p
p NAND q
q
1
0
1
0
1
1
1
1
0
0
1
0
Ejemplo de Suma de $1+1+1$ con Computación Clásica con Bits
La idea del ejemplo es explicar lo más detalladamente posible el desarrollo de esta suma con computación clásica, con el objeto de ir preparando en forma preliminar el algoritmo 1+1+1 con qubits, que ilustraremos más adelante con el Composer Cuántico de IBM. En este ejercicio de computación clásica se utiliza un operador de Thomas Toffoli, que en los años 80 junto a Edward Fredkin descubrieron que se requería un mínimo de tres qubits, - para cualquier computación clásica-, a fin conservar la Reversibilidad.
La extensión a tres qubits de la puerta CNOT es la llamada Puerta de Toffoli o CCNOT, que veremos en el ejemplo análogo como circuito cuántico más adelante.
Tabla Suma 1+1+1 con con Bits
Explicación de Suma de $1+1+1$ con Bits
- Este ejercicio que utiliza bits, ayuda a comprender el mismo algoritmo con compuertas cuánticas, a pesar de la superposición y la Puerta de Toffoli.
- Sea q[0],q[1],q[2] los 3 bits que analizaremos por cada combinación, a fin de lograr el resultado de la suma aplicando la "suma módulo 2", cuya operación se denota con el símbolo $⊕$.
25
- Como son tres bits que pueden ser {$0,1$}, entonces el número de combinaciones es $2^{3} =8$.
- Las resultantes son números binarios en base $2$, cada uno de ellos estarán compuesto por $2$ dígitos que denotamos por c[1]c[0]. Donde c[1] es el coeficiente de $2_1$ y c[0] es el coeficiente de 20.
- La tabla muestra cómo abordamos el desarrollo. Se tienen 8 filas con las todas posibles combinaciones en las tres primeras columnas, en las $2$ siguientes columnas la suma de q[0] + q[1] + q[2], desagregada en sus dígitos en c[1] y c[0] respectivamente, y en las últimas columnas cómo se obtuvo este resultado de decimal a binario.
- La última fila de la tabla muestra la suma $1+1+1$, que en base $2$ es $11_2$,
i.e. c[1]=$1$ y c[0]=$1$
Algoritmo-Interfaz Suma Números Binarios
Sumar números binarios es semejante a la operación simple que se aprendió en la escuela con números decimales, pero la Suma es Modulo $2$.
Se comienza a sumar desde el dígito a la derecha, avanzando hacia la izquierda, dígito con dígito, pero cuando sobra $1$ se guarda como reserva o "llevada (carry)" y se suma sobre la siguiente posición o columna.
Por ejemplo, las sumas en binario (módulo 2):
Nótese que $1⊕1=0$ y se reserva $1$, el cual se adiciona a la siguiente posición. En caso de que quede en una posicion o columna la suma de 3 unos ($1 ⊕1 ⊕1=1$), entonces se reserva $1$ para la siguiente posición, y así sucesivamente.
Esta operación clásica que se aplica en cuántica (Ver más adelante Circuito Suma Toffoli-CNOT), donde se muestran las pautas para sumar simultáneamente con una única unidad de control.
A continuación, una interfaz que contiene un algoritmo que realiza la operación suma de números binarios y permite ejercitar con sumandos hasta 26 bits cada uno.
Suma de Números Binarios
Ingrese Números Binarios:
$\large ⊕$
$⊕$
+
+
Computación Cuántica
El camino hacia la construcción consolidada de una computadora u ordenador cuántico proviene del hecho de que algunos algoritmos funcionan significativamente y más eficazmente en una computadora cuántica
que en una computadora clásica.26
Claramente la superposición en los sistemas cuánticos permite procesar de manera paralela que no es posible en los equipos de computación tradicionales (conocidos hasta hoy).
Estados Básicos y Estado en Superposición. Ambos son Estados Únicos.
A fin manejar la información almacenada en un conjunto de qubits y extraer información útil utilizando la interferencia cuántica, utilizamos Puertas Cuánticas. La definición de una puerta cuántica requiere conocer su efecto sobre los estados básicos y se necesita saber también cómo se comporta con una combinación lineal.
En la Computación Clásica no es necesario definir los efectos sobre los estados básicos, porque sólo existen estados básicos. Sin embargo, bajo la Computación Cuántica se exige que la puertas actúen en forma lineal, porque se debe responder a cómo funciona la Mecánica Cuántica.
Es decir, si tenemos estas dos exigencias, entonces implica que existe una matriz que se aplica sobre un vector unitario y que también transforma los estados intermedios. Esta matriz debe ser unitaria, dado que debe cumplir la restricción de convertir un vector unitario a un estado válido, donde la sumatoria de sus normas al cuadrado es igual a 1.
Por tanto, las Puertas Cuánticas son cualquier matriz unitaria de C2n → C2n o equivalentemente una Transformación Lineal Unitaria. Nótese que las puertas cuánticas son reversibles27, porque toda matriz unitaria tiene una inversa. Esto implica que en la Computación Cuántica es posible saber el Estado Inicial. La reversibilidad es una exigencia sine qua non de los sistemas cuánticos.
Esta propiedad de reversibilidad no sucede con todas las puertas lógicas de la Computación Clásica, porque no se tiene inversa y no es posible saber siempre exactamente su Estado Inicial (Por ejemplo con la función constante cuando se utiliza la Puerta OR y otras conectivas lógicas28). En efecto, conociendo la salida de la función constante no es posible determinar la entrada, dado que su entrada podría ser ser $0$ o $1$.
Las puertas lógicas de la Computación Cuántica conectadas de alguna forma (circuito), para realizar una operación, deben admitir tener sentido inverso del proceso y poder recuperar las condiciones iniciales sin pérdida de información (o energía).
Las leyes de la mecánica cuántica nos dicen que la evolución de un sistema responde a la Ecuación de Schrödinger29 (si no se realiza una medida). Se reitera que en el presente artículo sólo está enfocado en la matemática computacional y no en la física cuántica que es la fuente experimental de donde derivan la mayoría de los postulados que iremos mostrando a los largo de los capítulos y versiones del documento.
En síntesis para definir una Puerta Cuántica y es necesario que una matriz para:
i) Definir su efecto sobre los Estados Básicos;
ii) Exigir que actúe linealmente sobre los Estados en Superposición;
$$
\begin{pmatrix}
i & 0 \\
0 & i \\
\end{pmatrix}
$$
$∴$ La matriz conjugada es la inversa, $A^{*}=A^{-1}$
QED.
Puertas Lógicas Cuánticas
Una Puerta Lógica Cuántica es un circuito cuántico básico que opera sobre un pequeño número de qubits.
El concepto y construcción de puertas cuánticas es innumerable, dado que pueden ser composiciones que se configuran con operaciones simples. Estas puertas se representan con matrices unitarias que actúan sobre las amplitudes de probabilidad de los qubits. Pero las puertas primitivas o que se denominan universales, - ver IBM Experiencia Cuántica Editor de IBM QX -, son matrices 2×2 que cumplen con todas las condiciones antes especificadas previamente.
En la Ayuda en línea del Composer de IBM, se describen gráficamente las puertas lógicas cuánticas simples (Por ejemplo las de Pauli y los operadores matriciales $U_n$ y otros), utilizando la Esfera de Bloch. Esta representación es un herramienta de visualización importante para comprender lo que sucede con un circuito cuántico.
Esfera de Bloch. Fuente: IBM Quantum Experience
La Esfera de Bloch, se utiliza con el fin didáctico para comprender la variación del qubit, - restringido sólo como objeto tridimensional-, bajo la aplicación de los operadores.
La Esfera de Bloch pertenece al espacio complejo (x,y,i), por tanto la función de onda también toma valores complejos. La probabilidad no se afecta, dado que siempre es un número real mayor o igual que cero ($|z|^{2}≥0$).
La cualidad de medir con la Esfera de Bloch, es que entrega una noción, no 100% fiel en algunas representaciones geométricas de varias dimensiones con entrelazamiento-, pero muy certera en la probabilidad del qubit individualmente. La ecuación por la cual se rige la Esfera de Bloch es la siguiente:
La transformación $X$ se desplaza a lo largo del intervalo en la esfera de Bloch sobre la superficie de la esfera desde $0〉$ hasta $|1〉$, rotando valores alrededor del eje $x$.
La transformación $Y$ se desplaza a lo largo del intervalo en la esfera de Bloch sobre la superficie de la esfera desde $|0〉$ hasta $|1〉$, rotando valores alrededor del eje $y$.
$Y$ibm quantum experience-fuente gates glossary
Puerta Cuántica $Z$
La puerta $Z$ viene definida por la matriz (unitaria):
Es decir, la transformación lineal $Z$, cambia de signo la amplitud cuando
se aplica al estado del qubit $|1〉$ y lo deja igual cuando se opera con el estado del qubit $|0〉$.
$∴\quad$Su acción sobre un qubit es:
La transformación $Z$ se desplaza a lo largo del intervalo en la esfera de Bloch sobre la superficie de la esfera desde $|0〉$ hasta $|1〉$, rotando valores alrededor del eje $z$.
$Z$ibm quantum experience-fuente gates glossary
Puertas Cuánticas Importantes
La puerta $H$ o puerta de Hadamard definida por la matriz (unitaria):
La puerta $H$ o Hadamard gira entre los estados $|0〉$ y $|1〉$, respectivamente. Es útil para hacer superposiciones. Situando su operación en la Esfera de Bloch, con coordenadas polares:
Esto implica que se produce una rotación sobre el eje $y$ de un ángulo $\frac{π}{2}$ e inmediatamente otra rotación de un ángulo $π$ sobre $x$. La transformación de Hadamard opera paralelismos masivos. (i.e con $n \in N$ qubits se generan superposiciones de $2^{n}$ estados cuánticos, como combinaciones lineales de $|0〉$ y $|1〉$).
La puerta de Hadamard es muy importante y consecuentemente utilizada en los algoritmos de la computación cuántica, por que se presta para ir aprovechando las ventajas de manejo de la evolución de los estados en superposición, hasta llegar a un lugar que medir esa superposición sea útil para contribuir a solucionar el problema con el algoritmo en cuestión.
Es decir, Hadamard es una puerta de un qubit muy apropiada para generar superposición equiprobable, donde no se favorece ninguno de los estados básicos.
$H$ibm quantum experience-fuente gates glossary
En general, cuando se comienza a construir un algoritmo cuántico, se establece un conjunto de qubits de inicialización en estado cero, pero se prepara el circuito para introducir los estados en superposición equiprobables con Hadamard.
Nótese que la puerta lógica cuántica de Hadamard $H$, se puede expresar como una combinación de las puertas universales de Pauli, $X$ y $Z$. En efecto, $H=\frac{1}{2}(X + Z)$, lo que es facilmente comprobable:
Ahora, si se aplica el producto tensorial $⊗$ con $H$ sobre vectores de varios qubits (operador de Walsh-Hadamard), utilizando la notación en $n$, descrita previamente en Modo Numérico de Representar los Vectores Unitarios. Este producto tensorial con Hamadard, se describe mediante la siguiente expresión:
$$H ⊗ H ⊗ H ⊗\cdots H |\underbrace{0 0 0\cdots 0}_{n\text{ veces}}〉=\frac {1}{\sqrt{2^{n}}}\sum_{x=0}^{2n-1} |x〉$$
Donde $x\in ${$0,1,2\cdots ,2n-1$}
Por ejemplo, con $n=2$:
$$H ⊗ H |00〉=\frac {1}{\sqrt{2}}(|0〉+|1〉) ⊗ \frac {1}{\sqrt{2}}(|0〉+|1〉)=$$
$$\frac{1}{2}(|00〉+|01〉+|10〉+|11〉=$$
$$\frac{1}{2}(|0〉+|1〉+|2〉+|3〉$$
$$=\frac {1}{\sqrt{2^{2}}}\sum_{x=0}^{3} |x〉$$
Puerta CNOT (Control Not)
La Puerta cuántica $CNOT$ es una puerta no controlada. Las puertas controladas operan sobre 2 qúbits o más. En este caso su efecto es:
$|x y〉\longrightarrow$$CNOT$$\longrightarrow |x \quad x⊕y〉\qquad$ donde $x, y \in${$0,1$}
Para el Algoritmo de Deutsch, es clave comprender la importancia del operador controlado $CNOT$ (denotado como $CX$ en el Composer Quantum de IBM), que se aplica con al menos $2$ qubits.
A diferencia de las Puertas de Pauli, - descritas previamente -, las cuales son transformaciones unitarias, i.e. de un qubit y pueden ser representadas en sus dos estados por su rotación en los ejes de la Esfera de Bloch. Así mismo, la puerta de Hadamard, - que rota sobre el eje de las ordenadas $Y$ -, juega un rol preponderante de superposición en el Algoritmo de Deutsch.
Nótese que si el qubit de control del operador $CNOT$ está en un estado de superposición, se crearán entrelazamientos (Ver Estado de Bell).
En efecto, la transformación $CNOT$ es una puerta de $2$ qubits de entrada. Se ilustra a continuación:
El primer qubit $x$ se llama control. El control es invariante en la transformación.
El segundo qubit $y$ se llama objetivo. El objetivo se niega cuando $x$ = $1$. Es decir, $y$ no cambia si $x$ = $0$.
La operación $⊕$ es la conectiva ∨ (XOR) que corresponde al OR excluyente en el Algebra de Boole. La operación $⊕$ se utiliza como la llamada suma módulo $2$.
Es decir, el primer bit de entrada $x$ siempre se pasa directamente; el segundo bit se aplica sí y solo sí el bit de "control" $x$ es $|1〉$, i.e. aplica un Pauli $X$ en el objetivo. Para ser aún más explícito, $CNOT$ tiene la siguiente tabla de verdad:
Tabla de Verdad $CNOT$
$x$
$y$
$x⊕y$
1
1
0
1
0
1
0
1
1
0
0
0
Notación Matricial y Diagrama de $CNOT$
Para explicar paso a paso la Matriz $CNOT$, Consideremos los vectores de base $|0〉$ y $|1〉$.
Apliquemos a cada columna la operación $CNOT$ antes definida y veremos que las dos primeras columnas permanecen invariantes por que el qubit de control es $0$, y las dos últimas columnas cambian porque el qubits de control es $1$, obteniendo la siguiente matriz:
La puerta de Toffoli cubre la necesidad de tener un mínimo de tres qubits para cualquier computación clásica. La extensión a tres qubits de la puerta CNOT se denota como CCNOT o también Puerta de Toffoli (En el "Composer de IBM", el objeto se denomina CX). Para eso, se definen dos bits de control que sólo actúan si están a $1$.
Al aplicarla dos veces resulta la identidad. Por tanto, es una puerta reversible (su inversa es ella misma). La expresión matricial es:
La puerta clásica de Toffoli es una transformación de 3-qubits que cambia el tercer
qubit, cuando los dos primeros son $1$. Evidentemente es una transformación unitaria.
La puerta de Toffoli, es de gran utilidad en el diseño de algoritmos cuánticos, permite equipararlos con algoritmos de computación clásica, ya que es universal para la computación booleana. Más adelante se utilizará en los ejemplos con el Editor Composer de IBM, también en forma extendida atravesando más cables (o qubits) y con puertas equivalentes como $U_3$32.
Su representación es el siguiente diagrama:
Diagrama Puerta Toffoli o CCNOT
Tabla Síntesis con Entradas y Salidas Toffoli
A fin de manipular recursos "algebraicos" en la construcción de algunos circuitos cuánticos es necesario introducir puertas lógicas cuánticas ternarias. Toffoli es una de ellas, dado que es una puerta NOT con dos controles previos al objetivo.
Nótese en la Tabla previa que en la Salida sólo se invierte C cuando los otros dos controles de Entrada $A = B = 1$. Es decir, $(A, B, C) → (A, AB, A⊕B)$.
Si se observa, tanto la representación matricial como la Tabla de Entradas y Salidas de la Puerta de Toffoli, se determinará que la resultante $C^{'}$, obtenida mediante operaciones booleanas, se expresará con la siguiente proposición lógica:
$$C^{'}=|A〉|B〉|(A∧B)⊕C〉$$
Se ratifica que la única forma que exista una variación en $C^{'}$ es cuando $A = B = 1$. Ahí ocurre que el resultado depende del segmento $|(1∧1)⊕C〉$ que a su vez depende del valor binario de $C$. Es decir,
$|(1∧1)⊕0〉=|1〉\quad$ y $\quad|(1∧1)⊕1〉=|0〉$.
Ahora, que ya se describieron las puertas cuánticas elementales, se complementa lo tratado en previamente en Algoritmo - Interfaz Suma Números Binarios, a fin de ir introduciendo un simple circuito cuántico para las sumas de dos bits. Utilizando las Puerta de Toffoli y CNOT, - donde las entradas $x, y \in${$0,1$} -, con el tercer qubit en cero. Se ilustra el siguiente diagrama:
Circuito Cuántico ~ Suma Toffoli y CNOT
Circuitos Cuánticos:
Son concatenaciones de puertas cuánticas o una sucesión de modificaciones de un conjunto de qubits, que producen consecutivos cambios de estado en un ordenador. Esta notación gráfica de diagramas, se expresa mediante cables horizontales (uno por qubits) sobre los cuales se localizan las puertas cuánticas. Se leen de izquierda a derecha. A continuación una imagen animada de ejemplo extraído de "IBM Q, Introduction to Quantum Circuits, Getting started with quantum circuits URL: https://quantum-computing.ibm.com/".
Nótese que cuando se realiza una operación de medición y colapsa la función de onda, se cierra un circuito lógico cuántico hacia el estado básico más probable en que se encuentra el qubit. Para ese efecto de Medir, se utiliza este objeto u operador .
Donde el Circuit Composer permite construir circuitos cuánticos gráficamente utilizando como objetos las puertas lógicas. Es decir, tomando, trasladando y poniendo los objetos seleccionados sobre los cables, ejecutando y obtieniendo resultados que arroja el circuito en tiempo real el algoritmo sobre el hardware de IBM.
Vista Principal del Editor Circuit Composer de IBM
En un siguiente ejercicio se construirá el algoritmo que calcula 1+1+1, describiremos detalladamente paso a paso el cicuito cuántico utilizando el Composer de IBM. Nótese que generalmente los qubits de los algoritmos se inicializan en cero. La notación q[0],q[1],..q[n] para descomponer los qubits. Por ejemplo: |001〉 se presenta como q[0]=0, q[1]=0 y q[2]=1.(Revisar operador Barrier33)
Circuito Algoritmo 1+1+1 con el Editor de IBM Ver Video
Estado de Bell
Los Estados de Bell son cuatro específicos estados cuánticos máximamente entrelazados de dos qubits. Están en una superposición de $|0〉$ y $|1〉$ , i.e. en una combinación lineal de estos dos estados.
Los Estados de Bell, denotados como $|β_{xy}〉$ son:
$$|β_{00}〉=\frac{1}{\sqrt{2}}(|00〉+ |11〉)$$
$$|β_{01}〉=\frac{1}{\sqrt{2}}(|01〉+ |10〉)$$
$$|β_{10}〉=\frac{1}{\sqrt{2}}(|00〉- |11〉)$$
$$|β_{11}〉=\frac{1}{\sqrt{2}}(|01〉- |10〉)$$
$\Rightarrow$
Los cuatro estados se pueden reducir bajo la siguiente formulación:
$$\qquad |β_{xy}〉=\frac{1}{\sqrt{2}}(|0\text{ } y〉+ (-1)^{x} |1\text{ }\overline y 〉)$$
A continuación se analiza el siguiente diagrama o circuito cuántico con uno de los Estados de Bell.
El mismo circuito con el Editor de IBM se obtiene el siguiente resultado:
Circuito con el Editor de IBM
Ejemplo de Indempotencia34 con CNOT
Dado el siguiente diagrama de Puertas Cuánticas. ¿Cuál es el resultado?
Resultado:
Dos puertas Hadamard en serie resultan en un qubit con el estado original.
|ψ〉HH|ψ〉
Se puede ver claramente que este mapeo es una biyección
35, lo que confirma que CNOT es una puerta reversible. (Ver una generalización pequeña pero importante, llamada CCNOT (control controlado-NO) o Puerta Toffoli.)
Ejemplo de Algoritmo con Puertas de Pauli
Construir un algoritmo que transforme un qubit en estado |0〉 a un estado -|0〉
El algoritmo se desarrolla sobre el primer cable en estado inicial q[0]. En efecto, se aplica X transformando |0〉 en |1〉. A este resultado se le aplica la puerta Z que transforma |1〉 en -|1〉. Ahí se aplica nuevamente X, obteniendo -|0〉.
Resultado:
Circuito con el Editor de IBM
Preparando el Camino para Comprender el Algoritmo de Deutsch57
Objetivo
El objetivo principal es culminar este capítulo Algoritmo de Deutsch, - que constituye el núcleo del presente trabajo-, exponiendo y explicando el desarrollo paso a paso de la fórmula simplificada del estado cuántico resultante $\color{black}{\mathbf{|ψ_3〉}}$ del circuito del Algoritmo de Deutsch. Al finalizar su deducción en la próxima sección, la fórmula será rotulada como $[6]$.
Simplificación del resultado ~ Algoritmo de Deutsch
Mediante esta formulación compacta mostraremos ulteriormente, - después de la descripción de una serie de detalles-, que con sólo evaluar $f(0)$ se podrá saber si la función es constante o balanceada. Ciertamente, al pasar por la caja negra u oráculo de Deutsch, se medirá el primer qubit del estado de salida sobre un vector de la
Base de Hadamard103$\unicode{123} |+〉, |-〉\unicode{125}$. Si después de medir obtenemos dentro de la resultante la expresión $\frac {1}{\sqrt{2}}(|0〉+|1〉)$ entonces la función es
constante, y si obtenemos $\frac {1}{\sqrt{2}}(|0〉-|1〉)$ la función es balanceada.
Metodología
Más adelante, se mostrará con más detalles mediante el diagrama de árbol que se ilustra a continuación, cómo se ejecuta "de una" el algoritmo.
Es decir, todas las combinaciones simultáneamente, utilizando la propiedad del parelismo cuántico.
Diagrama de Árbol $U_f$: Casos y Alternativas de $|\psi_3〉$
La metodología esencial se basa en desagregar todas las evaluaciones posibles, aplicar algunos recursos algebráicos y finalmente expresar la fórmula en función de $x$ y $f(x)$, ambas definidas sobre $\unicode{123} 0,1 \unicode{125}$ respectivamente. Teniendo presente que la aplicación de este proceso se ejecuta en tiempo cero, sobre un computador cuántico que aprovecha el paralelismo inherente de los estados en superposición.
Los circuitos que se derivan del Algoritmo de Deutsch tienen la capacidad de evaluar el resultado de todas las posibles combinaciones de los estados cuánticos en un breve número de ciclos de ejecución.
Modelo ~ Problema de Deutsch
Elementos de Preparación
Si bosquejaramos una rutina con programación clásica y lineal, la idea central del operador lógico del Algoritmo de Deutsch sobre una función $f(x)$, se vería como el Javascript que se ilustra a continuación:
Es decir, se requieren al menos 2 chequeos en el algoritmo de un sistema de computación clásica con un bit para determinar si una función $f(x)$ es constante o balanceada.
Una forma "mágica" al previo bosquejo javascript descrito, es sintetizar el planteamiento con el Algoritmo de Deutsch como se muestra en la siguiente tabla, donde el oraculo toma las 4 posiblidades $\unicode{123}f_0,f_1,f_2,f_3\unicode{125}$ de la función $f(x)$ binaria con un qubit y cuya evaluación se ejecuta simultáneamente "¡de una!", gracias a la propiedad de superposición y entrelazamiento cuántico.
Entonces $f(x)$ se dice ser Constante si $f(x)$ no cambia para cualquier posible valor de entrada, i.e. $f(x)$ invariante $∀x ∈${$0,1$}$^n$.
Concepto Función Constante Ejemplo: Todo número que ingresa se transforma en $0$
Por otro lado, $f(x)$ se dice Balanceada si $f(x)=0$ para la mitad de las opciones de entrada y $f(x)=1$ para la otra mitad.
El procedimiento cuántico para funciones $f${$0,1$}$^{n}$ de $n \geq 1$ entradas, que incorporó el matemático Richard Jozsa en 1992 al Algoritmo de Deutsch56 es una extensión en $n$ y resuelve más rápido la determinación si la función $f(x)$ es Balanceada. Es decir, toma $n$ bits de entrada {$x_1, x_2,..., x_n$} y devuelve un valor binario $f(x_1, x_2,..., x_n$), sea $0$ o $1$.
Un ejemplo didáctico para describir el concepto, es tomar el conjunto {$1,2,3,4,5,6,7,8,9,10$} y aplicarle secuencialmente una función $U_f(x)$ que transforme a $0$ cuando $x$ es par y a $1$ cuando $x$ es impar. Entonces al chequear la salida completa, se tiene que la cantidad de $0$ es la misma que la cantidad de $1$ y por tanto la función es Balanceada.
Nótese que esta función $U_f(x)$, si devolviera los valores binarios en un sólo cuadrito, entonces no podría ser una puerta cuántica, porque no sería reversible27. Es decir, al tener la salida en un bloque con un orden correlativo en $10$ posiciones y conocer el dominio, convierte a $U_f$(x) en reversible. En caso contrario, $U_f$(x) no tendría inversa35.
New Document
Concepto Función Balanceada Ejemplo: Entradas $1,2,..10$ y Salidas {$0,1$}
En computación clásica mientras más grande el número de bits de entrada, más grande aún será el número de verificaciones que se tendrán que hacer en cada salida de una función binaria para determinar si es constante o balanceada. Considérese otra función binaria $f(x)$ definida como $f:\unicode{123}1,2,3,4,5,6,7,8,9,10\unicode{125}\longrightarrow\unicode{123}0,1\unicode{125}$, donde los ingresos son aleatorios no secuenciales y algunas salidas se evalúan en la siguiente tabla:
Entradas
$\Rightarrow$
Salidas
$0,0,0,1,..$
$\Rightarrow$
A la cuarta salida se determina que es balanceada, porque salió $1$ después de tres $0$ y está claro que ya no es constante.
$1,1,1,1,1,1,$
$\Rightarrow$
Después de la sexta salida se determina que es constante.
$0,0,0,0,0,1,$
$\Rightarrow$
Recién a la mitad más uno de las entradas se determina que es
balanceada. Porque la evaluamos 6 veces
...
$\Rightarrow$
...
Es decir, en computación clásica para cercionarnos de que una función binaria es balanceada, se requiere, - al menos-, aplicarla uno a uno a cada $x_i$ de entrada hasta la mitad más uno. Dicho de otra forma, si el número de bits es $n$, entonces en el peor de los casos habría que evaluar $\frac{n}{2} + 1$.
Este proceso es larguísimo cuando se trabaja con $n$ muy grandes de bits en un sistema clásico convencional, dado que habría que estar chequeando numerosas posibilidades como se analizará en los párrafos a continuación y que justamente se simplificó extremadamente en computación cuántica con el Algoritmo de Deutsch-Jozsa, puesto que evalúa este tipo de funciones una única vez.
La optimización del resultado dice relación con el tiempo de ejecución en función del tamaño de la entrada. Para establecer este hecho, ilustremos la solución convencional (Ver Lunch & Learn: Quantum Computing). Hagamos entonces un conteo que muestre que el número de veces del valor $0$, el cual debe ser el mismo número de veces que asume el valor $1$. Es decir, sea $A_0$ el conjunto de funciones en cero y $A_1$ el conjunto de funciones en uno. Entonces:
Donde el símbolo $\unicode{35}$ denota la cardinalidad del conjunto y se requiere determinar el máximo de pasos para decidir si $f(x)$ pertenece a $A_0$ o no.
Sea $F_n$ el conjunto de todas las $n$ funciones booleanas constantes o balanceadas, i.e. $F_n=A_0 \cup A_1\quad$ ($A_0 \cap A_1=\emptyset $, dado que es una partición).
Obviamente la suma de ambas cardinalidades, #$(A_0 \cup A_1)$ dan exactamente la cardinalidad de $\unicode{35}F_n=2^{n-1} + 2^{n-1} = 2^{n}$
Luego, mostremos cómo se distribuye el conteo de funciones booleanas balanceadas, utilizando la formulación de cuántos grupos de $2^{n-1}$ funciones que de ese tipo se configuran con un número total de $2^{n}$ de entradas:
$n=4$
$$\left(\begin{matrix}2^{4}\\\
2^{4-1} \end{matrix}\right)= \frac {16!}{(16-8)!\text{ }8!}=12870$$
$\dots$, i.e el número de combinaciones que se van generando tienen un crecimiento de tipo factorial - exponencial69.
Por ejemplo, consideremos el número de funciones booleanas balanceadas sometidas a dos entradas.
$n=2 \quad \Rightarrow \quad\left(\begin{matrix}4\\\
2 \end{matrix}\right)= \frac {4!}{(4-2)!\text{ }2!}=6$ funciones balanceadas. Se Observa el conjunto $F_2$ desplegado en la siguiente tabla:
$x_1$
$x_2$
$f_0$
$f_1$
$f_2$
$f_3$
$f_4$
$f_5$
$f_6$
$f_7$
$0$
$0$
$0$
$0$
$0$
$0$
$1$
$1$
$1$
$1$
$0$
$1$
$0$
$0$
$1$
$1$
$0$
$0$
$1$
$1$
$1$
$0$
$0$
$1$
$0$
$1$
$0$
$1$
$0$
$1$
$1$
$1$
$0$
$1$
$1$
$0$
$1$
$0$
$0$
$1$
$F_2$: Funciones Constantes y Balanceadas
Donde la tabla de cardinalidad, #$F_2=8$, consta de $6$ funciones baleanceadas que se muestran con fondo amarillo ($f_1,f_2,\dots ,f_6$) y $2$ funciones constantes ($f_0, f_7$) que se muestran con fondo blanco.
Ahora, ilustremos también $F_3$ con sus $70$ funciones booleanas balanceadas generadas, a partir de tres entradas.
Sea $n=3 \quad \Rightarrow \quad\left(\begin{matrix}8\\\
4 \end{matrix}\right)= \frac {8!}{(8-4)!\text{ }4!}=70$ funciones balanceadas. En la siguiente tabla se observan las combinaciones $(f_1,f_2,f_3,\dots ,f_{70})$, que indican el crecimiento que va adquiriendo, cuando se trabaja con un $n$ grande de bits en un sistema clásico convencional:
$F_3$: 70 Combinaciones Balanceadas
¿Por qué y cómo se aborda cuándo $f${$0,1$}$^{n}$ es balanceada en cuántica?
Nótese que justamente el Algoritmo de Deutsch-Jozsa resolvió ¡de una! este problema, utilizando qubits y la propiedad del parelismo cuántico, logrando una solución de complejidad computacional.
En efecto, un resultado que parece trivial y solucionable usando los bits de la computación clásica, va creciendo y complicándose según el número de bits que se introducen como argumento en la función binaria para ir testeando sus salidas.
Si se ingresa una consulta con dos entradas sobre la "caja negra" u oráculo que contiene la función $f(x)$, y justo obtenemos diferentes salidas $0$ y $1$, Entonces se deduce inmediatamente que $f(x)$ es balanceada, teniendo en cuenta que son resultados diferentes.
Por ejemplo:
$$f(0,0,0,\dots ,0)\longrightarrow 0 \quad y \quad f(0,1,0,\dots ,0)\longrightarrow 1$$
Por otro lado, si se va iterando el sistema e ingresando cadenas de $n$ bits en el algoritmo y la función va arrojando la misma salida, entonces habría que continuar verificando hasta más de la mitad de los ingresos, a fin de evidenciar este resultado y constatar que la función $f(x)$ es constante.
Luego, como tenemos $2^{n}$ entradas posibles, implica que se debe chequear el resultado de la mitad más uno de los ingresos.
Es claro que la mitad es $\frac {2^{n}}{2}=2^{n-1}$ y por tanto debemos someter la función a una sucesión de $2^{n-1}+1$ entradas.
Es poco probable obtener el mismo resultado continuamente en sucesión de entradas, pero su probabilidad es diferente de cero. Por tanto hay que verificar de todos modos, en vista de que podría darse el caso que el resultado de la función es el mismo hasta la mitad, y justo en la siguiente entrada aparece el otro valor de la base binaria.
La probabilidad que la funcion sea constante ($f(x)\in A_0$), en function de $k$ entradas es:
$$
P_{constante}(k)=1-\frac{1}{2^{n-1}}\qquad,\text{ } donde \text{ } k\leq 2^{n-1}
$$
Ahora ilustremos algunos ejemplos:
Sea $n=1 \Rightarrow 2^{1}=2$ combinaciones de qubits:
i) Si $f(x)$ es Constante entonces:
$f(0)=f(1)=0$
$\quad\lor$
$f(0)=f(1)=1$
ii) Si $f(x)$ es Balanceada entonces:
$f(0)=0 \land f(1)=1$
$\quad\lor$
$f(0)=1 \land f(1)=0$
A continuación la tabla con los 4 posibles resultados de la función binaria $f$. Función $f$ que se describe como constante cuando ambos resultados son el mismo, o balanceada si el resultado de $0$ y $1$ ocurre con la misma frecuencia.
$f\unicode{40}0\unicode{41}$
$f\unicode{40}1\unicode{41}$
$f(0)$⊕$f(1)$
$f_0$
$0$
$0$
$0$
Constante
$f_1$
$1$
$0$
$1$
Balanceada
f2
$0$
$1$
$1$
Balanceada
f3
$1$
$1$
$0$
Constante
Tabla f(x) binaria 1-qubit
Sea $n=2 \Rightarrow 2^{2}=4$ combinaciones de qubits:
Si $f(00)=f(01)=f(10)=f(11)=0$ entonces $f$ es constante.
Si $f(00)=f(01)=0$ y $f(10)=f(11)=1$ entonces $f$ es balanceada.
La solución Cuántica: Operador Unitario $U_f$
En esta sección se continúa preparando la comprensión del Algoritmo de Deutsch y sus proyecciones, intenta alumbrar la importancia del operador unitario $U_f$ ,- que detallaremos en la solución cuántica-. Es decir, se abrirá la "caja negra" u oráculo que realiza esta transformación, la cual se aplica en una sola evaluación de $f(x)$, para determinar si es constante o balanceada.
La pregunta que responde David Deutsch es muy simple:
Dada una función $f(x)$ booleana ¿Es f Constante o Balanceada? y cómo darle una respuesta simple, - sin tantas iteraciones-, utilizando el paralelismo inherente y el entrelazamiento.
Efectivamente la pregunta es simple. Sin embargo formularla en el ámbito cuántico requiere un complejo e inteligente algoritmo que resolvió brillantemente el físico-matemático Davis Deutsch, dando un paso muy importante en el desarrollo de computación cuántica.36
Consideremos un vector de $2$ qubits y la siguiente transformación lineal $|x y〉→|x\quad y ⊕f(x)〉$ , i.e $∃\ U_f$ tal que
$$U_f |x y〉 = |x\quad y ⊕ f(x) 〉 \qquad \qquad[5]$$
$U_f$ es también llamada por muchos autores como "Función Oracle" u "Oráculo Cuántico (porque es una puerta a la que se le formula una pregunta)" o "Caja Negra" . Incluido el propio David Deutsch que lo utiliza, - con su correcto significado en Inglés-, en sus publicaciones y vídeos. En el caso del presente artículo, en general se ha evitado referirse con el término Oracle a esta matriz unitaria, a fin de no confundir a los equipos de desarrollo informático, quienes están más acostumbrado de llamar así a la marca de un motor de bases de datos que utilizó ese nombre.
$U_f$ se construye a partir de las Puertas Lógicas Hadamard y CNOT que se trataron en el párrafo Computación Cuántica y Puertas del documento central.
Se recuerda lo descrito en ese párrafo, mostrando que la puerta $H$ o Hadamard gira entre los estados $|0〉$ y $|1〉$, respectivamente. La puerta de Hadamard es útil para hacer superposiciones.
Es necesario recordar que, la puerta lógica de Hadamard $H$ es reversible. En efecto, la aplicación en serie del operador $H$ sobre un estado cuántico
cualquiera, devuelve el estado inicial $H^{n} = I$, i.e. $H$ es idempotente en serie. No obstante, su aplicación en
paralelo en un circuito cuántico, genera el producto tensorial de los estados superpuestos.
Por ejemplo, con $n=3$ al inicializar un circuito:
$$H ⊗ H ⊗ H |000〉=\frac {1}{\sqrt{2}}(|0〉+|1〉) ⊗ \frac {1}{\sqrt{2}}(|0〉+|1〉) ⊗ \frac {1}{\sqrt{2}}(|0〉+|1〉)$$
Así mismo, repasemos también la operación de la puerta cuántica $CNOT$, la cual es una puerta no controlada, que opera sobre 2 qúbits o más:
$|x y〉\longrightarrow$$CNOT$$\longrightarrow |x \quad x⊕y〉\qquad$ donde $x, y \in${$0,1$}
A continuación se ilustrará en una Tabla $U_f$ 2-qubit, con cada uno de los 4 vectores que se obtienen al aplicar el Oráculo Cuántico sobre 2 qubits. Atención, porque los valores obtenidos de esta transformación unitaria será útil tenerlos presente. Dado que en el desarrollo algebraico de la demostración del Algoritmo de Deutsch, se realizarán ciertas sustituciones con los qubits registrados en esa tabla. ($|xy〉→|x\quad y⊕f(x)〉$).
Entonces, aplicando el operador $U_f$ a cada uno de los vectores de $2$ qubits, se tiene lo siguiente:
Tabla $U_f$ 2-qubit
Ahora, para ilustrar cómo opera $U_f$, tomemos un estado normalizado de $2$ qubits. Sea
La matriz $U_f$ actúa sobre todos los elementos que constituyen el ket $ψ$ en forma simultánea. A diferencia de lo que sucede con la puertas lógicas de la Computación Clásica, donde un bit puede asumir solamente un valor cero ó uno.
Y es aquí donde ocurre la "magia". Esto es, una superposición de todas las combinaciones posibles de las 2 entradas, puesto que se aplica la puerta de Hadamard que fuerza a cada qubit a superponerse. Enseguida la caja negra $U_f$ se encarga de ejecutar en una sólo ciclo todas las posibles combinaciones de dichas entradas.
Si $f(x)=0$ entonces $U_f|x〉\biggl(\large {\frac {|0〉-|1〉}{\sqrt{2}}}\biggr) =\large |x〉\biggl(\frac {|0〉-|1〉}{\sqrt{2}}\biggr)$
Si $f(x)=1$ entonces $U_f|x〉\biggl(\large {\frac {|0〉-|1〉}{\sqrt{2}}}\biggr) =\large |x〉\biggl(\frac {|1〉-|0〉}{\sqrt{2}}\biggr)=\large - |x〉\biggl(\frac {|0〉-|1〉}{\sqrt{2}}\biggr)$
Algoritmo de Deutsch
La importancia del Algoritmo de Deutsch es que inició y entregó la pauta para solucionar problemas de complejidad exponencial en forma conjunta. Hecho que en computación clásica se debe realizar linealmente en serie. Esto, gracias a que el número de qubits (2n) se ingresan paralelamente. El algoritmo aprovecha el uso de la puerta de Hadamard para preparar una superposición que represente todas las combinaciones posibles.
De modo que se tiene una función $U_f$, que utiliza el concepto de paralelismo cuántico para calcular todos los valores de f(x) a partir de la superposición. Siendo esto muy diferente a crecer exponencialmente según el número de ingresos.
Efectivamente, al crear una superposición, permitimos que el Operador Matricial Unitario $U_f$ funcione en todas las configuraciones posibles en forma simultánea.
La idea central de la función $U_f$, - que es la puerta que abrió un abanico para todos los algoritmos complejos posteriores-, es que su transformación genera valores que permiten medir como $0$ las funciones constantes y como $1$ las funciones balanceadas.
Por tanto, con el Algoritmo de Deutsch se determina si una función es constante o balanceada. Para este efecto, - como se demostrará hacia el final del la demostración-, el algoritmo plantea fundamentalmente el cálculo de
$f(0)⊕ f(1)$37
Algoritmo de Deutsch ~ Enunciado del Problema:
Dada una función booleana $f:$ {$0,1$} $\longrightarrow$ {$0, 1$} y una transformación unitaria asociada $U_f$, encontrar un algoritmo que determine si $f$ es Constante o Balanceada.
Tradicionalmente se requieren sólo dos medidas para calcular el resultado, dado que desde ahí es posible deducir la formulación general de su aplicación. Aquí en el presente enfoque, desarrollamos los dos casos y sus $4$ variantes, a fin de explicar este ingenioso pero complejo algoritmo de David Deutsch.
Para explicar el desarrollo algebraico paso a paso del algoritmo y llegar a una solución compacta (Ver más adelante $[6]$), aparecen los vectores en estado de superposición de la Base de Hadamard, como primera intervención, después de la iniciación de los qubits $q[0]$ y $q[1]$ . Comenzamos con el estado:
$$|ψ{_0}〉 = { |01〉}$$
Arquitectura del Circuito Cuántico de Deutsch
La figura muestra un esquema con las transformaciones cuánticas $|\psi_1〉$, $|\psi_2〉$ y $|\psi_3〉$ que se aplican sobre el estado inicial $|\psi_0〉=|01〉$ para resolver el problema de Deutsch. De hecho, son estas tres transformaciones son las que constituyen el Algoritmo de Deutsch.
Ambas entradas pasan por una puerta Hadamard. Esto se traduce en:
$${x = H |0〉={(|0〉+|1〉)\over \sqrt{2}} }$$
$${y = H |1〉={(|0〉-|1〉)\over \sqrt{2}} }$$
El estado cuántico del $|ψ_1〉$, en tanto input del operador unitario, está dado a partir del producto tensorial de los vectores de la Base de Hadamard:
El operador unitario $U_f$ está definido de tal manera que no afecta el qubit $x$, pero si actúa realizando la operación $y⊕f(x)$ sobre el qubit $y$. Donde reiteramos la operación $⊕$ es la suma módulo $2$. De modo que este operador unitario puede ser implementado por una combinación de estados cuánticos de una puerta de uno o dos qubits.
Luego, aplicando $U_f$ sobre $|ψ_1〉$, se tiene:
$$U_f|ψ_1〉 = U_f\biggl({|00〉-|01〉+|10〉-|11〉 \over 2}\biggr)=|ψ_2〉$$
Es decir, aplicando el operador $U_f$ a cada uno de los vectores de 2 qubits (ver $[5]$), que conforman esta expresión de $|ψ_1〉$ y operando, resulta:
$U_f|00〉=$
$U_f|0〉|0〉=|0〉|0⊕f(0)〉=|0〉|f(0)〉$
$U_f|01〉=$
$U_f|0〉|1〉=|0〉|1⊕f(0)〉$
$U_f|10〉=$
$U_f|1〉|0〉=|1〉|0⊕f(1)〉=|1〉|f(1)〉$
$U_f|11〉=$
$U_f|1〉|1〉=|1〉|1⊕f(1)〉$
$\therefore$
38
En resumen, la función $f(x)$, definida en el dominio binario {${0, 1}$}, con un rango o imagen sobre {${0, 1}$}. Es decir,
$f$:{$0, 1$} $\longrightarrow${${0, 1}$}, implica que se configuran cuatro alternativas, clasificadas en dos casos posibles, que se analizarán a continuación:
Caso $1$:
Caso de la función Constante, donde $f(0)=f(1)$ . Del paso anterior se tiene que $|ψ_2〉$ está dada por:
Veamos uno a uno las opciones de este resultado del Caso $2$, cuando $f(0)≠f(1)$. Claramente
$f(0)⊕f(1)=f(1)⊕f(0)=1$.
Nótese que al ser $f(0)\neq f(1)$, en ambos valores de $f(x)$ la resultante de $f(0)⊕f(1)$ es $1$. En efecto, si $f(0)=0$ entonces $f(1)=1$. Esto implica que la suma modulo $2$ es $f(0)⊕f(1)=0⊕1=1$. Así mismo, si $f(0)=1$ entonces $f(1)=0$. Esto implica que la suma modulo $2$ es $f(0)⊕f(1)=1⊕0=1$.
Del desarrollo de los Casos $1$ y $2$ se puede deducir que la función $f$ es constante cuando $q[1]=|0〉$ y es balanceada cuando
$q[1]=|1〉$. Una simple medición sobre q[1] será suficiente para completar la tarea.
Nótese que basta un sólo llamado a la función, a través de todo el algoritmo para lograr ese resultado. Esto es posible, porque el efecto de $U_f$ sobre $|ψ_1〉$ produce una salida $|ψ_2〉$ que depende de los valores de la función $f(x)$ para ambos posibles valores del bit de entrada.
Diagrama de Árbol $U_f$: Casos y Alternativas de $|\psi_3〉$
Un enfoque para la comprensión de los pasos de la operación, es expresar el resultado de $|ψ_3〉$, - que se obtuvo en los Casos $1$ y $2$ -, en términos generales con una fórmula compacta del circuito:
Nótese que el exponente del factor $(-1)$ es $f(x)$, el cual puede ser $0$ ó $1$. Eso implica que el signo positivo o negativo de la expresión $[6]$, depende del valor que tome $f(x)$.
Ahora, rematando el proceso desarrollado, tenemos el resultado de la operación $f(0)⊕f(1)$ como única medida que puede responder cuando una función es constante o no:
Si $f(0)=f(1)$ $\Rightarrow$ $f(0)⊕f(1) = 0$. En efecto, $0⊕0 = 0$ y $1⊕1 = 0$ (suma módulo 2). Por tanto $f(x)$ es Constante.
Si $f(0)≠f(1)$ $\Rightarrow$ $f(0)⊕f(1) = 1$. En efecto, $0⊕1 = 1$ y $0⊕1 = 1$. Por tanto $f(x)$ es Balanceada
Fin de la demostración del Algoritmo de Deutsch.
Descripción Circuito Algoritmo de Deutsch
Siguiendo la pauta que se ha utilizado a lo largo del presente artículo, para ilustrar gráficamente los circuitos cuánticos con IBM Quantum Experience83, a continuación el Algoritmo de Deutsch y su fuente de código con OPENQASM 2.053, que configura automáticamente la herramienta IBM, una vez simulado o ejecutado el algoritmo del usuario está programando.
Circuit Composer IBM - Algoritmo de Deutsch
Circuito Versión#1 Algoritmo de Deutsch con el Editor de IBM
Pasos Circuito Algoritmo de Deutsch
1. Se aplica la puerta de Pauli X al segundo qubit q[1], el cual convierte el vector |0〉 en |1〉
2. Se aplica un Hadamard a cada uno de los qubits y se ponen en estado de superposición. Entonces, la entrada q[0], q[1] quedan ambas en superposición representando los input's requeridos: |0〉 y |1〉, a fin de proceder a aplicar la transformación $U_f$.
$U_2$ibm quantum experience-fuente gates glossary
3. Se aplica el operador $U_f$ representado en el Composer IBM como $U_2$.
Nótese que el objeto $U_2$ no es la única solución para aplicarlo como caja negra o Función Oracle en un Algoritmo de Deutsch, hay otras combinaciones de puertas que tienen el mismo efecto(Ver Circuito Versión#2).
OPENQASM 2.0
include "qelib1.inc";
qreg q[5];
creg c[5];
h q[0];
x q[1];
h q[1];
cx q[0],q[1];
h q[0];
u2(pi/2,pi/2) q[1];
measure q[0] -> c[0];
measure q[1] -> c[1];
Ejemplo del Algoritmo de Deutsch en un circuito con otra combinación de $U_f$:
Circuito Versión#2 Algoritmo de Deutsch con el Editor de IBM
Otra Descripción del Circuito de la Caja Negra $U_f$
Aquí reiteramos otro enfoque que traduce las cuatro posibles funciones que determinan la caja negra:
$f(x)= 0$, entonces $(f(x)⊕y) = (0⊕y) = y$, de modo que la caja negra no hace nada.
$f(x)= 1$, entonces $(f(x)⊕y) = (1⊕y )=$ $\overline y$, de modo, que la caja negra simplemente niega $y$.
$f(x)= x$, entonces $(f(x)⊕y) =(\overline x⊕y)$ ( el cual es también $\overline {(x⊕y)}$ ).
Un oráculo $U_f$ o la llamada caja negra que determina si una función es Constante o Balanceada.
i) Qubit q[0] es la entrada y qubit q[1] es salida. Ambos inicializados en $|0〉$
ii) Se aplica un Pauli $X$ en q[1], (segundo cable), inmediatamente después de la inicialización, lo resulta en la negación, transformándolo en el estado $|1〉$. (Entonces ambas entradas quedan de acuerdo al Diagrama Algoritmo de Deutsch descrito previamente, denotado como $|\psi_0〉$).
iii) Al ingresar en el oráculo (Véase $|\psi_1〉$ en el Diagrama), se aplica el CNOT desde el primer cable hacia el segundo cable. Esto implica que el control qubit $|1〉$ se localiza en el primer cable y su objetivo se localiza en el segundo cable.
(Recordar que la puerta cuántica CNOT se le denomina Negación Controlada). Es decir, su salida es por q[1].
(En términos coloquiales de simplificación se dice que en esta configuración de CNOT se "copia" o "replica" el q[0] hacia la salida q[1].45)
iv) El segundo Hadamard $H$ del circuito localizado después del control de CNOT, - el cual es invariante en la transformación-, devuelve el estado inicial de q[0] preservando el valor de entrada.
v) Este circuito es una de las representaciones del operador $U_f$ que se utiliza como oráculo para determinar cuando una función es Constante o Balanceada.
Epílogo del Artículo
Marco General
El presente documento está interesado en los fundamentos de la computación cuántica, no exactamente en toda la matemática que conlleva la Mecánica Cuántica46 ni en sus efectos colaterales en la sociedad.
Otro aspecto en el presente trabajo, - no menos importante-, que sólo se ha tratado muy tangencialmente, es acerca del hardware de las máquinas cuánticas. Estos aparatos físicos y redes cuánticas son precisamente los instrumentos que admiten los estados de entrada que contienen las superposiciones coherentes de múltiples y diferentes entradas posibles, que posteriormente van evolucionando en superposición hasta su medición. Este plano de la computación cuántica se debe considerar bajo otro carril de especialización.
El trabajo se ha focalizado especialmente en la preparación de los fundamentos y explicación de los elementos matemáticos y componentes cuánticos para converger en la comprensión del Algoritmo de Deutsch. La idea pionera de este algoritmo, es primordial para el entendimiento de la mayoría de los algoritmos clásicos de computación cuántica que le preceden, tales como Algoritmo de Deutsch-Jozsa, de Simon, de Shor y de Grover. Sin contar, el impacto en la comunidad científica que indujo a físicos y matemáticos como David DiVicenzo, Jozsa, Toffoli, Fredkin, Bernstein-Vazirani y muchos otros no menos importantes a mejorar y extender concepto.
La idea subyacente de dicho enfoque, es intentar explicar la semántica diferente que tienen los algoritmos de computación cuántica, tanto con respecto al lenguaje humano como a los lenguajes estructurados de la computación clásica actual. En realidad, no se trata de aprender un modelo contraintuitivo, sino que es hacer un cambio a una forma repetitiva y mecánica que tenemos los equipos de desarrollo computacional. Es decir, para aprender la lógica de la construcción de un algoritmo cuántico debemos equiparnos con más matemática.
De modo que para aplicar en forma práctica estos fundamentos de la computación cuántica, recomiendo ingresar a los tutoriales y al editor de IBM Quantum Experience https://quantum-computing.ibm.com/, que es una potente herramienta que opera directamente desde la nube, y que permite aprender visualmente cómo crear circuitos cuánticos, programar gráficamente con algoritmos simples e intuitivos, - utilizando las puertas X, Z, CNOT, Hardamard, etc... y ejecutarlos en un computador cuántico real que proporciona IBM con dicha aplicación.
El editor Composer permite ir localizando las puertas cuánticas como objetos sobre los cables paralelos, - similar a un pentagrama de música -, simularlos en línea y eventualmente ejecutarlos n veces en Computador Cuántico de IBM, para medirlos y obtener resultados en línea.
Por cierto, IBM no es la única empresa gigante que pone a disposición de desarrolladores y académicos de cualquier parte del mundo, también lo hace Microsoft y Google. Sin embargo, según mi opinión la empresa que presenta mayor apoyo didáctico y disponibilidad para ese propósito hasta hoy, es IBM. Nótese que no estoy hablando de supremacía de cuál es el mejor computador cuántico, sino de calidad en las herramientas de aprendizaje disponibles para el mundo global.
Breve Párrafo sobre el Impacto en la Sociedad
Ahora, desde el punto de vista del impacto de la computación cuántica47 en la sociedad, hay que intentar prepararse para experiencias cotidianas que se avecinan, las cuales serán más que la revolución digital actual. Avance
insospechados en la secuenciación genética, nanotecnología, energías renovables, electrónica, etc..
Por ejemplo cotidianamente, en el supermercado saldremos directamente con nuestro carro, sin filas ni pasar por ningún tipo de caja, computando una a una todas las mercaderías de compra que hayamos cargado. Es decir, los sensores realizarán una lectura total y simultánea de todos esos productos, sin ningún error. Enviando en línea la factura con todo el detalle y el monto a pagar. Sin mencionar, que se le aplicarán predicciones bayesianas de Inteligencia Artificial (Machine Learning) basada en las transacciones anteriores y usted no tendrá que ir personalmente a efectuar las compras.
Las soluciones hamiltonianas dimámicas e instantánas, serán de enormes magnitudes buscando los pasos óptimos de cientos de procesos cruzados, que resultarán en la mejor predicción de la ruta precisa y ordenada.
48.
Prepararse porque la Teoría de Colas49 tendrá que ajustarse. Las filas desaparecerán. Por ejemplo, en los aeropuertos se ingresará junto con varios pasajeros al mismo tiempo,- a lo más con el pasaporte en la mano, dado que podría no ser necesario tener documentación. En efecto, esto ocurriría si usted ya tienen dentro de su cuerpo humano un dispositivo conectado que fue diseñado por la ingeniería genética, a fin de que usted sea un Cyborg50 -, y el sistema hará las verificaciones correspondientes utilizando AI(Inteligencia Artificial) y Big data en un nano-segundo, etc...
Prepararse por ejemplo, para hacerse una Resonancia Magnética51 que tiene hoy una duración de una hora, pero que en el próximo futuro su equivalente sólo tomará un par de minutos, para recibir resultados exactos y detallados de imágenes y por escrito en línea. Esto, también es probable que el dispositivo conectado dentro su propio organismo humano (Cyborg) realice un exámen completo a cada un minuto.
La mayoría de las aplicaciones de tecnologías cuánticas resolverán problemas de optimización en las más diversas áreas. Sea sociales, científicas, financieras y comerciales combinado con la inteligencia artificial. Las
múltiples innovaciones que nos traerá la Física Cuántica en cuestiones fundamentales de la medicina, biología, calor, estructura de la materia, experiencias sensoriales, fortalecimiento de los organos humanos, acústica, electromagnetismo, astronomía, etc... Yo creo que esas innovaciones, ni siquiera aún las hemos visto en Ciencia Ficción.
Es importante prepararse para el efecto que tendrán las nuevas generaciones de tecnologías inalámbricas de comunicación, que irán sucediendose rápidamente en el tiempo y aumentando su capacidad de velocidad, conexión de múltiples dispositivos y cruce de gran cantidad de bases de datos. Hoy estamos con el 5G, con el cual ya es posible implementar el "Internet de las Cosas". Es decir, si se pueden interconectar objetos cotidianos no animados. El siguiente paso serán los humanos.
Atención, por ejemplo con los fondos de inversión financiera, porque aquellos que manejan algoritmos de inteligencia artificial tienen y tendrán una gran ventaja. Con computación cuántica serán capaces en nano-segundos de predecir permanentemente los movimientos de la bolsas (mercados de valores) a nivel mundial, con un 100% de certeza.
En conclusión es una exigencia para las sociedades invertir en la integración tecnológica y colaborar en los acuerdos del mundo global. Es decir, prepararse en todos los ámbitos de la sociedad. Especialmente legislar al respecto, para ir salvaguardando desde ya los intereses individuales de las personas y de las comunidades que quedarán en desventaja.
Recomiendo leer y escuchar a Yuval Noah Harari, quien no plantea predicciones del futuro, sino mapea diversos escenarios tanto positivos como negativos. Su enfoque se centra en el ser humano y su relación con el cambio tecnológico que progresivamente estamos viviendo. Particularmente en la biometría del comportamiento, la cual muestra un escenario evolutivo hacia una nueva especie mixta entre máquinas y seres humanos (Cyborg). Su serie de conferencias se encuentran disponibles en Internet. En particular su conferencia acerca de su libro "21 Lessons for the 21st Century" en Google y su conferencia en la Universidad de California, Homo-Deus-A-Brief-History-of-Tomorrow.
Objetivo Específico
Dado el marco mencionado anteriormente, vuelvo al objetivo del presente trabajo, reiterando que el uso del qubit permitirá evaluar rápidamente múltiples soluciones a un determinado problema, de manera instantánea (nano-segundo), en vez de estar realizando relaciones secuenciales como se hacen hoy en día. Es decir, los programadores podrán escribir códigos con funciones de cálculos complejos y casi determinísticos, cruzando y permutando millones de datos a una velocidad sideral. Y obtener resultados certeros. Está constatado que una computadora cuántica en funcionamiento podría procesar o factorizar en un día, lo que una computadora clásica le tomaría millones de años en hacerlo.
Para dar este salto, el programador debe cambiar su actual práctica de optimizar memoria, o recurrir a tablas temporales, donde almacena resultados intermedios, o datos en diferido o usar las típicas funciones de arreglos e iteraciones que se repiten dentro de la rutina, etc..
Sino que el cambio hacia los algoritmos cuánticos, requiere conocer las propiedades paralelas del qubit, las cuales permiten realizar operaciones de una manera diferente a las binarias, más bien utilizando la propiedad del paralelismo cuántico que le permitirá considerar múltiples opciones a la vez.
Es decir, utilizando menos recursos de programación y de índole computacional. Este esfuerzo inicial del programador, que igual poco a poco irá dando frutos y acumulando sus librerías de funciones -, contribuirá a su nuevo lego de desarrollo.52.
Nótese que un programador debe comprender y expresarse a través de un lenguaje de alta programación. Este conocimiento aplicado y experimental puede ser adquirido por oficio práctico, intuición o por estudios formales. (Ver Nomenclatura DocIRS para la Programación.
Para cerrar el presente artículo, es necesario exponer que el objetivo final es contribuir al esfuerzo de
desmitificación que se está realizando en torno la programación en la computación cuántica, induciendo a los equipos de desarrollo informático, diseño funcional y docentes a ir preparando a sus programadores, quienes obviamente basados en su oficio actual, su intuición matemática y las herramientas de computación cuántica disponibles, podrán codificar algoritmos. Es decir, manejar el aparato, sin conocer o recordar la ciencias del motor, tales como la lógica de Bool, trigonometría, algebra lineal, funciones de variable compleja, series, transformada de Fourier, etc..
Por tanto, termino diciendo: Avancemos directamente experimentando con ensayo y error, de modo de ir formalizando paulatinamente los fundamentos de la computación cuántica.