Efficient m-ary balanced codes which are invariant under symbol permutation
A symbol permutation invariant balanced (SPI-balanced) code over the alphabet ZZ(m) = {0, 1,..., m - 1} is a block code over ZZm such that each alphabet symbol occurs as many times as any other symbol in every codeword. For this reason, every permutation among the symbols of the alphabet changes an SPI-balanced code into an SPI-balanced code. This means that SPI-balanced words are "the most balanced" among all possible m-ary balanced word types and this property makes them very attractive from the application perspective. In particular, they can be used to achieve m-ary DC-free communication, to detect/correct asymmetric/unidirectional errors on the m-ary asymmetric/unidirectional channel, to achieve delay-insensitive communication, to maintain data integrity in digital optical disks, and so on. This paper gives some efficient methods to convert ( encode) m-ary information sequences into m-ary SPI-balanced codes whose redundancy is equal to roughly double the minimum possible redundancy r(min). It is proven that r(min) similar or equal to vertical bar(m - 1)/2] log(m)n - (1/2) [1/log(2 pi)m)m-(1/log(2 pi)m) for any code which converts k information digits into an SPI-balanced code of length n = k + r. For example, the first method given in the paper encodes k information digits into an SPI-balanced code of length n = k + r, with r = (m - 1) log(m) k + O(m log(m) log(m) k). A second method is a recursive method, which uses the first as base code and encodes k digits into an SPI-balanced code of length n = k + r, with r similar or equal to (m - 1) log(m) n - log(m) [(m - 1)!].
balanced codes dc-free communication delay-insensitive communication coding and information theory error control codes constant weight codes digital communication m-ary communication line codes