Coding and Decoding of Reed-Muller Codes - Kodning och avkodning av Reed-Muller koder Linda Meyer - DIVA
←
→
Page content transcription
If your browser does not render page correctly, please read the page content below
Coding and Decoding of Reed-Muller Codes Kodning och avkodning av Reed-Muller koder Linda Meyer Faculty of Health, Science and Technology Mathematics, Bachelor Degree Project 15 ECTS Supervisor: Igor Gachkov Examiner: Sorina Barza Date: June 2021
Abstract In this thesis some families of linear error-correcting codes are presented. The reader will find a general description of binary codes and more specific details about linear codes such as Hamming, repetition codes, Reed-Muller codes, etc. To fully immerse ourselves in the methods of coding and decoding, we will introduce examples in order to describe the presented theories. The examples are the author's contribution to the subject, and the content of this thesis are based on previous research in the scientific field of error-correcting codes. In these times of much communication through computer technology, our daily lives involve a substantial amount of data transmission. It is essential that these data are transmitted without errors through the communication channels. Therefore, the scientific field of error-correcting codes holds a significant importance in many aspects of today’s society. The main goal of this thesis is to study linear block codes which belong to the class of binary codes. In this case we will attribute a more prominent role to first order Reed-Muller codes.
Sammanfattning I den här uppsatsen kommer flera varianter av linjära felrättande koder att presenteras. Läsaren får ta del av en allmän beskrivning av binära koder och en mer detaljerad framställning av linjära koder så som Hamming, repetitionskod, Reed-Muller kod med mera. Tillsammans med en fördjupning i ämnet, avseende metoder för kodning och avkodning, kommer vi att ge exempel för att bidra till förståelsen. Dessa exempel utgör författarens bidrag till ämnesområdet och innehållet i uppsatsen baseras på tidigare forskning om felrättande koder. Den digitala eran, som vi lever i, innefattar att datatransmission är en del av vår vardag. Vår frekventa användning av mobila enheter visar på hur viktigt det är att data överförs korrekt via kommunikationskanalerna. Av den anledningen är vetenskapen om felrättande koder högaktuell i dagens samhälle. Det huvudsakliga syftet med uppsatsen är att studera linjära block-koder som tillhör klassen binära koder. I det här fallet kommer vi att fokusera lite extra på Reed-Muller koder av första ordningen.
Contents 1 Introduction 1 2 Linear Codes 3 2.1 The Importance of Linear Codes……………………………………...3 2.2 Parameters…………………………………………………………….6 2.3 Generator Matrix……………………………………………………...7 2.4 Various Linear Codes…………………………………………………7 2.5 Hamming Code……………………………………………………….9 2.6 Maximum Likelihood Decoding…………………………………….10 3 Reed-Muller Codes 12 3.1 Introduction to Reed-Muller Codes………………………………….12 3.2 First-Order RM Codes……………………………………………….12 3.3 Encoding……………………………………………………………..15 3.4 Decoding……………………………………………………………..18 4 Conclusions 20
Chapter 1 Introduction The importance of coding theory in today´s society can hardly be overestimated. It plays a considerable role in computer technology and consequently forms the foundation of the digital era of our time. We are now used to communication over large distances and simultaneously rely on fast-paced data transmission. But equally important, although most people rarely think about it, is the prospect of receiving the same message as the one being sent. In this aspect we depend on the theory of error-correcting codes. One of the first error-correcting codes was invented by Richard Hamming in 1950 and is therefore known as the Hamming code. We will account for this family of error-correcting codes, among other linear ECC, in Chapter 2. Furthermore, the reader will there find general concepts of linear codes and coding theory. The readers may perhaps ask themselves why error-correcting codes holds such an importance in communication technology. An answer to this question is that we cannot expect that a communication channel transmits messages without errors. Even in the beginning of the era of long-distance communication, with innovations such as the telegraph, this statement became evident. Due to noisy channels a message sent, for example, from London to Manchester could easily be transmitted with errors. Let us say that the message was an order for cotton, and one may realize that a simple number transmitted erroneous could be quite troublesome. The person at the receiving end could possibly apprehend that the message might be wrong and thus ask for it to be transmitted again. However, in an emergency, or for various other reasons, that might not be possible to achieve. One of the earliest solutions to this problem is also considered the most basic form of ECC, namely the 1
repetition code. The telegraphist simply formed the procedure of repeating each message so that the person working in the receiving end could recreate the original message. In our days, the error-correction is mainly automatically handled by computers instead of human individuals. We also rely on more efficient error-correcting codes than repetition codes. In addition, the ECC applied today can correct many errors. An example of this is the Reed-Muller codes that also has the advantage of working over particularly noisy channels. Nevertheless, different types of ECC are useful in different situations and, like many other innovations, numerous error-correcting codes have been created to solve specific problems that have appeared, in communication technology, over time. As we previously have described, some linear ECC are considered the simplest types of error-correcting codes, for example the repetition codes. However, the favorable mathematical properties of Reed-Muller codes etc. have added to their relevance in the development of modern communication technology. In Chapter 3, we find a more substantial account of RM codes and that specifically with regards to first-order Reed-Muller codes. There are many reasons for studying Reed-Muller codes in specific. We have accounted for some of them, though RM codes usefulness ranges over many fields. These codes are included in a basic knowledge of coding and they are therefore often used in educational purposes and as a general introduction to coding theory. Additionally, RM codes are practical codes with many advantageous properties and, as a result, they are the origin of several other codes. To highlight the modern use of linear error-correcting block codes, we can, for example, look to the Polar codes which are applied in today’s 5G technology. 2
Chapter 2 Linear Codes 2.1 The Importance of Linear Codes The scientific field of coding theory has proved useful, both historically and in our society today. Computer technology and communication involves a great deal of coding theory. In this chapter we will, more specifically, focus on linear block codes. The idea is to present examples of linear codes, such as repetition code and Hamming code, and their definitions. For a description of the linear Reed- Muller codes, the reader can turn to Chapter 3. In the introduction we gave an example of a telegraph wire from London to Manchester. If this wire were a binary symmetric channel of communication the telegraphist would be able to send 0’s or 1’s. Let us assume that a hundred symbols have bent sent from London, out of which 10 is received erroneous in Manchester. This means that the error probability = 1/10. In other words, there is a 10 % chance that a 0 will be received as a 1, or a 1 as a 0. At the same time, there is a 90 % chance that each symbol is received correctly. The purpose of codes is to correct errors and, as a result, create reliable message transmissions over noisy channels [4]. In this thesis we will describe block codes. Block codes are encoded information that can be divided into blocks of symbols. Every block of code can then be decoded independently of any other block. Each block is a codeword and together the codewords form a block code [3]. It generally applies for a block code that information is encoded using an alphabet with different symbols. Let be the set of all ( 1 , 2 , … , ) where 1 , 2 , … , ∈ . The information we wish to encode consists of a set of 3
messages, for example, and signifies the set of all codewords. is then a subset to . A block code can therefore be regarded as a function: → ⊆ . Consequently, an error-correcting code is in general a subset of a set with the alphabet Q. When the alphabet consists of two different symbols, 0’s and 1’s, it results in the binary codes which are the main field of this study. In other words, a linear code is a linear subspace of the vector space . is a finite field with symbols. The code has a total of different codewords and this is called the size of the code. The dimension of a code is the number of basis codewords which are represented in the rows of the generator matrix [1]. To safely transmit a message and protect it against errors, we choose to encode it into a codeword. A codeword consists of n symbols which is more than the original message with k symbols, so > . The message symbols form the first part of the codeword: 1 = 1 , 2 = 2 , … , = . The rest of the codeword has − check symbols: +1 , … , . The check symbols are chosen using a specific method. The codewords must satisfy: 1 2 ( ⋮ ) = = 0 ( ℎ 2). H is called the parity check matrix of the code. It is a ( − ) × matrix. Additionally, = [ | − ], where A is a ( − ) × matrix of 0’s and 1’s and − is the unit matrix ( − ) × ( − ) [4]. Definition 1. A linear code with a parity check matrix, H, consists of all vectors , where: = 0 ( 2). 4
Example 1. A [6,3, 3] code has the parity check matrix: 1 0 1 1 0 0 = [1 1 0 0 1 0] 1 1 1 0 0 1 In other words, = 6, = 3 and = 3. In this case: 1 0 1 = [1 1 0] and the unit matrix is 3 . 1 1 1 As a result, the message 1 2 3 is encoded into the codeword: = 1 2 3 4 5 6 . The check symbols are 4 5 6 . They are chosen so that the codeword satisfy the parity check equations: 1 + 3 + 4 = 0, 1 + 2 + 5 = 0, 1 + 2 + 3 + 6 = 0. If the message is = 110 then 1 = 1, 2 = 1, 3 = 0 and the check symbols are: 4 = −1 = 1, 5 = −1 − 1 = 1 + 1 = 2 = 0, 6 = −1 − 1 = 2 = 0. So, the codeword is = 110100. Each of 1 2 3 is either 0 or 1. Consequently, there are 23 = 8 codewords. We present them here: 000000 011110 110100 001101 100111 111001 010011 101010 This code is a single-error-correcting code, as we will show later in this chapter. 5
2.2 Parameters The parameters for linear codes are specified by , and . As we previously have described is the length of the codewords. signifies the number of message symbols and it is also called the dimension of the code. denotes the minimum distance of the code and it is often defined as the minimum weight of any nonzero codeword. As a result, is a [ , , ] code. A linear code that begins with message bits and ends with − check bits is called a systematic code. It signifies that the message symbols, the input data, are included in the encoded output. Furthermore, the rate = ⁄ can be described as the efficiency of a code. In coding theory, a code with a low rate, close to 0, is recognized as a strong code since it contains a high amount of check bits [5]. In Example 2. we present a code with the codewords 0000, 0101, 1011 and 1110. The reader can see that the minimum weight is 2, = 2, and = 4. This code has two message symbols and therefore it is a [4,2, 2] code. Example 2. List the codewords for = [ ][4]. = 4, = 2. 22 = 4 codewords. 1 + 3 = 0 3 = 1 { { = + 1 + 2 + 4 = 0 4 1 2 We have 2 message symbols and then 2 check symbols. The codewords are: 00|00 01|01 10|11 11|10 Repeat for = [ ]. = 4, = 2. 22 = 4 codewords. 2 + 3 + 4 = 0 = 2 + 1 + 2 { { 3 1 + 2 + 4 = 0 4 = 1 + 2 The codewords are: 00|00 01|01 10|11 11|10 Both codes are of the same length, and they consist of four equivalent codewords. Check symbol 4 is from the same parity check equation in both codes while the parity check equation that includes 3 differs between the 6
codes. However, in this case the parity check equation adds up to the same codewords for both linear codes. In other words, these codes are the same code. It is only presented here in different forms. 2.3 Generator Matrix A generator matrix of a code can be obtained from the parity check matrix. = , = [ |− ]. Example 3. We reuse the [6,3, 3] code from Example 1. 1 0 1 1 0 0 1 0 0 1 1 1 1 = [1 1 0 0 1 0], then = [0 1 0 0 1 1] 2 1 1 1 0 0 1 0 0 1 1 0 1 3 If = 110, then = = 1 + 2 = 100111 + 010011 = 110100. 2.4 Various Linear Codes There are numerous forms of linear codes. In this part of the chapter, we will account for some linear codes with specific properties. We may add that it applies for linear codes in general that the difference, between any two codewords, is also a codeword [6]. The simplest type of linear code is the repetition code. Example 4. If = 1, = 4 and the parity check matrix 1 1 0 0 = [1 0 1 0], then the parity check equations are: 1 0 0 1 1 + 2 = 0, 1 + 3 = 0, 1 + 4 = 0 and 1 = 2 = 3 = 4 = . This means that we have one message symbol which is repeated 4 times. The codewords are 0000 and 1111. The code is therefore called a repetition code. As a matter of fact, Reed-Muller codes (0, ) are other examples of repetition codes. In this case the block length is = 2 and the minimum distance of the (0, ) code is . 7
Furthermore, an even weight code has an even number of 1’s for all possible codewords. In other words, the Hamming weight of every codeword is even. The repetition code in the previous example is also an even weight code. Example 5. List the codewords for = [ ]. If = 00, then = 0000, = 01 → = = 2 = 0101, = 10 → = = 1 = 1010, = 11 → = = 1 + 2 = 1010 + 0101 = 1111. We have 2 message bits followed by 2 check bits. The four codewords are 0000, 0101, 1010 and 1111. It is obvious that this is an even weight code. We move on to a description of dual codes. The dual code ⊥ is the set of all parity checks on : ⊥ = { | ∙ = 0 ∈ }, ⊥ is an [ , − ] code [4]. Example 6. Let be defined by the parity check matrix = [ ] and describe ⊥ . We know that if has and , then ⊥ has generator matrix = and parity check matrix = [4]. Therefore: 1 0 0 0 1 1 ⊥ = = [0 1 0 1 0 1] 0 0 1 1 1 0 ⊥ is a [6, 3] code. 8
2.5 Hamming Code A Hamming code, Hr, is a single-error-correcting code where is the number of rows of the parity check matrix. We know that the sum of two codewords also form a codeword which means that the code is a linear code. A Hamming code’s set of 2 codewords creates a linear subspace of dimension in the vector space of dimension [5]. Definition 2. The parity check matrix of a binary Hamming code, Hr, is an × matrix whose 2 − 1 columns consist of all nonzero vectors of length . A Hamming code is an [ = 2 − 1, = 2 − 1 − , = 3] code. Example 7. One form of the parity check matrix for the Hamming [15, 11, 3] code, H4, is: 000000011111111 = [000111100001111]. 011001100110011 101010101010101 We will now continue to describe how a first-order Reed-Muller code can be created by extending the dual of a Hamming code. Definition 3. The dual of the Hamming code, Hr, is the binary simplex code Sr. It is a [2 − 1, ] code [4]. Example 8. Show that to obtain a [ , , ] code, in other words a R(1, 3) code, we can extend S3. For H3: 0001111 0111100 = [0110011] and the standard form ′ = [1011010], 1010101 1101001 1000111 then = [0101011]. 0011101 9
For S3: 3 = 3 = . S3 has the parity check matrix 3 . The extended dual of the Hamming code H3 is: 11111111 ̂3 = [10001110]. 01010110 00111010 This forms a clock circuit, described in Chapter 3, which is an encoder for ̂3 . There are R(1, 3). A message is encoded into the codeword : = 16 possible codewords for a message = 0 1 2 3 where = 0 or 1. 2.6 Maximum Likelihood Decoding Maximum likelihood decoding makes use of the fact that a low-weight error vector is more likely to occur than an error vector of higher weight. If = 4, then (1 − )4 > (1 − )3 > 2 (1 − )2 > ⋯ In concrete terms, the decoder receives the vector and decodes it as the closest corresponding codeword. It is achieved by choosing the codeword which is nearest in Hamming distance. For example, if = 110101 and we have the [6,3, 3] code from Example 1. then (110101, 110100) = 1 since they only differ in one place. The decoder would therefore detect the error vector = 000001 which also has the least weight. CHANNEL MESSAGE ENCODER DECODER USER SOURCE MESSAGE CODEWORD RECEIVED ESTIMATE = 1 ⋯ = 1 ⋯ VECTOR OF MESSAGE = + ERROR VECTOR = 1 ⋯ Fig. 1. The general communication system [4]. 10
Example 9. To show what the decoder does, use a standard array (with syndrome) to correct the received vectors = and = for a [ , , ] code. The syndrome of is: = 1 1 0 1 1 1 0 0 1 1 1 = ∙ 1 = (1 0 1 0 1 0) = (0), = ∙ 2 = (1). 1 1 1 0 0 0 1 0 1 0 (0) Fig. 2. The standard array of the [6,3, 3] code. We have 8 codewords and 8 cosets. There is a total of 26 = 8×8 =64 vectors in the standard array [4]. Syndrome (obtained by multiplying with any vector of each row): 1 2 3 4 5 6 7 8 0 0 1 1 1 0 0 1 (0 1 0 1 0 1 0 1) 0 1 1 0 0 0 1 1 The syndrome for is found in row 5 which has the coset leader 000100. Furthermore, the syndrome for is found in row 8 which has the coset leader 100100. The received vectors are then corrected to the original codeword: ̂1 = 1 + ̂1 = 111100 + 000100 = 111000 ̂2 = 2 + ̂2 = 111111 + 100100 = 011011. 1 Theorem 1. A code can correct [2 ( − 1)] errors. If the minimum distance 1 is even, then the code can simultaneously correct 2 ( − 2) errors and detect ∕ 2 errors [4]. 11
Chapter 3 Reed-Muller Codes 3.1 Introduction to Reed-Muller Codes Reed-Muller codes were invented in 1954 by the American mathematician David E. Muller and so RM codes are one of the oldest families of codes. The first efficient decoding algorithm was created by Irving S. Reed. RM codes are linear block codes and initially they belonged to the class of binary codes. It is this traditional form of RM codes that we will study in this chapter. Characteristic for RM codes are their advantageous properties for coding and decoding. They are useful in a wide range of functions, especially in wireless and deep-space communication. Definition 4. The ℎ order Reed-Muller Code R(r, m) has the positive integers and m for which 0 ≤ r ≤ m. The length is = 2 and the minimum distance is = 2 − . The RM code consists of the vectors f where f( 1, ……, ). This function is a Boolean function since it only includes the values 0 and 1. It forms a polynomial of the maximum degree [4]. An example of this is the first-order RM code of length 16 which is a polynomial of the first degree: 0 + 1 1 + 2 2, + 3 3 + 4 4 , = 0 or 1. 3.2 First-Order RM Codes First-order RM codes have the advantage of working over particularly noisy channels. They can correct many errors and is notably easy to encode and decode. Consequently, first-order RM codes have been found useful in deep-space data transmission where they, for example, have been applied for transmitting pictures from Mars [4]. 1213
Definition 5. The 1 ℎ order Reed-Muller code R(1, m) has the positive integer m and r = 1. It can be described as a [2 , + 1, 2 −1 ] code and it is defined for all integers m ≥ 1 [7]. Due to the low rate of first-order RM codes, they have the ability to correct numerous errors. For this reason, they have proved to be suitable for especially noisy channels. In the case of R(1, 1) we find that the codewords are (00, 01, 10, 11). If m > 1 then R(1, m) = {( , ), ( , + 1): ∈ (1, − 1)}. This is an example of the | | + | which declares the method of forming a new code consisting of two previous codes. We may therefore have a code 1 [ , 1 , 1 ] and another code 2 [ , 2 , 2 ]. As we can see these codes are of the same length. Together they form a new code 3 which consists of all the vectors | | + | where ∈ 1 and ∈ 2 . As a result, the new code is of double length 2 [4]. Theorem 2. (1, ) is a [2 , + 1, 2 −1 ] code where > 0. The code has minimum distance (Hamming weight) 2 −1 since every codeword except 0 and 1 has weight 2 −1. Proof. We will prove this theorem by induction. Base case: We have previously described that it is obvious that (1,1) is a [2,2, 1] code. The theorem holds for (1,1). Inductive step: We assume that (1, − 1) is a [2 −1 , , 2 −2 ] code. (1, ) can therefore be created using the | | + | . Let 1 = (1, − 1) and 2 = { , } = (0, − 1). Consequently, (1, ) is a [2(2 −1 ), + 1, 2(2 −2 )] code, in other words, a [2 , + 1, 2 −1 ] code. Furthermore, we assumed that (1, − 1) had weight 2 −2. Since a codeword in (1, ) is constructed as ( , + ), ( , ) has weight 2(2 −2 ) = 2 −1 . Additionally, we study the other codewords ( , + ): 13
If = , then + is . We see that half of each codeword consists of 1’s. Therefore, ( , + ) = 2 −1 , If = , then + is . Again, half of each codeword is 1’s and ( , + ) = 2 −1 . For every other in (1, − 1): ( ) = 2 −2, which means that half of each vector consists of 1’s. The same applies to + and so ( , + ) = 2(2 −2 ) = 2 −1 [7]. Q. E. D Theorem 3. ( + 1, + 1) = {| | + |: ∈ ( + 1, ), ∈ ( , )} [4]. 14
3.3 Encoding In this part of the chapter, we will describe some of the methods for encoding first-order RM codes. In the following examples, the reader will find first-order RM codes of length 8 and 16. When it comes to the first- order RM code of length 16 a generator matrix, afterwards included in the first encoding method, is presented. Later, we will describe the clock circuit which makes encoding of first-order RM codes exceedingly simple [4]. Example 10. R(1, 3) According to the previous definition the first order RM code of length 8 is a polynomial of the first degree: 0 + 1 1 + 2 2, + 3 3 , = 0 or 1. In this example = 8 = 2 . Hence the positive integer = 3 and R(1, 3). R(1, 3) = {( , ), ( , + 1): ∈ (1, 2)}, and so, the 8 × 2 = 16 codewords are: 00000000 11111111 0 0 0 0 1 1 1 1 + 1 1 1 1 0 0 0 0 0 0 1 1 0 0 1 1 + 1 1 0 0 1 1 0 0 0 1 0 1 0 1 0 1 + 1 0 1 0 1 0 1 0 + 0 0 1 1 1 1 0 0 + + 1 1 0 0 0 0 1 1 + 0 1 0 1 1 0 1 0 + + 1 0 1 0 0 1 0 1 + 0 1 1 0 0 1 1 0 + + 1 0 0 1 1 0 0 1 + + 0 1 1 0 1 0 0 1 + + + 1 0 0 1 0 1 1 0 Fig. 3. First-Order RM code of length 8 [4]. The weight of every codeword except 0 and 1 is 2 −1 [7]. In this case the weight is 22 = 4. Furthermore, = 1 + ( ) + ( ) + ⋯ + ( ) where k 1 2 is the dimension of the code. When the length of the first-order RM code is 3 8 then = 1 + ( ) = 4. As a result, the dimension of the code is 4 which 1 also indicates the number of basic vectors. 15
Example 11. R(1, 4) The first order RM code of length 16 is a polynomial of the first degree: 0 + 1 1 + 2 2 + 3 3 + 4 4 , = 0 or 1. = 16 = 24 and R(1, 4), The weight of every codeword, except 0 and 1, is 24−1 = 8, 4 = 1 + ( ) = 5. 1 The generator matrix for first-order RM codes of length 16 consists of 5 basic vectors. Basic vectors are always linearly independent. As shown in Fig. 13.2 [4] the fifth dimension signifies the first five rows in the generator matrix for all R(r, 4) up to the 4th order RM code. The generator matrix for first-order RM codes of length 16 consists of the five basic vectors: 1111111111111111 0000000011111111 0000111100001111 0011001100110011 0101010101010101 Fig. 4. Basic vectors for first-order RM codes of length 16 [4]. We will now apply the generator matrix from Example 11. R(1, 4) in order to show the reader how encoding using a generator matrix works. We use the generator matrix, G, consisting of the five basic vectors listed above, and the message symbols: = 0 4 3 2 1 , = 0 or 1. Together they are encoded into the codeword x: 0 1111111111111111 4 0000000011111111 = G = 3 (0000111100001111) 2 0011001100110011 ( 1 ) 0101010101010101 = 0 + 4 4 + 3 3 + 2 2 + 1 1 (= 0 1 ⋯ 15 , ) 16
Encoding using a generator matrix can be applied for all RM codes, R(r, m), 0 ≤ r ≤ m. The minimum distance, d = 2 − , and the code can correct 1 ( − 1) errors. And so, R(1, 4) can correct 3 errors while R(2, 4) is a 2 single-error-correcting code. In part 2.4 of the chapter, the reader will find information about decoding methods such as the Reed Decoding Algorithm which can be used to decode these RM codes. In general, RM codes have proved easy to encode and decode. Nevertheless, when it comes to first-order RM codes, encoding becomes exceedingly simple. A circuit can handle the process of encoding a message into a codeword. An example of an encoder for R(1, 4) is presented here: Fig. 5. Encoder (Clock circuit) for R(1, 4). The procedure is similar to encoding using generator matrix. For R(1, 4), an [16, 5, 8 ] code, a message including 5 message symbols is encoded into the codeword ( 0 1 ⋯ 15 ). The generator matrix, consisting of 5 basic vectors, and the message ( G) equals the codeword ( ). The clock circuit in Fig.5 accomplishes this by counting from 0 to 15 through 1 2 3 4 = 0000, 0001, 0010, 0011, 0100, 0101, … , 1111, 0000, 0001, … As a result, the circuit forms 0 + 1 1 + 2 2 + 3 3 + 4 4 which is the codeword ( 0 1 ⋯ 15 ). 17
3.4 Decoding Reed-Muller codes have the advantage of being easier to decode than many other codes. RM codes belong to the class of geometrical codes and can therefore be decoded by majority logic. Consequently, the following examples of decoding methods and algorithms are based on majority logic decoding [4]. The Reed Decoding Algorithm works for all RM codes. Here we present an example of decoding R(1, 4) with this algorithm. In Fig. 4 we can see that, without any errors: 1 = 0 + 1 = 2 + 3 ∙ ∙ ∙ = 14 + 15 , 2 = 0 + 2 = ∙ ∙ ∙. We observe that there are 8 votes for every . It is clear, as we stated in Chapter 2.3, that R(1, 4) can correct up to 3 errors by majority logic. If R(2, 4), then the 6 message symbols, 12 to 34 , each have 4 votes and, as a result, the code can only correct one error by majority logic. We now continue to determine 0 : ′ = − 4 4 − ⋯ − 1 1 = 0 + , 0 = 0 or 1 based on the number of 1’s in ′ . Example 12. Assume that we have a [ , , ] code, in other words ( , ), and that we receive 10101101. Decode the received message using Reed’s Algorithm. 1 = 1 = 1 = 0 = 1, by majority logic 1 = 1 2 = 0 = 0 = 1 = 0, so 2 = 0 3 = 0 = 1 = 1 = 1, so 3 = 1 ′ = 10101101 − 00001111 − 00000000 − 01010101 = 11110111 0 = 1 (modulo 2). The correct message is = 1101 and the codeword is = + = 10101101 + 00001000 = 10100101. We can see that this is an example of a nonsystematic code [7]. 18
Definition 6. The input consists of a function : 2 → 2 such that there 2 − exists a polynomial of degree with ( , ) < . The output of 2 Reed’s Algorithm is the polynomial [2]. Theorem 4. In the case of no errors, = ∑ ∈ , = 1, … , 2 − [4], where indicates a string of r symbols. 1 If no more than ( 2 − − 1) errors occur, then the Reed Decoding 2 Algorithm can correct the same number of errors. For example, if no more than 3 errors occur in R(1, 4) then the algorithm can correct them. The theorem consequently implies that all can be recovered correctly if no 1 more than 2 ( 2 − − 1) errors occur. If r > 1 then all can be recovered and subsequently the rest of the ’s by majority logic decoding [4]. 19
Chapter 4 Conclusions In this thesis we have studied various forms of error-correcting codes, especially first-order Reed-Muller codes. We may conclude that Reed- Muller codes have many advantageous mathematical properties. The clock circuit shows how easily a message is encoded into a first-order RM code. Furthermore, the Reed Decoding Algorithm is an example of how these codes can be decoded. However, there exists even more ways of encoding and decoding RM codes. We have presented a selection of all the possible methods in this thesis. For example, a discovery of R.R. Green resulted in another decoder for first-order RM codes, namely the Green machine, which is a decoding circuit. It is apparent that first-order RM codes is especially simple to encode and decode, but we have also described their efficiency of correcting errors. The reason why the Reed-Muller code (1,5) was used by NASA to transmit pictures from Mars is, above all, its ability to correct numerous errors. For example, if no more than 7 errors occur in R(1, 5) then the Reed Decoding Algorithm can correct them. For a code of length = 32 it has a remarkably capacity of error-correction. This means that R(1, 5) often can withstand very noisy channels and consequently it was well suited in the Mariner 9 spacecraft to transmit pictures from Mars. Furthermore, there is one specific question with much relevance to this study, namely: What defines a good error-correcting code? In coding theory, codes that contain many possible codewords and can detect and correct numerous errors, is usually of great interest. Nevertheless, the answer to our question is much more complex than it may seem. As a matter of fact, different forms of ECC can be useful in different situations. For example, we have learned that first-order Reed-Muller codes are suited for very noisy channels. This means that if a relatively high error probability is expected, 20
then Reed-Muller codes can be found useful. In other situations, and for other applications, RM codes are not employed. For instance, in 1979 the Reed-Muller code (1,5) was replaced by the Golay (24,12,8) code. NASA’s reason for doing this was to enable transmission of colour pictures which required more data than the previous black and white pictures from Mars. This is an example of how an ECC can be ideal in one situation and, at the same time, not be suited for another situation with different requirements. In conclusion, we may reflect upon the importance of Reed-Muller codes in the construction of many other codes. For instance, RM codes generalize the Reed-Solomon codes and the Walsh-Hadamard code. In this thesis we have specifically focused on first-order RM codes. In addition to their favorable mathematical properties, they form a great introduction to the theory of error-correcting codes. And so, we hope that the reader has acquired an understanding for coding theory in general, and Reed-Muller codes in specific. As a result of modern-day communication technologies, encoding and decoding of messages takes place all around us. In fact, every data transmission involves some error-detecting/correcting code to protect our messages against errors. 21
Bibliography [1] Carlström, K., Davidsson F., Jonsson, V. and Mohamadi, A. Felkorrigerande koder. Bachelor Degree Project. Gothenburg: Gothenburg University, Department of Mathematical Sciences, 2019. [2] Guruswami, V. and Raghavendra, P. Error-Correcting Codes. Seattle: University of Washington, 2006. [3] Lint, J. H. Introduction to Coding Theory. Berlin, New York: Springer Publishers, 1992. [4] MacWilliams, F.J. and Sloane, N.J.A. The Theory of Error Correcting Codes. Amsterdam: North-Holland, 1983. [5] Thomas, J.A. and Cover, T.M. Elements of Information Theory. New Jersey: John Wiley & Sons, 2012. [6] Thomlinson, M., Ahmed, M., Ambroze M.A., Jung Tjhai, C. and Jibril, M. Error-Correction Coding and Decoding. Switzerland: Springer International Publishing, 2017. [7] University of Colorado Denver. Reed-Muller Codes. University of Colorado Denver. Retrieved from http://www- math.ucdenver.edu/~wcherowi/courses/m7823/reedmuller.pdf (2021-03- 25). 22
You can also read