Expander code
bipartite expander graph Image: source and license | |
| Classification | |
|---|---|
| Type | Linear block code |
| Block length | |
| Message length | |
| Rate | |
| Distance | |
| Alphabet size | |
| Notation | |
In coding theory, expander codes form a class of error-correcting codes that are constructed from bipartite expander graphs. Along with Justesen codes, expander codes are of particular interest since they have a constant positive rate, positive relative distance, and alphabet size. In fact, the alphabet contains only two elements, so expander codes belong to the class of binary codes. Furthermore, expander codes can be both encoded and decoded in time proportional to the block length of the code.
Expander codes#edit
In coding theory, an expander code is a linear block code whose parity check matrix is the adjacency matrix of a bipartite expander graph. These codes have good relative distance
, where
and
are properties of the expander graph as defined later, rate
, and decodability (algorithms of running time
exist).
Definition#edit
Let be a
-biregular graph between a set of
nodes
, called variables, and a set of
nodes
, called constraints.
Let be a function designed so that, for each constraint
, the variables neighbouring
are
.
Let be an error-correcting code of block length
. The expander code
is the code of block length
whose code words are the words
such that, for
,
is a code word of
.[1]
It has been shown that nontrivial lossless expander graphs exist. Moreover, we can explicitly construct them.[2]
Rate#edit
The rate of is its dimension divided by its block length. In this case, the parity check matrix has size
, and hence
has rate at least
.
Distance#edit
Suppose . Then the distance of a
expander code
is at least
.
Proof#edit
Note that we can consider every code word in
as a subset of vertices
, by saying that vertex
if and only if the
th index of the code word is a 1. Then
is a code word if every vertex
is adjacent to an even number of vertices in
. (In order to be a code word,
, where
is the parity check matrix. Then, each vertex in
corresponds to each column of
. Matrix multiplication over
then gives the desired result.) So, if a vertex
is adjacent to a single vertex in
, we know immediately that
is not a code word. Let
denote the neighbours in
of
, and
denote those neighbours of
which are unique, i.e., adjacent to a single vertex of
.
Lemma 1#edit
For every of size
,
.
Proof#edit
Trivially, , since
implies
.
follows since the degree of every vertex in
is
. By the expansion property of the graph, there must be a set of
edges which go to distinct vertices. The remaining
edges make at most
neighbours not unique, so
.
Corollary#edit
Every sufficiently small has a unique neighbour. This follows since
.
Lemma 2#edit
Every subset with
has a unique neighbour.
Proof#edit
Lemma 1 proves the case , so suppose
. Let
such that
. By Lemma 1, we know that
. Then a vertex
is in
if
, and we know that
, so by the first part of Lemma 1, we know
. Since
,
, and hence
is not empty.
Corollary#edit
Note that if a has at least 1 unique neighbour, i.e.
, then the corresponding word
corresponding to
cannot be a code word, as it will not multiply to the all zeros vector by the parity check matrix. By the previous argument,
. Since
is linear, we conclude that
has distance at least
.
Encoding#edit
The encoding time for an expander code is upper bounded by that of a general linear code - by matrix multiplication. A result due to Spielman shows that encoding is possible in
time.[3]
Decoding#edit
Decoding of expander codes is possible in time when
using the following algorithm.
Let be the vertex of
that corresponds to the
index in the code words of
. Let
be a received word, and
. Let
be
, and
be
. Then consider the greedy algorithm:
Input: received word .
initialize y' to y
while there is a v in R adjacent to an odd number of vertices in V(y')
if there is an i such that o(i) > e(i)
flip entry i in y'
else
fail
Output: fail, or modified code word .
Proof#edit
We show first the correctness of the algorithm, and then examine its running time.
Correctness#edit
We must show that the algorithm terminates with the correct code word when the received code word is within half the code's distance of the original code word. Let the set of corrupt variables be ,
, and the set of unsatisfied (adjacent to an odd number of vertices) vertices in
be
. The following lemma will prove useful.
Lemma 3#edit
If , then there is a
with
.
Proof#edit
By Lemma 1, we know that . So an average vertex has at least
unique neighbours (recall unique neighbours are unsatisfied and hence contribute to
), since
, and thus there is a vertex
with
.
So, if we have not yet reached a code word, then there will always be some vertex to flip. Next, we show that the number of errors can never increase beyond .
Lemma 4#edit
If we start with , then we never reach
at any point in the algorithm.
Proof#edit
When we flip a vertex ,
and
are interchanged, and since we had
, this means the number of unsatisfied vertices on the right decreases by at least one after each flip. Since
, the initial number of unsatisfied vertices is at most
, by the graph's
-regularity. If we reached a string with
errors, then by Lemma 1, there would be at least
unique neighbours, which means there would be at least
unsatisfied vertices, a contradiction.
Lemmas 3 and 4 show us that if we start with (half the distance of
), then we will always find a vertex
to flip. Each flip reduces the number of unsatisfied vertices in
by at least 1, and hence the algorithm terminates in at most
steps, and it terminates at some code word, by Lemma 3. (Were it not at a code word, there would be some vertex to flip). Lemma 4 shows us that we can never be farther than
away from the correct code word. Since the code has distance
(since
), the code word it terminates on must be the correct code word, since the number of bit flips is less than half the distance (so we couldn't have travelled far enough to reach any other code word).
Complexity#edit
We now show that the algorithm can achieve linear time decoding. Let be constant, and
be the maximum degree of any vertex in
. Note that
is also constant for known constructions.
- Pre-processing: It takes
time to compute whether each vertex in
has an odd or even number of neighbours.
- Pre-processing 2: We take
time to compute a list of vertices
in
which have
.
- Each Iteration: We simply remove the first list element. To update the list of odd / even vertices in
, we need only update
entries, inserting / removing as necessary. We then update
entries in the list of vertices in
with more odd than even neighbours, inserting / removing as necessary. Thus each iteration takes
time.
- As argued above, the total number of iterations is at most
.
This gives a total runtime of time, where
and
are constants.
See also#edit
- Expander graph
- Low-density parity-check code
- Linear time encoding and decoding of error-correcting codes
- ABNNR and AEL codes
Notes#edit
This article is based on Dr. Venkatesan Guruswami's course notes.[4]
References#edit
- ^ Sipser, M.; Spielman, D.A. (1996). "Expander codes". IEEE Transactions on Information Theory. 42 (6): 1710–1722. doi:10.1109/18.556667.
- ^ Capalbo, M.; Reingold, O.; Vadhan, S.; Wigderson, A. (2002). "Randomness conductors and constant-degree lossless expanders". STOC '02 Proceedings of the thirty-fourth annual ACM symposium on Theory of computing. ACM. pp. 659–668. doi:10.1145/509907.510003. ISBN 978-1-58113-495-7. S2CID 1918841.
- ^ Spielman, D. (1996). "Linear-time encodable and decodable error-correcting codes". IEEE Transactions on Information Theory. 42 (6): 1723–31. doi:10.1109/18.556668.
- ^ Guruswami, V. (15 November 2006). "Lecture 13: Expander Codes" (PDF). CSE 533: Error-Correcting. University of Washington.
Guruswami, V. (March 2010). "Notes 8: Expander Codes and their decoding" (PDF). Introduction to Coding Theory. Carnegie Mellon University.
Guruswami, V. (September 2004). "Guest column: error-correcting codes and expander graphs". ACM SIGACT News. 35 (3): 25–41. doi:10.1145/1027914.1027924. S2CID 17550280.
This article is mirrored from “Expander code” on English Wikipedia, revision 1376125949, written by Wikipedia's contributors and licensed CC BY-SA 4.0. Editing it here creates a Quire copy with its own history.
Synced with Wikipedia revision 1376125949 · just now