找回密码
 欢迎注册
楼主: gxqcn

[悬赏] 最少分组方案算法

[复制链接]
 楼主| 发表于 2008-8-14 07:55:07 | 显示全部楼层
我有一个简单算法,可以非常高效地得到较优的解,
但无法保证(或证明)是最优解。

看两周内是否有更妙的算法,
否则我将把它公开,让大家来一起探讨。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
回复

使用道具 举报

发表于 2008-8-14 08:43:31 | 显示全部楼层
贪心算法么?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
回复

使用道具 举报

 楼主| 发表于 2008-8-14 09:30:24 | 显示全部楼层
原帖由 无心人 于 2008-8-14 08:43 发表
贪心算法么?


也许算是吧。
(刚查了手头一本书,有“贪婪算法”这个提法,
我对这些专业术语把握得不是太准)
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
回复

使用道具 举报

发表于 2008-8-14 09:42:23 | 显示全部楼层


就是每次都捡大数字组合在一起
直到不满足条件
再换下一组
叫贪心或者贪婪算法
名字不同而已
但应该效果不是最好

遗传算法
我想
是随机组合成两个解
再根据特定算法,(比如随机组合)
将两个解每组当作一个基因,进行基因的组合
如果有解基因数量不同。短的补1即可
得到新的两个解
如此不断分裂
中间可能会出现某个解的两个基因远小于给定数字
将之组合成一个基因,称为进化


瞎说的,大家也可优化下具体过程
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
回复

使用道具 举报

 楼主| 发表于 2008-8-14 09:57:34 | 显示全部楼层
楼上的前半部与我的算法原理基本吻合。

用该算法,可将 1024! (把它看作前 1024 个正整数序列)分解成 292 个可用 DWORD 表达的整数之积。
而 1024! 有 8770bits,故最少分组数极限值 = ceil(8770/32) = 275,
292 / 275 * 100% = 106.18%,效果还是很不错的。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
回复

使用道具 举报

发表于 2008-8-14 10:06:15 | 显示全部楼层


还有一个挑选原则
是乘后尽量大

可以用对数加快测试速度
设已有的数字的二为底的对数和为x
找对数值最接近32-x的剩余数字
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
回复

使用道具 举报

发表于 2008-8-14 10:08:19 | 显示全部楼层
如果以对数做方程的系数
0或者1做方程的解
还可以列一个线性不等式组

但以LZ的例子
要172 X 172个项了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
回复

使用道具 举报

发表于 2008-8-14 11:41:45 | 显示全部楼层
求这类复杂问题的近似最优解一般的通用的较高级方法有模拟退火,遗传算法,神经网络等等。
这个恐怕用遗传算法不会有什么益处。
用贪心是最直接的想法,可以快速得出一些结论。
我提一种贪心规则,不知效果如何:
1、S={前172个素数}
2、在集合S的所有4-tuple中,取其积不超过Bound的最大者,然后从S中去掉
3、if |S| > X then goto 2 else 穷举 S的分划,求最优解。
对上面算法的一点分析:
步骤1的复杂度小于 C(n,4)+C(n-4,4)+...,为O(n^5). n=172 时 <318015874 。计算机可解
需要选取适当的X,比如我们想进行10^9次计算,则有分划的近似公式
比如:p(X)=e^(2.56*X^0.5) /6.9X , p(X)=10^9 , X=115
当X=|S|时,即位实际的最优解,计算量在10^11的数量级,比较大,PC难于计算
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
回复

使用道具 举报

 楼主| 发表于 2008-8-14 13:56:11 | 显示全部楼层
我的算法相对比较简单,
得到上述 13# 结果的代码总共不超过30行(其中8行是大括号)。
(即:将前1024个正整数分组,使每组数之积可用 DWORD 型表达)
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
回复

使用道具 举报

发表于 2008-8-14 17:00:07 | 显示全部楼层
  , 问一下,你得到47组的用多长时间
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-18 11:08 , Processed in 0.042872 second(s), 13 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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