Indice      

Algoritmo de Deutsch


Video Algoritmo de Deutsch

Complemento Anexo - Circuito Cuántico

Método de Montecarlo ~ Amplitudes Equiprobables ~ Puerta Cuántica de Hadamard


Capítulo extraído del Documento de Base:
Conceptos Matemáticos Básicos de Computación Cuántica

José Enrique González Cornejo
v.7.6/Marzo 2020



 +  Introducción

 +  Esquema del Contenido

 +  Preguntas Implícitas

 +  Estructura y Uso


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)



    Aplicación Algoritmo Decimal $\longrightarrow$ Binario
       Decimal  Base  
    Ingrese Número        
        
    Entero Decimal Equivalente Base
     
     
     



  • Cuántica ~ Qubits

  • 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:

      i. Asociatividad $|x〉 + (|y〉 + |z〉) = (|x〉 + |y〉) + |z〉$

      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.


    Maurits Cornelis Escher: Peces y Pájaros
    Puesto en Superposición sobre Colores

    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$.


    Ejemplo Estado Superposición:

    Si tenemos el siguiente ket:
    $$|\psi〉=\alpha_0|0〉+\alpha_1|1〉=\left[\begin{matrix}\alpha_0\\\alpha_1 \end{matrix}\right]$$ 7

    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:

    $$\psi = \sum_{i=0}^{n-1} u_i |i〉\qquad\qquad [1]$$
    Donde los $u_i \in C$ son las amplitudes de probabilidad normalizadas (Ver Amplitudes de Probabilidad con Números Complejos), i.e.

    $$\sum_{i=0}^{n-1} |u_i^{2}| = 1 \qquad\qquad [2]$$



    Estado de Múltiples Qubits

    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}$

    Más adelante se describen diferentes notaciones y formas de sintetizar los vectores con múltiples qubits, incluyendo el llamado Producto de Kronecker.


    Eligir Nº Qubits - Simular Amplitudes Aleatoriamente15


    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.

    En los párrafos "Operación Matricial - Producto Tensorial", se define el producto de Kronecker, en "Expresión Matemática de las Relaciones entre los Qubits" se tratan los estados básicos de las componentes de un qubit, y una descripción que facilita los cálculos y permite análisis dimensional, "Notación Sintética que Señala la Posición del $1$" en un vector canónico.



    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:

    {$0.407251346, 0.522657375, 0.483886703, 0.571689836$}


    Formalizando el ejemplo,(aplicando $[1]$):

    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];
          }
    }

           function Test_Suma_Cuadrados(m)
           {
           var sSuma=0;
          
           for (var i=1;i<=Math.pow(2,m);i++)
           {
           sSuma=sSuma + Math.pow(coef[i],2)
           }
           return sSuma
    }      
          /*se ejecuta amplitudes(2) con 2 qubits y*/

          Amplitudes(2)
    /*se se carga arreglo con 22 coeficientes normalizados*/
          alert(coef[1] + " , " + coef[2] + " , " + coef[3] + " , " + coef[4])

    /*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$.



    Representación Gráfica de $z = 3 - i·4$
    Sea $z = 3 - i·4$

    $|z|^{2} = x^{2} + y^{2} = 3^{2} + (-4)^{2} = 25$

    $|z|=\sqrt{x^{2} + y^{2}}$

    $|z| = \sqrt{25} = 5$

    $u =\frac{3}{5} - i\frac{4}{5} \Rightarrow |u|^{2}=1$

    $tan(\Theta)=\frac {x}{y}$ , donde   $x = r·cos(Θ) , y = r·sin(Θ)$

    $Θ=tan^{-1}(\frac{x}{y})=tan^{-1}(\frac{-3}{4})=-0.643501109 $

    $∴\quadΘ = -0.643501109$

    $\Rightarrow Θ=2π- 0.643501109 = 5.63$

    $\Rightarrow\quad u = cos(5.63)+ i·sin(5.63)$

    $\Rightarrow\quad u = e^{iΘ} = e^{i(5.63)}$


    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 AB es la matriz bloque mp x nq.



      a11B a21B a31B ....   ....   am1B
      a21B a22B a32B ... ... am2B
      a31B a32B a33B ... ... am3B
     AB =   ... ... ... ... ... ...
                 
                 
      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.


    Ejemplo:
    $$ \begin{matrix} |00〉 & = & |0〉⊗|0〉 \\ |01〉 & = & |0〉⊗|1〉 \\ |10〉 & = & |1〉⊗|0〉 \\ |11〉 & = & |1〉⊗|1〉 \\ \end{matrix} $$

    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.


    Ejemplo Estado Producto:

    $$ \frac{1}{2}|00〉-\frac{1}{2}|01〉+\frac{1}{2}|10〉-\frac{1}{2}|11〉 =(\frac{1}{\sqrt{2}}|0〉+\frac{1}{\sqrt{2}}|1〉)⊗(\frac{1}{\sqrt{2}}|0〉-\frac{1}{\sqrt{2}}|1〉) \qquad\qquad [3]$$

      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.

      $$ \biggl(\frac{1}{\sqrt(2)}\biggr)^{2}+\biggl(-\frac{1}{\sqrt(2)}\biggr)^{2}+\biggl(\frac{1}{\sqrt(2)}\biggr)^{2}\biggl(-\frac{1}{\sqrt(2)}\biggr)^{2} = \frac{4}{4}=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]$

      $$(\frac{1}{\sqrt{2}}|0〉+\frac{1}{\sqrt{2}}|1〉)⊗(\frac{1}{\sqrt{2}}|0〉-\frac{1}{\sqrt{2}}|1〉)$$

      y operemos:



    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.


    Sean $α_i∈C$ con $i=0,1,2,3$  Entonces:

    $$\frac{1}{\sqrt{2}}(|01〉+ |10〉) =\frac{1}{\sqrt{2}}|01〉 + \frac{1}{\sqrt{2}}|10〉$$
    $\Rightarrow$
    $$\frac{1}{\sqrt{2}}|01〉 + \frac{1}{\sqrt{2}}|10〉=\alpha_0\alpha_2(|0〉 ⊗ |1〉) + \alpha_1\alpha_3(|1〉 ⊗ |0〉)$$
    $\Rightarrow$
    $$\alpha_0\alpha_2=\frac{1}{\sqrt{2}}$$
    $\Rightarrow$
    $$\alpha_0\alpha_3=0\quad\Rightarrow\quad \alpha_0=0 \quad\lor\quad \alpha_3=0$$
    $$\alpha_1\alpha_2=0\quad\Rightarrow\quad \alpha_1=0 \quad\lor\quad \alpha_2=0$$
    $$\alpha_1\alpha_3=\frac{1}{\sqrt{2}}$$
    $$\boldsymbol \therefore \qquad \alpha_0\alpha_2 \neq \alpha_1\alpha_3$$
    $$\boldsymbol{\Rightarrow\Leftarrow}$$

    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
    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.

    $$|+〉=\frac {1}{\sqrt{2}}(|0〉+ |1〉$$ $$|-〉=\frac {1}{\sqrt{2}}(|0〉- |1〉$$

    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).


    $$\frac {1}{\sqrt{2}}(|00〉- |10〉)\quad\leftarrow \mathbf {Estado\quad de\quad Etrelazamiento\quad Estándard}$$

    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.

    - Nótese que c[1] y c[0] son los coeficientes de las potencias de $2$. (Ver Cambio de Base 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 C2nC2n 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:


    Ejemplo de Matriz Unitaria

    Demostrar que la matriz $A$ es Unitaria.
     


    A =
    ¿Unitaria?

    $$ \begin{pmatrix} -i & 0 \\ 0 & -i \\ \end{pmatrix} $$
       


    $A^{t}$=
    Transpuesta

    $$ \begin{pmatrix} -i & 0 \\ 0 & -i \\ \end{pmatrix} $$
       


    $A^{*}$=
    Conjugada

    $$ \begin{pmatrix} i & 0 \\ 0 & i \\ \end{pmatrix} $$
       


    AA* = A*A =
    Idéntica

    $$ \begin{pmatrix} 1 & 0 \\ 0 & 1 \\ \end{pmatrix} $$


    $∴\quad A$ es una matriz Unitaria, dado que $A^{t}=A^{*}$, donde $AA^{*} = A^{*}A = I$. Es decir, la matriz conjugada es la inversa, $A^{*} = A^{-1}$.

    Por demostrar que $A^{*}=A^{-1}$

    1
    Matriz A
    $$ \begin{pmatrix} -i & 0 \\ 0 & -i \\ \end{pmatrix} $$

    $Det(A)=-1\Rightarrow Det(A)\neq 0$, por tanto, su matriz inversa existe.

    2
    Matriz Aumentada (A|I)

    $$ \left( \begin{array}{cc|cc} -i&0&1&0\\ 0&-i&0&1 \end{array} \right) $$

    3
    (Pivoteando) Multiplicando por i la fila 1

    $$ \left( \begin{array}{cc|cc} 1&0&i&0\\ 0&-i&0&1 \end{array} \right) $$

    4
    (Pivoteando) Multiplicando por i la fila 2

    $$ \left( \begin{array}{cc|cc} 1&0&i&0\\ 0&1&0&i \end{array} \right) $$

    5
    La Idéntica en el Lado#1, y la inversa en Lado#2 de la Matriz Aumentada

    $$ \left( \begin{array}{cc|cc} 1&0&i&0\\ 0&1&0&i \end{array} \right) $$

    6
    Por tanto $A^{-1}$

    $$ \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:

    $$|\psi〉=cos(\frac {\theta}{2})|0〉+(\cos\theta+ i\ \sin \ φ)\sin(\frac {\theta}{2})|1〉$$
    $$Donde,\quad 0 \le\theta\le\pi \qquad 0 \le φ\le 2\pi$$


    A continuación las cuatro matrices de Pauli31, X, Y, Z.

    Puerta Cuántica $X$ análoga a NOT

    Debemos buscar un operador $X$, tal que:

    i) $|0〉 → |1〉$ y $|1〉 → |0〉$

    ii) Lineal: $α_0 |0〉 + α_1 |1〉 → α_1 |1〉 + α_0|0〉$

    ii) Sea unitario ($|α_0|^{2} + |α_1|^{2} = 1$).

    El operador es:

    $ X= \begin{pmatrix} 0 & 1 \\ 1 & 0 \\ \end{pmatrix} $
    $|\psi〉=\alpha_0|0〉+\alpha_1|1〉=\left[\begin{matrix}\alpha_0\\\alpha_1 \end{matrix}\right]$

    Aplicamos el operador $X$

    $ X= \begin{pmatrix} 0 & 1 \\ 1 & 0 \\ \end{pmatrix} \left[\begin{matrix}\alpha_0\\\alpha_1 \end{matrix}\right]= \begin{pmatrix} 0\alpha_0 & 1\alpha_1 \\ 1\alpha_0 & 0\alpha_1 \\ \end{pmatrix} =\left[\begin{matrix}\alpha_1\\\alpha_0 \end{matrix}\right] $

     Su acción sobre un qubit es:

    $α_0|0〉 + α_1|1〉\longrightarrow$$X$$\longrightarrow α_1|1〉 + α_0|0〉$

    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$.


    $X$ ibm quantum experience-fuente gates glossary


    Puerta Cuántica $Y$
    El operador es:

    $ Y= \begin{pmatrix} 0 & -i \\ -i & 0 \\ \end{pmatrix} $

    Aplicamos el operador $Y$

    $ Y|0〉= \begin{pmatrix} 0 & -i \\ -i & 0 \\ \end{pmatrix} \left[\begin{matrix} 1\\0 \end{matrix}\right] =\left[\begin{matrix} 0\\-i \end{matrix}\right] $

    $ Y|1〉= \begin{pmatrix} 0 & -i \\ -i & 0 \\ \end{pmatrix} \left[\begin{matrix} 0\\1 \end{matrix}\right] =\left[\begin{matrix} -i\\0 \end{matrix}\right] $

     Su acción sobre un qubit es:

    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):

    $ Z= \begin{pmatrix} 1 & 0 \\ 0 & -1 \\ \end{pmatrix} $

    Su accion es:

    $|0〉\longrightarrow$$Z$$\longrightarrow |0〉$

    $|1〉\longrightarrow$$Z$$\longrightarrow -|1〉$

    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):

  • $$ H=\frac {1}{\sqrt{2}} \begin{pmatrix} 1 & 1 \\ 1 & -1 \\ \end{pmatrix} $$

    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:

    $$ |\psi〉=cos(\frac {\theta}{2})|0〉+ e^{iφ}(\sin(\frac {\theta}{2})|1〉 $$

    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〉$).


    Su accion es:

    $|0〉\longrightarrow$$H$$\longrightarrow \frac {1}{\sqrt{2}}(|0〉+|1〉)$

    $|1〉\longrightarrow$$H$$\longrightarrow \frac {1}{\sqrt{2}}(|0〉-|1〉)$



    $$H|0〉=\frac {1}{\sqrt{2}}(|0〉+|1〉)$$
    $$H|1〉=\frac {1}{\sqrt{2}}(|0〉-|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:

    $ \large{\frac {1}{\sqrt{2}}} \begin{pmatrix} 1 & 1 \\ 1 & -1 \\ \end{pmatrix} $ = $\large{\frac {1}{\sqrt{2}}}$ $ \Biggl( \begin{pmatrix} 0 & 1 \\ 1 & 0 \\ \end{pmatrix} $ + $\begin{pmatrix} 1 & 0 \\ 0 & -1 \\ \end{pmatrix} \Biggr)$

    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.




    $CNOT$ ibm quantum experience-fuente gates glossary

    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:

    $$|00〉\rightarrow |00〉\qquad |01〉\rightarrow|01〉\qquad |10〉\rightarrow|11〉\qquad |11〉\rightarrow |10〉$$
    Diagrama Transformación 2-qubit


    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:


    $$ CNOT= \begin{pmatrix} 1 & 0 & 0 & 0 \\ 1 & 1 & 0 & 0 \\ 1 & 0 & 0 & 1 \\ 1 & 0 & 1 & 0 \\ \end{pmatrix} $$

    Diagrama de Síntesis Operación CNOT



    Puerta de Toffoli

    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:

    $$ U_T= \begin{pmatrix} 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \\ \end{pmatrix} $$


    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.

    $$|00〉\rightarrow \frac {1}{\sqrt{2}}(|00〉+|10〉)\rightarrow \frac {1}{\sqrt{2}}(|00〉+|11〉)$$

    Descripción de los Pasos del Circuito

    Los pasos aplicados en este circuito cuántico para crear un estado de Bell son los siguientes:

    1.- La puerta de Hadamard transforma el primer qubit q[0] a un estado de dos qubits:

    $${(|0〉+|1〉)|0〉\over \sqrt{2}}{={(|00〉+|10〉)\over \sqrt{2}}}$$
    2.- A continuación, a ese resultado se le aplica el CNOT:

    $${(|0\ \ 0⊕0〉 + |1 \ \ 0⊕1〉)\over\sqrt{2} }$$

    3.- Por lo tanto se obtiene:

    $${(|00〉+|11〉)\over\sqrt{2} }$$

    Circuito con el Editor de IBM



  • Ejemplo de Diagramación y Cálculo Manual con Resultante de Entrelazamiento:

  • $$|00〉\rightarrow \frac {1}{\sqrt{2}}(|00〉+|11〉)\rightarrow \frac {1}{\sqrt{2}}(|00〉+|11〉) \rightarrow \frac {1}{\sqrt{2}}(|00〉-|11〉)$$

    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]$.

      $$\color{black}{\mathbf{|ψ_3〉}} =(-1)^{f(x)}\Biggl(|x〉({(|0〉 - |1〉)\over \sqrt{2}})\Biggr)$$
      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.

      $$|ψ_0〉\longrightarrow |ψ_1〉\longrightarrow |ψ_2〉\longrightarrow \color{black}{\mathbf{|ψ_3〉}}$$
      Estados Cuánticos ~ Circuito Algoritmo de Deutsch

      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:


     <script>

    ... if (f(0) == 0)
         {
              if (f(1) == 0)
              {
              alert("Constante")
              }
              else
              {
              alert("Balanceda")
              }
         }
         else
              {
              if (f(1) == 0)
              {
              alert("Balanceda")
              }
              else
              {
              alert("Constante")
              }
         }
    ...
     </script>

    Bosquejo Javascript ~ Función Binaria 1-bit

    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.


     Salidas
    Entradas $f_0$ $f_1$ $f_2$ $f_3$
    $0$$0$$0$$1$ $1$
    $1$$0$$1$$0$$1$

    Posibles Resultados ~ Función f(x) binaria 1-qubit Deutsch


    Formalizando, sea $f${$0,1$}$^{n}\longrightarrow$ {$0, 1$} una función booleana ($f \unicode{123} 0,1 \unicode{125}^{n}=f\unicode{123}x_1,x_2,x_3,\dots,x_n\unicode{125}$).

    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:

    $A_0 ={\unicode{123}x\in f{\unicode{123}0,1\unicode{125}}^{n} / f(x)=0\unicode{125}}\quad\Rightarrow \quad \unicode{35} A_0 = 2^{n-1}$

    $A_1 ={\unicode{123}x\in f{\unicode{123}0,1\unicode{125}}^{n} / f(x)=1\unicode{125}}\quad\Rightarrow \quad \unicode{35} A_1 = 2^{n-1}$


    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:

    $$\left(\begin{matrix}2^{n}\\\ 2^{n-1} \end{matrix}\right)= \frac {(2^{n})!}{(2^{n}-2^{n-1})!\text{ }(2^{n-1})!}$$

    A continuación se ilustran algunos resultados con $n=1,2,3,4,..$

    $n=1$
    $$\left(\begin{matrix}2^{1}\\\ 2^{1-1} \end{matrix}\right)= \frac {2!}{(2-1)!\text{ }1!}=2$$

    $n=2$
    $$\left(\begin{matrix}2^{2}\\\ 2^{2-1} \end{matrix}\right)= \frac {4!}{(4-2)!\text{ }2!}=6$$

    $n=3$
    $$\left(\begin{matrix}2^{3}\\\ 2^{3-1} \end{matrix}\right)= \frac {8!}{(8-4)!\text{ }4!}=70$$

    $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.

    $|0〉\longrightarrow$$H$$\longrightarrow \frac {1}{\sqrt{2}}(|0〉+|1〉)$


    $|1〉\longrightarrow$$H$$\longrightarrow \frac {1}{\sqrt{2}}(|0〉-|1〉)$

    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$}



    $$|00〉\rightarrow |00〉\qquad |01〉\rightarrow|01〉\qquad |10〉\rightarrow|11〉\qquad |11〉\rightarrow |10〉$$
    Diagrama Transformación 2-qubit ~ CNOT


    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


    $$\psi = \frac {1}{2}|00〉 + \frac {1}{2}|01〉 + \frac {1}{2}|10〉 + \frac {1}{2}|11〉)$$

    Donde las normas de los coeficientes al cuadrado es igual a 1.


    $$\biggl(\frac{1}{2}\biggr)^{2}+\biggl(\frac{1}{2}\biggr)^{2}+\biggl(\frac{1}{2}\biggr)^{2}+\biggl(\frac{1}{2}\biggr)^{2} = \frac{4}{4}=1 $$
    $\Rightarrow$
    $$\psi = \frac {1}{2}(|00〉 + |01〉 + |10〉 + |11〉)$$


    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.


    $$U_f|\psi〉 = \frac {1}{2}U_f(|00〉 + |01〉 + |10〉 + |11〉)$$

    $\Rightarrow$

    $$U_f|\psi〉 = \frac {1}{2}(U_f|00〉 + U_f|01〉 + U_f|10〉 + U_f|11〉)$$


    Téngase presente, - para más adelante-, que cuando se aplica

    $$U_f|x〉|y〉→|x\quad y⊕f(x)〉$$
    a los estados cuánticos $|0〉,|1〉$, y $|-〉$ se obtienen las transformaciones a continuación:


    $U_f|x〉|0〉=|0〉|0⊕f(x)〉=|f(x)〉$

    $U_f|x〉|1〉=|1〉|1⊕f(x)〉$

    $U_f|x〉\biggl(\large {\frac {|0〉-|1〉}{\sqrt{2}}}\biggr) =\large |x〉\biggl(\frac {|f(x)〉-|1〉⊕|f(x)〉}{\sqrt{2}}\biggr)$

    $\Rightarrow$
    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:


    $$|ψ_1〉 =H|ψ_0〉 =H|01〉=H|0〉⊗H|1〉$$

    $$|ψ_1〉 = {(|0〉+|1〉)\over \sqrt{2}}⊗{(|0〉-|1〉)\over \sqrt{2}}$$
    $\Rightarrow$ $$|ψ_1〉 = {(|0〉+|1〉)(|0〉-|1〉) \over 2}={|00〉-|01〉+|10〉-|11〉) \over 2}$$

    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:


  • $${|ψ_2〉 ={(|0\ f(0)〉 - |0\ \ 1⊕f(0)〉 + |1\ f(1)〉-|1\ \ 1⊕f(1)〉)\over 2}}$$ 39

    $\Rightarrow$
    $${|ψ_2〉 ={(|0〉 + |1〉)(|f(0)〉 - |1⊕f(0)〉)\over 2} }$$
    40

    Al aplicar la operación Hadamard, H|ψ2〉=|ψ3〉, se obtiene:

    $${|ψ_3〉 =|0〉 {(|f(0)〉 - |1⊕f(0)〉)\over \sqrt{2} } }$$

    Veamos uno a uno las opciones de este resultado del Caso $1$, cuando $f(0)=f(1)$.

    Es claro que en caso de igualdad $f(0)⊕f(1)=0$ 41

      i) Si $f(0)=f(1)=0$ entonces: $${|ψ_3〉 =|0〉 {(|0〉 - |1⊕0〉)\over \sqrt{2} } }$$
      $\Rightarrow$
      $${|ψ_3〉 =|0〉 {(|0〉 - |1〉)\over \sqrt{2} }}$$


      $\Rightarrow$
      f es Constante.



      ii) Si $f(0)=f(1)=1$ entonces:

      $${|ψ_3〉 =|0〉 {(|1〉 - |1⊕1〉)\over \sqrt{2} } }$$
      $\Rightarrow$


      $${|ψ_3〉 =|0〉 {(|1〉 - |0〉)\over \sqrt{2} } }$$ 42

      $\Rightarrow$
      $${|ψ_3〉 =-|0〉 {(|0〉 - |1〉)\over \sqrt{2} }}$$


      $\Rightarrow$
      f es Constante.


    Caso $2$:

  • Por otro lado, si la función es Balanceada se tiene que $f(0)≠f(1)$, y desde ahí que $f(1)=1⊕f(0)$, el estado cuántico después de aplicar $U_f$ es:

    $${|ψ_2〉 ={(|0\ f(0)〉 - |0\ \ 1⊕f(0)〉 + |1\ f(1)〉-|1\ \ 1⊕f(1)〉)\over 2}}$$


  • $\Rightarrow$
    $${|ψ_2〉 ={(|0〉 - |1〉)(|f(0)〉 - |1⊕f(0)〉)\over 2} }$$

    Nótese que el primer factor marcado con círculo rojo se transformará en $|1〉$, dado que $H⊗H$ es idempotente.

    Al aplicar la operación Hadamard, $H|ψ_2〉=|ψ_3〉$ se obtiene:

    $${|ψ_3〉 =|1〉 {(|f(0)〉 - |1⊕f(0)〉)\over \sqrt{2} } }$$


    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$.


      i) Si $f(0)=0$ (y $f(1)=1$) entonces:
      $${|ψ_3〉 =|1〉 {(|f(0)〉 - |1⊕f(0)〉)\over \sqrt{2} } }$$
      $\Rightarrow$
      $${|ψ_3〉 =|1〉 {(|0〉 - |1⊕0〉)\over \sqrt{2} } }$$
      $\Rightarrow$
      $${|ψ_3〉 =|1〉 {(|0〉 - |1〉)\over \sqrt{2} } }$$

    $\Rightarrow$
    f es Balanceada.

      ii) Si $f(0)=1$ (y $f(1)=0$) entonces:

      $${|ψ_3〉 =|1〉 {(|1〉 - |1⊕1〉)\over \sqrt{2} } }$$
      $\Rightarrow$
      $${|ψ_3〉 =|1〉 {(|1〉 - |0〉)\over \sqrt{2} } }$$


      $${|ψ_3〉 =-|1〉 {(|0〉 - |1〉)\over \sqrt{2}}}$$


      $\Rightarrow$
      f es Balanceada.


    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:

    $$|ψ_3〉 =(-1)^{f(x)}\Biggl(|x〉({(|0〉 - |1〉)\over \sqrt{2}})\Biggr)$$ $[6]$


    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)$.

    $$(-1)^{f(x)} = \begin{cases} (-1)^{0} & \text{Si $f(x)=0$} \\[2ex] (-1)^{1} & \text{Si $f(x)=1$} \end{cases} $$

    Sintetizando estos resultados intermedios, a fin de describir $[6]$, se tiene:

    $$|ψ_3〉 = \begin{cases} \pm |0〉\Biggl(({(|0〉 - |1〉)\over \sqrt{2}})\Biggr) & \text{Si $f(0)=f(1)$} \\[2ex] \pm|1〉\Biggl(({(|0〉 - |1〉)\over \sqrt{2}})\Biggr) & \text{Si $f(0)\neq f(1)$} \end{cases} $$

    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:
    1.  $f(x)= 0$, entonces $(f(x)⊕y) = (0⊕y) = y$, de modo que la caja negra no hace nada.

    2.  $f(x)= 1$, entonces $(f(x)⊕y) = (1⊕y )=$ $\overline y$, de modo, que la caja negra simplemente niega $y$.

    3.  $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.







    Notas Complementarias Adjuntas




    Algoritmo de Deutsch

    Capítulo extraído de:
    Conceptos Matemáticos Básicos de Computación Cuántica
    Documento de Base







    Videografía y Bibliografía

  • [B1]
    Quantum Computation 5: A Quantum Algorithm
    David Deutsch, Autor del Algoritmo
    Centre for Quatum Computation
    https://www.youtube.com/watch?v=3I3OBFlJmnE

  • [B2]
    Curso Computación Cuántica
    Eduardo Sáenz de Cabezón
    26 abril 2019
    Instituto de Matemáticas de la UNAM, México
    https://www.youtube.com/watch?v=KKwjeJzKezw

  • [B3]
    Quantum Optics
    Miguel Orszag,
    Pontificia Universidad Católica - Santiago de Chile
    Editorial Springer ~ 2016


  • [B4]
    Quantum Optics - Mark Fox - Oxford University Press
    22 jun. 2006 - Oxford Master Series in Physics.
    Capítulo 13
    https://www.academia.edu/24696066/Fox_M_Quantum_optics_an_introduction

  • [B5]
    Quantum Computing Explain
    David McMahon on 2007
    WILEY-INTERSCIENCE
    A John Wiley & Sons, Inc., Publication
    https://www.academia.edu/31537353/_David_McMahon_Quantum_Computing_Explained_BookFi_1_

  • [B6]
    Programming a Quantum Computer with Cirq (QuantumCasts)
    Dave Bacon
    Google

  • [B7]
    The Quantum World ~ Quantum Physics for Everyone
    Kenneth W. Ford
    Harvard University Press
    Cambridge Massachusetts
    London England ~ 2004

  • [B8]
    Principios Fundamentales de Computación cuántica
    Vicente Moret Bonillo
    Profesor Titular de Universidad. Senior Member, IEEE.
    Departamento de Computación. Facultad de Informática.
    Universidad de la Coruña
    2O13

  • [B9]
    Quantum Networks for Elementary Arithmetic Operations
    Vlatko Vedral, Adriano Barenco and Artur Ekert
    Clarendon Laboratory, Department of Physics
    University of Oxford, Oxford, OX1 3PU, U.K.
    (Submitted to Phys. Rev. A)
    16 de Noviembre 1995

  • [B10]
    Quantum computing for the determined
    Michael Nielsen on June 10, 2011
    http://michaelnielsen.org/blog/quantum-computing-for-the-determined/
    https://www.youtube.com/watch?v=x6gOp_o7Bi8

  • [B11]
    QC — Quantum Algorithm with an example
    Jonathan Hui
    Dec 6, 2018
    https://medium.com/@jonathan_hui/qc-quantum-algorithm-with-an-example-cf22c0b1ec31

  •  
  • [B12]
    [W] Wikipedia
    Consultas a Wikipedia de múltiples conceptos relacionados a la Mecánica y Computación Cuántica
    https://en.wikipedia.org

  • [B13]
    Programación Cuántica
    Francisco Gálvez
    T3chFest 2017
    IBM
    https://www.youtube.com/watch?v=FYAkeCcOgeQ

  • [B14]
    Quantum Computation (CMU 18-859BB, Fall 2015)
    Lecture 1: Introduction to the Quantum Circuit Model
    September 9, 2015
    Lecturer: Ryan O’Donnell Scribe: Ryan O’Donnell

  • [B15]
    Hipertexto: Tratamiento Documental de Datos
    José Enrique González Cornejo
    Centro de Investigación y Desarrollo de la Educación,
    CIDE, Santiago – Chile, 1990.
    Registro Nº81.183 - 1991 ~ Editoria Argué Ltda

  • [B16]
    Algoritmo para el Cambio de Base Numérica
    José Enrique González Cornejo
    DocIRS Technology
    Math-Computing Open Academy Junio 2014
    https://www.docirs.cl/algoritmo_cambio_base.htm

  • [B17]
    Algoritmo, Generación Distribución Aleatoria Discreta de Suma 1
    José Enrique González Cornejo
    11 de julio 2012
    DocIRS Technology
    Math-Computing Open Academy https://www.docirs.cl/Algoritmo_Distribucion_Aleatoria.htm

  • [B18]
    Naïve Bayes ~ Simple Algoritmo de Clasificación Modelo de Variables Discretas
    José Enrique González Cornejo
    01 de agosto 2019
    DocIRS Technology
    Math-Computing Open Academy

  • [B19]
    Problema de la Ruta Optima
    José Enrique González Cornejo
    01 de mayo 2009
    DocIRS Technology
    Math-Computing Open Academy

  • [B20]
    Nomenclatura DocIRS para la Programación
    José Enrique González Cornejo
    24 de abril 2009
    DocIRS Technology
    Math-Computing Open Academy

  • [B21]
    Acerca del Estilo en Programación
    José Enrique González Cornejo
    18 de abril 2009
    DocIRS Technology
    Math-Computing Open Academy

  • [B22]
    Acerca de la Calidad de una Aplicación
    José Enrique González Cornejo
    18 de abril 2009
    DocIRS Technology
    Math-Computing Open Academy

  • [B23]
    Fundamentos Teóricos de los Lenguajes Estructurados
    José Enrique González Cornejo
    12 de julio de 2011
    DocIRS Technology
    Math-Computing Open Academy

  • [B24]
    Propiedades Geométricas Cualitativas
    José Enrique González Cornejo
    15 de marzo 1997
    DocIRS Technology
    Math-Computing Open Academy

  • [B25]
    Lunch & Learn: Quantum Computing
    Andrea Morello
    Quantum Engineering at University of New South Wales Australia
    21 nov. 2018

  • [B26]
    21 Lessons for the 21st Century
    Talks at Google
    Yuval Noah Harari 11 octubre 2018


  • [B27]
    Homo-Deus-A-Brief-History-of-Tomorrow
    Universidad de California,
    Yuval Noah Harari
    27 febrero 2017

  • [B28]
    MIND BLOWN: Quantum Computing & Financial Arbitrage
    Andrea Morello
    Quantum Engineering at University of New South Wales Australia
    18 jun. 2020

  • [B29]
    Algoritmo cuántico de Deutsch y Jozsa en GAMA
    M. Paredes López - A. Meneses Viveros - G. Morales-Luna
    Departamento de Matemáticas, Cinvestav, Av. Instituto Politécnico Nacional 2508, CDMX
    Departamento de Computación, Cinvestav, Av. Instituto Politécnico Nacional 2508, CDMX
    Rev. mex. fís. E vol.64 no.2 México jul./dic. 2018

  • [B30]
    Principios Fundamentales de Computación Cuántica
    2013, Vicente Moret Bonillo
    Universidad de la Coruña-España

  • [B31]
    Informática Cuántica - Parte 1
    Tecnologias Disruptivas
    Alejandro Alomar
    9 jul. 2018
    https://www.youtube.com/watch?v=SisRIgS3oO4

  • [B32]
    Computación Cuántica para Torpes
    Publicado el 26 de septiembre de 2016 por Sergio Montoro
    https://lapastillaroja.net/2016/09/computacion-cuantica/

  • [B33]
    Intro to Quantum Computing
    Steve Spicklemire
    Lesson 38 Quantum Computing, Deutsch's Problem

  • [B34]
    Learn Quantum Computation using Qiskit
    Page created by The Jupyter Book Community
    Qiskit Development Team Last updated on 2020/07/17.

  • [B35]
    Disfruta de la Experiencia cuántica de IBM
    Francisco R. Villatoro (Francis Naukas)
    2 noviembre, 2018
    https://francis.naukas.com/2018/11/02/disfruta-de-la-experiencia-cuantica-de-ibm/

  • [B36]
    Inversión de Matrices de Números Complejos
    reshish.com 2011 - 2020
    https://matrix.reshish.com/es/multCalculation.php

  • [B37]
    Algoritmo de Deutsch
    13 octubre 2016
    Felipe Fanchini
    https://www.youtube.com/watch?v=Sb5WRs8XUuU

  • [B38]
    Desarrollo de un simulador para el protocolo de criptografía cuántica E91
    en un ambiente distribuido
    Ingeniare. Rev. chil. ing. vol.23 no.2 Arica abr. 2015
    Luis Cáceres Alvarez,
    Roberto Fritis Palacios,
    Patricio Collao Caiconte

  • [B39]
    Effect of an artificial model’s vocal expressiveness on affective and cognitive learning
    . Llaima Eliza González Brouwer
    0999377
    MSc. Human Technology Interaction
    Department of Innovation Sciences
    Eindhoven University of Technology
    August 2018

  • [B40]
    Así Cambiará el Mundo la Computación Cuántica
    2016
    Ignacio Cirac
    https://www.youtube.com/watch?v=WJ3r6btgzBM

  • [B41]
    GIPHY
    Imagen de Animación Gif / Partículas
    Explore Partículas Gif

  • [B42]
    MathJax
    MathJax es una biblioteca javascript
    American Mathematical Society.
    Accessible Math in All Browsers


  • [B43]
    El Algoritmo de Deutsch-Jozsa
    KET.G
    25 mar. 2020
    Twitter: https://twitter.com/KetPuntoG


  • [B44]
    Apuntes de Grupos de Lie
    Badajoz, 30 de diciembre de 2017
    Volumen 3
    1.2. Grupos de Lie

  • [B45]
    Teoria de Grupos
    Marshall Hall jr.
    Bibioteca de Matemática Superior
    1967 Maximilian Company, N.Y. USA

  • [B46]
    Tutorial Grupos de Lie
    Javier García
    29 jun. 2017
    Serie de Capítulos ~ España

  • [B47]
    Matrices de Pauli - Pauli matrices Matrices de Pauli
    Enciclopedia libre Matrices de Pauli

  • [B48]
    La Mecánica Cuántica
    Los grupos de rotación I
    Matrices de Pauli

  • [B49]
    Física Matemática
    Grupos de Lie, rotaciones, unitarios, Poincaré.
    Monte Carlo
    L. L. Salcedo
    Departamento de Física Atómica, Molecular y Nuclear
    Universidad de Granada, E-18071 Granada, Spain
    29 de julio de 2020

  • [B50]
    Matrices de Pauli - Pauli matrices Matrices de Pauli
    De Wikipedia, la enciclopedia libre Matrices de Pauli

  • [B51]
    Phisics
    Explore our Questions

  • [B52]
    Entrevista a Jorge Antonio Vargas,
    FAMAF
    Universidad Nacional de Córdoba de Argentina,
    Investigador del Conicet
    20/01/2010, Pagina|12
    ,

  • [B53]
    Introducción a Grupos y Álgebras de Lie de Dimensión Infinita,
    Matthew Dawson,
    CIMAT- Mérida México noviembre de 2020,
    Instituto de Matemáticas de la UNAM(Universidad Nacional Autónoma de México)
    ,

  • [B54]
    Lie Groups:Introduction,
    Richard E. BORCHERDS,
    University of California,
    Department of Mathematics, USA
    ,

  • [B55]
    Lie theory for the Roboticist,
    Joan Solà,
    Institut de Robòtica i Informàtica Industrial, en catalán,
    Consejo Superior de Investigaciones Científicas (CSIC), Cataluña
    Universidad Politécnica de Cataluña (UPC). España

  • [B56]
    A micro Lie theory for state estimation in robotics,
    Joan Solà, Jeremie Deray, Dinesh Atchuthan,
    Diciembre 2021
    arXiv ~ https://arxiv.org,
    Web Accessibility Assistance -arXiv Operational Status

  • [B57]
    Graph Theory,
    Frank Harary,
    1969
    Addison-Wesley
    USA

  • [B58]
    RobotDocIRS,
    José Enrique González Cornejo
    abril 2003
    DocIRS Technology
    Math-Computing Open Academy


  • [B59]
    Introducción a la Topología Algebraica,
    Williams S. Massey,
    1972
    Editorial Reverté S.A.
    España


  • Paginas Independientes que Contienen los Capítulos del Documento:

  • Conceptos Matemáticos Básicos de Computación Cuántica
    José Enrique González Cornejo
    20 de marzo 2020
    DocIRS Technology
    Math-Computing Open Academy

  • Algoritmo de Deutsch
    José Enrique González Cornejo
    20 de marzo 2020
    DocIRS Technology
    Math-Computing Open Academy