In
coding theory
Coding theory is the study of the properties of codes and their respective fitness for specific applications. Codes are used for data compression, cryptography, error detection and correction, data transmission and data storage. Codes are stud ...
, rank codes (also called Gabidulin codes) are non-binary
[Codes for which each input symbol is from a set of size greater than 2.] linear
Linearity is the property of a mathematical relationship ('' function'') that can be graphically represented as a straight line. Linearity is closely related to '' proportionality''. Examples in physics include rectilinear motion, the linear ...
error-correcting code
In computing, telecommunication, information theory, and coding theory, an error correction code, sometimes error correcting code, (ECC) is used for controlling errors in data over unreliable or noisy communication channels. The central idea i ...
s over not
Hamming Hamming may refer to:
* Richard Hamming (1915–1998), American mathematician
* Hamming(7,4), in coding theory, a linear error-correcting code
* Overacting, or acting in an exaggerated way
See also
* Hamming code, error correction in telecommu ...
but ''rank'' metric. They described a systematic way of building codes that could detect and correct multiple
random
In common usage, randomness is the apparent or actual lack of pattern or predictability in events. A random sequence of events, symbols or steps often has no order and does not follow an intelligible pattern or combination. Individual rando ...
''rank'' errors. By adding redundancy with coding ''k''-symbol word to a ''n''-symbol word, a rank code can correct any errors of rank up to ''t'' = ⌊ (''d'' − 1) / 2 ⌋, where ''d'' is a code distance. As an
erasure code
In coding theory, an erasure code is a forward error correction (FEC) code under the assumption of bit erasures (rather than bit errors), which transforms a message of ''k'' symbols into a longer message (code word) with ''n'' symbols such that the ...
, it can correct up to ''d'' − 1 known erasures.
A rank code is an algebraic linear code over the finite field
similar to
Reed–Solomon code.
The rank of the vector over
is the maximum number of linearly independent components over
. The rank distance between two vectors over
is the rank of the difference of these vectors.
The rank code corrects all errors with rank of the error vector not greater than ''t''.
Rank metric
Let
be an ''n''-dimensional vector space over the
finite field
In mathematics, a finite field or Galois field (so-named in honor of Évariste Galois) is a field that contains a finite number of elements. As with any field, a finite field is a set on which the operations of multiplication, addition, subt ...
, where
is a power of a prime and
is a positive integer. Let
, with
, be a base of
as a vector space over the field
.
Every element
can be represented as
. Hence, every vector
over
can be written as matrix:
:
''Rank of the vector''
over the field
is a rank of the corresponding matrix
over the field
denoted by
.
The set of all vectors
is a space
. The map
) defines a norm over
and a ''rank metric'':
:
Rank code
A set
of vectors from
is called a code with code distance
. If the set also forms a ''k''-dimensional subspace of
, then it is called a linear (''n'', ''k'')-code with distance
. Such a linear rank metric code always satisfies the Singleton bound
with equality.
Generating matrix
There are several known constructions of rank codes, which are ''maximum rank distance'' (or MRD) codes with ''d'' = ''n'' − ''k'' + 1.
The easiest one to construct is known as the (generalized) Gabidulin code, it was discovered first by Delsarte (who called it a '' Singleton system'') and later by Gabidulin (and Kshevetskiy ).
Let's define a Frobenius power