Indice

Conceptos Matemáticos Básicos de Computación Cuántica

José Enrique González Cornejo
v.5.0/Borrador/Mayo 2020


Video Parte I

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 1 y 0 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->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 base. 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 Complejo2 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〉$


    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 probabilidad3, los cuales son números complejos que se utilizan para describir el comportamiento del sistema. El cuadrado del módulo de esta cantidad 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 descubrió 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).




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

    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 de que un 40% en la medición que el qubit colapse 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ón4, el sistema sólo permite mostrar uno de los dos estados básicos $|0〉$ o $|1〉$.

    Es decir, va colapsar a uno de los estados básicos dependiendo de la distribución de probabilidad que tenga en ese instante. En cada instante del tiempo el qubit se encuentra en una superposición de estos estados. Por tanto,

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

     


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

    Por tanto, la información que almacena un sistema cuántico es mucho mayor, - por no decir infinita-, que la información que almacena un sistema digital clásico, ya que no sólo contiene cero o uno, sino una descripción de la probabilidad de que cada bit se encuentre entre cero o uno, -(lo cual hace que el sistema pueda ser manipulable en su evolución5)-, sólo que al decidir realizar la medición, el sistema colapsa a uno de los dos estados extremos.



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

    Más formalmente diríamos: Sea $n ∈ N $, se tiene que el número de vectores $m = 2^{n}$. Entonces el conjunto $A =${$α_1, α_2, α_3,...., α_m$} son los $m$ coeficientes o amplitudes de probabilidad del ket $|ψ〉$. Donde obviamente se debe cumplir la condición $Σ|α_i|^{2} = 1$ , y cada $α_i ∈ C$.

    Describiendo los vectores múltiples por extensión, tenemos:

    $2^{n}$ Estados Básicos con $n$ qubits cada vector:

    $$|000\text{…}0〉|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
     

    Seleccione Nº de Qubits: 


    Los Estados Básicos con $n = 2$ qubits son $2^{2} = 4$

    Simulador de Estados en Superposición en R4
    $α_i$AmplitudNorma CuadradoColapso
      $Σ|α_i|^{2}=$    









    En la simulación antes descrita, mostraremos 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:

      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.



    Formalizando el ejemplo: Dado un $n∈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>



    Ejemplo con números Reales:

    Tomemos arbitrariamente un conjunto con cuatro valores {$0.34, 0.56 , 0.48, 0.67$}. 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


    Por tanto, el conjunto de coeficientes reales estimados es:

    {$0.407251346, 0.522657375, 0.483886703, 0.571689836$}


  • Base Notación Dirac y Matricial


  • Matriz de $\quad 2^{2} \times 2^{2}\quad =\quad$4 $\times$ 4



    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:

    $|α|^{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$.

    Por tanto el modulo:

    |z|2=(x + iy)(x - iy)=x2 + ixy - ixy + y2

    ⇒ |z|2 =x2 + y2



    Ejemplo:

    Para el siguiente qubit, si se realiza una medición, ¿Cuál es la probabilidad que se encuentre el qubit en estado 0?

    $$|ψ〉=(\frac {1+i}{\sqrt{3}})|0〉-\frac {i}{\sqrt{3}}|1〉$$
    Entonces, la probabilidad de que el ket $|ψ〉$ se encuentre en el estado $|0〉$, es el módulo al cuadrado correspondiente a la parte real. Es decir:

    Por tanto, la probabilidad del que el sistema 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 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, en $C^{2}$ la Base de Hadamard:

    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 Euler6 $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 Bloch7






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


    Ejemplo:
    |00〉 = |0〉 ⊗  |0〉
    |00〉 = |0〉 ⊗  |1〉
    |10〉 = |0〉 ⊗  |1〉
    |11〉 = |1〉 ⊗  |1〉

    A continuación se ilustra un ejemplo con los pasos intermedios de cómo opera Kroneker sobre las componentes que un qubit:


    Notación para señalar 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 2n.

    Entonces, sea $p∈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..), es necesario hacer una corrección partiendo desde 0, porque en la presente monografía se usa la convención matemática, la cual empieza a contar desde la posición 1.


    Ejemplo:



    En síntesis se puede utilizar la siguiente notación reducida para representar vectores unitarios:



    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ántico8, 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 [1]$$

      i) La expresión [1] 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 $[1]$, - 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 $[1]$

      $$(\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 $[1]$:

    Por tanto es un Estado Producto, dado que la expresión $[1]$, 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[2]$$


    Demostración:

    Por demostrar que la expresión no es un Estado Producto. Es decir, que no es posible expresar $[2]$ 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 $[2]$ 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 $[2]$. Esto implica que $[2]$ 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 -, 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.

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

    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, si con computación clásica busco una carta determinada en un naipe barajado, lo debo hacer con un loop que lee secuencialmente cada una de las cartas como una entrada de la rutina. No obstante, con un algoritmo cuántico las lee todas simultáneamente, cada una de ellas como entrada del algoritmo y obviamente la velocidad de éxito es tremendamente mayor.

    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)" $[W]$.


    $$\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 Relatividad, 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).


     
      Simulador Entrelazamiento Cuántico  

    Medir
    Distancia inmesurable
    No existe medio de comunicación conocido entre ellos

    Medir





    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 universalidad10 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 (y conservar la Reversivilidad). 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 modulo 2", cuya operación se denota con el símbolo ⊕. 11

    - Como son tres bits que pueden ser {0,1}, entonces el número de combinaciones es 23 =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 21 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 112, i.e. c[1]=1 y c[0]=1






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

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

    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 reversibles, 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 la 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 o cuando se utiliza la Puerta OR). 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 leyes de la mecánica cuántica nos dicen que la evolución de un sistema responde a la Ecuación de Schrödinger13 (si no se realiza una medida). Se reitera que la presente monografía sólo está enfocada en la matemática computacional y no en la física cuántica que es la fuente experimental de donde derivan la mayoría de los postulados que iremos mostrando a los largo de los capítulos y versiones del documento.

    En síntesis para definir una Puerta Cuántica y es necesario que una matriz para:

      i) Definir su efecto sobre los Estados Básicos;
      ii) Exigir que actúe linealmente sobre los Estados en Superposición;
      iii) Que sea Unitaria14.


    Ejemplo de Matriz Unitaria

    Demostrar que la matriz A es Unitaria.
     

    A =
    ¿Unitaria?
    -i 0
    0 -i
       

    At =
    Transpuesta
    -i 0
    0 -i
       

    A* =
    Conjugada
    i 0
    0 i
       

    AA*= A*A =
    Identica
    1 0
    0 1


    A es una matriz Unitaria, dado que At = 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
    -i 0
    0 -i
    Det(A)=-1, por tanto, su matriz inversa existe.
    2
    Matriz Aumentada (A|I)
    -i 0 1 0
    0 -i 0 1

    3
    (Pivoteando) Multiplicando por i la fila 1
    1 0 i 0
    0 -i 0 1

    4
    (Pivoteando) Multiplicando por i la fila 2
    1 0 i 0
    0 1 0 i

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

    6
    Por tanto A-1
    i 0
    0 i

      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.

    A continuación las cuatro matrices de Pauli15, 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:



    Aplicamos el operador X





     Su acción sobre un qubit es:

    α0|0〉 + α1|1〉xα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:

    Aplicamos el operador Y

          Y·|0〉


           Y·|1〉

     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




  • La puerta Z viene definida por la matriz (unitaria):



  • Su accion es:

    |0〉Z|0〉

    |1〉Z -|1〉

    Es decir, la transformación lineal Z, cambia de signo la amplitud cuando se aplica al estado del qubit es uno y lo deja igual cuando se opera con el estado del qubit cero.



     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 viene definida por la matriz (unitaria):


  • La puerta H o Hadamard gira entre los estados |0〉 y |1〉, respectivamente. Es útil para hacer superposiciones.

    Su accion es:

    |0〉H(|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 nuestro algoritmo.

    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 en estado cero, pero se prepara el circuito para introducir los estados en superposición equiprobables con Hadamard.






  • Puerta CNOT (Control Not)

  • La Puerta cuántica CNOT es una controlada. Las puertas controladas operan sobre 2 qúbits o más. En este caso su efecto es:

    |x1 x2CNOT|x1 x1x2

      El primer qubit x1 se llama control. El control es invariante en la transformación.

      El segundo qubit x2 se llama objetivo. El objetivo se niega cuando x1 = 1. Es decir, x2 no cambia si x1 = 0.

      La operación ⊕ es la conectiva (XOR) que corresponde al OR Excluyente en el Algebra de Boole. La operación ⊕ se utiliza como la llamada suma módulo 2. Es decir, el primer bit de entrada x1 siempre se pasa directamente; el segundo bit NO se aplica si y solo si el bit de "control" x1 es |1〉. Para ser aún más explícito, CNOT tiene la siguiente tabla de verdad:

    Tabla de Verdad CNOT
    p q p⊕q
    V V F
    V F V
    F V V
    F F F



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


              



    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:


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

    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)



  • 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/".

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


    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. Analicemos el siguiente diagrama o circuito cuántico con un Estado de Bell.


    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:



  • El mismo circuito con el Editor de IBM se obtiene el siguiente resultado:


    Circuito con el Editor de IBM

    Ejemplo de Indempotencia16 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 17, 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 Deutsch

    Sea f:{0,1}n−→{0,1} una función booleana. Entonces f se dice ser Constante si f(x) no cambia para cualquier posible valor de entrada, i.e. f(x) invariante x ∈ {0,1}n.

    Por otro lado, f se dice Balanceada si f(x)=0 para la mitad de las opciones de entrada y f(x)=1 para la otra mitad.

    Por ejemplo, sea n=2 ⇒ 22=4 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.

    Matemáticamente el problema que resuelve el Algoritmo de Deutsch, se resume en una función booleana de la forma f({x0,x1,x2,...xn<}) → 0 or 1 , donde los xi pueden tomar valores 0 o 1.
    i) Si f(x) es Constante entonces:

      f(0)=f(1)=0

      f(0)=f(1)=1

    ii) Si f(x) es Balanceada entonces:

      f(0)=0 y f(1)=1

      f(0)=1 y f(1)=0

    A continuación un tabla con los 4 posibles resultados de la función binaria f de 1-qubit. 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(0) f(1) f(0) ⊕ f(1)
    f1 0 0 0 Constante
    f2 1 0 1 Balanceada
    f3 0 1 1 Balanceada
    f4 1 1 0 Constante

    Tabla f(x) binaria 1-qubit




    La pregunta que responde David Deutsch es muy simple:

    . Dada una función f(x) booleana ¿Es f Constante o Balanceada?

    Efectivamente la pregunta es simple. Sin embargo formularla en el ámbito cuántico requiere un complejo e inteligente algoritmo que resolvió brillantemente el matemático Davis Deutsch, dando un paso muy importante en el desarrollo de computación cuántica.18

    Consideremos un vector de 2 qubits y la siguiente transformación lineal |x y〉 |x,y ⊕ f(x) 〉 , i.e Uf tal que

    Uf |x y〉 = |x, y ⊕ f(x) 〉        [3]


    Uf 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)". Incluido el propio David Deutsch que lo utiliza en us 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 más acostumbrado a motor de bases de datos con ese nombre.

    Entonces aplicando el operador Uf a cada uno de los vectores básicos de 2 qubits, se tiene lo siguiente:

    Uf |0 0〉 =|0,0 f(0)〉
    Uf |0 1〉 =|0,1 f(0)〉
    Uf |1 0〉 =|1,0 f(1)〉
    Uf |1 1〉 =|1,1 f(1)〉


    Ahora, para ilustrar cómo opera Uf, tomemos un estado normalizado de 2 qubits. Sea

         

    La matriz  Uf  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.

        

        



    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 Uf, 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 Uf funcione en todas las configuraciones posibles en forma simultánea.

    La idea central de la función Uf, - 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 el algoritmo plantea fundamentalmente el cálculo de

    f(0) ⊕ f(1)


    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 llegar a la solución, consideremos uno de los vectores en estado de superposición de la base de Hadamard, como estado inicial de la operación. A saber:

    $$|ψ{_0}〉 = { |01〉}$$



    Circuito Cuántico de Deutsch


    $${x = H·q[0]={(|0〉+|1〉)\over \sqrt{2}} }$$
    $${y = H·q[1]={(|0〉-|1〉)\over \sqrt{2}} }$$



    El estado cuántico del qubit, en tanto input del operador unitario, está dado por:

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

    El operador unitario Uf 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 Uf sobre ψ1, se tiene:



    Caso 1:

  • En el caso de la función Constante, se tiene que f(0)=f(1) y es por eso que |ψ2〉 está dada por:


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

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

    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). Claramente f(0)⊕f(1)=0
      i) Si f(0)=f(1)=0 entonces: $${|ψ_3〉 =|0〉 {(|0〉 - |1⊕0〉)\over \sqrt{2} } }$$

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


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

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

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

      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 Uf es

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


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

    Y el resultado final al aplicar el Hadamard, H|ψ2〉 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
      ii) Si f(0)=0 (y f(1)=1) entonces: $${|ψ_3〉 =|1〉 {(|f(0)〉 - |1⊕f(0)〉)\over \sqrt{2} } }$$

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

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

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

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

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


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


    Un enfoque también utilizado para la comprensión de los pasos de la operación, es expresar el resultado en términos generales o fórmula compacta del circuito:

    [4]


    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 [4], depende del valor que tome f(x).



    Sintetizando estos resultados intermedios, se tiene:



    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)   ⇒   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)   ⇒   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 Experience19, a continuación el Algoritmo de Deutsch y su fuente de código con OPENQASM 2.020, 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[2], 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[1], q[2] quedan ambas en superposición representando los input's requeridos: |0〉 y |1〉, a fin de proceder a aplicar la función Uf.



      U2 ibm quantum experience-fuente gates glossary

      3. Se aplica el operador Uf representado en el Composer IBM como U2.
      Nótese que el objeto U2 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 Uf:


    Circuito Versión#2 Algoritmo de Deutsch con el Editor de IBM




    Epílogo del Artículo

    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ántica21 ni en sus efectos colaterales en la sociedad.

    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. Este algoritmo, es primordial para el entendimiento de la mayoría de los algoritmos clásicos 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.

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

    Ahora, desde el punto de vista del impacto de la computación cuántica22 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 es posible que se le apliquen predicciones bayesianas de Inteligencia Artificial basada en las transacciones anteriores y usted no tenga 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.23.

    Preparase porque la Teoría de Colas24 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-, y el sistema hará las verificaciones correspondientes en un nano-segundo, etc...

    Prepararse por ejemplo, para hacerse una Resonancia Magnética25 que tiene una duración de una hora, sólo en un par de minutos y recibir resultados exactos y detallados de imágenes y por escrito en línea.

    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.

    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, Se realizarán cálculos complejos cruzando y permutando millones de datos a velocidad sideral para obtener resultados certeros. Está constado que una computadora cuántica en funcionamiento podría factorizar números en un día que llevaría una computadora clásica millones de años.

    Invito a mis lectores interesados en este cambio que se avecina para la presente generación humana y las que vienen a consultar dentro de la inmensa gama de publicaciones disponibles en Internet sobre esta revolución en la historia humana. (Ver Así Cambiara el Mundo de Ignacio Cirac)

    Para cerrar el presente artículo, es necesario exponer que el objetivo final es desmitificar la programación en la computación cuántica, induciendo a los equipos de desarrollo, 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 al Pie de Pagina










    Videografía y Bibliografía

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

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

  • 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

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

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

  • 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

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

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

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

  • 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
    https://www.cs.cmu.edu/~odonnell/quantum15/QuantumComputationScribeNotesByRyanODonnellAndJohnWright.pdf

  • Algoritmo para el Cambio de Base Numérica
    José Enrique González Cornejo
    DocIRS Technology Junio 2014
    https://www.docirs.cl/algoritmo_cambio_base.htm

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

  • Problema de la Ruta Optima
    José Enrique González Cornejo
    01 de mayo 2009
    DocIRS Technology

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

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

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

  • Gates Glossary
    IBM Q, Introduction to Quantum Circuits
    https://quantum-computing.ibm.com/support/guides/gate-overview?section=5d00d964853ef8003c6d6820#rx-gate

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

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

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