2017 09 07_programar_ordenadorcuanticov3

66
Programación Cuántica Un nuevo Paradigma en Computación Francisco Gálvez Ramirez IBM Staff [email protected]

Upload: francisco-j-galvez-ramirez

Post on 22-Jan-2018

265 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: 2017 09 07_programar_ordenadorcuanticov3

Programación CuánticaUn nuevo Paradigma en Computación

Francisco Gálvez RamirezIBM Staff

[email protected]

Page 2: 2017 09 07_programar_ordenadorcuanticov3

Presentación

Francisco Gálvez

Cloud and Integrated Systems Expert

[email protected]

@fjgramirez

Francisco J. Galvez Ramirez

Page 3: 2017 09 07_programar_ordenadorcuanticov3

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

Page 4: 2017 09 07_programar_ordenadorcuanticov3

¿Por que Computación Cuántica?

Page 5: 2017 09 07_programar_ordenadorcuanticov3

@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 …”

Page 6: 2017 09 07_programar_ordenadorcuanticov3

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

Page 7: 2017 09 07_programar_ordenadorcuanticov3

@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

Page 8: 2017 09 07_programar_ordenadorcuanticov3

¿Que es un Ordenador Cuántico?

Page 9: 2017 09 07_programar_ordenadorcuanticov3

@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

Page 10: 2017 09 07_programar_ordenadorcuanticov3

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

Page 11: 2017 09 07_programar_ordenadorcuanticov3

@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?

Page 12: 2017 09 07_programar_ordenadorcuanticov3

@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

Page 13: 2017 09 07_programar_ordenadorcuanticov3

@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

Page 14: 2017 09 07_programar_ordenadorcuanticov3

@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

Page 15: 2017 09 07_programar_ordenadorcuanticov3

@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

Page 16: 2017 09 07_programar_ordenadorcuanticov3

Los Procesadores Cuánticos de IBM

Page 17: 2017 09 07_programar_ordenadorcuanticov3

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

Page 18: 2017 09 07_programar_ordenadorcuanticov3

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

Page 19: 2017 09 07_programar_ordenadorcuanticov3

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

Page 20: 2017 09 07_programar_ordenadorcuanticov3

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

Page 21: 2017 09 07_programar_ordenadorcuanticov3

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

Page 22: 2017 09 07_programar_ordenadorcuanticov3

@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

Page 23: 2017 09 07_programar_ordenadorcuanticov3

@fjgramirez

El Procesador Q5

Arquitectura Tolerante a fallos

Chip Cuántico de 5 qubits Control Online de cada Qubit

Page 24: 2017 09 07_programar_ordenadorcuanticov3

@fjgramirez

El Procesador Q16

Mantiene la arquitectura planar

Chip Cuántico de 16 qubits Control Online de cada Qubit

Page 25: 2017 09 07_programar_ordenadorcuanticov3

Algunos Algoritmos Cuánticos

Page 26: 2017 09 07_programar_ordenadorcuanticov3

@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

Page 27: 2017 09 07_programar_ordenadorcuanticov3

@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

Page 28: 2017 09 07_programar_ordenadorcuanticov3

@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

Page 29: 2017 09 07_programar_ordenadorcuanticov3

@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

Page 30: 2017 09 07_programar_ordenadorcuanticov3

Programación de Circuitos Cuanticos

Page 31: 2017 09 07_programar_ordenadorcuanticov3

@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

Page 32: 2017 09 07_programar_ordenadorcuanticov3

@fjgramirez

El Modelo de Circuitos

Circuitos Cuánticos

Page 33: 2017 09 07_programar_ordenadorcuanticov3

@fjgramirez

IBM Quantum Experience

https://quantumexperience.ng.bluemix.net/qx

Page 34: 2017 09 07_programar_ordenadorcuanticov3

@fjgramirez

Circuitos Cuánticos

El Composer de IBM Quantum Experience

Page 35: 2017 09 07_programar_ordenadorcuanticov3

@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

Page 36: 2017 09 07_programar_ordenadorcuanticov3

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

Page 37: 2017 09 07_programar_ordenadorcuanticov3

@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

Page 38: 2017 09 07_programar_ordenadorcuanticov3

@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

Page 39: 2017 09 07_programar_ordenadorcuanticov3

@fjgramirez

Puertas Cuánticas de 1 Qubit

The Z Gate Cambio de Fase - π

Realiza una rotación de πradianes alrededor del eje Z

Page 40: 2017 09 07_programar_ordenadorcuanticov3

@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

Page 41: 2017 09 07_programar_ordenadorcuanticov3

@fjgramirez

Puertas Cuánticas de 1 Qubit

The S GateCambio de Fase – π/4

Realiza una rotación de

π/4 radianes alrededor

del eje Z

Page 42: 2017 09 07_programar_ordenadorcuanticov3

@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

Page 43: 2017 09 07_programar_ordenadorcuanticov3

@fjgramirez

Puertas Cuánticas de 2 Qubit

Aplicación de una Puerta CNOT a dos Qubits en distintos estados

• |00>

• |01>

• |10>

• |11>

Page 44: 2017 09 07_programar_ordenadorcuanticov3

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

Page 45: 2017 09 07_programar_ordenadorcuanticov3

@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

Page 46: 2017 09 07_programar_ordenadorcuanticov3

Programa de Búsqueda Cuántica(Algoritmo de Grover)

Page 47: 2017 09 07_programar_ordenadorcuanticov3

@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

Page 48: 2017 09 07_programar_ordenadorcuanticov3

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

Page 49: 2017 09 07_programar_ordenadorcuanticov3

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

Page 50: 2017 09 07_programar_ordenadorcuanticov3

@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

Page 51: 2017 09 07_programar_ordenadorcuanticov3

@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

Page 52: 2017 09 07_programar_ordenadorcuanticov3

@fjgramirez

Programación del Algoritmo de Grover

Page 53: 2017 09 07_programar_ordenadorcuanticov3

@fjgramirez

Programación del Algoritmo de Grover – Resultados

El estado es el que muestra la mayor probabilidad00

Page 54: 2017 09 07_programar_ordenadorcuanticov3

Open QASM

Page 55: 2017 09 07_programar_ordenadorcuanticov3

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

Page 56: 2017 09 07_programar_ordenadorcuanticov3

@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;

Page 57: 2017 09 07_programar_ordenadorcuanticov3

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

Page 58: 2017 09 07_programar_ordenadorcuanticov3

@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

Page 59: 2017 09 07_programar_ordenadorcuanticov3

QISKit Phyton API

Page 60: 2017 09 07_programar_ordenadorcuanticov3

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

Page 61: 2017 09 07_programar_ordenadorcuanticov3

@fjgramirez

QISKit API

Elementos básicos de programa

Quantum ProgramQuantumProgram()

Circuit.create_circuit()

Quantum Register.create_quantum_registers()

Classical Register.create_classical_registers()

Page 62: 2017 09 07_programar_ordenadorcuanticov3

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

Page 63: 2017 09 07_programar_ordenadorcuanticov3

@fjgramirez

QISKit API

Puertas Cuánticas

Añadir puertas al circuito cuántico

Page 64: 2017 09 07_programar_ordenadorcuanticov3

@fjgramirez

QISKit APIExtracción de código QASM

Page 65: 2017 09 07_programar_ordenadorcuanticov3

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

Page 66: 2017 09 07_programar_ordenadorcuanticov3

Thanks