GUÍA RAPIDA

Computación Cuántica

Mecánica cuántica

La notación Dirac

El espacio de los estados

Teoría cuántica de la información

El qubit

La esfera de Bloch

Circuitos cuánticos

Compuerta Identidad

Compuerta Pauli-X

Compuerta Pauli-Y

Compuerta Pauli-Z

Compuerta Hadamard

Compuerta CNOT (Controlled NOT)

Computadora cuántica

Entorno Gráfico

Uso de la interfaz gráfica de usuario

Menu del editor de codigo

Botón de generar diagrama

Botón de guardar codigo

Botón de abrir codigo

Botón de ejecución de estado unitario

Campo de ingreso de qubit’s

Botón de ejecución por lista de entradas

Botón de ejecución por módulo de automatización de entradas

Editor de codigo

Consola de salidas

Menu del entorno grafico de desarrollo

Botón para ingreso de la compuerta Pauli X

Botón para ingreso de la compuerta Pauli Y

Botón para ingreso de la compuerta Pauli Z

Botón para ingreso de la compuerta Hadamard

Botón para ingreso de la medición

Botón para ingreso de la compuerta cambio de fase campo de ingreso de fase

Botón para controlar compuerta

Botón para añadir qubit

Botón para eliminar qubit

Botón para generar codigo

Botón para descarga de imagen del circuito cuántico

Entorno grafico de desarrollo

Qubits

Escenarios

Compuertas

Entorno de programación

Inicialización de qubits

Uso de la compuerta Pauli X

Uso de la compuerta Pauli Y

Uso de la compuerta Pauli Z

Uso de la compuerta Hadamard

Uso de la compuerta cambio de fase

Uso de la compuerta control Pauli X

Uso de la compuerta control Pauli Y

Uso de la compuerta control Pauli Z

Uso de la compuerta control Hadamard

Uso de la compuerta control de cambio de fase

Uso de la medición

Ejecutar circuito

Ejemplo práctico de uso

COMPUTACIÓN CUÁNTICA

Mecánica cuántica

La mecánica cuántica es la rama de la física que estudia los sistemas físicos y propiedades a escalas atómicas y subatómicas, así como las propiedades de la radiación de la energía. Surgió a partir de la observación de que los fenómenos físicos a estas escalas parecían no coincidir con las leyes de la física clásica.


El desarrollo de las teorías de la mecánica cuántica comenzó a principios del siglo pasado. A diferencia de la mecánica clásica en la que podemos modelar sistemas físicos a partir de las matemáticas, en la mecánica cuántica debe realizarse un evento físicamente para que se pueda construir el modelo matemático.


Algunos experimentos con electrones mostraron que sus cargas no eran necesariamente puntuales, como se creía hasta el momento, si no que este se podía describir también junto a una serie de ondas que describen su movimiento. Se observó que siempre que se medía el electrón, este se encontraba en un estado diferente al que se había propuesto mediante las ondas, por lo que se le asoció como una interpretación probabilística o incertidumbre en la medición de un experimento cuántico, puesto que el hecho de medirlo realiza cambios en el estado de esta. En este hecho residen las propiedades fundamentales de la mecánica cuántica.


Los postulados de la mecánica cuántica permiten obtener:


  • La descripción de los sistemas físicos y sus estados.
  • La descripción de las magnitudes físicas.
  • La medición del sistema.
  • La evolución del sistema en el tiempo.

La notación Dirac

También llamada notación Bra-Ket por el nombre de sus elementos denota los estados cuánticos de un sistema.


  • Ket: representa el estado del sistema fisco el cual corresponde a un vector columna su notación es la siguiente.

|Ψ>

  • Bra: representa un estado dual el cual se obtiene con el conjugado del ket.

<Ψ|

Los operadores se denotan con una letra representativa con cierto énfasis:


Û

Por tanto, una operación sobre un estado base se describe el operador:


Û|Ψ>

La proyección de un estado sobre su mismo dual se define de la siguiente manera donde el resultado siempre será igual a 1:


<Ψ|Ψ>=1

Por el contrario, si se realiza la proyección de un estado sobre el dual de uno diferente el resultado siempre será un 0:


<Ω|Ψ>=0

El espacio de los estados

Asociado a cualquier sistema físico aislado existe un espacio vectorial complejo con un producto interno definido (Hilbert) o espacio de estados del sistema los cuales quedan definidos por su vector de estado, que es un vector formalizado en el espacio del sistema.


Encontramos dos tipos de estados con los cuales definimos el sistema físico.


  • Estado base: Se refiere a los estados en los que podemos encontrar el sistema y son estos los que tienen una representación vectorial.

  • Estado general: Es la amplitud de probabilidad de encontrar el sistema en un estado base.

Mediante la notación Dirac podemos describir los estados fundamentales de la siguiente manera.


|Ψ>= α|↑> + β|↓>

Dónde:


  • Ψ= Estado del sistema.
  • α y β= Números complejos.
  • ↑ y ↓= Estados base.

En el ejemplo anterior se muestra la notación para un sistema de dos estados, la notación de los estados base puede definirse como sea conveniente dependiendo el número de estos.


El vector formalizado entonces en nuestro espacio de Hilbert está definido de la siguiente manera:


Formula

Por tanto, el vector unitario queda definido de la siguiente manera:


Formula

Teoría cuántica de la información

Tiene como principios de funcionamiento dos postulados de la mecánica cuántica mediante la cual se podrían optimizar los procesos informáticos de la computación clásica, dichos postulados se describen a continuación.


Superposición cuántica


Describe que un sistema físico como una partícula se encuentra en todas sus configuraciones posibles (también llamadas estados) simultáneamente, esto solo es posible mientras el sistema se encuentre totalmente aislado y no exista ningún observador que lo mida, según la existencia o ausencia de un observador los estados pueden tener las siguientes propiedades.


  • Coherencia: Un estado cuántico es coherente cuando no existe ningún observador que mida el sistema, mientras el sistema sea coherente este se encontrara en todos sus estados simultáneamente.

  • Decoherencia: Un estado cuántico es decoherente o pierde coherencia, esto sucede cuando un observador lo mide y este adquiere únicamente uno de sus posibles estados.

Entrelazamiento cuántico


Dos partículas que se generan durante el mismo evento mantienen en el mismo estado y si uno cambia el otro lo hará simultáneamente, adquiriendo el mismo estado que la otra sin necesidad de ninguna conexión física y sin importar la distancia que exista entre ellas.


Estos dos postulados nos permiten proponer un nuevo sistema computacional que funcione aprovechando ciertas ventajas que nos ofrece operar con átomos completos en lugar de impulsos eléctricos como en la computación clásica.


La información entonces no es transportada por medios tangibles como hasta ahora se ha hecho, sino que, aprovechando el entrelazamiento de dos átomos podemos “teletransportar” la información de un lugar a otro si se codifican sus estados superpuestos de una manera conveniente.


El qubit

Se trata de la unidad fundamental de la computadora cuántica, corresponde análogamente al bit utilizado en la computadora clásica, sin embargo, mientras el bit corresponde a impulsos eléctricos que se interpretan de manera binaria como 1 ó 0, el qubit corresponde a un sistema físico de dos estados base los cuales para tener una representación similar a la de la computación clásica denotamos como:


|1> y |0>

Viéndolo así podría parecer que no hay diferencia entre ambos, sin embargo, según el principio de superposición podemos encontrar estados base como el siguiente:


Formula

Que son válidos más no hay representación de estos estados pues violan las premisas de Bell:


  • Realidad: Los sistemas físicos tienen valores definidos para sus propiedades, aunque no haya nadie viéndolos.

  • Localidad: Cualquier efecto físico se prolonga a una velocidad finita.

Se asume que estos estados significan que el sistema se encuentra en un estado coherente.


Conforme se entrelacen qubits su representación vectorial crecerá a una razón de 2n donde n es el número de qubits, se escriben obteniendo el producto tensorial de los qubits involucrados.


La esfera de Bloch

Es un espacio de Hilbert tridimensional donde se representa un qubit.


Formula
Ejes de la esfera de Bloch.

Donde un estado se representa como un punto al final un vector.


Formula
Elementos de la esfera de Bloch.

Cualquier operación que se haga sobre el estado del qubit se representa como una trayectoria en la superficie de la esfera.


Formula
Trayectoria sobre la esfera de Bloch.


Circuitos cuánticos

Análogo a un circuito lógico clásico, un circuito cuántico se compone de una serie de compuertas cuánticas que operan sobre uno o más qubits.


Su estructura comprende los siguientes elementos:


Escenarios: los circuitos se organizan en escenarios los cuales podemos añadir qubits o transformar aquellos provenientes de escenarios anteriores a través de las compuertas cuánticas


Qubits: Muestran el flujo de la información dentro del circuito existen dos tipos:


  • Qubits de control: Donde se inicializa la información que queremos operar, dependiendo de esta otra compuerta puede o no ser operada.
Grafos de un escenario con dos qubits de control

  • Qubits objetivos: Se utilizan para representar la salida de las operaciones de compuertas que requieren control, estos siempre se inicializan en |0>, la medición de las salidas de los circuitos se efectúa en uno de estos qubits.
Representación gráfica de un qubit objetivo

Compuertas cuánticas: Es mediante estas que se modifican los estados de los qubits a lo largo del circuito.


Compuerta Identidad

El qubit de entrada será el mismo a la salida.



Compuerta Pauli-X

Nos dará el qubit contrario al de entrada equivale a una rotación en el x.



Compuerta Pauli-Y

Nos dará como resultado una rotación en el eje “Y”



Compuerta Pauli-Z

Equivale a una rotación en el eje “Z” transformando 1en -1 y dejando al 0 intacto.



Compuerta Hadamard

Representa una rotación sobre los ejes “X” y “Z”.



Compuerta Cambio de fase

Deja el estado |0> intacto y al estado|1> le da una rotación en e en la esfera de Bloch.



Estas son las compuertas cuánticas fundamentales puesto que son aquellas con las que operamos un solo qubit, haciendo uso de estas se puede representar cualquier otra operación sin embargo existen compuertas que pueden llegar a operarse con 2 o más qubit’s como es el caso de las compuertas controladas, en estas encontramos dos tipos de qubit’s.


  • Qubit de control: dependiendo del estado base en que se encuentren estos qubit’s permitirán a los qubit’s objetivos cambiar su estado según la compuerta lógica fundamental configurada.

  • Qubit objetivo: estos qubit’s cambiaran de estado según la compuerta lógica que se les configure solo sitodos los qubit’s de control que los gobiernan están en el estado base |1>.


Existen diferentes tipos de compuertas controladas según el algoritmo que se desea implementar, sin embargo, la más común es la CNOT que se describe a continuación.


Compuerta CNOT (Controlled NOT)

Cambia el estado del qubit objetivo cuando el de control está en |1>,



Terminales: sirven para indicar lo que se hará en su último escenario cada qubit existen dos casos.


  • Medición: indica que en este qubit se realizará la medición

Representación grafica de una medición de un qubit.

  • Salida: indica que este qubit no tendrá mayor continuidad en el circuito

Representación gráfica de una terminal de un qubit.

Con todos sus elementos finalmente un circuito lógico se ve de la siguiente manera:


Representación gráfica de un circuito cuántico.

Computadora cuántica

Se trata de una máquina análoga a la computadora clásica capaz de realizar cálculos mediante la operación de qubits con compuertas cuánticas, se define como una colección de qubits capaces de:


  • Prepararse en un estado base conocido.
  • Medirse mediante sus estados base.
  • Aplicar una o más compuertas lógicas sobre cualquier conjunto discreto de qubits.
  • Solo evolucionaran de la manera prevista por las compuertas.

Cada qubit es capaz de realizar operaciones independientes a los demás, permitiendo así que exista un paralelismo real en tiempo de ejecución.


Actualmente existen máquinas que operan de la manera propuesta, más no son de propósito general si no específico. La computadora cuántica se ha propuesto como un complemento a la computadora clásica para realizar los cálculos complejos que a esta le serian intratables.


Entre los esfuerzos actuales por desarrollar una computadora cuántica se encuentra la computadora desarrollada por D-wave, IBM-Q.




ENTORNO GRAFICO

Uso de la interfaz gráfica de usuario

La interfaz gráfica de usuario del simulador consta de un panel con 5 diferentes áreas que se muestran a continuación:


Áreas del panel del simulador Q-team


  1. Menu del editor de codigo.
  2. Editor de codigo.
  3. Consola de salidas.
  4. Menu del entorno grafico de desarrollo.
  5. Entorno grafico de desarrollo.

A continuación, se describen las funcionalidades dentro de cada una de las 5 áreas.


Este menu contiene los elementos necesarios para operar con el editor de codigo, sus elementos son los que se muestran a continuación:



Menu del editor de codigo.

  1. Botón de generar diagrama.
  2. Botón de guardar codigo.
  3. Botón de abrir codigo.
  4. Botón de ejecución de estado unitario.
  5. Campo de ingreso de valor de qubit’s.
  6. Botón de ejecución por lista de entradas.
  7. Botón de ejecución por módulo de automatización de entradas.

A continuación, se describen los funcionamientos de cada uno de los botones del menu del editor de codigo.


Botón de generar diagrama

Este botón nos permitirá generar el diagrama descrito en el editor de texto dentro del entorno de desarrollo gráfico, se recomienda utilizar esta función constantemente para verificar que el código escrito corresponda con el circuito que se desea desarrollar, si el codigo está correctamente escrito, veremos la siguiente leyenda en la consola de salidas:


System:
Diagrama generado automáticamente


Y veremos el diagrama generado, por otro lado, si el archivo contiene errores mostrara un mensaje en la consola de salidas indicando la línea donde se encuentra el error junto con una breve descripción de este.


System:
ERROR:
Error: se esperaban un qubits validos (q0, q1, q2...) despues de la compuerta
controlada en la instruccion 9




Botón de generar diagrama.

Botón de guardar codigo

Este botón nos permitirá guardar el código que hayamos escrito dentro de un archivo TXT y descargarlo en nuestro equipo, al presionarlo nos dará la opción de darle un nombre al archivo, por default mostrará el nombre codigo.txt. se recomienda anteceder el nombre del codigo previo a este nombre por default para reconocer que se trata del codigo del circuito que estamos generando, si el archivo contiene errores mostrara un mensaje en la consola de salidas indicando la línea donde se encuentra el error junto con una breve descripción de este.


System:
Archivo descargado....




Botón de guardar codigo.


Ventana de guardar código con nombre por default.


Ventana de guardar codigo con formato de nombre sugerido.

Botón de abrir codigo

Este botón nos permitirá buscar dentro de un explorador de archivos algún código en formato TXT que hayamos guardado previamente para escribirlo dentro de nuestro editor de texto.



Botón de abrir codigo.


Ventana de carga de archivo de codigo.

Botón de ejecución de estado unitario

Este botón nos permitirá ejecutar el código generado utilizando las entradas descritas en el campo de ingreso de qubit, es necesario ingresar el valor de cada uno de los qubit’s separados por una coma, estos valores pueden incluir números complejos donde la parte real sea 1 ó 0.


Ejemplo: 1+i


Asi mismo puede admitir números enteros que sean 1 o 0, sí los valores fueron introducidos correctamente podremos ver el resultado de la operación dentro de la consola de salida:


System:
Ejecutando...
System:
(0+i)
System:
El proceso tardó 1 milisegundos.



Por otro lado, sí fueron introducidos incorrectamente en la consola de salida nos dará un error mostrando alguna sugerencia de cómo ingresar los valores de entrada:


System:
Ejecutando...
System:
Error: La entrada 0 debe tener 1 elementos separados por comas.




Botón de ejecución de estado unitario.

Campo de ingreso de qubit’s

Es un campo de texto donde deberemos escribir los valores de los qubit’s separados por coma que operaremos con el botón de ejecución simple de código.



Campo de ingreso de qubit’s.

Botón de ejecución por lista de entradas

Este botón nos permitirá introducir un conjunto de valores de entrada para el circuito generado y operarlos, la lista deberá contener en cada renglón el conjunto de valores de los qubit’s separados por coma, estos valores pueden incluir números complejos donde la parte real sea 1 ó 0, asi mismo puede admitir números enteros que sean 1 ó 0, ejemplo:


0, 0+i, 0
0, 0, 1
1, 1, 1+i


Sí los valores fueron introducidos correctamente podremos ver el resultado de la operación dentro de la consola de salida:


System:
Ejecutando....

System:
RESULTADO:
(1+0i) (0+0i) (1+0i)
(1+0i) (0+0i) (0+0i)
(0+0i) (1+0i) (0+0i)
System:
El proceso tardó 5 milisegundos.



Asi mismo un archivo con los valores será descargado bajo el nombre “resultado.txt”



Descarga del archivo con los resultados de las entradas en la lista.

Por otro lado, si existe algun error en la lista en la consola de salidas veremos un mensaje que nos avisara del error ofreciendo alguna sugerencia de como corregir la lista de entradas:


System:
Ejecutando....

System:
Error: La entrada 2 debe tener 3 elementos separados por comas.




Botón ejecución por lista de entradas.

Botón de ejecución por módulo de automatización de entradas

Este botón ejecutará un algoritmo que obtendrá un vector con todos los posibles estados de entrada a partir del número de qubit’s existentes en el circuito y posteriormente operará dicho circuito con todos estos valores realizando una descarga de los resultados una vez finalizado el proceso, de no encontrar errores en el código generado nos preguntará el nombre que le queramos dar a la descarga del archivo dando por default el nombre "resultados.txt", se recomienda mantener la palabra resultados y antecederla del nombre del circuito que estamos generando.



Botón de ejecución por generador de todos los posibles estados de entrada.


Ventana de descarga de resultados con nombre por default.


Ventana de descarga de resultados con formato de nombre sugerido.

Si el resultado es correcto veremos lo siguiente en la consolad de salida:


System:
Ejecutando....

System:
Resultado:
(1+0i) (0+0i) (1+0i)
(1+0i) (0+0i) (0+0i)
(1+0i) (1+0i) (1+0i)
(1+0i) (1+0i) (0+0i)
(0+0i) (0+0i) (0+0i)
(0+0i) (0+0i) (1+0i)
(0+0i) (1+0i) (1+0i)
(0+0i) (1+0i) (0+0i)


System:
El proceso tardó 3 milisegundos.

Editor de codigo

Se trata de un editor de código en el cual podremos escribir el código correspondiente a nuestro circuito siguiendo las directrices de la interfaz de línea de comandos descrita en el Anexo 2.



Editor de texto del simulador Q-team.

Consola de salidas

Se trata de una ventana donde podremos ver los mensajes del sistema, así como los resultados de las operaciones que estamos realizando.



Consola de salidas del simulador Q-team.

Se trata de un menu que tiene los elementos necesarios para construir circuitos cuánticos de una forma gráfica.



Consola de salidas del simulador Q-team.

  1. Botón para ingreso de la compuerta Pauli X.
  2. Botón para ingreso de la compuerta Pauli Y.
  3. Botón para ingreso de la compuerta Pauli Z.
  4. Botón para ingreso de la compuerta Hadamard.
  5. Botón para ingreso de la medición.
  6. Botón para ingreso de la compuerta cambio de fase y campo de ingreso de fase.
  7. Controlar compuerta.
  8. Añadir qubit.
  9. Eliminar qubit.
  10. Botón para generar codigo.
  11. Botón para descarga de imagen del circuito cuántico.

Botón para ingreso de la compuerta Pauli X

Este botón nos permitirá añadir una compuerta Pauli X dentro del entorno de desarrollo gráfico, para utilizarla debemos hacer clic sobre ella y una vez hecho esto en nuestro cursor tomará la forma de la compuerta y deberemos arrastrarlo al lugar donde queramos insertar nuestra compuerta dentro del entorno de desarrollo gráfico.



Botón de ejecución por generador de todos los posibles estados de entrada.

Botón para ingreso de la compuerta Pauli Y

Este botón nos permitirá añadir una compuerta Pauli Y dentro del entorno de desarrollo gráfico, para utilizarla debemos hacer clic sobre ella y una vez hecho esto en nuestro cursor tomará la forma de la compuerta y deberemos arrastrarlo al lugar donde queramos insertar nuestra compuerta dentro del entorno de desarrollo gráfico.



Botón para ingreso de la compuerta Pauli Y.

Botón para ingreso de la compuerta Pauli Z

Este botón nos permitirá añadir una compuerta Pauli Z dentro del entorno de desarrollo gráfico, para utilizarla debemos hacer clic sobre ella y una vez hecho esto en nuestro cursor tomará la forma de la compuerta y deberemos arrastrarlo al lugar donde queramos insertar nuestra compuerta dentro del entorno de desarrollo gráfico.



Botón para ingreso de la compuerta Pauli Z.

Botón para ingreso de la compuerta Hadamard

Este botón nos permitirá añadir una compuerta Hadamard dentro del entorno de desarrollo gráfico, para utilizarla debemos hacer clic sobre ella y una vez hecho esto en nuestro cursor tomará la forma de la compuerta y deberemos arrastrarlo al lugar donde queramos insertar nuestra compuerta dentro del entorno de desarrollo gráfico.



Botón para ingreso de la compuerta Hadamard.

Botón para ingreso de la medición

Este botón nos permitirá añadir un componente que nos permitirá medir el estado de qubit en cualquier escenario dentro de nuestro circuito dentro del entorno de desarrollo gráfico, para utilizarla debemos hacer clic sobre ella y una vez hecho esto en nuestro cursor tomará la forma de la compuerta y deberemos arrastrarlo al lugar donde queramos insertar nuestra compuerta dentro del entorno de desarrollo gráfico.



Botón para ingreso de la compuerta medición.

Botón para ingreso de la compuerta cambio de fase campo de ingreso de fase

Este botón nos permitirá añadir una compuerta cambio de fase dentro del entorno de desarrollo gráfico, para utilizarla debemos hacer clic sobre ella y una vez hecho esto en nuestro cursor tomará la forma de la compuerta y deberemos arrastrarlo al lugar donde queramos insertar nuestra compuerta dentro del entorno de desarrollo gráfico.



Botón para ingreso de la compuerta cambio de fase.

Seguido de esta podremos encontrar un campo de texto dónde podremos ingresar un número del cero al 360 que corresponde al número de grados que se requieren para el cálculo de la identidad de Euler.



Campo de ingreso de fase.

Botón para controlar compuerta

Esta función nos permitirá añadir qubits de control a una compuerta previamente añadida en nuestro circuito, su uso es en 2 pasos:


  • 1. Al seleccionar está función nuestro cursor tomará la forma de un qubit objetivo como se ve en la siguiente ilustración:


  • Imagen de selección de qubit objetivo.

  • Una vez seleccionado deberemos arrastrarlo al lugar donde se encuentre la compuerta que queremos seleccionar dentro del entorno de desarrollo gráfico, una vez hecho esto la imagen desaparecerá del cursor.

  • 2. Una vez seleccionado el qubit objetivo deberemos seleccionar el qubit de control el cual deberá corresponder a alguno de los que están en la parte superior al que hayamos seleccionado o inferior para esto en nuestro cursor aparecerá la siguiente ilustración:


  • Imagen de selección de qubit de control.

  • Una vez seleccionado nuestro qubit de control, la ilustración desaparecerá del cursor.

Una vez ejecutados estos pasos podremos ver nuestra compuerta enlazada a un qubit de control, cabe mencionar que es posible añadir más de 1 qubit de control a una sola compuerta como se ve en la siguiente ilustración:



Compuertas controladas con uno y más qubits de control en diferentes posiciones.

Botón para añadir qubit

Este botón añadirá un qubit en la parte inferior de nuestro circuito.


Botón para añadir qubit.

Botón para eliminar qubit

Este botón eliminara el qubit en la parte inferior de nuestro circuito.


Botón para eliminar qubit.

Botón para generar codigo

Una vez completado nuestro circuito dentro de un entorno gráfico, es necesario generar el código ya que el simulador lo requiere para poder generar los resultados por lo que una vez diseñado nuestro circuito deberemos presionar este botón para generar automáticamente el código que lo representa previo a su ejecución.


Botón para generar codigo.

Botón para descarga de imagen del circuito cuántico

Con este botón podremos descargar una imagen de nuestro circuito una vez generado ya sea a través del botón de generar diagrama o desarrollándolo manualmente, hoy el formato en el que se guardará será PNG y por default tendrá el nombre “clipped”.


Botón para descarga de imagen del circuito cuántico.

Entorno grafico de desarrollo

Se trata del lienzo donde vamos a diseñar nuestro circuito mediante la inserción hoy de los siguientes elementos:


  • Qubits
  • Escenarios
  • Compuertas

Asi mismo podremos encontrar ciertas funciones que nos apoyaran a agilizar el diseño de nuestros circuitos



Entorno grafico de desarrollo.

Qubits

Son las unidades fundamentales de información cuántica y dentro de un circuito se representan como una línea horizontal que puede atravesar todos los escenarios, es sobre de estos sobre los cuales modificamos su valor utilizando las compuertas cuánticas.



Ejemplo de un qubit atravesando 8 escenarios.

Para añadir un qubit a nuestro circuito existen 2 maneras que se describen a continuación:


  • 1. Utilizar el botón para añadir qubit (Q+) del Menu del entorno grafico de desarrollo: Al hacer clic sobre este botón se añadira un nuevo qubit en la parte inferior de nuestro circuito



    Circuito previo a añadir un qubit.


    Circuito después de añadir un qubit.

  • 2. Utilizar el botón para añadir qubit (Q+) del nombre del qubit posterior: Es necesario hacer clic sobre el nombre del qubit (por ejemplo, Q0) posterior al que queremos que aparezca uno nuevo y seleccionar el botón Q+



    Circuito previo a añadir un qubit.


    Circuito con opciones de qubit desplegadas.


    Circuito después de añadir un qubit.

    Se recomienda usar esta función en circuitos que se han desarrollado previamente y sea necesario insertar un qubit en una posición en específico.



Para eliminar un qubit a nuestro circuito existen 2 maneras que se describen a continuación:


  • 1. Utilizar el botón para eliminar un qubit (Q-) del Menu del entorno grafico de desarrollo: Al hacer clic sobre este botón se eliminará el qubit en la parte inferior de nuestro circuito



    Circuito previo a eliminar un qubit.


    Circuito después de eliminar un qubit.

  • 2. Utilizar el botón para eliminar (🗑️) del nombre del qubit: Es necesario hacer clic sobre el nombre del qubit (por ejemplo, Q1)



    Circuito previo a eliminar un qubit.


    Circuito con opciones de qubit desplegadas.


    Circuito después de añadir un qubit.

Escenarios

Los escenarios corresponden a los instantes de tiempo en los cuales se pueden ejecutar con puertas sobre los qubits, en un circuito se representan como columnas que atraviesan los diferentes qubits de nuestro circuito.


Para añadir un escenario conforme vayamos desarrollando nuestro circuito, el simulador detectará si el último escenario tiene alguna compuerta dentro de algún qubit y de ser así añadirá un escenario nuevo al final.



Circuito previo a añadir un escenario.


Circuito después de añadir un escenario.

Para eliminar un escenario es necesario utilizar el botón para eliminar (🗑️) del nombre del escenario: Es necesario hacer clic sobre el nombre del escenario (por ejemplo, S1)



Circuito previo a eliminar un escenario.


Circuito después de eliminar un escenario.

Compuertas

Se trata de los operadores mediante los cuales modificaremos el estado de un qubit, para añadir estos simplemente hay que seleccionar el que queramos del menu del entorno grafico de desarrollo posteriormente hay que dirigirse a la intersección entre el club y el escenario donde queramos que este se encuentre e insertarlo como:



Selección de una compuerta.


Circuito después de agregar una compuerta.

En el caso de la compuerta cambio de fase, previo a agregar la compuerta deberemos indicar a cuántos grados deberá aplicarse la fórmula de Euler dentro del campo de ingreso de fase.


Para eliminar una compuerta hoy debemos hacer clic sobre aquella que queremos que desaparezca y seleccionar el botón para eliminar para eliminar. (🗑️)



Eliminar compuerta.

ENTORNO DE PROGRAMACIÓN

Inicialización de qubits

Todo circuito se inicializa indicando el número de qubits que tendrá el circuito, esto se hace indicándolo en la primera línea de la siguiente manera:


qubits q#;


Donde el “#” deberá ser sustituido por el número de qubits a utilizar, ejemplo:


qubits 3;


Uso de la compuerta Pauli X:

Para utilizar la compuerta Pauli X es necesario utilizar el siguiente comando:


X q#;


Donde el “#” deberá ser sustituido por el número del qubit a utilizar, ejemplo:


X q0;


Uso de la compuerta Pauli Y:

Para utilizar la compuerta Pauli Y es necesario utilizar el siguiente comando:


Y q#;


Donde el “#” deberá ser sustituido por el número del qubit a utilizar, ejemplo:


Y q0;


Uso de la compuerta Pauli Z:

Para utilizar la compuerta Pauli Z es necesario utilizar el siguiente comando:


Z q#;


Donde el “#” deberá ser sustituido por el número del qubit a utilizar, ejemplo:


Z q0;


Uso de la compuerta Hadamard:

Para utilizar la compuerta Hadamard es necesario utilizar el siguiente comando:


H q#;


Donde el “#” deberá ser sustituido por el número del qubit a utilizar, ejemplo:


H q0;


Uso de la compuerta cambio de fase:

Para utilizar la compuerta cambio de fase es necesario utilizar el siguiente comando:


q#;


Donde el “θ” se refiere a un ángulo entre 0 y 360 a donde rotará y el símbolo “#” deberá ser sustituido por el número del qubit a utilizar, ejemplo:


P180 q0;


Uso de la compuerta control Pauli X:

Para utilizar la compuerta control Pauli X es necesario utilizar el siguiente comando:


CX q# qC qC;


Donde el “#” deberá ser sustituido por el número del qubit objetivo y “C” por el número del qubit de control que se desea emplear pueden usarse tantos qubits de control se deseen, ejemplo:


CX q0 q1 q2;


Uso de la compuerta control Pauli Y:

Para utilizar la compuerta control Pauli Y es necesario utilizar el siguiente comando:


CY q# qC qC;


Donde el “#” deberá ser sustituido por el número del qubit objetivo y “C” por el número del qubit de control que se desea emplear pueden usarse tantos qubits de control se deseen, ejemplo:


CY q0 q1 q2;


Uso de la compuerta control Pauli Z:

Para utilizar la compuerta control Pauli Z es necesario utilizar el siguiente comando:


CZ q# qC qC;


Donde el “#” deberá ser sustituido por el número del qubit objetivo y “C” por el número del qubit de control que se desea emplear pueden usarse tantos qubits de control se deseen, ejemplo:


CZ q0 q1 q2;


Uso de la compuerta control Hadamard:

Para utilizar la compuerta control Hadamard es necesario utilizar el siguiente comando:


CH q# qC qC;


Donde el “#” deberá ser sustituido por el número del qubit objetivo y “C” por el número del qubit de control que se desea emplear pueden usarse tantos qubits de control se deseen, ejemplo:


CH q0 q1 q2;


Uso de la compuerta control cambio de fase:

Para utilizar la compuerta control cambio de fase es necesario utilizar el siguiente comando:


q# qC qC;


Donde el “θ” se refiere a un ángulo entre 0 y 360 a donde rotará, el símbolo “#” deberá ser sustituido por el número del qubit a utilizar y “C” por el número del qubit de control que se desea emplear pueden usarse tantos qubits de control se deseen, ejemplo:


CP180 q0 q1 q2;


Uso de la medición:

Para utilizar la medición es necesario utilizar el siguiente comando:


M q#;


Donde el “#” deberá ser sustituido por el número del qubit a utilizar, ejemplo:


M q2;


Ejecutar circuito:

Para ejecutar el circuito que acabamos de crear existen 3 métodos:


  • Ejecución de estado unitario.
  • Ejecución por lista de entrada.
  • Módulo de automatización de entradas.

Las cuales podemos encontrar dentro del Menu del editor de codigo.



Ejemplo práctico de uso

Para este ejemplo se usó la implicación en su forma Jauch cuyo circuito cuántico es el siguiente:

Circuito cuántico de la operación de la implicación en su forma Jauch.

Su código queda de la siguiente forma:


qubits 3;

X q0;

CX q2 q0;

CX q2 q1;

CX q2 q0 q1;


Grafico resultante