{
 "id": "epba3jd9b8",
 "slug": "dirty-paper-coding",
 "title": "Dirty paper coding",
 "updated": "2026-10-15",
 "topic_path": [
  {
   "id": "technology",
   "label": "Technology and the built world",
   "api_url": "https://www.edgepedia.org/api/v1/topics/technology"
  },
  {
   "id": "technology.computing",
   "label": "Computing and digital systems",
   "api_url": "https://www.edgepedia.org/api/v1/topics/technology.computing"
  },
  {
   "id": "technology.computing.networks",
   "label": "Networks and security",
   "api_url": "https://www.edgepedia.org/api/v1/topics/technology.computing.networks"
  },
  {
   "id": "technology.computing.networks.alpha-2-to-ma",
   "label": "Titles 2 to Ma",
   "api_url": "https://www.edgepedia.org/api/v1/topics/technology.computing.networks.alpha-2-to-ma"
  }
 ],
 "geo": [
  {
   "id": "geo.nongeo.t1946.technology.computing.networks.alpha-2-to-ma",
   "label": "Non-geographic · 1946 to 2000: Titles 2 to Ma",
   "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo.t1946.technology.computing.networks.alpha-2-to-ma",
   "path": [
    {
     "id": "geo.nongeo",
     "label": "Non-geographic",
     "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo"
    },
    {
     "id": "geo.nongeo.t1946",
     "label": "Non-geographic · 1946 to 2000",
     "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo.t1946"
    },
    {
     "id": "geo.nongeo.t1946.technology",
     "label": "Technology and the built world",
     "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo.t1946.technology"
    },
    {
     "id": "geo.nongeo.t1946.technology.computing",
     "label": "Computing and digital systems",
     "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo.t1946.technology.computing"
    },
    {
     "id": "geo.nongeo.t1946.technology.computing.networks",
     "label": "Networks and security",
     "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo.t1946.technology.computing.networks"
    },
    {
     "id": "geo.nongeo.t1946.technology.computing.networks.alpha-2-to-ma",
     "label": "Titles 2 to Ma",
     "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo.t1946.technology.computing.networks.alpha-2-to-ma"
    }
   ]
  }
 ],
 "excerpt": "Dirty paper coding is a channel coding technique that pre-codes transmitted data so a receiver decodes reliably despite known interference, with no power increase or rate loss.",
 "snippet": "Dirty paper coding is a channel coding technique that pre-codes transmitted data so a receiver decodes reliably despite known interference, with no power increase or rate loss.",
 "node": "technology.computing.networks.alpha-2-to-ma",
 "markdown": "# Dirty paper coding\n\nDirty paper coding (DPC) is a channel coding technique that pre-codes transmitted data so a receiver can decode reliably even though known interference is added to the channel. The transmitter knows the interference noncausally: not only its past and present but also its future values, while the receiver knows nothing about it. For the Gaussian channel \\( Y = X + S + Z \\) with power constraint \\( E(X^2) \\le P \\), Gaussian interference \\( S \\sim N(0,Q) \\), and noise of variance \\( N \\), Costa proved that the capacity is \\( C = \\tfrac{1}{2}\\log(1 + P/N) \\), exactly the capacity of the interference-free AWGN (additive white Gaussian noise, the standard random-noise channel) channel.<sup>[1](https://ar5iv.labs.arxiv.org/html/0901.2764)</sup> The obvious remedy, pre-subtracting the interference by transmitting \\( X_0 = X - S \\), fails because it raises the transmit power.<sup>[2](https://www.eurasip.org/Proceedings/Eusipco/Eusipco2004/defevent/papers/cr1513.pdf)</sup> DPC instead shapes the codeword around the interference, canceling it with no power increase and no rate loss.<sup>[3](http://www.ims.cuhk.edu.hk/~cis/2005.4/03.pdf)</sup>\n\n| Property | Value |\n|---|---|\n| Capacity | \\( C = \\tfrac{1}{2}\\log(1 + P/N) \\), identical to the interference-free AWGN channel <sup>[1](https://ar5iv.labs.arxiv.org/html/0901.2764)</sup> |\n| Auxiliary random variable | \\( U = X + \\alpha S \\) with optimal inflation factor \\( \\alpha = P/(P+N) \\) <sup>[1](https://ar5iv.labs.arxiv.org/html/0901.2764)</sup> |\n| Transmitter knowledge required | Noncausal: past, present, and future values of the interference <sup>[4](https://www.comm.utoronto.ca/~weiyu/trellis_precode_2.pdf)</sup> |\n| Why naive subtraction fails | Transmitting \\( X - S \\) raises the required transmit power; DPC avoids this <sup>[2](https://www.eurasip.org/Proceedings/Eusipco/Eusipco2004/defevent/papers/cr1513.pdf)</sup> |\n| Practical gap at high SNR | Scalar-lattice DPC: 1.53 dB; vector-quantization DPC: 1.3 to 2.1 dB <sup>[5](https://aimath.org/WWN/timerev/tenbrink.pdf)</sup> |\n| MIMO broadcast (2024) | Scalar-lattice DPC achieves any rate tuple inside the K-receiver Gaussian MIMO broadcast capacity region <sup>[6](https://ar5iv.labs.arxiv.org/html/2402.04942)</sup> |\n\n## How it works\n\nDPC rests on the Gel'fand–Pinsker capacity formula for a discrete memoryless channel \\( p(y|x,s) \\) with side information \\( S \\) known noncausally at the transmitter but not at the receiver; the formula involves an auxiliary random variable \\( U \\).<sup>[1](https://ar5iv.labs.arxiv.org/html/0901.2764)</sup> The achievability scheme uses **random binning**: \\( 2^{nI(W;Y)} \\) i.i.d. \\( W^n \\) sequences are assigned uniformly to \\( 2^{n(I(W;Y)-I(W;S))} \\) bins; the encoder, knowing the state sequence \\( S^n \\), selects the bin for its message and chooses a sequence jointly typical with \\( S^n \\), while the decoder searches for the unique sequence jointly typical with the received \\( Y^n \\).<sup>[7](https://arxiv.org/html/2507.17427)</sup>\n\nFor the Gaussian channel, the auxiliary is chosen as \\( U = X + \\alpha S \\), with \\( X \\) and \\( S \\) independent and the inflation factor \\( \\alpha \\) optimally equal to \\( P/(P+N) \\).<sup>[1](https://ar5iv.labs.arxiv.org/html/0901.2764)</sup> With this choice the interference is canceled without any power increase or rate loss.<sup>[3](http://www.ims.cuhk.edu.hk/~cis/2005.4/03.pdf)</sup> A power bound makes \"lossless\" precise: the minimum input power \\( P(R) \\) needed for rate \\( R \\) satisfies \\( P(R) \\le P_{\\mathrm{WDP}}(R) \\le (1+Q)P(R) \\), and the lower bound is achievable, so transmission proceeds as if the interference did not exist.<sup>[3](http://www.ims.cuhk.edu.hk/~cis/2005.4/03.pdf)</sup>\n\n## How it is done\n\nPractical constructions replace the random binning of the proof with structured codes. In **lattice DPC**, the encoder transmits\n\n\\[ X = v - \\alpha S - U \\mod \\Lambda, \\]\n\nwhere \\( v \\) carries the message, \\( \\Lambda \\) is a lattice, and the dither \\( U \\) is uniform over the fundamental Voronoi region; the receiver computes \\( \\tilde{y} = \\alpha Y + U \\mod \\Lambda \\).<sup>[7](https://arxiv.org/html/2507.17427)</sup> [Tomlinson–Harashima precoding](https://www.edgepedia.org/tomlinson-harashima-precoding) (THP) is the one-dimensional special case, using a scalar modulo operation that implements a structured form of binning.<sup>[7](https://arxiv.org/html/2507.17427)</sup>\n\nFor [MIMO](https://www.edgepedia.org/mimo) channels, each receiver channel is decomposed by noise whitening and singular-value decomposition into parallel scalar channels with known interference, and DPC with a modulo interval, M-ary amplitude shift keying (ASK), and probabilistic shaping is applied to each scalar channel.<sup>[6](https://ar5iv.labs.arxiv.org/html/2402.04942)</sup> The full dirty-paper capacity is achieved by a scheme based on multidimensional lattice quantization combined with MMSE scaling.<sup>[5](https://aimath.org/WWN/timerev/tenbrink.pdf)</sup>\n\n## Origin\n\nThe Gaussian capacity result was proved using the general Gel'fand–Pinsker formula for channels with side information known at the transmitter.<sup>[5](https://aimath.org/WWN/timerev/tenbrink.pdf)</sup> The original paper did not address relevance to common communication problems and initially drew little attention; an early exception was work suggesting quantization-based coding schemes for the dirty-paper channel with causally known interference.<sup>[5](https://aimath.org/WWN/timerev/tenbrink.pdf)</sup> Later work established the connection to precoding for interference cancellation, extending the result to arbitrary interference, deterministic or random, and to information embedding and digital watermarking.<sup>[5](https://aimath.org/WWN/timerev/tenbrink.pdf)</sup> Application to MIMO broadcast channels followed, where signals intended for other users act as interference known to the transmitter, enabling successive dirty-paper cancellation after linear preprocessing.<sup>[5](https://aimath.org/WWN/timerev/tenbrink.pdf)</sup> A related vector-perturbation technique for near-capacity multiantenna multiuser communication was published by B.M. Hochwald, C.B. Peel, and [A.L. Swindlehurst](https://www.edgepedia.org/a-lee-swindlehurst) in IEEE Transactions on Communications in 2005.<sup>[8](https://doi.org/10.1109/tcomm.2004.841997)</sup>\n\n## Variants\n\n**Scalar and vector constructions.** The scalar (one-dimensional) lattice precoding scheme extends THP with MMSE scaling by \\( \\alpha \\); its gap to capacity is \\( 10\\log_{10}(2\\pi e/12) \\approx 1.53 \\) dB at high SNR<sup>[5](https://aimath.org/WWN/timerev/tenbrink.pdf)</sup>, which is the shaping loss of about 0.254 bit; with \\( k \\)-dimensional lattices and MMSE scaling the capacity loss is upper-bounded by \\( \\tfrac{1}{2}\\log(2\\pi e\\,G(\\Lambda)) \\), where \\( G(\\Lambda) \\) is the normalized second moment of the lattice<sup>[9](https://doi.org/10.1109/tit.2005.856935)</sup>, and for optimal lattices \\( G(\\Lambda) \\to 1/(2\\pi e) \\) so the gap goes to zero.<sup>[2](https://www.eurasip.org/Proceedings/Eusipco/Eusipco2004/defevent/papers/cr1513.pdf)</sup>\n\n[Vector quantization](https://www.edgepedia.org/vector-quantization) combined with iterative decoding of capacity-approaching repeat–accumulate codes, designed with the EXIT-chart technique, gains more than 2 dB over the best scalar quantization scheme, leaving a gap of about 1.3 dB to AWGN capacity at 0.5 bit/s/Hz spectral efficiency with a memory-6 vector quantizer, widening to 2.1 dB at zero spectral efficiency.<sup>[5](https://aimath.org/WWN/timerev/tenbrink.pdf)</sup>\n\n## Applications\n\nOn the MIMO Gaussian broadcast channel, a DPC-based multiuser transmission strategy, unlike beamforming-based strategies, achieves a single-user sum-rate scaling factor \\( \\min(t,r)\\cdot\\log \\mathrm{SNR} \\) even with partial or no channel state information at the transmitter.<sup>[1](https://ar5iv.labs.arxiv.org/html/0901.2764)</sup> In 2024, scalar DPC with M-ary ASK, a modulo operator of interval length \\( A \\), and truncated Gaussian shaping was shown to achieve any rate tuple inside the capacity region of K-receiver Gaussian MIMO broadcast channels for large \\( M \\) and \\( A \\).<sup>[6](https://ar5iv.labs.arxiv.org/html/2402.04942)</sup>\n\nBeyond multiuser broadcasting, the DPC model is connected to information embedding and digital watermarking.<sup>[5](https://aimath.org/WWN/timerev/tenbrink.pdf)</sup> Recent work extends it to learned and computing systems: a 2025 data-driven scheme parameterizes encoder and decoder by neural networks with sinusoidal activations, requires no prior knowledge of the channel, interference, or input statistics, recovers THP- and lattice-like modulo behavior, and matches or exceeds THP and lattice-based schemes with the largest gains at low SNR.<sup>[7](https://arxiv.org/html/2507.17427)</sup>\n\n## Limitations and alternatives\n\nCosta's result requires the transmitter to know not only the present and past history of \\( S \\) but also its future values.<sup>[4](https://www.comm.utoronto.ca/~weiyu/trellis_precode_2.pdf)</sup> When only partial channel state information at the transmitter is available, determining the optimal inflation factor requires iterative numerical algorithms, and the high-SNR optimality of the auxiliary choice \\( U = X + \\alpha S \\) holds only in special cases, such as \\( t \\le r \\) antennas.<sup>[1](https://ar5iv.labs.arxiv.org/html/0901.2764)</sup>\n\nTHP is computationally efficient and effective at high SNR, where a large modulo interval makes the effective channel approximate an AWGN channel, but its performance degrades at low SNR due to the combined effects of dithering and the modulo operation; it does not achieve the full capacity promised by DPC theory, though it outperforms treating interference as noise.<sup>[7](https://arxiv.org/html/2507.17427)</sup> THP is interpreted as a one-dimensional special case of lattice-based DPC; general lattice-based DPC replaces the one-dimensional scalar modulo operation with a higher-dimensional modulo-lattice operation.<sup>[7](https://arxiv.org/html/2507.17427)</sup> Treating interference as noise is the baseline that DPC and its practical approximations improve upon. How DPC compares quantitatively with interference alignment and with decode-and-forward strategies is not settled by the published results discussed here.\n\n## References\n\n1. [Dirty Paper Coding for Fading Channels with Partial Transmitter Side Information](https://ar5iv.labs.arxiv.org/html/0901.2764)\n2. [Doping of Repeat-Accumulate Codes for Dirty Paper Coding](https://www.eurasip.org/Proceedings/Eusipco/Eusipco2004/defevent/papers/cr1513.pdf)\n3. [Liu & Elia, Communications in Information and Systems (2005)](http://www.ims.cuhk.edu.hk/~cis/2005.4/03.pdf)\n4. [Trellis and Convolutional Precoding for Transmitter-Based Interference Cancellation](https://www.comm.utoronto.ca/~weiyu/trellis_precode_2.pdf)\n5. [A Close-to-Capacity Dirty Paper Coding Scheme](https://aimath.org/WWN/timerev/tenbrink.pdf)\n6. [Achieving Gaussian Vector Broadcast Channel Capacity with Scalar Lattices](https://ar5iv.labs.arxiv.org/html/2402.04942)\n7. [Learning to Write on Dirty Paper](https://arxiv.org/html/2507.17427)\n8. [B.M. Hochwald, C.B. Peel, A.L. Swindlehurst (2005). A Vector-Perturbation Technique for Near-Capacity Multiantenna Multiuser Communication, Part II: Perturbation. IEEE Transactions on Communications.](https://doi.org/10.1109/tcomm.2004.841997)\n9. [Capacity and Lattice Strategies for Canceling Known Interference](https://doi.org/10.1109/tit.2005.856935)\n\n---\n*Topic: Encyclopedia › Technology and the built world › Computing and digital systems › Networks and security › Titles 2 to Ma*\n\n*Initially written Sep 29, 2026 · Edited: Oct 15, 2026*\n\n*Copyright 2026 EdgeChat AI, a subsidiary of Biostate AI.*\n\nLicense: Edgepedia Community License 1.0, https://www.edgepedia.org/edgepedia/license\n",
 "same_as": [],
 "url": "https://www.edgepedia.org/dirty-paper-coding",
 "markdown_url": "https://www.edgepedia.org/dirty-paper-coding.md",
 "license": {
  "name": "Edgepedia Community License 1.0",
  "url": "https://www.edgepedia.org/edgepedia/license",
  "summary": "Free with credit, commercial use included. AI training is open to everyone. For other uses, organizations over USD 100M in revenue or 100M monthly users license separately.",
  "spdx": "LicenseRef-Edgepedia-Community-1.0"
 },
 "credit": "\"Dirty paper coding\", Edgepedia (EdgeChat), https://www.edgepedia.org/dirty-paper-coding. Edgepedia Community License 1.0.",
 "credit_md": "\"[Dirty paper coding](https://www.edgepedia.org/dirty-paper-coding)\", Edgepedia (EdgeChat), [https://www.edgepedia.org/dirty-paper-coding](https://www.edgepedia.org/dirty-paper-coding). [Edgepedia Community License 1.0](https://www.edgepedia.org/edgepedia/license).",
 "credit_html": "\"<a href=\"https://www.edgepedia.org/dirty-paper-coding\">Dirty paper coding</a>\", Edgepedia (EdgeChat), <a href=\"https://www.edgepedia.org/dirty-paper-coding\">https://www.edgepedia.org/dirty-paper-coding</a>. <a href=\"https://www.edgepedia.org/edgepedia/license\">Edgepedia Community License 1.0</a>.",
 "speakable": "Dirty paper coding is a channel coding technique that pre-codes transmitted data so a receiver decodes reliably despite known interference, with no power increase or rate loss."
}
