#VS2017 – Utilizando MResetZ() para liberar #Qubits en Q# con Microsoft Quantum Development Kit

Hola!

Despues de una semana intensa de eventos, esta semana me toca volver al estudio de Quantum Computing. En este caso en particular, a un detalle que tenemos que tener en cuenta cuando trabajamos con Q#

Cuando modificamos los estados de un Qubit, en mismo puede quedar en |0> o en |1>, Los Qubits necesidad de estar en estado 0> para ser liberados al final de cada operación. Es por ello que hay que restablecer este estado en cada Qubit antes de liberarlo.

Pues bien, tomemos como base una en la que inicializamos un Qubit y aplicamos una operación Hadamard operación como muestra el siguiente código


operation HGate (initial: Result) : (Result)
{
body
{
mutable res = Zero;
using (qubits = Qubit[1])
{
let qubit = qubits[0];
H(qubit);
set res = M (qubit);
if (res == One)
{
X(qubit);
}
}
return (res);
}
}

En la línea 10 almaceno el estado del Qubit en la variable de retorno y luego en las líneas 11 a 14 verifico que el estado del mismo sea Zero. En caso contrario, reseteo el estado Qubit a Zero antes del final de la operación en la línea 13.

Pues bien, este código funciona. Sin embargo, dentro del DevKit tenemos también una operación que nos permite obtener el estado de un Qubit y liberar el mismo en una única operación. Esta operación es MResetZ(). El mismo código anterior utilizando esta operación, se simplifica bastante


operation HGateUsingMResetZ (initial: Result) : (Result)
{
body
{
mutable res = Zero;
using (qubits = Qubit[1])
{
let qubit = qubits[0];
H(qubit);
set res = MResetZ(qubit);
}
return (res);
}
}

Como podemos ver, el principal cambio está en la línea 10 donde asigno el estado del Qubit a la variable de retorno y además reseteo el Qubit a Zero.

Finalmente, desde una ConsoleApp invoco a ambas operaciones y el resultado es igual.

I1

GitHub Source Code link

Happy QCoding!

Saludos @ Toronto

El Bruno

References

My Posts

 

Leave a comment

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: