Skip to main content
QUICK REVIEW

[论文解读] Generating All Partitions: A Comparison Of Two Encodings

Jerome Kelleher, Barry O’Sullivan|arXiv (Cornell University)|Sep 12, 2009
Advanced Combinatorial Mathematics参考文献 45被引用 17
一句话总结

本文提出了三种新算法,通过升序组合生成所有整数分拆——为传统降序组合编码提供了一种更高效的替代方案。通过系统比较递归、转移规则和顺序生成三种方法,作者证明升序组合生成显著更快,时间需求减少至降序组合方法的约73–75%,并获得强有力的理论与实证验证。

ABSTRACT

Integer partitions may be encoded as either ascending or descending compositions for the purposes of systematic generation. Many algorithms exist to generate all descending compositions, yet none have previously been published to generate all ascending compositions. We develop three new algorithms to generate all ascending compositions and compare these with descending composition generators from the literature. We analyse the new algorithms and provide new and more precise analyses for the descending composition generators. In each case, the ascending composition generation algorithm is substantially more efficient than its descending composition counterpart. We develop a new formula for the partition function p(n) as part of our analysis of the lexicographic succession rule for ascending compositions.

研究动机与目标

  • 开发基于升序组合的高效算法,用于生成所有整数分拆,该编码方式相较于降序组合研究较少。
  • 解决尽管升序组合具有潜在效率优势,但目前尚无已发表的生成升序组合算法的问题。
  • 在递归、转移规则和顺序生成三种标准算法范式下,严格分析并比较升序与降序组合生成算法的性能。
  • 通过升序组合的算法分析,推导出新的数学结果,包括一个关于分拆函数 $ p(n) $ 的新公式。
  • 通过Java和C语言实现的实证基准测试,验证理论性能预测。

提出的方法

  • 设计并实现三种新的递归算法,用于生成升序组合,分析其摊销时间复杂度。
  • 提出一种新的字典序转移规则,用于升序组合,实现无状态、常数时间的分拆间转换。
  • 通过利用字典序结构特性,提出一种高效的升序组合顺序生成算法。
  • 应用Kemp对读写操作次数的抽象方法,对算法效率进行精确的理论分析。
  • 将新提出的升序组合算法与文献中已有的降序组合生成器在理论和实证性能上进行对比。
  • 通过在Java和C语言中对多个输入规模($ n = 100 $ 至 $ 135 $)的实证基准测试,验证理论预测。

实验结果

研究问题

  • RQ1鉴于该领域此前无相关已发表工作,能否开发出高效算法,通过升序组合生成所有整数分拆?
  • RQ2在不同算法范式(递归、转移规则、顺序生成)下,升序组合生成的性能与降序组合生成相比如何?
  • RQ3能否利用Kemp的读写操作抽象方法,对降序组合生成器实现更精确的理论分析?
  • RQ4升序组合的字典序转移规则是否能实现常数时间转换?与降序组合的 $ O(\bar{\sqrt{n}}) $ 时间复杂度相比有何差异?
  • RQ5能否通过升序组合生成的结构分析,推导出分拆函数 $ p(n) $ 的新公式?

主要发现

  • 使用顺序方法的新型升序组合生成算法(AccelAsc)所需时间仅约为降序组合生成器(AccelDesc)的73–75%,实证比值在0.74–0.85之间,具体取决于输入大小和实现语言。
  • AccelAsc与AccelDesc之间时间比的理论预测值为73–74%,与实证结果高度吻合,尤其在C语言中相关性极强($ r_{\text{C}} = 0.9321 $)。
  • 尽管两者均为摊销时间复杂度常数,但递归升序组合生成器的速度约为Ruskey的递归降序组合生成器的两倍。
  • 升序组合的字典序转移规则在每次转换中均保持常数时间,而降序组合规则需 $ O(\sqrt{n}) $ 时间,展现出显著的渐近优势。
  • 通过分析字典序转移规则,推导出分拆函数 $ p(n) $ 的新公式,提供了一个涉及分拆中最大部分与次大部分的新型组合恒等式。
  • 证明了一个新的组合恒等式:最大部分小于次大部分两倍的 $ n $ 的分拆数量,等于 $ n-2 $ 的分拆数量,该结论通过算法分析得到验证。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。