Constant-weight code

Constant-weight code

In coding theory, a constant-weight code, also called an m of n code, is an error detection and correction code where all codewords share the same Hamming weight. The theory is closely connected to that of designs (such as t-designs and Steiner systems). Most of the work on this very vital field of discrete mathematics is concerned with binary constant-weight codes.

Binary constant-weight codes have several applications, including frequency hopping in GSM networks.[1] Most barcodes use a binary constant-weight code to simplify automatically setting the threshold. In addition to use as error correction codes, the large space between code words can also be used in the design of asynchronous circuits such as delay insensitive circuits.

Constant-weight codes, like Berger codes, can detect all unidirectional errors.

Contents

A(n,d,w)

The central problem regarding constant-weight codes is the following: what is the maximum number of codewords in a binary constant-weight code with length n, Hamming distance d, and weight w? This number is called A(n,d,w).

Apart from some trivial observations, it is generally impossible to compute these numbers in a straightforward way. Upper bounds are given by several important theorems such as the first and second Johnson bounds,[2] and better upper bounds can sometimes be found in other ways. Lower bounds are most often found by exhibiting specific codes, either with use of a variety of methods from discrete mathematics, or through heavy computer searching. A large table of such record-breaking codes was published in 1990,[3] and an extension to longer codes (but only for those values of d and w which are relevant for the GSM application) was published in 2006.[1]

1 of N codes

A special case of constant weight codes are the one-of-N codes, that encode log2N bits in a code-word of N bits. The one-of-two code uses the code words 01 and 10 to encode the bits '0' and '1'. a one-of-four code can use the words 0001, 0010, 0100, 1000 in order to encode two bits 00, 01, 10, and 11. An example is dual rail encoding, and chain link [4] used in delay insensitive circuits.

m of n codes

An m of n code is a separable error detection code with a code word length of n bits, where each code word contains exactly m instances of a "one." A single bit error will cause the code word to have either m + 1 or m – 1 "ones." An example m-of-n code is the 2 of 5 code used by the United States Postal Service.

The simplest implementation is to append a string of ones to the original data until it contains m ones, then append zeros to create a code of length n.

Example:

3 of 6 code
Original 3 data bits Appended bits
000 111
001 110
010 110
011 100
100 110
101 100
110 100
111 000

References

  1. ^ a b D. H. Smith, L. A. Hughes and S. Perkins (2006). "A New Table of Constant Weight Codes of Length Greater than 28". The Electronic Journal of Combinatorics 13.
  2. ^ See pp. 526–527 of F. J. MacWilliams and N. J. A. Sloane (1979). The Theory of Error-Correcting Codes. Amsterdam: North-Holland.
  3. ^ A. E. Brouwer, James B. Shearer, N. J. A. Sloane and Warren D. Smith (1990). "A New Table of Constant Weight Codes". IEEE Transactions of Information Theory 36.
  4. ^ "System-on-Chip Design using Self-timed Networks-on-Chip". http://www.silistix.com/members/privatePapers/designwave2.pdf. 

External links


Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Look at other dictionaries:

  • Line code — An example of coding a binary signal using rectangular pulse amplitude modulation with polar non return to zero code …   Wikipedia

  • Paired disparity code — In telecommunication, a paired disparity code is a line code in which some or all of the characters are represented by two sets of digits of opposite disparity that are used in sequence so as to minimize the total disparity of a longer sequence… …   Wikipedia

  • Code division multiple access — This article is about a channel access method. For the mobile phone technology referred to as CDMA, see IS 95 and CDMA2000. Multiplex techniques Circuit mode (constant bandwidth) TDM · FDM  …   Wikipedia

  • Cyclic code — In coding theory, cyclic codes are linear block error correcting codes that have convenient algebraic structures for efficient error detection and correction. Contents 1 Definition 2 Algebraic structure 3 Examples …   Wikipedia

  • Universal Product Code — The Universal Product Code (UPC) is a barcode symbology (i.e., a specific type of barcode), that is widely used in the United States and Canada for tracking trade items in stores. Current code The UPC encodes 12 decimal digits as SLLLLLLMRRRRRRE …   Wikipedia

  • G-code — G Code, or preparatory code or function, are functions in the Numerical control programming language. The G codes are the codes that position the tool and do the actual work, as opposed to M codes, that manages the machine; T for tool related… …   Wikipedia

  • Dual code — For players of both rugby codes, see List of dual code rugby internationals. In coding theory, the dual code of a linear code is the linear code defined by where is a scalar product. In linear algebra terms, the dual code is the annihi …   Wikipedia

  • Linear code — In mathematics and information theory, a linear code is an important type of block code used in error correction and detection schemes. Linear codes allow for more efficient encoding and decoding algorithms than other codes (cf. syndrome… …   Wikipedia

  • Coding theory approaches to nucleic acid design — DNA code construction refers to the application of coding theory to the design of nucleic acid systems for the field of DNA–based computation. Contents 1 Introduction 2 Definitions 2.1 Property U 2 …   Wikipedia

  • Forward error correction — In telecommunication, information theory, and coding theory, forward error correction (FEC) or channel coding[1] is a technique used for controlling errors in data transmission over unreliable or noisy communication channels. The central idea is… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”