分区问题

分区问题（英語：Partition problem）是数论和计算机科学领域的问题，目的是把一个多重集 S {\displaystyle S} 分为 S 1 {\displaystyle S_{1}} 和 S 2 {\displaystyle S_{2}} 两个子集，要求 S 1 {\displaystyle S_{1}} 和 S 2 {\displaystyle S_{2}} 这两个集合中所有数的和相等。尽管分区问题属于NP完全问题，但是依然存在伪多项式时间的动态规划解法，而且在很多情况下也存在启发式的解法，能够求出最优解或近似最优解。正是基于这一点，这类问题也被称为“最简单的难题”。 分区问题存在一个最佳化問題，该问题是将 S {\displaystyle S} 分为 S 1 {\displaystyle S_{1}} 和 S 2 {\displaystyle S_{2}} ，要求 S 1 {\displaystyle S_{1}} 中元素的和与 S 2 {\displaystyle S_{2}} 中元素的和相差最小。这一问题属于NP困难问题，但在实践中依旧存在高效的解法。 分区问题是以下两个相关问题的特殊情况： 子集和问题：从集合 S {\displaystyle S} 找到一个子集，使其所有元素的和等于一给定值 T {\displaystyle T} （分区问题就是T为 S {\displaystyle S} 所有元素之和的 1 2 {\displaystyle {\frac {1}{2}}} 时的特殊情况） 多路数字分区：将集合 S {\displaystyle S} 分为 k {\displaystyle k} 个子集，要求每个子集的元素之和都相等（分区问题就是 k = 2 {\displaystyle k=2} 时的特殊情况） 但是需要注意的是，三分区问题与分区问题有很大不同，三分区问题要求每个子集中都有3个元素。三分区问题比分区问题更难，甚至连伪多项式时间算法都不存在，除非满足P=NP。 现有多重集 S = 3 , 1 , 1 , 2 , 2 , 1 {\displaystyle S={3,1,1,2,2,1}} ，可以被分为 S 1 = 1 , 1 , 1 , 2 {\displaystyle S_{1}={1,1,1,2}} 以及 S 2 = 2 , 3 {\displaystyle S_{2}={2,3}} ，两者元素之和皆为5。 Korf 1998. Hayes, Brian, The Easiest Hard Problem (PDF), American Scientist, vol. 90 no. 2 (Sigma Xi, The Scientific Research Society), March–April 2002: 113–117 [2022-03-01], JSTOR 27857621, （原始内容存档 (PDF)于2012-09-16）  Mertens 2006，第125頁. Korf, Richard E. Multi-Way Number Partitioning (PDF). IJCAI. 2009 [2022-03-01]. （原始内容存档 (PDF)于2014-11-27）.  Garey, Michael; Johnson, David. Computers and Intractability; A Guide to the Theory of NP-Completeness. 1979: 96–105. ISBN 978-0-7167-1045-5.  Borgs, Christian; Chayes, Jennifer; Pittel, Boris, Phase transition and finite-size scaling for the integer partitioning problem, Random Structures and Algorithms, 2001, 19 (3–4): 247–288, CiteSeerX 10.1.1.89.9577 , doi:10.1002/rsa.10004  Gent, Ian; Walsh, Toby. Phase Transitions and Annealed Theories: Number Partitioning as a Case Study. Wolfgang Wahlster (编). Proceedings of 12th European Conference on Artificial Intelligence. ECAI-96. John Wiley and Sons: 170–174. August 1996. CiteSeerX 10.1.1.2.4475 .  Gent, Ian; Walsh, Toby, Analysis of Heuristics for Number Partitioning, Computational Intelligence, 1998, 14 (3): 430–451, CiteSeerX 10.1.1.149.4980 , S2CID 15344203, doi:10.1111/0824-7935.00069  Korf, Richard E., A complete anytime algorithm for number partitioning, Artificial Intelligence, 1998, 106 (2): 181–203, CiteSeerX 10.1.1.90.993 , ISSN 0004-3702, doi:10.1016/S0004-3702(98)00086-1  Mertens, Stephan, Phase Transition in the Number Partitioning Problem, Physical Review Letters, November 1998, 81 (20): 4281–4284, Bibcode:1998PhRvL..81.4281M, S2CID 119541289, arXiv:cond-mat/9807077 , doi:10.1103/PhysRevLett.81.4281  Mertens, Stephan, A physicist's approach to number partitioning, Theoretical Computer Science, 2001, 265 (1–2): 79–108, S2CID 16534837, arXiv:cond-mat/0009230 , doi:10.1016/S0304-3975(01)00153-0  Mertens, Stephan. The Easiest Hard Problem: Number Partitioning. Allon Percus; Gabriel Istrate; Cristopher Moore (编). Computational complexity and statistical physics. USA: Oxford University Press. 2006: 125–140 [2022-03-01]. Bibcode:2003cond.mat.10317M. ISBN 9780195177374. arXiv:cond-mat/0310317 . （原始内容存档于2017-04-05）.  Mertens, Stephan, A complete anytime algorithm for balanced number partitioning, 1999, arXiv:cs/9903011