A general method for the development of constrained codes
Boris Ryabko
TL;DR
The paper presents a general, polynomial-time framework for constructing constrained codes that covers local and global constraints as well as their combinations, using Cover's enumerative coding. By computing the continuation counts N(x1...xk) on the fly via dynamic programming, it avoids bespoke combinatorial formulas and applies to BC, LRS, RLL, and energy-constrained codes, as well as their intersections. The authors unify these constraints under the set T_n(δ1,δ2,α,β) and related formulations, providing DP-based methods with quantifiable time and memory complexity. This approach enables flexible, scalable constrained-code design for modern storage and transmission systems without requiring extensive combinatorial derivations.
Abstract
Nowadays there are several classes of constrained codes intended for different applications. The following two large classes can be distinguished. The first class contains codes with local constraints; for example, the source data must be encoded by binary sequences containing no sub-words 00 and 111. The second class contains codes with global constraints; for example, the code-words must be binary sequences of certain even length with half zeros and half ones. It is important to note that often the necessary codes must fulfill some requirements of both classes. In this paper we propose a general polynomial complexity method for constructing codes for both classes, as well as for combinations thereof. The proposed method uses the enumerative Cover's code, but the main difference between known applications of this code is that the known algorithms require the use of combinatorial formulae when applied, whereas the proposed method calculates all parameters on-the-fly using a polynomial complexity algorithm.
