Jump to content

User:Script3r/sandbox

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Script3r (talk | contribs) at 22:27, 30 April 2013 (Theorem: The Rieger Bound). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Motivation

There are many codes that have been designed to correct random errors. Sometimes, however, channels may introduce errors which are localized in a short interval. Such errors occur in a burst (called as burst errors because they are occur in many consecutive bits). Examples of burst errors can be found extensively in storage mediums. These errors may be due to physical damage such as scratch on a disc or a stroke of lightning in case of wireless channel. They are not independent; they tend to be spatially concentrated. If one bit has an error, it is likely that the adjacent bits could also be corrupted. The methods used to correct random errors are inefficient to correct burst errors. This motivates burst error correcting codes.

Definitions

A burst of length [8]

Say a codeword is transmitted, and it is received as . Then, the error vector is called a burst of length if the number of nonzero components of is confined to consecutive components. For example, is a burst of length .

Although this definition is sufficient to describe what a burst error is, the majority of the tools developed for burst error correction rely on cyclic codes. This motivates our next definition.

A cyclic burst of length [8]

An error vector is called a cyclic burst error of length if its nonzero components are confined to cyclically consecutive components. For example, the previously considered error vector , is a cyclic burst of length , since we consider the error starting at position and ending at position . Notice the indices are -based, that is, the first element is at position .

For the remainder of this article, we will use the term burst to refer to a cyclic burst, unless noted otherwise.

Burst description [8]

It is often useful to have a compact definition of a burst error, that encompasses not only its length, but also the pattern, and location of such error. We define a a burst description to be a tuple where is the pattern of the error (that is the string of symbols beginning with the first nonzero entry in the error pattern, and ending with the last nonzero symbol), and is the location, on the codeword, where the burst can be found.

For example, the burst description of the error pattern is . Notice that such description is not unique, because is describing the same burst error. In general, if the number of nonzero components in is , then will have different burst descriptions (each starting at a different nonzero entry of ).

We now present a theorem that remedies some of the issues that arise by the ambiguity of burst descriptions.

Theorem: Uniqueness of burst descriptions

If is an error vector of length with two burst descriptions and . If (where is the number of symbols in the error pattern ), then the two descriptions are identical (that is, their components are equivalent) [2]

Proof: Let be the weight (or the number of nonzero entries) of . Then has exactly error descriptions. For or , there is nothing prove. So, we consider the cases where . Assume that the descriptions are not identical. We notice that each nonzero entry of will appear in the pattern, and so, the components of not included in the pattern will form a cyclic run of 0's, beginning after the last nonzero entry, and continuing just before the first nonzero entry of the pattern. We call the set of indices corresponding to this run as the zero run. Let's consider the zero runs for the error pattern .

We immediately observe that each burst description has a zero run associated with it. But most importantly, we notice that each zero run is disjoint. Since we have zero runs, and each is disjoint, if we count the number of distinct elements in all the zero runs, we get we have a total of . With this observation in mind, we have a total of zeros in . But, since , this number is , which contradicts that . Thus, the burst error descriptions are identical. A corollary of the above theorem is that we cannot have two distinct burst descriptions for bursts of length .

Cyclic Codes for Burst Error Correction

Cyclic Codes are defined as follows: Think of the symbols as elements in . Now, we can think of words as polynomials over , where the individual symbols of a word correspond to the different coefficients of the polynomial. To define a cyclic code, we pick a fixed polynomial, called "the generator polynomial." The codewords of this cyclic code are all the polynomials that are divisible by this generator polynomial.

Codewords are polynomials of degree . Suppose that the generator polynomial has degree . Polynomials of degree that are divisible by result from multiplying by polynomials of degree . We have such polynomials. Each one of them corresponds to a codeword. Therefore, for cyclic codes.

Cyclic codes can detect all bursts of length up to . We will see later that the burst error detection ability of any code is upper bounded by . Because cyclic codes meet that bound, they are considered optimal for burst error detection. This claim is proved by the following theorem:

Theorem: Cyclic Burst Correction Capability

Every cyclic code with generator polynomial of degree can detect all bursts of length .

Proof: To prove this, we need to prove that if you add a burst of length to a codeword (i.e. to a polynomial that is divisible by ), then the result is not going to be a codeword (i.e. the corresponding polynomial is not going to be divisible by ). It suffices to show that no burst of length is divisible by . Such a burst has the form , where has degree < . Therefore, is not divisible by (because the latter has degree ). is not divisible by (Otherwise, all codewords would start with ). Therefore, is not divisible by as well.

The above proof suggests a simple algorithm for burst error detection/correction in cyclic codes: given a transmitted word (i.e. a polynomial of degree ), compute the remainder of this word when divided by . If the remainder is zero (i.e. if the word is divisible by ), then it is a valid codeword. Otherwise, report an error. To correct this error, subtract this remainder from the transmitted word. The subtraction result is going to be divisible by (i.e. it is going to be a valid codeword).

By the upper bound on burst error detection (), we know that a cyclic code can not detect bursts of length > . But luckily, it turns out that cyclic codes can indeed detect bursts of length > . The reason is that detection fails only when the burst is divisible by . Over binary alphabets, there exist bursts of length . Out of those, only are divisible by . Therefore, the detection failure probability is very small () assuming a uniform distribution over all bursts of length .

We now consider a fundamental theorem about cyclic codes that will aid in designing efficient burst-error correcting codes, by categorizing bursts into different cosets.

Theorem: Distinct Cosets

A linear code C is an l-burst-error-correcting code iff all the burst errors of length or less lie in distinct cosets of .

Proof: Consider two different burst errors e1 and e2 of length or less which lie in same coset of codeword C. When we take difference between the errors e1 and e2, we get c such that c is a code-word. Hence, if we receive e1, we can decode it either to 0 or c. In contrast, if all the burst errors e1 and e2 do not lie in same coset, then each burst error is determined by its syndrome. The error can then be corrected through its syndrome. Thus, A linear code C is an l-burst-error-correcting code if and only if all the burst errors of length or less lie in distinct cosets of C.

Theorem: Burst Error Codeword Classification

Let C be an [n, k]-linear l-burst-error-correcting code. Then no nonzero burst of length or less can be a codeword.

Proof: Consider existence of a codeword c which has the burst length less than or equal to . Thus, c has the pattern , where and are two words of length ≤ − 1. Hence, the words and are two bursts of length ≤. For binary linear codes, they belong to the same coset. This is a contradiction to Theorem stated above. Thus it follows that no nonzero burst of length or less can be a codeword.

Burst Error Correction Bounds

Upper bounds on Burst Error Detection and Correction=

By upper bound, we mean a limit on our error detection ability that we can never go beyond. Suppose that we want to design an code that can detect all burst errors of length . A natural question to ask is: given and , what is the maximum that we can never achieve beyond? In other words, what is the upper bound on the length of bursts that we can detect using any code? The following theorem provides an answer to this question.

Theorem: Burst Error Detection Ability

The burst error detection ability of any code is . Proof: To prove this, we start by making the following observation: A code can detect all bursts of length if and only if no two codewords differ by a burst of length . Suppose that we have two code words and that differ by a burst of length . Upon receiving , we can not tell whether the transmitted word is indeed with no transmission errors, or whether it is with a burst error that occurred during transmission. Now, suppose that every two codewords differ by more than a burst of length . Even if the transmitted codeword is hit by a burst of length , it is not going to change into another valid codeword. Upon receiving it, we can tell that this is with a burst . By the above observation, we know that no two codewords can share the first symbols. The reason is that even if they differ in all the other symbols, they are still going to be different by a burst of length . Therefore, the number of codewords satisfies . By taking the logarithm to the base and rearranging, we can see that .

Now, we repeat the same question but for error correction: given and , what is the upper bound on the length of bursts that we can correct using any code? The following theorem provides a preliminary answer to this question. However later on, we will see that the Rieger bound is going to provide a stronger answer..

Theorem: Burst Error Correction Ability

The burst error correction ability of any code satisfies

Proof: We start with the following observation: A code can correct all bursts of length if and only if no two codewords differ by the sum of two bursts of length . Suppose that two codewords and differ by two bursts and of length each. Upon receiving hit by a burst , we could interpret that as if it was hit by a burst . We can not tell whether the transmitted word is or . Now, suppose that every two codewords differ by more than two bursts of length . Even if the transmitted codeword is hit by a burst of length , it is not going to look like another codeword that has been hit by another burst. For each codeword , let denote the set of all words that differ from by a burst of length . Notice that includes itself. By the above observation, we know that for two different codewords and , and are disjoint. We have codewords. Therefore, we can say that . Moreover, we have . By plugging the latter inequality into the former, then taking the base logarithm and rearranging, we get the above theorem. This theorem is weaker than the Rieger bound, which we will discuss later.

Rieger Bound

Theorem: The Rieger Bound

If is the burst error correcting ability of an [n, k] linear block code, then .

Proof: Any linear code that can correct burst pattern of length l or less cannot have a burst of length or less as a codeword. If it had burst of length or less as a codeword, then a burst of length l could change the codeword to burst pattern of length , which also could be obtained by making a burst error of length in all zero codeword. If vectors are non-zero in first symbols, then the vectors should be from different subsets of an array so that their difference is not a codeword of bursts of length . Ensuring this condition, the number of such subsets is at least equal to number of vectors. Thus, number of subsets would be at least . Hence, we have at least distinct symbols, otherwise, difference of two such polynomials would be a codeword that is a sum of 2 bursts of length ≤ . Thus, this proves Rieger Bound. A linear burst-error-correcting code achieving the above Rieger bound is called an optimal burst-error-correcting code.