[论文解读] Algorithmic concepts for the computation of Jacobsthal's function
本文提出并评估了多种算法方法——暴力法、动态规划、整数线性规划(ILP)以及一种专门的DSA算法——用于计算Jacobsthal函数 $ h(n) = j(p_n\#) $,即最小长度 $ m $,使得每个长度为 $ m $ 的连续整数序列中都包含一个与第 $ n $ 个素数阶乘互素的整数。作者计算了所有 $ n \leq 54 $ 的 $ h(n) $ 和 $ \omega(n) $,对应至251以内的素数,并在附录文件中提供了所有最大连续整数序列(这些序列均不与 $ p_n\# $ 互素)的详尽列表,包括模数、余数和排列表示形式。
The Jacobsthal function has aroused interest in various contexts in the past decades. We review several algorithmic ideas for the computation of Jacobsthal's function for primorial numbers and discuss their practicability regarding computational effort. The respective function values were computed for primes up to 251. In addition to the results including previously unknown data, we provide exhaustive lists of all sequences of the appropriate maximum lengths in ancillary files.
研究动机与目标
- 开发并比较计算Jacobsthal函数 $ h(n) = j(p_n\#) $ 的高效算法方法,即最小的 $ m $,使得每个长度为 $ m $ 的区间都包含一个与第 $ n $ 个素数阶乘互素的整数。
- 计算所有 $ n \leq 54 $ 的 $ h(n) $、$ h^*(n) $ 和 $ \omega(n) $,对应至251以内的素数,扩展已知数值。
- 系统生成并提供所有最大连续整数序列(这些序列均不与 $ p_n\# $ 互素)的详尽列表,以模数、余数和排列格式表示。
- 通过素数分离和约化至 $ \omega(n) $,实现将结果推广至任意无平方因子整数。
提出的方法
- DSA(动态序列算法)通过动态规划计算 $ \psi_{\text{min}}(m,k) $,即使用 $ k $ 个奇素数覆盖 $ m $ 个连续位置所需的最少素数数量。
- ILP(整数线性规划)将覆盖问题建模为二元整数规划问题,目标是最小化覆盖长度为 $ m $ 的序列所用的素数数量,同时通过约束确保每个位置至少能被一个素数整除。
- 暴力法和基础顺序算法(BSA)作为基线方法:BSA尝试在固定数组中最大化覆盖范围,而DSA则通过最小化覆盖范围来寻找最小素数集合。
- 压缩的Jacobsthal函数 $ \omega(n) = j^*(p_n\# / 2) $ 用于简化计算,通过利用恒等式 $ j(2n) = 2j(n) $(当 $ n $ 为奇数时)排除素数2的影响。
- 附录文件以三种表示形式存储所有最大序列:模数(每个位置分配的素数)、余数(模每个素数的剩余类)和排列(所用素数的顺序)。
- 所有算法均在单线程i7系统上实现并测试,ILP结果已根据SYMPHONY中并行执行的性能进行缩放,以确保公平比较。
实验结果
研究问题
- RQ1计算素数阶乘的Jacobsthal函数 $ h(n) = j(p_n\#) $ 时,最高效的算法方法是什么?
- RQ2对于 $ n \leq 54 $,所有整数均与 $ p_n\# $ 共享公因数的连续整数序列的最大长度是多少,即 $ h^*(n) $?
- RQ3如何系统地枚举并以多种格式表示所有不与 $ p_n\# $ 互素的最大连续整数序列?
- RQ4能否通过素数分离和约化至 $ \omega(n) $,使用相同的算法框架计算任意无平方因子整数 $ n $ 的函数 $ j(n) $?
- RQ5随着 $ n $ 增大,不同算法的计算复杂度如何增长?它们在素数数量增加时的可扩展性如何?
主要发现
- 作者计算了所有 $ n \leq 54 $ 的 $ h(n) $,其中 $ h(54) = 858 $,对应第54个素数阶乘 $ p_{54}\# $,且 $ \omega(54) = 428 $,即最大长度为428个连续整数,每个整数至少能被一个不超过 $ p_{54} = 251 $ 的奇素数整除。
- 对于 $ n = 54 $,最大序列长度 $ h^*(54) = 857 $,意味着存在一个857个连续整数的序列,每个整数均与 $ p_{54}\# $ 共享公因数,但不存在长度为858的此类序列。
- DSA算法在计算 $ \psi_{\text{min}}(m,k) $ 方面表现最优,能够高效识别所有最大序列。
- 附录文件包含详尽数据:共1,078个序列对应 $ n = 54 $,模数、余数和排列表示分别存储在独立文件中,便于直接比较。
- 所有算法的计算成本随 $ n $ 增大而迅速增长,即使经过并行执行的缩放调整,ILP的耗时仍最高。
- 结果扩展了已知的 $ h(n) $ 值,突破了先前记录,其中 $ h(54) = 858 $ 是此前未知的新值。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。