2017 09 07_programar_ordenadorcuanticov3
TRANSCRIPT
Programación CuánticaUn nuevo Paradigma en Computación
Francisco Gálvez RamirezIBM Staff
Presentación
Francisco Gálvez
Cloud and Integrated Systems Expert
@fjgramirez
Francisco J. Galvez Ramirez
Agenda
¿Por qué Computación Cuántica?
¿Que es un Ordenador Cuántico?
Los Procesadores Cuánticos de IBM
Programación de Circuitos Cuánticos
Programa de Búsqueda Cuántica
Open QASM
QISKit Python API
¿Por que Computación Cuántica?
@fjgramirez
¿Por qué Computación Cuántica?
“...nature isn't classical, dammit, and if you want to make a simulation of nature, you'd better make it quantum mechanical...” –
Richard Feynman, Simulating Physics with Computers
“… la naturaleza no es clásica, maldita sea, y si quieren hacer una simulación de la naturaleza, será mejor que lo
hagán con mecánica cuántica …”
@fjgramirez
Campos de Aplicación
Criptografía, Comunicaciones y Seguridad La Computación Cuantica tiene el potencial de mantener claves privadas a salvo de
hackers e intrusiones, no importa donde se almacenen o se procesen.
Medicina y Materiales Un Computador Cuántico mimetiza la forma en la que la que opera la naturaleza. Puede
simular y entender las moléculas y sus interacciones mejor que un computador clásico.
Machine Learning La computación cuántica puede acelerar significativamente el aprendizaje automático
y las tareas analíticas tales como el análisis topológico.
Búsquedas Big Data Realizar busquedas ultrarápidas en la creciente cantidad de datos que se crean dia a dia, y
establecer conexiones y relaciones de forma mucho más rápida que los ordenadores actuales.
@fjgramirez
Campos de Aplicación
NATURE – Sept 2017: Aplicación de la Computación Cuántica en Quimica
Un equipo de investigación de IBM utiliza la computación cuántica para explorar la estructura de los niveles de energica de varias moléculas
¿Que es un Ordenador Cuántico?
@fjgramirez
Conceptos Básicos
Principio de Incertidumbre
La medición de un estado
del sistema modifica el
sistema
Superposición de Estados
El espacio de estados = stados
base + cualquier superposición de
dichos estados
Entrelazamiento Cuántico
Paradoja EPR – Existe una relación
entre las propiedades de las particulas
que están entrelazadas.
Decoherencia de Estados
Los estados coherentes
tienen un comportamiento
de estado único
@fjgramirez
Características de un Computador Cuántico
1. Se puede inicializar
2. Hace uso del Entrelazamiento
3. Mantiene la coherencia
4. Trabaja con Paralelismo Cuántico
5. Utiliza Bits Cuánticos (Qubits)
@fjgramirez
El Qubit – Bloque Básico de Información
Un Qubit es el concepto cuantico de bit de información.
0 1 No se trata de ningún elementos o dispositvo. Es
un concepto lógico que puede implementarse
sobre un amplio rango de sistemas con
comportamiento cuántico.
Al igual que un bit, un Qubit puede representar
dos estados: 0 y 1 (estados base)
Pero además un Qubit es capaz de trabajar con todas las posibles
combinaciones que pueden tener lugar entre los estados base 0 and 1
10
10
Que es un Qubit?
@fjgramirez
0
1
2 BITS
0
1
0 0
0
1
0
1A 0 0 + B 1 0 + C 0 1 + D 1 1
1 0
0 1
1 1
2 QUBITS
• 4 Estados Independientes.
• El sistema puede estar en cualquier de estos cuatro estados
Un único estado construido a partir de la combinación de todos
los posibles estados
Superposición Cuántica
El Qubit – Bloque Básico de Información
@fjgramirez
Entrelazamiento Cuántico
1. Preparación de un estado entrelazado.
Un estado entrelazado se prepara mediante la aplicación de una operación comun al sistema
2. Realización de una medida
0 0
1 1
0
1
@fjgramirez
Tiempos de Coherencia
• Actualmente los tiempos de coherencia están alrededor de 100 microsegundos.
• Hay varias iniciativas para mejorar los tiempos de coherencia:
• Otros materiales
• Rediseño de geometrias
• Calidad de las cavidades
• Apantallamiento IR
• En la úlitma década se han hecho progresos importantes
@fjgramirez
El Refrigerador de Dilución
Un elemento clave de computador cuántico es el Refriferador de Dilución
Temperatura de operación 15 mK
Refrigeración de Dilución3He + 4He
Los Procesadores Cuánticos de IBM
@fjgramirez
Marzo - 2016: Computación Cuántica en el Cloud
IBM ha construido el primer procesador cuántico de 5 qubits al que puede acceder cualquier usuario conectado a internet
IBM Quantum Experience, es una iniciativa que permite a los usuarios ejecutar algoritmos y experimentos en el procesador cuantico de IBM en el cloud.
@fjgramirez
Marzo-2017: IBM anuncia IBM Q
IBM Q es la nueva línea de computadores cuánticos que
producirá IBM
IBM anuncia la construcción de un computador cuántico de 50 qubits y
que ofrecerá servicios de computación cuántica en el Cloud.
@fjgramirez
Mayo-2017: Primer Computador Cuántico Comercial
Computadores Universales de 16 and 17 qubits
IBM anuncia un prototipo de
computador cuántico
comercial de 17 qubits
IBM ha descubierto como
escalar la arquitectura
cuántica.
En tres años se planea
alcanzar un chip de 50 qubits.
@fjgramirez
Arquiectura de Qubits Superconductores
Circuito QED: Un qubit superconductor está fuertemente interaccionado con un solo fotón en una cavidad de microondas.
El esquema de acoplamiento del circuito QED se ha convertido en el estándar para acoplar y leer qubits superconductores a medida que los sistemas continúan escalando.
@fjgramirez
Caracterización: El Volumen CuánticoLa potencia de un
computador cuántico no
solo depende del número
de qubits
Si queremos utilizar computadores cuánticos para resolver problemas reales, es necesario explorar un gran espacio de estados cuánticos. El número de qubits es importante, pero también lo es la tasa de error. En los dispositivos prácticos, la tasa de error efectiva depende de la precisión de cada operación, pero también de la forma en que se llevan a cabo las operaciones para resolver un problema particular, así como de cómo el procesador realiza estas operaciones. Aquí presentamos una magnitud llamada volumen cuántico que explica todas estas cosas. Puede verse como una representación del espacio del problema que estas máquinas pueden explorar.
@fjgramirez
Arquitectura del Procesador Cuántico de IBM
Arquitectura en Capas
Capa física.proporciona la corrección de errores. Consiste en un procesador cuántico físico que tiene líneas de entrada y de salida controladas por el procesador de corrección de errores cuánticos.
Capa lógica.Controla el procesador físico, define los qubits codificados y se realizan las operaciones lógicas para el algoritmo cuántico deseado
@fjgramirez
El Procesador Q5
Arquitectura Tolerante a fallos
Chip Cuántico de 5 qubits Control Online de cada Qubit
@fjgramirez
El Procesador Q16
Mantiene la arquitectura planar
Chip Cuántico de 16 qubits Control Online de cada Qubit
Algunos Algoritmos Cuánticos
@fjgramirez
Algoritmos Cuánticos
• Algorimo de Deusch – Determina si una función es constante o balanceada
• Algoritmo de Shor – Factorización de grandes números
• Algoritmo de Grover – Búsquedas en espacios no estructurados
@fjgramirez
Algoritmo de Deustch
f1:
0 0
1 0
f2:
0 1
1 1
Algoritmo de Deustch-Josza Extensión del algoritmo de Deustch a registros con n valores
f3:
0 0
1 1
f4:
0 1
1 0
@fjgramirez
Algoritmo de Shor
Numero de pasos que un ordenador clásico necesita dar para encontrar los factores primos de un número N de x dígitos
Crece exponencialmente con x
In 2001, IBM y la Universidad de Standford, ejecutaron por primera vez el algoritmo de Shor en un computador cuántico de 7 qubits desarrollado en Los Álamos.
https://www-03.ibm.com/press/us/en/pressrelease/965.wss
937 x 947 = N (fácil)
887339 = p x q (no tan fácil)
La robustez de la factorización es la base de algoritmo RSA
@fjgramirez
Algoritmo de Grover
• ¿Cuantos intentos son necesarios para encontrar un
elemento dentro de un conjunto de N elementos
desordenados?
Son necesarios una media de N/2 intentos
http://www.dma.eui.upm.es/MatDis/Seminario4/AlgoritmoGrover.pdf
• Un computador cuántico ejecutando el algoritmo de Grover lo haría en intentosN
Programación de Circuitos Cuanticos
@fjgramirez
Modelo de Circuitos
Ejemplo
Tiempos ejecución puertas cuánticas ~ 25 ns ~25 ns~25 ns ~25 ns ... ... ... ... ...
Tiempos de Coherencia: 100 ms
medidas
@fjgramirez
El Modelo de Circuitos
Circuitos Cuánticos
@fjgramirez
IBM Quantum Experience
https://quantumexperience.ng.bluemix.net/qx
@fjgramirez
Circuitos Cuánticos
El Composer de IBM Quantum Experience
@fjgramirez
Circuitos Cuánticos
Histograma de Barras
• La combinación de 0’s y 1’s en la parte inferior del diagrama representa el estado del Qubit que se ha medido.
• La altura de la barra representa con que frecuencia se produce ese estado en particular
@fjgramirez
Representación de estados en la Esfera de Bloch
Esfera de Bloch
• Un qubit es un sistema cuántico con dos niveles de energía 0 y 1 que asimilamos con una base de dos vectores.
• Sobre esta base definimos todas sus posibles combinaciones en una esfera mediante rotaciones alrededor del eje X
• Las rotaciones alrededor del eje Z indica un cambio en la fase.
@fjgramirez
Puertas Cuánticas de 1 Qubit
Puerta X
Transforrma el estado en
el estado y viceversa
Significa un rotaión de πradianes alrededor del eje X
01
Cambio de estado base
@fjgramirez
Puertas Cuánticas de 1 Qubit
Puerta H
Transforma cualquiera de los
estados base o en una
combinación de ambos.
Supone una rotación de π/2radianes alrededor del eje X y
del eje Z
Superposición de estados base
0 1
No se puede medir sobre el eje Z, pero se puede utilizar la puerta H para hacer un cambio de base
@fjgramirez
Puertas Cuánticas de 1 Qubit
The Z Gate Cambio de Fase - π
Realiza una rotación de πradianes alrededor del eje Z
@fjgramirez
Puertas Cuánticas de 1 Qubit
The S Gate Cambio de Fase – π/2
Realiza una rotación de
π/2 radianes alrededor
del eje Z
@fjgramirez
Puertas Cuánticas de 1 Qubit
The S GateCambio de Fase – π/4
Realiza una rotación de
π/4 radianes alrededor
del eje Z
@fjgramirez
Puertas Cuánticas de 2 Qubit
The CNOT Gate
Cambia el estado del qubit objetivo (target), en
función del estado del qubit de control
@fjgramirez
Puertas Cuánticas de 2 Qubit
Aplicación de una Puerta CNOT a dos Qubits en distintos estados
• |00>
• |01>
• |10>
• |11>
@fjgramirez
Estados de Bell Entrelazados
X-Gate
Cambia el estado de un Qubit de 0 a 1, y vice versa.
Hadamard Gate
Pone en superposición los estados de un Qubit.
Actua sobre un qubit destino en funcion del valor de un qubit de control
Controlled Not Gate
Entanglement
La puerta H gate pone el primer qubit en superposición. La puerta CNOT “actua y no actua” sobre el segundo Qubit.
Si los Qubits se inicializan a 0, cuando se midan darán 11 o 00, pero nunca 10 o 01.
@fjgramirez
Creación de Estados de Bell (no separables)
• Estado de Bell ZZ
• Estado de Bell ZW
• Estado de Bell ZV
• Estado de Bell XW
• Estado de Bell XV
Estados de Bell Entrelazados
Programa de Búsqueda Cuántica(Algoritmo de Grover)
@fjgramirez
Programación del Algoritmo de Grover
Una lista de N items
Se desea localizar un item con una propiedad única
1 2 3 4 ... ... N=2n
Un cómputo clásico necesita comprobar en promedio de estas cajas2N
Un Computador Cuántico utilizando el algoritmo de Grover lo puede hacer en aprox. pasos N
@fjgramirez
Programación del Algoritmo de Grover
1
0
1 N
x
xN
s
Crear una superposición uniforme
amplitude
0
N
1
Items1 2 3 ( .... )
@fjgramirez
Programación del Algoritmo de Grover
Se necesita una función tal que: para el elemento marcado: 1)( xf
Se construye la matriz “oráculo”: fU
xxU xf
f
)(1
Aplicando una reflexión al oráculo : Si es un item no marcado, entonces el oráculo no hace nada, pero en caso contrario:
x
fU
amplitude
0
N
1
Items1 2 3 ( .... )
@fjgramirez
Programación del Algoritmo de Grover – Oráculos
Obtener la función oráculo correcta :
Elemento
Elemento
Elemento
Elemento
00
10
11
fU
01
@fjgramirez
Programación del Algoritmo de Grover
Se aplica una reflexión adicional contra el estado
En la notación bra-ket esta reflexión se escribe como :
Esta transformación lleva el estado a :
y completa la transformación:
s
12 ssUs
'tsU
tfst UU 1
amplitude
0
Items1 2 3 ( .... )
sU
@fjgramirez
Programación del Algoritmo de Grover
@fjgramirez
Programación del Algoritmo de Grover – Resultados
El estado es el que muestra la mayor probabilidad00
Open QASM
@fjgramirez
QISKit OpenQASM
What is OpenQASM?
Es una representación intermedia para Circuitos Cuánticos.
Agnostico en cuanto al Hardware
OPENQASM, o “Quantum Assembly Language,” es una represéntación textural simple que describe circuítos cuánticos genéricos.
Se pueden submitir jobs OpenQASM en batch via HTTP API/PYTHON wrapper.
@fjgramirez
OpenQASM
Sentencias del Lenguaje
IBMQASM 2.0;
qreg name[size];
creg name[size];
include "filename";
gate name(params) qargs { body }
opaque name(params) qargs;
U(theta,phi,lambda) qubit|qreg;
CX qubit|qreg,qubit|qreg;
measure qubit|qreg -> bit|creg;
reset qubit|qreg;
gatename(params) qargs;
if(creg==int) qop;
barrier qargs;
@fjgramirez
QISKit OpenQASM
Puertas Predefinicas
// These are the predefined gates
U(theta,phi,lambda) qubit|qreg;
CX qubit|qreg,qubit|qreg;
Definición de nuevas puertas
// This is the definition
gate name(params) qargs
{
body
}
// This is an example
gate g a
{
U(0,0,0) a;
}
gate crz(theta) a,b
{
U(0,0,theta/2) a;
CX a,b;
U(0,0,-theta/2) b;
CX a,b;
U(0,0,theta/2) b;
}
crz(pi/2) q[0],q[1];
@fjgramirez
QISKit OpenQASM
Ejemplo: Transformada Cuántica de Fourier// quantum Fourier
transform
IBMQASM 2.0;
include "qelib1.inc";
qreg q[4];
creg c[4];
x q[0];
x q[2];
barrier q;
h q[0];
cu1(pi/2) q[1],q[0];
h q[1];
cu1(pi/4) q[2],q[0];
cu1(pi/2) q[2],q[1];
h q[2];
cu1(pi/8) q[3],q[0];
cu1(pi/4) q[3],q[1];
cu1(pi/2) q[3],q[2];
h q[3];
measure q -> c;
The quantum Fourier transform demonstrates parameter passing to gate subroutines.
This circuit applies the QFT to the state and measures in the computational basis.
3210 qqqq 0101
QISKit Phyton API
@fjgramirez
QISKit API
Que es QISKit API?
Acceso a IBM Quantum Experience utilizando una interface Python.
Esta interfaz permite trabajar con circuitos cuánticos y ejecutar varios de ellos de froma eficiente.
@fjgramirez
QISKit API
Elementos básicos de programa
Quantum ProgramQuantumProgram()
Circuit.create_circuit()
Quantum Register.create_quantum_registers()
Classical Register.create_classical_registers()
@fjgramirez
QISKit API
Circuit
Primero, instanciar la clase y crear el registrocircuit = Q_program.get_circuit(“Circuit")
Tipos de registro
Quantum Registersq2 = Q_program.create_quantum_register("q2", 2)
Classical Registersc2 = Q_program.create_classical_register("c2", 2)
@fjgramirez
QISKit API
Puertas Cuánticas
Añadir puertas al circuito cuántico
@fjgramirez
QISKit APIExtracción de código QASM
@fjgramirez
QISKit API
Creación de un estado de Bell entrelazado
1. Crear los registros cuánticosq2 = Q_program.create_quantum_register("q2", 2)
2. Crear los registros clásicosc2 = Q_program.create_classical_register("c2", 2)
Thanks