-
Notifications
You must be signed in to change notification settings - Fork 66
Description
Problem Description
The library supports computing exact minimum distance of CSS quantum codes via linear programming method. Algorithms such as random information set can be used to compute the upper bound of quantum code distance.
Motivation
The motivation for the upper bound algorithms is inspired from Distance bounds for generalized bicycle codes. Exact minimum distance algorithms (e.g., GAP's QDistRnd or ILP methods) compute the actual distance/lower bound for specific codes. Upper bounds, however, expose limitations (universal constraints) that apply to all codes within a class, helping us understand what is theoretically achievable. For example, in the case of GB codes, we are given a constraint:
An incommensurate GB code with row weight
$w$ and parameters$[[n = 2ℓ, k, d]]_{q}$ is equivalent to a CSS code local in$D≤w−1$ dimensions ($D≤w−2$ if$ℓ$ is prime). Its parameters satisfy the inequalities$d≤O(n^{1−1/D})$ and$kd^{2/(D−1)}≤O(n)$ . (Statement 13)
This locality imposes an unavoidable scaling law: the distance
In addition, upper bounds are essential for assessing whether known code constructions are optimal. For example, in the case of GB codes, it follows:
For such GB codes., we constructed upper distance bounds and lower existence bounds which give
$d ≥ O(n^{(1/2}))$ . For weight-4 codes ($w=4, D=2$ ), these upper and lower bounds coincide to prove the optimality of$√n$ scaling. (Statement 14)
For weight
The numerical results also show that upper bounds inform the trade-offs involved in code design.
upper bound for GB codes suggests a power-law distance scaling with the exponent that may change with
$w$ ,$d < O(n^γ)$ , where$γ = 1−1/D$ with the effective dimension$D(w) ≤ w − 2$ for a prime$ℓ$ .
The figure 4 on page 8 show that increasing
Solution Description
Investigate wrapping Leonid P. Pryadko's C library dist-m4ri for supporting dedicated algorithms for computing upper/lower distance bounds. Native Julia implementation can also be considered.
Implementation Notes from Stefan Krastanov
Usually for C code in Julia one would use BinaryBuilder to build a "shared library" or "executable". The preferred option is usually "shared library", but it seems like this particular codebase is not really designed to be used as a library. I guess then the build target would be an executable and one would need to prepare temporary files and give them to the executable as input.
Check BinaryBuilder, Base.run, and whatever tools julia provides for creating temporary files.
Additional Context
The upper bounds of various GB codes are presented here.