Safekipedia
Coding theoryError detection and correction

Reed–Solomon error correction

Adapted from Wikipedia · Discoverer experience

Diagram showing a deep-space concatenated coding system used in space communication.

Reed–Solomon codes are a special kind of error-correcting code used to keep information safe during storage and transmission. They were created by Irving S. Reed and Gustave Solomon in 1960 and have become very important in many everyday technologies. You might use them without even knowing it when you listen to music on a CD, watch a movie on a DVD or Blu-ray disc, scan a QR code, or connect to the internet through DSL or WiMAX.

These codes work by adding extra symbols, called check symbols, to blocks of data. This helps detect and fix mistakes that can happen when data is copied, sent, or stored. For example, if a few pieces of information get mixed up, Reed–Solomon codes can often figure out what the correct information should be. This makes sure that important data, like the music on your MiniDisc or the data sent in satellite communications, arrives correctly even if some errors occur.

Reed–Solomon codes are especially good at handling many small mistakes that happen close together, which are called burst errors. They can also correct problems when the exact places where mistakes happen are known. Because of their usefulness, these codes are used in many systems, from RAID 6 storage to DVB and ATSC broadcasting, helping keep our digital world running smoothly.

History

Reed–Solomon codes were developed in 1960 by Irving S. Reed and Gustave Solomon. These codes help fix mistakes in data, making sure information stays accurate even if some parts get lost or mixed up.

Since then, Reed–Solomon codes have been used in many technologies, like compact discs and digital storage devices. They were also used in space missions, such as the Voyager program, to protect important data during its journey.

Applications

Deep-space concatenated coding system. Notation: RS(255, 223) + CC ("constraint length" = 7, code rate = 1/2).

Reed–Solomon coding is very widely used in mass storage systems to correct errors caused by scratches or defects on media. It is a key part of the compact disc and is also used in DAT and DVD. This helps ensure that music and data can still be read even if the surface is damaged.

Reed–Solomon error correction is also used in two-dimensional bar codes such as PDF-417, MaxiCode, Datamatrix, QR Code, Aztec Code and Han Xin code. This allows bar codes to still be read even if part of them is damaged or obscured. It is also used in some data transmission systems like xDSL and in space communications, such as the images sent back by the Voyager program.

Channel coding schemes used by NASA missions
YearsCodeMission(s)
1958–presentUncodedExplorer, Mariner, many others
1968–1978convolutional codes (CC) (25, 1/2)Pioneer, Venus
1969–1975Reed–Muller code (32, 6)Mariner, Viking
1977–presentBinary Golay codeVoyager
1977–presentRS(255, 223) + CC(7, 1/2)Voyager, Galileo, many others
1989–2003RS(255, 223) + CC(7, 1/3)Voyager
1989–2003RS(255, 223) + CC(14, 1/4)Galileo
1996–presentRS + CC (15, 1/6)Cassini, Mars Pathfinder, others
2004–presentTurbo codesMessenger, Stereo, MRO, MSL, others
est. 2009LDPC codesConstellation, M2020, MAVEN

Constructions (encoding)

Reed–Solomon codes are a type of error-correcting code first created in 1960. They are used in many everyday technologies like CDs, DVDs, and QR codes to fix small errors in data.

These codes work by treating data as a set of symbols. The original idea was to treat the data as parts of a math equation called a polynomial. By evaluating this polynomial at different points, a codeword is created. This method helps in detecting and correcting errors that might occur during data storage or transmission.

nSn+1dCBbm
0732732197 x + 117321
1637846173 x + 117322
2762412634 x2 + 173 x + 1173 x + 14121
3925576329 x2 + 821 x + 1173 x + 14122
iRiAi
−1001 x4 + 000 x3 + 000 x2 + 000 x + 000000
0925 x3 + 762 x2 + 637 x + 732001
1683 x2 + 676 x + 024697 x + 396
2673 x + 596608 x2 + 704 x + 544

Reed Solomon original view decoders

The decoders in this section treat a codeword as a sequence of values from a polynomial. Both the encoder and decoder use the same set of fixed values. The decoder works to recover the original polynomial from the received message.

A theoretical method to correct errors involves finding the most likely polynomial that matches the received values. However, this method is often too slow because it requires checking many possibilities.

Later developments created more practical decoders. One example from 1986 uses a method that works with manageable complexity. More recent improvements continue to enhance how errors are corrected efficiently in data transmission.

iRiAi
-1001 z4 + 000 z3 + 000 z2 + 000 z + 000000
0785 z3 + 213 z2 + 666 z + 055001
1658 z2 + 858 z + 323200 z + 141
2294 z + 709905 z2 + 020 z + 925

Images

Graph showing how well a special math tool called Reed-Solomon code can fix mistakes when sending information.

This article is a child-friendly adaptation of the Wikipedia article on Reed–Solomon error correction, available under CC BY-SA 4.0.

Images from Wikimedia Commons. Tap any image to view credits and license.