The ever-growing need for cheaper, faster, and more reliable communication and storage systems has forced many researchers to seek means to attain the ultimate limits on reliable information transmission and storage. Low-density parity-check (LDPC) codes are currently the most promising coding technique to achieve the channel capacities (or Shannon limits) for a wide range of channels. Discovered by Gallager in 1962 [40], these codes were rediscovered in the late 1990s [83, 81]. Ever since their rediscovery, a great deal of research effort has been expended in design, construction, encoding, decoding algorithms, structural analysis, performance analysis, generalizations, and applications of these remarkable codes. Many LDPC codes have been adopted as standard codes for various current and next-generation communication systems, such as wireless, optical, satellite, space, digital video broadcast (DVB), multi-media broadcast (MMB) systems, and others. Applications to high-density data storage systems, such as flash memories, are now being seriously investigated. In fact, they appear in some recent data storage products. This rapid dominance of LDPC codes in applications is due to their capacity-approaching performance, which can be achieved with practically implementable iterative decoding algorithms. More applications of these codes are expected to come and their future is promising. However, further research is needed to better understand the structural properties and performance characteristics of these codes.
Most methods to construct LDPC codes can be classified into two general categories: graph-theoretic-based and algebraic-based (or matrix-theoretic-based) methods. The best-known graph-theoretic-based construction methods are the progressive edge-growth (PEG) [43, 44] and the protograph (PTG) based methods [105]. The algebraic-based methods for constructing LDPC codes were first introduced in 2000 [56, 55, 38, 57]. Since then, various algebraic methods for constructing LDPC codes, binary and nonbinary, have been developed using mathematical tools such as finite geometries, finite fields, and combinatorial designs [58, 76, 110, 109, 35, 107, 3, 19, 39, 74, 111, 102, 101, 112, 64, 65, 116, 97, 100, 50, 99, 113, 114, 25, 46, 26, 70, 68, 77, 78]. Most of the algebraic constructions have several important ingredients including base matrices, matrix dispersion (or matrix expansion), and masking. By a proper choice and combination of these ingredients, algebraic LDPC codes with excellent overall error performance can be constructed. Algebraic LDPC codes have, in general, much lower error-floors than randomly constructed LDPC codes.