Code to accompany: Reversing unknown quantum transformations: A universal protocol for inverting general unitary operations
This repository provides the codes used to obtain Table I and Table II in the article Reversing unknown quantum transformations: A universal protocol for inverting general unitary operations, Phys. Rev. Lett. 123, 210502 (2019), arXiv:1810.06944
All codes are written in MATLAB and require:
- CVX - a Matlab-based convex modeling framework
We have also used functions of QETLAB (QETLAB - A MATLAB Toolbox for Quantum Entanglement), but all used functions can be found in the subfolder QETLAB_used_functions.
It has been tested on Matlab R2018A, and CVX 2.1
The main scripts of this repository are:
- run_unitary_inverse: Obtain the maximal success probability for parallel, sequential, and general (potentially with indefinite causal order) protocols to transform 'k' uses of a 'd'-dimensional unitary into its inverse.
- run_unitary_transpose: Obtain the maximal success probability for parallel, sequential, and general (potentially with indefinite causal order) protocols to transform 'k' uses of a 'd'-dimensional unitary into its transpose.
The scripts run_unitary_inverse and run_unitary_transpose make use of the following subfunctions:
-
find_dimension: Determine the dimension of the linear space spanned by 'k' copies of 'd' dimension unitary channels
-
is_general_protocol: Determine if a supermap represents a general superchannel
-
is_sequential_protocol.m: Determine if a supermap represents a sequential superchannel
-
is_superchannel1use.m: Determine if a supermap represents a superchannel with a single use of the input-operation
-
maxp_general.m: Find the maximal success probability of transforming k uses of a list of unitary operations into another list of unitaries in a general protocol
-
maxp_parallel.m: Find the maximal success probability of transforming k uses of a list of unitary operations into another list of unitaries in a parallel protocol
-
maxp_sequential.m: Find the maximal success probability of transforming k uses of a list of unitary operations into another list of unitaries in a sequential protocol
-
unitary_linear_independent.m: Find the number of linearly independent unitary channels contained in a list of unitaries