hrefspace

 找回密码
 立即注册
搜索
热搜: PHP PS 程序设计
查看: 1321|回复: 9

最少分组方案算法

[复制链接]

557

主题

557

帖子

1898

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1898
发表于 2023-10-2 16:11:18 | 显示全部楼层 |阅读模式
一组两两不等的正整数,如何划分成最少的组数,
使得每组里所有数之积均不大于给定的数值?


比如,
求将前 172 个素数的最少分组组数方案,
使得每组数之积均小于 $2^32$ ?
(显然最少分组组数极限值= $|~ ln(1024#)/ln(2^32) ~| = 45$,但估计很难达到,我现在可做到 47

其实,也可换个提法:
给定一个大整数N(已知其因数分解),及一个给定的正整数L,
请用最少数目的整数,使其乘积=N,且每个数均不大于L
  1. { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013, 1019, 1021 };
复制代码
备注:
1、最佳方案可能不止一种,提供一个即可;
2、所用算法应具有良好的扩展性;
3、请提供源代码,并附原理介绍;
4、对最佳解答者将可获得本次的 100 分悬赏!
回复

使用道具 举报

0

主题

162

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-2 16:12:11 | 显示全部楼层
我写了一个用回溯法暴力搜索的程序,前天半夜 12 点半才调试好(几年没写程序了,手生了好多)。

然后运行解问题1:对 1024 以内的素数分组。我以为一觉起来就有结果,没想到运行了差不多两天了还没出结果。

刚才我试着解问题2,瞬间就得到了少一组的解。仔细对比一下 93 组与 92 组的结果,发现不同的地方只在最后几组:


93 组:

No. 91 :    113 107 103 101
No. 92 :    89 83 73 67 59
No. 93 :    41

92 组:

No. 91 :    113 107 103 83 41
No. 92 :    101 89 73 67 59


第 93 组只有一个孤零零的 41 ,腾挪的余地非常大,所以才让我的程序幸运地很快就找出来。一般情况下,只能老老实实面对组合爆炸产生的海量运算。

解第一个问题的程序已经运行了 1 天零 17 个钟头了,但还没计算出一个 46 组的解。我猜 47 组是最优结果了,希望放在放假的 3 天内能算出来。

程序写得很烂,各位帮忙看看有没有改进的地方。
回复

使用道具 举报

0

主题

216

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-2 16:12:49 | 显示全部楼层
大家在关注奥运赛况时,也请挤点时间来考虑这个问题(应该不难)。

奇怪,悬赏帖只有“快速回复”模式?!太不方便了!
不过一些 Discuz! 代码标签依旧还是可用滴

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0

主题

202

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-2 16:13:19 | 显示全部楼层
你还不如用普通方式
但使用转帐方式奖励
==========
呵呵
100后面加个0就好了
回复

使用道具 举报

0

主题

186

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-2 16:14:02 | 显示全部楼层
我想遗传算法是不是更好些?
回复

使用道具 举报

0

主题

202

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-2 16:14:24 | 显示全部楼层
设每个数字的对数的算术平均值作为选择参数
某个组数字变换成1则会减少分组数
回复

使用道具 举报

0

主题

185

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-2 16:14:38 | 显示全部楼层
确实,发普通主题帖,然后声明用转帐方式奖励更好。

就给定的数据来说,用常规的整型变量即可,没必要用浮点的对数。

遗传算法——我不清楚,怎么用?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0

主题

185

帖子

29

积分

新手上路

Rank: 1

积分
29
发表于 2023-10-2 16:15:06 | 显示全部楼层
不好解释
你自己查去吧
回复

使用道具 举报

0

主题

206

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-2 16:15:40 | 显示全部楼层
我估计你的题目没有45组的解
回复

使用道具 举报

0

主题

189

帖子

163

积分

关内侯

Rank: 2

积分
163
发表于 2023-10-2 16:16:27 | 显示全部楼层
我觉得很难求最优解

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|hrefspace

GMT+8, 2024-11-22 21:19 , Processed in 0.072085 second(s), 22 queries .

Powered by hrefspace X3.4 Licensed

Copyright © 2022, hrefspace.

快速回复 返回顶部 返回列表