Skip to content

Low-Density Parity-Check Code

A linear error-correcting block code specified by sparse parity-check constraints on its valid codewords.

Version
v1 · 2026-10-03 · History
Domain-specific #
13405
Domain group
Formal Sciences
Origin domain
Information Theory
Subdomain
Coding Theory → Information Theory
Aliases
Ldpc Code

Core Idea

A low-density parity-check (LDPC) code is a linear error-correcting block code specified through a sparse parity-check representation. In the binary case, a matrix \(H\) defines the valid codeword set \(C=\{c\in\mathrm{GF}(2)^n: Hc^\mathsf{T}=0\}\). Sparsity means that relatively few matrix entries are nonzero: each parity equation touches a small subset of codeword positions in the chosen representation. MacKay's original investigation distinguishes this code construction from both the optimal decoding problem and particular practical decoders.[1]

The nonzero entries of \(H\) also describe a bipartite variable–check graph: each column is a codeword-position node, each row a parity-check node, and each nonzero entry an edge. This Tanner-graph view exposes local constraint neighborhoods, but it does not add a second mandatory object on top of \(H\). A graph without parity equations or a decoder without a specified sparse code is not itself an LDPC code. Regular, irregular, random, and structured matrices can all instantiate the family.[1][2]

Structural Signature

Sig role-phrases:

  • Linear block-codeword set. A finite-field parity-check relation selects valid vectors; in the binary case, every codeword satisfies \(Hc^\mathsf{T}=0\) over \(\mathrm{GF}(2)\). A sparse array not used to define valid codewords does not meet this role.[1]
  • Sparse parity-check representation. Low-density \(H\) is the family discriminator. A row operation can produce an equivalent, denser parity-check matrix for the same code; the existence of the chosen sparse representation, not the appearance of every equivalent matrix, matters.[1]
  • Local variable–check incidence. The entries of \(H\) specify which codeword positions participate in which parity equations. Uniform row and column weights make a regular member; unequal weights can define an irregular one.[1][2]

The message source, channel outputs, soft likelihoods, iterative algorithm, degree optimization, and measured performance are use or design conditions. None is an additional constitutive role of the code family.[1][3]

What It Is Not

  • Not a decoding algorithm. Sum-product belief propagation, hard-decision bit flipping, optimal decoding, and other procedures may be compared for one sparse code; changing decoder does not automatically change its codeword set.[1][2]
  • Not every linear code. A generic code can have a parity-check matrix without an established low-density representation. Conversely, a dense matrix obtained by row-reducing an LDPC representation does not by itself abolish the earlier sparse construction.[1]
  • Not merely a Tanner graph. A bipartite graph becomes the LDPC constraint representation when variable/check nodes and parity equations define codewords. The graph alone does not specify received-data probabilities or a decoder.
  • Not guaranteed near capacity. Particular asymptotic ensembles can approach a channel's capacity under stated assumptions; finite-length performance depends on matrix structure, decoder, channel, and observation quality.[1][2]
  • Not identical with its application. A wireless base graph or a flash-read strategy supplies one code instance and surrounding engineering, not the whole LDPC identity.[4][3]

Scope of Application

Gallager's original family used sparse random binary parity-check matrices. MacKay describes a regular construction with fixed low column weight and uniform row weight when parameters permit, then separates the code's theoretical properties from its practical decoding algorithm. Irregular alternatives vary those weights; the low-density parity-check relation remains the common core.[1][2]

In 3GPP New Radio, TS 38.212 specifies LDPC base graphs, lifting choices, and parity checks for encoded code blocks. The standard is an example of deliberately structured sparse coding in a wireless channel, not evidence that every LDPC code has those exact graph dimensions or lifting rules.[4]

In NAND-flash research, Wang and colleagues investigate LDPC protection of stored bits while changing how much soft information multiple threshold-voltage reads supply to a decoder. Their comparison makes the boundary vivid: the read channel and chosen belief-propagation implementation influence error rates, while the code's sparse parity constraints are a separate design object.[3]

Clarity

The code's dimension depends on \(\operatorname{rank}(H)\), not simply the number of listed parity-check rows: redundant rows can leave the same codeword set. Likewise, “low density” is a statement about the selected sparse representation or code family, not a promise that every algebraically equivalent matrix is sparse. A useful catalog test therefore asks for both \(H\) (or an equivalent check graph) and the valid-word condition it imposes.[1]

One can derive a systematic encoding matrix from sparse \(H\), but Gaussian elimination may destroy visible sparsity in an equivalent representation. That operation does not turn the original code into a different family. A code designer can also run two decoders on one \(H\); disagreement in performance is evidence about decoder–channel interaction, not evidence that two code identities were created.[1]

Manages Complexity

A sparse parity-check representation replaces an unwieldy list of all valid codewords with local equations. Each graph edge records one variable's participation in one check, so local operations can be organized around neighborhoods rather than every possible block. This is why sparse-graph decoders are attractive, though their computational cost and accuracy depend on the algorithm and graph chosen.[1]

The compression also separates questions that are too often bundled: Which blocks are valid? How is a message encoded? What corruption did a channel or memory read create? What inference algorithm reconstructs the block? What error rate results? Only the first question and its low-density check representation define this entry. The rest determine whether a particular instance is useful.[1][3]

Abstract Reasoning

For binary \(H\), every row \(i\) states \(\sum_{j:H_{ij}=1}c_j=0\pmod 2\). The intersection of all these local equations is \(C\). The bipartite graph reads directly from the same incidence relation, so a short cycle is a property of the chosen graph, not an extra parity equation. If \(H\) has rank \(r\), then \(C\) has dimension \(n-r\); using the raw number of rows would overcount dependent checks.[1]

That reasoning gives an identity test. Start with an alleged LDPC system and hold its valid-word set and a sparse \(H\) fixed. Replace belief propagation with a different decoder or replace a wireless noisy channel with a modeled storage read. It remains the same LDPC code representation. Remove the sparse parity-check specification, however, and the LDPC classification is no longer established even if some error correction still works.[1][3]

Knowledge Transfer

The transferable relation is sparse parity constraints over a codeword block. Wireless coding transfers it to a standardized base-graph/lifting construction; storage coding transfers it to a block exposed to threshold-read errors. The signal constellation, physical memory-cell behavior, likelihood quantizer, and iteration budget do not transfer automatically.[4][3]

The graph view also connects coding theory to general local-constraint inference. That analogy is useful for algorithm design, but “factor graph” is broader than an LDPC code: a graph for a probabilistic model need not impose finite-field parity equations. Conversely, a code can be studied algebraically without choosing sum-product messages as its decoder.

Examples

Regular Gallager construction. Let \(H\) be a binary matrix built with a small fixed column weight and, when compatible with matrix dimensions, fixed row weight. Its valid vectors solve \(Hc^\mathsf{T}=0\) (codeword set); its many zeros and few ones per row/column supply the sparse-check role; fixed degrees produce a regular variable–check incidence graph. MacKay analyzes construction and then practical decoders separately.[1]

Mapped back: all three necessary roles are present before a received word or belief-propagation iteration exists. Rank dependencies affect actual code rate; fixed degree alone does not guarantee capacity-approaching behavior.

3GPP NR structured code. The standard chooses an LDPC base graph and lifting size and generates parity bits so the lifted matrix's checks are satisfied (codeword set). Its specified base-graph nonzero positions and their lifted connections instantiate sparse checks and the corresponding incidence pattern. These standardized dimensions are one structured realization, not the definition of every LDPC code.[4]

Mapped back: all roles concern valid transmitted blocks and constraints. The wireless transport channel and receiver's chosen decoding hardware are outside the three-role identity.

Flash-memory protection. In Wang and colleagues' studied setting, stored blocks are protected with an LDPC code (codeword set) whose low-density parity relation gives the sparse checks and local incidence. Multiple cell reads supply richer soft likelihoods to a decoder, improving its behavior in their modeled experiments.[3]

Mapped back: storage-read quantization changes evidence given to the decoder, not which parity relations make a stored block a valid codeword. The example does not imply all flash devices use one particular code or that soft reads are necessary for LDPC identity.

Negative boundary: a merely dense parity description. A linear code specified only by a dense \(H\) has codewords and parity equations but has not been shown to admit a low-density representation. It is a linear error-correcting code; the extra LDPC classification requires evidence of a sparse one. A dense row-reduced copy of a known sparse \(H\) is not this negative case.[1]

Structural Tensions

  • Sparse locality versus graph hazards. Few edges can support low local decoding work, while short cycles or unfavorable neighborhoods can degrade iterative inference. Sparsity alone does not certify performance. Diagnostic: Which graph structures dominate the observed failures for this \(H\) and decoder?[1]
  • Rate versus recoverability. Additional independent parity constraints lower dimension but may improve detection and correction for a stated error model; dependent rows can add apparent checks without changing rate. Diagnostic: What are \(\operatorname{rank}(H)\), the relevant distance evidence, and the target corruption distribution?[1]
  • Soft information versus implementation cost. Richer observations can improve a chosen iterative decoder, but multiple flash reads, quantization, memory and iterations cost time and resources. Diagnostic: Which observation precision and decoding budget support the claimed gain, with the code held fixed?[3]

Structural–Framed Character

Low-Density Parity-Check Code is structural-leaning mixed: a finite-field codeword set admits a sparse parity-check representation, which is an exact mathematical condition once field, length, and checks are fixed. Engineering systems choose which code and decoder to deploy.

Evaluative weight: “low-density” classifies the parity-check representation, not the code's reliability or efficiency in every channel. Near-capacity performance, energy cost, latency, and hardware convenience are contingent assessments, not admission tests for the identity.

Human-practice dependence: designers select \(H\), code parameters, a channel, and often a decoder. After the selection, the valid-word set and check incidence follow mathematically; a later choice of belief propagation or another decoder does not retroactively define which words belong to the code.

Institutional origin: coding theory developed the family, and communications standards choose particular structured instances. A 3GPP base graph or flash controller is not the authority that makes all other sparse parity-check codes members. The definition travels across implementations while their performance claims require separate evidence.

Vocabulary travel: sparsity, local constraint, graph incidence, and correction can be used elsewhere. Literal LDPC recognition requires a linear block code with a sparse parity-check representation; a sparse data matrix or a neural sparse code in another sense does not inherit the parity-equation test.

Import versus recognition: identify the valid codeword set and a sparse \(H\) whose rows impose its parity checks. An equivalent dense row-reduced matrix does not erase the existence of the sparse representation. Merely seeing a Tanner-like bipartite graph, or an iterative decoder with no specified code, is not enough.

Live Constraint provides a broad explanatory skeleton, while a possible sparse local constraints define a global admissible set pattern is only a future-prime question. Its character: a formally precise coding-family identity whose sparse checks are stable while channel and decoder evaluations remain framed.

Structural Core vs. Domain Accent

This section decides why Low-Density Parity-Check Code is domain-specific rather than a prime.

What is skeletal and possibly portable. A system can define admissible global configurations by many sparse local constraints. Live Constraint captures restriction of possibilities, but the wider sparse-local-to-global pattern is at most a future-prime candidate here; no such parent edge is asserted. The live Error-Correcting Code entry is the natural coding-family neighbor, yet its current one-liner requires a decoding rule while an LDPC code exists before a decoder is chosen. Until that parent definition is repaired or re-adjudicated, strict subsumption would be contradictory, so this node remains staged unparented.

What remains domain-bound. The object is a linear block-codeword set over a finite field, admitted by a sparse parity-check representation. In the binary case, \(C=\{c\in\mathrm{GF}(2)^n:Hc^\mathsf{T}=0\}\), and nonzero entries of \(H\) identify which variables participate in each parity equation. Sparse incidence, not a particular decoder or wireless standard, distinguishes the family. Gallager's random ensemble, regular versus irregular degree, quasi-cyclic lifting, and flash soft reads are variants or settings; belief propagation and near-capacity performance are not constitutive. Remove the finite-field codeword/parity relation and a generic sparse graph remains, not an LDPC code. Replace the chosen sparse \(H\) with a dense equivalent matrix and the code can still retain its sparse representation.

Why it does not clear the prime bar. Wireless and storage systems can literally reuse the same code family because sparse parity constraints define valid words in both. A sparse set of social rules or a neural “sparse code” may share local-to-global organization, but not the finite-field parity-check/codeword identity. Constraint carries a broader restriction idea, while the prospective sparse-local pattern needs independent cross-domain adjudication. The named LDPC abstraction keeps its specialized coding-theory residual and should not be promoted to a prime by conflating sparse structure with error-correcting code performance.

No strict typed parent relation is asserted in the current DAG. The obvious live genus Error-Correcting Code currently makes a specified decoding rule constitutive, whereas an LDPC code is defined before any decoder is selected. A strict edge is deferred until that parent definition is repaired or a different defensible live genus is found.

Neighborhood in Abstraction Space

Low-Density Parity-Check Code sits in a moderately populated region (47th percentile for distinctiveness): it has near-neighbors but no dense thicket of look-alikes.

Family — Storage & Lookup Data Structures (21 abstractions)

Nearest neighbors

Computed from structural-signature embeddings · 2026-10-08

Not to Be Confused With

An LDPC code specifies valid blocks. An LDPC encoder maps messages into those blocks. A parity-check or syndrome decoder estimates a transmitted block from observations. A Tanner graph is the sparse matrix's incidence representation; belief propagation is one possible graph-based inference procedure. A sparse matrix used for an unrelated linear system is not automatically an LDPC code, and a generic error-correcting code is not automatically sparse.[1][2]

References

[1] David J. C. MacKay, “Good Error-Correcting Codes Based on Very Sparse Matrices”, IEEE Transactions on Information Theory 45(2) (1999), pp. 399–431, especially §§I.B–I.C, II and III. Original paper directly inspected; code construction, parity-check equivalence, regular graph, decoding comparison and conditional performance claims are in the cited portions. registry ↩a ↩b ↩c ↩d ↩e ↩f ↩g ↩h ↩i ↩j ↩k ↩l ↩m ↩n ↩o ↩p ↩q ↩r ↩s ↩t ↩u

[2] GUAVA project, reference manual §5.8, “Low-Density Parity-Check Codes”, directly inspected for sparse-matrix definition and regular/irregular and quasi-cyclic variants. registry ↩a ↩b ↩c ↩d ↩e ↩f

[3] Jiadong Wang, Thomas Courtade, Hari Shankar and Richard D. Wesel, “Soft Information for LDPC Decoding in Flash: Mutual-Information Optimized Quantization”, IEEE GLOBECOM (2011), abstract and §§I–II, directly inspected for flash application and the distinction between code and soft-information decoder input. registry ↩a ↩b ↩c ↩d ↩e ↩f ↩g ↩h

[4] 3GPP, TS 38.212 V16.11.0, NR; Multiplexing and channel coding (ETSI, April 2023), §5.3.2 and tables 5.3.2-1–2, PDF pp. 20–22, directly inspected for LDPC encoding, base graph and parity checks. registry ↩a ↩b ↩c ↩d

[5] Robert G. Gallager, Low density parity check codes, MIT Sc.D. dissertation (1960). MIT DSpace metadata checked; its download returned HTTP 405, so no technical claim above depends on reading this thesis. Gallager's related 1962 IRE journal article is a distinct publication. registry