{
 "id": "ep4aq7raj5",
 "slug": "dc-programming",
 "title": "DC programming",
 "updated": "2026-09-30",
 "topic_path": [
  {
   "id": "physical",
   "label": "Physical world and mathematics",
   "api_url": "https://www.edgepedia.org/api/v1/topics/physical"
  },
  {
   "id": "physical.math",
   "label": "Mathematics and statistics",
   "api_url": "https://www.edgepedia.org/api/v1/topics/physical.math"
  },
  {
   "id": "physical.math.analysis",
   "label": "Analysis and mathematical models",
   "api_url": "https://www.edgepedia.org/api/v1/topics/physical.math.analysis"
  },
  {
   "id": "physical.math.analysis.numerical_analysis_and_computation",
   "label": "Numerical analysis and computation",
   "api_url": "https://www.edgepedia.org/api/v1/topics/physical.math.analysis.numerical_analysis_and_computation"
  },
  {
   "id": "physical.math.analysis.numerical_analysis_and_computation.optimization-algorithms",
   "label": "Optimization algorithms",
   "api_url": "https://www.edgepedia.org/api/v1/topics/physical.math.analysis.numerical_analysis_and_computation.optimization-algorithms"
  }
 ],
 "geo": [
  {
   "id": "geo.nongeo.t1946.physical.math.analysis.numerical_analysis_and_computation",
   "label": "Non-geographic · 1946 to 2000: Numerical analysis and computation",
   "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo.t1946.physical.math.analysis.numerical_analysis_and_computation",
   "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.physical",
     "label": "Physical world and mathematics",
     "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo.t1946.physical"
    },
    {
     "id": "geo.nongeo.t1946.physical.math",
     "label": "Mathematics and statistics",
     "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo.t1946.physical.math"
    },
    {
     "id": "geo.nongeo.t1946.physical.math.analysis",
     "label": "Analysis and mathematical models",
     "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo.t1946.physical.math.analysis"
    },
    {
     "id": "geo.nongeo.t1946.physical.math.analysis.numerical_analysis_and_computation",
     "label": "Numerical analysis and computation",
     "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo.t1946.physical.math.analysis.numerical_analysis_and_computation"
    }
   ]
  }
 ],
 "excerpt": "DC programming is an optimization framework for minimizing a function expressed as a difference of two convex functions, applied to nonconvex problems in machine learning and finance.",
 "snippet": "DC programming is an optimization framework for minimizing a function expressed as a difference of two convex functions, applied to nonconvex problems in machine learning and finance.",
 "node": "physical.math.analysis.numerical_analysis_and_computation.optimization-algorithms",
 "markdown": "# DC programming\n\nDC programming is an optimization framework for minimizing a function expressed as a difference of two convex functions, written \\( f = g - h \\); the abbreviation DC stands for \"difference of convex\". A DC program has the form \\( \\alpha = \\inf\\{ f(x) := g(x) - h(x): x \\in X \\} \\), where \\( g \\) and \\( h \\) are proper lower semicontinuous convex functions, called the DC components of \\( f \\).<sup>[1](https://math.ac.vn/uploads/files/9701289.pdf)</sup> The class is broad: by Hartman's theorem, every function that is locally DC (DC on some \\( \\varepsilon \\)-ball around each point) is DC, so many nonconvex objectives admit a DC representation.<sup>[2](https://doi.org/10.2140/pjm.1959.9.707)</sup><sup> • </sup><sup>[3](https://ocw.mit.edu/courses/15-097-prediction-machine-learning-and-statistics-spring-2012/06d402cb88ff2cdb8e69b66a5c864b92_MIT15_097S12_proj5.pdf)</sup> Its main algorithmic tool, the DC algorithm (DCA), solves nonconvex problems that ordinary convex optimization cannot handle, by exploiting the convex structure hidden inside the difference.\n\n| Key fact | Detail |\n|---|---|\n| Canonical form | \\( \\alpha = \\inf\\{ g(x) - h(x): x \\in X \\} \\), with \\( g, h \\) proper lower semicontinuous convex<sup>[1](https://math.ac.vn/uploads/files/9701289.pdf)</sup> |\n| Class breadth | Every locally DC function is DC (Hartman's theorem)<sup>[2](https://doi.org/10.2140/pjm.1959.9.707)</sup><sup> • </sup><sup>[3](https://ocw.mit.edu/courses/15-097-prediction-machine-learning-and-statistics-spring-2012/06d402cb88ff2cdb8e69b66a5c864b92_MIT15_097S12_proj5.pdf)</sup> |\n| Core iteration | Replace \\( -h \\) by its affine majorant at the current iterate and minimize the resulting convex function<sup>[4](https://arxiv.org/html/2211.10942v2)</sup> |\n| Descent guarantee | \\( (g-h)(x^{k+1}) \\le (g-h)(x^{k}) - \\frac{\\rho_{1}+\\rho_{2}}{2}\\Vert x^{k+1} - x^{k}\\Vert^{2} \\), with \\( \\rho_{1}, \\rho_{2} \\) strong-convexity moduli of the components<sup>[5](https://link.springer.com/article/10.1007/s10898-023-01272-1)</sup> |\n| Worst-case rate | \\( O(1/\\sqrt{N}) \\) in the objective gradient norm after \\( N \\) iterations, and the rate is exact for some problems<sup>[6](https://link.springer.com/article/10.1007/s10957-023-02199-z)</sup> |\n| Finite convergence | Under the condition \\( \\rho_{1} + \\rho_{2} > 0 \\), DCA admits a descent bound and converges to a DC-critical point, though not necessarily in finitely many iterations<sup>[5](https://link.springer.com/article/10.1007/s10898-023-01272-1)</sup> |\n| Scale of use | Applied to nonconvex quadratic programs of up to 400,000 dimensions<sup>[7](https://onlinelibrary.wiley.com/doi/10.1155/2012/364607)</sup> |\n\n## How it works\n\nThe mechanism rests on convex duality. Conjugation does not distribute over subtraction, so \\( (g - h)^{*} \\) is not in general \\( h^{*} - g^{*} \\); instead, Toland's duality states that the value of the DC problem \\( \\inf\\{g(x) - h(x)\\} \\) coincides with that of its dual \\( \\inf\\{h^{*}(x^{*}) - g^{*}(x^{*})\\} \\), which is again a DC program.<sup>[3](https://ocw.mit.edu/courses/15-097-prediction-machine-learning-and-statistics-spring-2012/06d402cb88ff2cdb8e69b66a5c864b92_MIT15_097S12_proj5.pdf)</sup><sup> • </sup><sup>[1](https://math.ac.vn/uploads/files/9701289.pdf)</sup> Global optimality has a generalized Kuhn-Tucker characterization: at a primal optimum \\( x^{*} \\), the subdifferential inclusion \\( \\partial h(x^{*}) \\subset \\partial g(x^{*}) \\) holds, with a dual counterpart.<sup>[3](https://ocw.mit.edu/courses/15-097-prediction-machine-learning-and-statistics-spring-2012/06d402cb88ff2cdb8e69b66a5c864b92_MIT15_097S12_proj5.pdf)</sup>\n\nA DC objective has infinitely many DC decompositions \\( f = g - h \\), and the choice among them influences robustness, stability, convergence rate, and how global the computed solutions are.<sup>[1](https://math.ac.vn/uploads/files/9701289.pdf)</sup> This is the framework's central design degree of freedom: the same nonconvex function can be written as many different differences of convex functions, and the algorithm's behavior follows the decomposition, not just the function.\n\n## How it is done\n\nDCA is a descent method without linesearch that carries a global convergence property.<sup>[5](https://link.springer.com/article/10.1007/s10898-023-01272-1)</sup> From an initial point \\( x_{0} \\in \\operatorname{dom} g \\), it builds two coupled sequences \\( \\{x^{k}\\} \\) and \\( \\{y^{k}\\} \\) on the primal and dual DC problems via \\( y^{k} \\in S(x^{k}) \\) and \\( x^{k+1} \\in T(y^{k}) \\).<sup>[1](https://math.ac.vn/uploads/files/9701289.pdf)</sup> Concretely, each iteration does the following<sup>[3](https://ocw.mit.edu/courses/15-097-prediction-machine-learning-and-statistics-spring-2012/06d402cb88ff2cdb8e69b66a5c864b92_MIT15_097S12_proj5.pdf)</sup>:\n\n1. Choose \\( x_{0} \\in \\operatorname{dom} g \\).\n2. At iteration \\( k \\), choose \\( y^{k} \\in \\partial h(x^{k}) \\), a subgradient of the second component.\n3. Choose \\( x^{k+1} \\in \\partial g^{*}(y^{k}) \\), that is, minimize the convex majorant obtained by replacing \\( -h \\) with its affine model at \\( x^{k} \\).<sup>[4](https://arxiv.org/html/2211.10942v2)</sup>\n4. Stop when the iterates change by less than a tolerance.\n\nEquivalently, the second DC component \\( h \\) is approximated by its affine minorant \\( H_{k} \\) and the resulting convex subproblem is solved.<sup>[8](https://hal.univ-lorraine.fr/hal-03063899v1/document)</sup> This construction coincides with the Majorization-Minimization idea: the affine model is a convex majorant of \\( f \\), and minimizing it gives the next iterate.<sup>[4](https://arxiv.org/html/2211.10942v2)</sup> The objective decrease per iteration is bounded by \\( (g-h)(x^{k+1}) \\le (g-h)(x^{k}) - \\frac{\\rho_{1}+\\rho_{2}}{2}\\Vert x^{k+1} - x^{k}\\Vert^{2} \\), where \\( \\rho_{1} \\) and \\( \\rho_{2} \\) are moduli of strong convexity of the DC components.<sup>[5](https://link.springer.com/article/10.1007/s10898-023-01272-1)</sup>\n\nOn rates: a performance-estimation analysis gives a worst-case rate of \\( O(1/\\sqrt{N}) \\) in the objective gradient norm after \\( N \\) iterations for DC problems without strong convexity, with an example showing the rate is exact.<sup>[6](https://link.springer.com/article/10.1007/s10957-023-02199-z)</sup> Under the condition \\( \\rho_{1} + \\rho_{2} > 0 \\), DCA admits a descent bound and converges to a DC-critical point, though not necessarily in finitely many iterations<sup>[5](https://link.springer.com/article/10.1007/s10898-023-01272-1)</sup>, and polyhedral DC programs (where \\( g \\) or \\( h \\) is polyhedral convex) admit necessary and sufficient local optimality conditions and finite convergence.<sup>[1](https://math.ac.vn/uploads/files/9701289.pdf)</sup> Under relative strong convexity of the objective with respect to \\( f_{2} \\), the iterates converge linearly, and DC-specific Polyak–Łojasiewicz inequalities imply linear convergence without smoothness of the objective.<sup>[9](https://proceedings.mlr.press/v206/faust23a/faust23a.pdf)</sup>\n\n## Origin\n\nThe representability result underlying the field is [Philip Hartman](https://www.edgepedia.org/philip-hartman)'s 1959 paper \"On functions representable as a difference of convex functions\" in the Pacific Journal of Mathematics.<sup>[2](https://doi.org/10.2140/pjm.1959.9.707)</sup> The duality theory was developed in J.F. Toland's 1978 paper \"Duality in nonconvex optimization\" in the Journal of Mathematical Analysis and Applications.<sup>[10](https://doi.org/10.1016/0022-247x%2878%2990243-3)</sup> On the algorithmic side, the 1986 paper \"Algorithms for Solving a Class of Nonconvex Optimization Problems. Methods of Subgradients\" by Pham Dinh Tao and El Bernoussi Souad, in the North-Holland mathematics studies series, records the extension of subgradient methods to DC programming.<sup>[11](https://doi.org/10.1016/s0304-0208%2808%2972402-2)</sup> Later surveys document the field's growth: R. Horst and N. V. Thoai's \"DC Programming: Overview\" (Journal of Optimization Theory and Applications, 1999)<sup>[12](https://doi.org/10.1023/a:1021765131316)</sup>, Le Thi Hoai An and Pham Dinh Tao's 2005 account with DC models of real-world nonconvex problems<sup>[13](https://doi.org/10.1007/s10479-004-5022-1)</sup>, and the same authors' \"DC programming and DCA: thirty years of developments\" (Mathematical Programming, 2018).<sup>[14](https://doi.org/10.1007/s10107-018-1235-y)</sup>\n\n## Variants\n\nSeveral named variants adapt DCA to structure and scale. Proximal and extrapolation variants: Jun-ya Gotoh, Akiko Takeda and Katsuya Tono's 2017 Mathematical Programming paper develops proximal DCA (pDCA) via strong convexification of the DC components for [sparse optimization](https://www.edgepedia.org/sparse-optimization)<sup>[15](https://doi.org/10.1007/s10107-017-1181-0)</sup>; Bo Wen, Xiaojun Chen, and Ting Kei Pong's 2017 paper adds extrapolation (pDCAe)<sup>[16](https://doi.org/10.1007/s10589-017-9954-1)</sup>; and Zhaosong Lu, Zirui Zhou, and Zhe Sun's 2018 paper gives an enhanced proximal DC algorithm with extrapolation (EPDCA) for structured nonsmooth DC minimization.<sup>[17](https://doi.org/10.1007/s10107-018-1318-9)</sup> [Acceleration](https://www.edgepedia.org/acceleration) and geometry: Francisco J. Aragón Artacho, Ronan M. T. Fleming and Phan T. Vuong's 2017 Boosted DC algorithm (BDCA) accelerates DCA for smooth functions by combining DC steps with gradient steps<sup>[18](https://doi.org/10.1007/s10107-017-1180-1)</sup>, and Shota Takahashi, Mituhiro Fukuda and Mirai Tanaka's 2022 Bregman proximal DC algorithm (BPDCA) generalizes the proximal geometry.<sup>[19](https://doi.org/10.1007/s10589-022-00411-w)</sup> For nonsmooth programs, [Jong-Shi Pang](https://www.edgepedia.org/jong-shi-pang), Meisam Razaviyayn, and Alberth Alvarado's 2016 paper revises the scheme to compute B-stationary points.<sup>[20](https://doi.org/10.1287/moor.2016.0795)</sup>\n\nFurther variants include the variance-reduced stochastic variants DCA-SVRG and DCA-SAGA, which integrate SVRG and SAGA techniques and converge almost surely to critical points<sup>[21](https://jmlr.org/papers/volume23/21-1146/21-1146.pdf)</sup>, and DCA with successive DC decomposition, which updates the decomposition during the iterations and has been applied to continuous piecewise-linear fitting.<sup>[8](https://hal.univ-lorraine.fr/hal-03063899v1/document)</sup> Many classical algorithms are recoverable as DCA with special DC decompositions, including the Goldstein-Levitin-Polyak projection algorithm, the proximal point algorithm, the Expectation-Maximization algorithm, the concave-convex procedure, the iterative shrinkage-thresholding algorithm (ISTA), and forward-backward splitting.<sup>[4](https://arxiv.org/html/2211.10942v2)</sup><sup> • </sup><sup>[1](https://math.ac.vn/uploads/files/9701289.pdf)</sup>\n\n## Applications\n\nMachine learning is a major application area. A DC programming approach to feature selection in SVM learning produced classifiers with high correctness rates using fewer features than standard SVMs.<sup>[3](https://ocw.mit.edu/courses/15-097-prediction-machine-learning-and-statistics-spring-2012/06d402cb88ff2cdb8e69b66a5c864b92_MIT15_097S12_proj5.pdf)</sup> Variance-reduced stochastic DCA has been applied to nonnegative principal component analysis, group variable selection in multiclass logistic regression, and sparse linear regression.<sup>[21](https://jmlr.org/papers/volume23/21-1146/21-1146.pdf)</sup> Beyond learning, DCA maintains a global overestimator of the objective and requires no step-size choice, and on quantum relative entropy problems it compares favorably with an interior-point method for linear programs over the quantum relative entropy cone.<sup>[9](https://proceedings.mlr.press/v206/faust23a/faust23a.pdf)</sup> It has been applied to large-scale nonconvex quadratic programming of up to 400,000 dimensions, where a combination with interior point methods outperformed the reference code LOQO, and to portfolio selection problems.<sup>[7](https://onlinelibrary.wiley.com/doi/10.1155/2012/364607)</sup>\n\n## Limitations and alternatives\n\nDCA's guarantees are local. In general it converges to a local solution, although its authors report from numerous experiments that it quite often converges to a global one.<sup>[1](https://math.ac.vn/uploads/files/9701289.pdf)</sup> The iterate sequence \\( \\{x^{k}\\} \\) need not converge even when the objective values do, so additional structure is required to guarantee convergence of the iterates themselves.<sup>[4](https://arxiv.org/html/2211.10942v2)</sup> The algorithm may not be well-defined under an inappropriate DC decomposition, since well-definedness depends on the decomposition and on the solvability of the convex subproblems.<sup>[4](https://arxiv.org/html/2211.10942v2)</sup> Its efficiency depends on two parameters, the selected decomposition and the initial point; in tests on 107 nonconvex quadratic problems, the choice of initialization mattered, and the concave-part initialization became dramatically slower as dimension and constraint count grew.<sup>[22](https://www.pmf.ni.ac.rs/filomat-content/2024/38-3/38-3-23-21317.pdf)</sup> The problem class itself is hard: even some very simple DC programming problems are considered NP-hard, so without detailed structure in \\( g \\) and \\( h \\) no elegant general theory or powerful algorithm should be expected.<sup>[23](https://ar5iv.labs.arxiv.org/html/1607.03426)</sup>\n\nWhen global optimality must be certified, DCA can be embedded in branch-and-bound: in portfolio-selection tests, DCA found a global optimal solution in five of five runs for dimensions 50 to 300, but branch-and-bound was still needed to confirm globality, and the combined B&B-DCA improved branch number and CPU time over general branch-and-bound.<sup>[7](https://onlinelibrary.wiley.com/doi/10.1155/2012/364607)</sup> Canonical duality theory is another alternative, converting a large class of nonconvex minimization problems into a unified concave maximization over a convex domain, solvable under certain conditions.<sup>[23](https://ar5iv.labs.arxiv.org/html/1607.03426)</sup> On the algorithmic side, DCA is exactly the Bregman proximal point algorithm with respect to the component \\( f_{2} \\), and when \\( f_{1} \\) is differentiable it is equivalent to mirror descent with the [Bregman divergence](https://www.edgepedia.org/bregman-divergence) generated by \\( f_{1} \\).<sup>[9](https://proceedings.mlr.press/v206/faust23a/faust23a.pdf)</sup> The various rate statements are reconciled in the published literature: the rate depends on the termination criterion and regularity assumptions, with a worst-case rate of \\( O(1/\\sqrt{N}) \\) after \\( N \\) iterations without strong convexity<sup>[6](https://link.springer.com/article/10.1007/s10957-023-02199-z)</sup>, an \\( O(1/N) \\) rate under an alternative termination criterion<sup>[24](https://arxiv.org/html/2509.11657)</sup>, and descent-based bounds under strong-convexity-type assumptions on the DC components.<sup>[5](https://link.springer.com/article/10.1007/s10898-023-01272-1)</sup>\n\n## References\n\n1. [Convex analysis approach to DC programming: Theory, Algorithms and Applications (Pham Dinh Tao & Le Thi Hoai An, Acta Mathematica Vietnamica 22(1), 287-355, 1997)](https://math.ac.vn/uploads/files/9701289.pdf)\n2. [Philip Hartman (1959). On functions representable as a difference of convex functions. Pacific Journal of Mathematics.](https://doi.org/10.2140/pjm.1959.9.707)\n3. [MIT 15.097 Student Project: DC Programming](https://ocw.mit.edu/courses/15-097-prediction-machine-learning-and-statistics-spring-2012/06d402cb88ff2cdb8e69b66a5c864b92_MIT15_097S12_proj5.pdf)\n4. [On the Convergence Analysis of DCA (Yi-Shuai Niu, arXiv:2211.10942, v2 revised July 2026)](https://arxiv.org/html/2211.10942v2)\n5. [Open issues and recent advances in DC programming and DCA (Journal of Global Optimization, 2023)](https://link.springer.com/article/10.1007/s10898-023-01272-1)\n6. [On the Rate of Convergence of the Difference-of-Convex Algorithm (DCA) (Abbaszadehpeivasti, de Klerk, Zamani, Journal of Optimization Theory and Applications, 2023)](https://link.springer.com/article/10.1007/s10957-023-02199-z)\n7. [A Branch-and-Bound Algorithm Embedded with DCA for DC Programming](https://onlinelibrary.wiley.com/doi/10.1155/2012/364607)\n8. [DCA-based algorithms for DC Fitting (Ho, Le Thi, Pham Dinh)](https://hal.univ-lorraine.fr/hal-03063899v1/document)\n9. [A Bregman Divergence View on the Difference-of-Convex Algorithm (Faust, Fawzi, Saunderson, AISTATS 2023)](https://proceedings.mlr.press/v206/faust23a/faust23a.pdf)\n10. [Duality in nonconvex optimization (Journal of Mathematical Analysis and Applications, 1978)](https://doi.org/10.1016/0022-247x%2878%2990243-3)\n11. [Algorithms for Solving a Class of Nonconvex Optimization Problems. Methods of Subgradients (North-Holland mathematics studies, 1986)](https://doi.org/10.1016/s0304-0208%2808%2972402-2)\n12. [R. Horst, N. V. Thoai (1999). DC Programming: Overview. Journal of Optimization Theory and Applications.](https://doi.org/10.1023/a:1021765131316)\n13. [Le Thi Hoai An, Pham Dinh Tao (2005). The DC (Difference of Convex Functions) Programming and DCA Revisited with DC Models of Real World Nonconvex Optimization Problems. Annals of Operations Research.](https://doi.org/10.1007/s10479-004-5022-1)\n14. [Hoai An Le Thi, Tao Pham Dinh (2018). DC programming and DCA: thirty years of developments. Mathematical Programming.](https://doi.org/10.1007/s10107-018-1235-y)\n15. [Jun-ya Gotoh, Akiko Takeda, Katsuya Tono (2017). DC formulations and algorithms for sparse optimization problems. Mathematical Programming.](https://doi.org/10.1007/s10107-017-1181-0)\n16. [Bo Wen, Xiaojun Chen, Ting Kei Pong (2017). A proximal difference-of-convex algorithm with extrapolation. Computational Optimization and Applications.](https://doi.org/10.1007/s10589-017-9954-1)\n17. [Zhaosong Lu, Zirui Zhou, Zhe Sun (2018). Enhanced proximal DC algorithms with extrapolation for a class of structured nonsmooth DC minimization. Mathematical Programming.](https://doi.org/10.1007/s10107-018-1318-9)\n18. [Francisco J. Aragón Artacho, Ronan M. T. Fleming, Phan T. Vuong (2017). Accelerating the DC algorithm for smooth functions. Mathematical Programming.](https://doi.org/10.1007/s10107-017-1180-1)\n19. [Shota Takahashi, Mituhiro Fukuda, Mirai Tanaka (2022). New Bregman proximal type algorithms for solving DC optimization problems. Computational Optimization and Applications.](https://doi.org/10.1007/s10589-022-00411-w)\n20. [Jong-Shi Pang, Meisam Razaviyayn, Alberth Alvarado (2016). Computing B-Stationary Points of Nonsmooth DC Programs. Mathematics of Operations Research.](https://doi.org/10.1287/moor.2016.0795)\n21. [Stochastic DCA with Variance Reduction and Applications in Machine Learning (JMLR 23(206), 2022)](https://jmlr.org/papers/volume23/21-1146/21-1146.pdf)\n22. [Initialization of the difference of convex functions optimization algorithm for nonconvex quadratic problems (Filomat 38:3, 2024)](https://www.pmf.ni.ac.rs/filomat-content/2024/38-3/38-3-23-21317.pdf)\n23. [On modeling and global solutions for d.c. optimization problems by canonical duality theory](https://ar5iv.labs.arxiv.org/html/1607.03426)\n24. [Improved Rates for Stochastic Variance-Reduced Difference-of-Convex Algorithms (DCA-PAGE)](https://arxiv.org/html/2509.11657)\n\n---\n*Topic: Encyclopedia › Physical world and mathematics › Mathematics and statistics › Analysis and mathematical models › Numerical analysis and computation › Optimization algorithms*\n\n*Initially written Sep 29, 2026 · Reviewed: Sep 30, 2026 · Edited: Sep 30, 2026 · Last review: Sep 30, 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/dc-programming",
 "markdown_url": "https://www.edgepedia.org/dc-programming.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": "\"DC programming\", Edgepedia (EdgeChat), https://www.edgepedia.org/dc-programming. Edgepedia Community License 1.0.",
 "credit_md": "\"[DC programming](https://www.edgepedia.org/dc-programming)\", Edgepedia (EdgeChat), [https://www.edgepedia.org/dc-programming](https://www.edgepedia.org/dc-programming). [Edgepedia Community License 1.0](https://www.edgepedia.org/edgepedia/license).",
 "credit_html": "\"<a href=\"https://www.edgepedia.org/dc-programming\">DC programming</a>\", Edgepedia (EdgeChat), <a href=\"https://www.edgepedia.org/dc-programming\">https://www.edgepedia.org/dc-programming</a>. <a href=\"https://www.edgepedia.org/edgepedia/license\">Edgepedia Community License 1.0</a>.",
 "speakable": "DC programming is an optimization framework for minimizing a function expressed as a difference of two convex functions, applied to nonconvex problems in machine learning and finance."
}
