The present invention relates to a method of building a variable length error code, said method comprising the steps of:
(1) initializing the needed parameters: minimum and maximum length of codewords L1 and Lmax respectively, free distance dfree between each codeword (said distance dfree being for a VLEC code C the minimum Hamming distance in the set of all arbitrary extended codes), required number of codewords S;
(2) generating a fixed length code C of length L1 and minimal distance bmin, with bmin=min {bk; k=1, 2, . . . , R}, bk=the distance associated to the codeword length Lk of code C and defined as the minimum Hamming distance between all codewords of C with length Lk, and R=the number of different codeword lengths in C, said generating step creating a set W of n-bit long words distant of d;
(3) listing and storing in the set W all the possible L1-tuples at the distance of dmin from the codewords of C (said distance dmin for a VLEC code C being the minimum value of all the diverging distances between all possible couples of different-length codewords of C), and, if said set W is not empty, doubling the number of words in W by affixing at the end of all words one extra bit, said storing step therefore replacing the set W by a new one having twice more words than the previous one and the length of each one of these words being L1+1;
(4) deleting all the words of the set W that do not satisfy the cmin distance with all codewords of C, said distance cmin being the minimum converging distance of the code C;
(5) in the case where no word is found or the maximum number of bits is reached, reducing the constraint of distance for finding more words;
(6) controlling that all words of the set W are distant of bmin, the found words being then added to the code C;
(7) if the required number of codewords has not been reached, repeating the steps (1) to (6) until the method finds either no further possibility to continue or the required number of codewords;
(8) if the number of codewords of C is greater than S, calculating on the basis of the structure of the VLEC code, the average length AL obtained by weighting each codeword length with the probability of the source, said AL becoming the ALmin, if it is lower than ALmin, with ALmin=the minimum value of AL, and the corresponding code structure being kept in memory.
A classical communication chain, illustrated in
Among the solutions proposed in such an approach, the variable-length error correcting (VLEC) codes present the advantage to be variable-length while providing error correction capabilities, but building these codes is rather time consuming for short alphabets (and become even prohibitive for higher length alphabets sources), and the construction complexity is also a drawback, as it will be seen.
First, some definitions and properties of the classical VLC must be recalled. A code C is a set of S codewords {c1, c2, C3, . . . , ci, . . . cS}, for each of which a length li=|ci| is defined, with l1≦l2≦l3’ . . . ≦li≦ . . . ≦lS without any loss of generality. The number of different codeword lengths in the code C is called R, with obviously R≦S, and these lengths are denoted as L1, L2, L3, . . . , Li, . . . LR, with L1<L2<L3< . . . <LR. A variable-length code, or VLC, is then the structure denoted by (s1@L1, s2@L2, s3@L3, . . . , sR@LR), which corresponds to s1 codewords of length L1, s2 codewords of length L2, s3 codewords of length L3, . . . , and sR codewords of length LR. When using a VLC, the compression efficiency, for a given source, is related to the number of bits necessary to transmit symbols from said source. The measure used to estimate this efficiency is often the average length AL of the code (i.e. the average number of bits needed to transmit a word), said average length being given, when each symbol ai is mapped to the codeword ci, by the following relation (1):
which is equivalent to the relation (2):
where, for a data source A, the S source symbols are denoted by {a1, a2, a3, . . . , as} and P(ai) is the respective probability of occurrence of each of these symbols, with ΣP(ai)=1 (from i=1 to i=S). If ALmin denotes the minimal value for the average length AL, it is easy to see that when ALmin is reached, the symbols are indexed in such a way that P(a1)≧P(a2)≧P(a3)≧. . . ≧P(ai)≧. . . P(as). In order to encode the data in such a way that the receiver can decode the coded information, the VLC must satisfy the following properties: to be non-singular (all the codewords are distinct, i.e. no more than one source symbol is allocated to one codeword) and to be uniquely decodable (i.e. it is possible to map any string of codewords unambiguously back to the correct source symbols, without any error).
An introduction and a presentation of different distances that are useful when reviewing some general properties of the VLC codes will then help to recall the notion of error-correcting property used in the VLEC code theory:
(a) Hamming weight and distance: if w is a word of length n with w=(w1, w2, . . . , wn), the Hamming weight of w, or simply weight, is the number W(w) of non-zero symbols in w:
and, if w1 and w2 are two words of equal length n with wi=(wi1, wi2, wi3, . . . , win) and i=1 or 2, the Hamming distance (or, simply, distance) between w1 and w2 is the number of positions in which w1 and w2 differ (for example, for the binary case, it is easy to see that:
H(w1, w2)=W(w1+w2) (4)
where the addition is modulo-2). However, the Hamming distance is by definition restricted to fixed-length codes, and other definitions will be defined before considering VLEC codes.
(b) let fi=w1i w2i, . . . wni be a concatenation of n words of a VLEC code C, then the set FN={fi:|fi|=N} is called the extended code of C of order N.
(c) minimum block distance and overall minimum block distance: the minimum block distance bk associated to the codeword length Lk of a VLEC code C is defined as the minimum Hamming distance between all distinct codewords of C with the same length Lk:
bk=min {H(ci, cj): ci, cjε C, i|ci|=|c j|=Lk} for k=1, . . . ,R (5)
and the overall minimum block distance bmin of said VLEC code C, which is the minimum block distance value for every possible length Lk, is defined by:
bmin=min{bk: k=1, . . . R} (6)
of a VLEC code C, where ci, cj ε C, li=|cj| and lj=|cj| with li>lj, is defined by:
i.e. it is also the Hamming distance between a lj-length codeword and the lj-length prefix of a longer codeword, and the minimum diverging distance dmin of said VLEC code C is the minimum value of all the diverging distances between all possible couples of codewords of C of unequal length:
dmin=min{D(ci,cj):cicj ε C,|ci|≠|cj|} (8)
of a VLEC code C, where |ci|=li>|cj|=lj, is defined by:
i.e. it is also the Hamming distance between a lj-length codeword and the lj-length suffix of a longer codeword, and the minimum converging distance of said VLEC code C is the minimum value of all the converging distances between all possible couples of C of unequal length:
cmin=min{C(ci,cj): ci, cj ε C,|ci|≠|cj|} (10)
Following the structure model used for a VLC, it is therefore possible to describe the structure of the VLEC code C by the notation:
S1@ L1, b1; S2 @ L2, b2; . . . ; SR@ LR, bR; dmin, cmin (12)
where there are si codewords of length Li with minimum block distance bi, for all i=1, 2, . . . R, (it is recalled that R is the number of different codeword lengths) and minimum diverging and converging distances dmin and cmin. The most important parameter of a VLEC code is its free distance dfree, which influences greatly its performance in terms of error-correcting capabilities, and it can be shown that the free distance of a VLEC code is bounded by:
dfree≧min(bmin, dmin+cmin) (13)
These definitions being recalled, the state-of-the-art in VLEC codes construction will be now described more easily. The first types of VLEC codes, called α-prompt codes and introduced in 1974, and an extension of this family, called at
A more recent construction, allowing the construction of a VLEC code from the generator matrix of a fixed-length linear block code, was proposed in the document “Variable-length error-correcting codes” by V. Buttigieg, Ph.D. Thesis, University of Manchester, England, 1995. Called code-anticode construction, this algorithm relies on line combinations and column permutations to form an anticode at the rightmost column. Once the code-anticode generator matrix is obtained, the VLEC code is simply obtained by a matrix multiplication.
This technique has however several drawbacks. First, there is no explicit method to find the needed line combinations and column permutations to obtain the anticode. Moreover, the construction does not take into account the source statistics and, consequently, often reveals itself sub-optimal (one can find a code with smaller average length by a post-processing on the VLEC code). In the same document, the author has then proposed an improved method, called Heuristic method, that is based on a computer search for building a VLEC code giving the better known compression rate for a specified source and a given protection against errors, i.e. a code C with specified overall minimum block, diverging and converging distances (and hence a minimum value for due) and with codeword lengths matched to the source statistics so as to obtain a minimum average codeword length for the chosen free distance and the specified source (in practice, one takes: bmin=dmin+cmin=dfree, and: dmin=[dfree/2].
The main steps of this Heuristic method, which uses the following parameters: minimum length L1 of codewords, maximum length Lmax of codewords, free distance dfree between each codeword, number S of codewords required, are now described with reference to the flowcharts of
To start the computer search (“Start”), all the needed parameters must be first specified: L1 (the minimum codeword length, which must be at least equal to or greater than the minimum diverging distance required), Lmax (the maximum codeword length), the different distances between codewords (dfree, bmin, dmin, cmin), and S (the number of codewords required by the given source), and some relations are set when choosing these parameters:
Ll≦dmin
bmin=dfree
dmin+cmin=dfree
The first phase of the algorithm, referenced 11, is then performed: it consists in the generation of a fixed length code (put initially in C) of length L1 and minimal distance bmin, with a maximum number of codewords. This phase is in fact an initialization, performed for instance by means of an algorithm such as the greedy algorithm (GA), presented in
The second phase of the algorithm, corresponding to the elements referenced 21 to 24 (21+22=operation “A0”; 23+24=operation “A2”) in
The third phase of the algorithm, corresponding to the elements 31 to 35 (=operation “A3” in
If no word is found (i.e. W is empty) at the end of the step 21 (reply YES to the test 22: |w|=0 ?) or if the maximum number of bits is reached or exceeded (reply YES to the test 23), one enters the fourth phase of the algorithm (steps 41 to 46, illustrated in
If said required number of codewords has been reached (i.e. the number of codewords of C is equal to or greater than S (reply YES to the test 35), the structure of the VLEC code thus obtained is used in a fifth part, including the steps 51 to 56 (illustrated in
To continue this search of the best VLEC code, it is necessary to avoid keeping the same structure, which would lead to a loop in the algorithm. The last added group of the current code is deleted (steps 52, 53), the deletion of shorter length codewords allowing to find more longer length codewords (test 54: number of codewords in group greater than 1 ?), and some codewords (half the amount for the GVA; the “best” one for the MVA) of the previous group are deleted (step 55), in order to re-loop (step 56) the algorithm at the beginning of the step 21 (see
However, the Heuristic method thus described often considers very unlikely code structures or proceeds with such a care (in order not to miss anything) that a great complexity is observed in the implementation of said method, which moreover is rather time consuming and can thus become prohibitive.
It is therefore an object of the invention to propose an improved construction method with which it is possible to gain in complexity by avoiding these drawbacks.
To this end, the invention relates to a method of building a variable length error code as defined in the introductory paragraph of the description, said building method being moreover such that at most one bit is added at the end of each word of the set W.
It is also an object of the invention to propose a device for carrying out such a variable length error code building method.
The present invention will now be described, by way of example, with reference to the accompanying drawings in which:
Simulations show that, with the classical Heuristic method, almost none of the obtained best codes has a hole, i.e. a length jump in its structure length. It is therefore proposed, according to the invention, to consider that most good codes do not have jump of length and therefore to reduce accordingly the set of examined VLEC codes (which consequently reduces the simulation time and the complexity of implementation of the method, without modifying much the AL). Following this hypothesis, the method is, according to the invention, modified by avoiding to add more than one bit at the end of each word of the set W.
The corresponding implementation (improved Heuristic construction method, with no hole optimization) is illustrated in
The main differences with the flowchart of
The results obtained with the present solution (called “noHole optimization method”) are presented in the table of
Number | Date | Country | Kind |
---|---|---|---|
02292624 | Oct 2002 | EP | regional |
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/IB03/04520 | 10/14/2003 | WO | 00 | 4/20/2005 |
Publishing Document | Publishing Date | Country | Kind |
---|---|---|---|
WO2004/038926 | 5/6/2004 | WO | A |
Number | Date | Country | |
---|---|---|---|
20060015796 A1 | Jan 2006 | US |