Parity-check code¶
A simple way of detecting up to one error is to use the device of adding a parity check to ensure that the sum of the digits in a transmitted word is even.
A parity-check code of dimension \(k\) over \(F_q\) is the set: \(\{(m_1, m_2, \dots, m_k, - \Sigma_{i=1}^k m_i) \mid (m_1, m_2, \dots, m_k) \in F_q^k\}\)
REFERENCE:
-
class
sage.coding.parity_check_code.
ParityCheckCode
(base_field=Finite Field of size 2, dimension=7)¶ Bases:
sage.coding.linear_code.AbstractLinearCode
Representation of a parity-check code.
INPUT:
base_field
– the base field over whichself
is defined.dimension
– the dimension ofself
.
EXAMPLES:
sage: C = codes.ParityCheckCode(GF(5), 7) sage: C [8, 7] parity-check code over GF(5)
-
minimum_distance
()¶ Return the minimum distance of
self
.It is always 2 as
self
is a parity-check code.EXAMPLES:
sage: C = codes.ParityCheckCode(GF(5), 7) sage: C.minimum_distance() 2
-
class
sage.coding.parity_check_code.
ParityCheckCodeGeneratorMatrixEncoder
(code)¶ Bases:
sage.coding.linear_code.LinearCodeGeneratorMatrixEncoder
Encoder for parity-check codes which uses a generator matrix to obtain codewords.
INPUT:
code
– the associated code of this encoder.
EXAMPLES:
sage: C = codes.ParityCheckCode(GF(5), 7) sage: E = codes.encoders.ParityCheckCodeGeneratorMatrixEncoder(C) sage: E Generator matrix-based encoder for [8, 7] parity-check code over GF(5)
Actually, we can construct the encoder from
C
directly:sage: E = C.encoder("ParityCheckCodeGeneratorMatrixEncoder") sage: E Generator matrix-based encoder for [8, 7] parity-check code over GF(5)
-
generator_matrix
()¶ Return a generator matrix of
self
.EXAMPLES:
sage: C = codes.ParityCheckCode(GF(5),7) sage: E = codes.encoders.ParityCheckCodeGeneratorMatrixEncoder(C) sage: E.generator_matrix() [1 0 0 0 0 0 0 4] [0 1 0 0 0 0 0 4] [0 0 1 0 0 0 0 4] [0 0 0 1 0 0 0 4] [0 0 0 0 1 0 0 4] [0 0 0 0 0 1 0 4] [0 0 0 0 0 0 1 4]
-
class
sage.coding.parity_check_code.
ParityCheckCodeStraightforwardEncoder
(code)¶ Bases:
sage.coding.encoder.Encoder
Encoder for parity-check codes which computes the sum of message symbols and appends its opposite to the message to obtain codewords.
INPUT:
code
– the associated code of this encoder.
EXAMPLES:
sage: C = codes.ParityCheckCode(GF(5), 7) sage: E = codes.encoders.ParityCheckCodeStraightforwardEncoder(C) sage: E Parity-check encoder for the [8, 7] parity-check code over GF(5)
Actually, we can construct the encoder from
C
directly:sage: E = C.encoder("ParityCheckCodeStraightforwardEncoder") sage: E Parity-check encoder for the [8, 7] parity-check code over GF(5)
-
encode
(message)¶ Transform the vector
message
into a codeword ofcode()
.INPUT:
message
– Aself.code().dimension()
-vector from the message space ofself
.
OUTPUT:
A codeword in associated code of
self
.
EXAMPLES:
sage: C = codes.ParityCheckCode(GF(5),7) sage: message = vector(C.base_field(),[1,0,4,2,0,3,2]) sage: C.encode(message) (1, 0, 4, 2, 0, 3, 2, 3)
-
message_space
()¶ Return the message space of
self
.EXAMPLES:
sage: C = codes.ParityCheckCode(GF(5),7) sage: E = codes.encoders.ParityCheckCodeStraightforwardEncoder(C) sage: E.message_space() Vector space of dimension 7 over Finite Field of size 5
-
unencode_nocheck
(word)¶ Return the message corresponding to the vector
word
.Use this method with caution: it does not check if
word
belongs to the code.INPUT:
word
– Aself.code().length()
-vector from the ambiant space ofself
.
OUTPUT:
A vector corresponding to the
self.code().dimension()
-first symbols inword
.
EXAMPLES:
sage: C = codes.ParityCheckCode(GF(5), 7) sage: word = vector(C.base_field(), [1, 0, 4, 2, 0, 3, 2, 3]) sage: E = codes.encoders.ParityCheckCodeStraightforwardEncoder(C) sage: E.unencode_nocheck(word) (1, 0, 4, 2, 0, 3, 2)