Skip to main content

Conic solver for quantum information theory

Project description

QICS: Quantum Information Conic Solver

Documentation Status Build Status PyPi Status

QICS is a primal-dual interior point solver fully implemented in Python, and is specialized towards problems arising in quantum information theory. QICS solves conic programs of the form

$$ \min_{x \in \mathbb{R}^n} \quad c^\top x \quad \text{s.t.} \quad b - Ax = 0, \ h - Gx \in \mathcal{K}, $$

where $c \in \mathbb{R}^n$, $b \in \mathbb{R}^p$, $h \in \mathbb{R}^q$, $A \in \mathbb{R}^{p \times n}$, $G \in \mathbb{R}^{q \times n}$, and $\mathcal{K} \subset \mathbb{R}^{q}$ is a Cartesian product of convex cones. Some notable cones that QICS supports include

Cone QICS class Description
Positive semidefinite qics.cones.PosSemidefinite $\{ X \in \mathbb{H}^n : X \succeq 0 \}$
Quantum entropy qics.cones.QuantEntr $\text{cl}\{ (t, u, X) \in \mathbb{R} \times \mathbb{R}_{++} \times \mathbb{H}^n_{++} : t \geq -u S(u^{-1} X) \}$
Quantum relative entropy qics.cones.QuantRelEntr $\text{cl}{ (t, X, Y) \in \mathbb{R} \times \mathbb{H}^n_{++} \times \mathbb{H}^n_{++} : t \geq S(X | Y) }$
Quantum conditional entropy qics.cones.QuantCondEntr $\text{cl}\{ (t, X) \in \mathbb{R} \times \mathbb{H}^{n}_{++} : t \geq -S(X) + S(\text{tr}_i(X)) \}$
Quantum key distribution qics.cones.QuantKeyDist $\text{cl}\{ (t, X) \in \mathbb{R} \times \mathbb{H}^n_{++} : t \geq -S(\mathcal{G}(X)) + S(\mathcal{Z}(\mathcal{G}(X))) \}$
Operator perspective epigraph qics.cones.OpPerspecTr $\text{cl}\{ (T, X, Y) \in \mathbb{H}^n \times \mathbb{H}^n_{++} \times \mathbb{H}^n_{++} : T \succeq P_g(X, Y) \}$

where $S(X)=-\text{tr}[X\log(X)]$ is the quantum entropy, $S(X | Y)=\text{tr}[X\log(X) - X\log(Y)]$ is the quantum relative entropy, and $P_g(X, Y)=X^{1/2} g(X^{-1/2} Y X^{-1/2}) X^{1/2}$ is the non-commutative or operator perspective.

A full list of cones which we support can be found in our documentation.

Features

  • Efficient quantum relative entropy programming

    We support optimizing over the quantum relative entropy cone, as well as related cones including the quantum conditional entropy cone, as well as slices of the quantum relative entropy cone that arise when solving quantum key rates of quantum cryptographic protocols. Numerical results show that QICS solves problems much faster than existing quantum relative entropy programming solvers, such as Hypatia, DDS, and CVXQUAD.

  • Efficient semidefinite programming

    We implement an efficient semidefinite programming solver which utilizes state-of-the-art techniques for symmetric cone programming, including using Nesterov-Todd scalings and exploiting sparsity in the problem structure. Numerical results show that QICS has comparable performance to state-of-the-art semidefinite programming software, such as MOSEK, SDPA, SDPT3 and SeDuMi.

  • Complex-valued matrices

    Users can specify whether cones involving variables which are symmetric matrices, such as the positive semidefinite cone or quantum relative entropy cone, involve real-valued or complex-valued (i.e., Hermitian) matrix variables. Support for Hermitian matrices is embedded directly in the definition of the cone, which can be more computationally efficient than lifting into the real-valued symmetric cone.

Installation

QICS is currently supported for Python 3.8 or later, and can be directly installed from pip by calling

pip install qics

Documentation

The full documentation of the code can be found here. Technical details about our implementation can be found in our paper.

Example

We illustrate how to use QICS with a quick example below. Additional details describing this example can be found here.

 import numpy
 import qics

 # Define conic program we want to solve
 c = numpy.array([[1., 0., 0., 0., 0., 0., 0., 0., 0.]]).T
 A = numpy.array([
     [0., 1., 0., 0., 0., 0., 0., 0., 0.],
     [0., 0., 1., 1., 0., 0., 0., 0., 0.],
     [0., 0., 0., 0., 1., 0., 0., 0., 0.],
     [0., 0., 0., 0., 0., 1., 0., 0., 0.],
     [0., 0., 0., 0., 0., 0., 0., 0., 1.]
 ])
 b = numpy.array([[2., 2., 2., 1., 1.]]).T
 cones = [qics.cones.QuantRelEntr(2)]
 model = qics.Model(c=c, A=A, b=b, cones=cones)

 # Solve the conic program
 solver = qics.Solver(model)
 info = solver.solve()

See the documentation for additional examples for how to solve semidefinite programs and quantum relative entropy programs using QICS.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qics-0.1.0.tar.gz (74.4 kB view details)

Uploaded Source

File details

Details for the file qics-0.1.0.tar.gz.

File metadata

  • Download URL: qics-0.1.0.tar.gz
  • Upload date:
  • Size: 74.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.2

File hashes

Hashes for qics-0.1.0.tar.gz
Algorithm Hash digest
SHA256 68390b5f749c217ff344981020b930eae42ab3e02d726e0912812b68986d7642
MD5 8b1e6b0094232adc6fee996b00fa63d3
BLAKE2b-256 0dcaa19baf0eee78591b38d60ac8697382e219a77284e8d05ec5b420d5a5a633

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page