|
An [[n, k]] quantum stabiliser code Q is said to be a
best known [[n, k]] quantum code (BKQC) if C has the
highest minimum weight among all known [[n, k]] quantum codes.
The acronym QECC (Quantum Error Correcting Code) will be used
to more easily distinguish from the best known linear codes database (BKLC).
Magma currently has a database for binary quantum codes, though it
should be noted that these codes are considered to be over the alphabet
GF(4), not GF(2).
The database for codes over GF(4) currently contains constructions of all
best known quantum codes of length 35.
This includes self-dual quantum codes up to length 35, which
are stored in the database as dimension 0 quantum codes.
Quantum codes of length up to 12 are optimal, in the sense that their
minimum weights meet the upper bound.
Thus the user has access to 665 best-known binary quantum codes.
The Magma QECC database uses the tables of bounds and
constructions compiled by Markus Grassl (Karlsruhe),
available online at [Gra], which are
based on the results in [CRSS98].
Good codes have also been contributed by Eric Rains and Zlatko Varbanov.
The user can display the method used to construct a particular QECC
code through use of a verbose mode, triggered by the verbose flag
BestCode. When it is set to true, all of the functions in this
section will output the steps involved in each code they construct.
BKQC(F, n, k) : FldFin, RngIntElt, RngIntElt -> CodeQuantum, BoolElt
BestKnownQuantumCode(F, n, k) : FldFin, RngIntElt, RngIntElt -> CodeQuantum, BoolElt
Given a finite field F, and positive integers n and k such that
k ≤n, return an [[n, k]] quantum code over F which has the largest
minimum weight among all known [[n, k]] quantum codes.
A second boolean return value signals whether or not the desired
code exists in the database.
The database currently exists for GF(4) (which are in fact
binary quantum codes) up to length 35.
The weight distribution of a small best known quantum code is
calculated, verifying its minimum weight.
Note that the larger the dimension of a quantum code,
the easier it is to calculate its weight distribution.
> F<w> := GF(4);
> Q := QECC(F,25,16);
> Q:Minimal;
[[25, 16, 3]] Quantum code over GF(2^2)
> time WD_S, WD_N, WD := WeightDistribution(Q);
Time: 0.010
> WD_S;
[ <0, 1>, <1, 2>, <2, 1>, <14, 4>, <15, 16>, <16, 38>, <17, 79>, <18, 126>, <19,
129>, <20, 77>, <21, 27>, <22, 9>, <23, 3> ]
> WD_N;
[ <0, 1>, <1, 2>, <2, 1>, <3, 399>, <4, 6527>, <5, 75363>, <6, 707543>, <7,
5404369>, <8, 34084490>, <9, 180107319>, <10, 804255370>, <11, 3052443894>, <12,
9883860222>, <13, 27348684334>, <14, 64649758926>, <15, 130286413858>, <16,
222912028997>, <17, 321704696752>, <18, 387985433701>, <19, 385943417035>, <20,
310898936275>, <21, 197566276671>, <22, 95232787563>, <23, 32688613821>, <24,
7109768160>, <25, 735493959> ]
> WD;
[ <3, 399>, <4, 6527>, <5, 75363>, <6, 707543>, <7, 5404369>, <8, 34084490>, <9,
180107319>, <10, 804255370>, <11, 3052443894>, <12, 9883860222>, <13,
27348684334>, <14, 64649758922>, <15, 130286413842>, <16, 222912028959>, <17,
321704696673>, <18, 387985433575>, <19, 385943416906>, <20, 310898936198>, <21,
197566276644>, <22, 95232787554>, <23, 32688613818>, <24, 7109768160>, <25,
735493959> ]
So the [[25, 16]] code is impure, and has a minimum distance of 3.
Unlike linear codes, dimension 0 quantum codes are non-trivial
and are the subject of much study. These are the self-dual
quantum codes, which form a special subclass of quantum stabilizer codes.
It can be seen that a length n self-dual code is described
by a n x n generator matrix, an indication of the
non-triviality of its structure.
> F<w> := GF(4);
> C := QECC(GF(4),8, 0);
> C;
[[8, 0, 4]] self-dual Quantum code over GF(2^2), stabilised by:
[ 1 0 0 1 0 1 1 0]
[ w 0 0 w 0 w w 0]
[ 0 1 0 1 0 1 0 1]
[ 0 w 0 w 0 w 0 w]
[ 0 0 1 1 0 0 1 1]
[ 0 0 w w 0 0 w w]
[ 0 0 0 0 1 1 1 1]
[ 0 0 0 0 w w w w]
The verbose flag BestCode will show the method by which the
best code is constructed in the database.
In this example the construction of a [[25, 11, 4]] quantum
code is described.
> SetVerbose("BestCode",true);
> F<w> := GF(4);
> Q := QECC(F,25,11);
Construction of a [[ 25 , 11 , 4 ]] Quantum Code:
[1]: [[40, 30, 4]] Quantum code over GF(2^2)
QuasiCyclicCode of length 40 stacked to height 2 with generating
polynomials: 1, w^2*x^4 + w*x^3 + w^2*x^2 + w*x + w^2, x^4 + w^2*x^2 +
w^2*x + w^2, x^4 + w*x^3 + x^2, w*x^4 + x^3 + w^2*x, w*x^4 + x^3 +
x^2 + x, w^2*x^4 + x^2 + w*x, x^4 + w^2*x^3 + w^2*x^2 + x + 1, w,
x^4 + w^2*x^3 + x^2 + w^2*x + 1, w*x^4 + x^2 + x + 1, w*x^4 + w^2*x^3
+ w*x^2, w^2*x^4 + w*x^3 + x, w^2*x^4 + w*x^3 + w*x^2 + w*x, x^4 +
w*x^2 + w^2*x, w*x^4 + x^3 + x^2 + w*x + w
[2]: [[21, 11, 4]] Quantum code over GF(2^2)
Shortening of [1] at { 2, 3, 4, 6, 8, 9, 10, 12, 13, 14, 15, 16, 18, 19,
21, 24, 28, 34, 37 }
[3]: [[25, 11, 4]] Quantum code over GF(2^2)
ExtendCode [2] by 4
> Q:Minimal;
[[25, 11, 4]] Quantum code over GF(2^2)
[Next][Prev] [Right] [Left] [Up] [Index] [Root]
|