This repository contains code to solve quantum relative entropy programs of the form
by implementing efficient cone oracles for the cone
to use with the generic conic programming software Hypatia. We currently have implementations for the following variants of quantum relative entropy.
Function | Code |
---|---|
Quantum conditional entropy | QuantCondEntropy{T}(n, m, k) |
Quantum mutual information | QuantMutualInformation{T}(n, m, p, V) |
Quantum coherent information (for degradable channels) | QuantCoherentInformation{T}(n, m, p, N, Nc) |
Quantum key rate | QuantKeyRate{T, R}(Klist, Zlist) |
See the cones folder for more detail about these cone oracles.
The main dependencies of our code are Julia and Hypatia. This can be installed by following the installation instructions here.
Here, we show an example of how we can compute the entanglement assisted channel capacity of a qubit amplitude damping channel from here.
import Hypatia
include("cones/quantmutualinf.jl")
include("systemsolvers/elim.jl")
T = Float64
# Define problem data
(ni, no, ne) = (2, 2, 2)
gamma = 0.2
V = [1 0; 0 sqrt(gamma); 0 sqrt(1 - gamma); 0 0] # Stinespring isometry of amplitude damping channel
# Express problem as standard form conic program
c = [1.; 0.; 0.; 0.] / log(2.) # Convert units to bits
A = [0. 1. 0. 1.] # Unit trace constraint
b = [1.]
G = -1.0*I
h = [0.; 0.; 0.; 0.]
cones = [QuantMutualInformation{T}(ni, no, ne, V)]
# Parse into Hypatia and solve
model = Hypatia.Models.Model{T}(c, A, b, G, h, cones)
solver = Solvers.Solver{T}(reduce=false, syssolver=ElimSystemSolver{T}())
Solvers.load(solver, model)
Solvers.solve(solver)
Additional examples, including
- quantum key rates,
- quantum rate-distortion function,
- entanglement assisted channel capacity,
- quantum-quantum channel capacity for degradable channels, and
- ground state energy of Hamiltonians,
can be found in the examples folder. You can also run the script experiments.jl
julia experiments.jl all
to reproduce the experiments shown in our paper (omitting the all
argument runs a subset of the experiemnts corresponding to smaller problem instances). The raw data for the results reported in the paper can be found here.
Note that we have also implemented a simple block elimination method to solve the Newton equations, which can improve computational performance over Hypatia's default Newton system solver when G
is a square diagonal matrix.
This code is based on the work the paper here: https://arxiv.org/abs/2407.00241. If you find our work useful, please cite us using
@article{he2024efficient,
title={Exploiting Structure in Quantum Relative Entropy Programs},
author={He, Kerry and Saunderson, James and Fawzi, Hamza},
journal={arXiv preprint arXiv:2407.00241},
year={2024}
}