javascript - 请教一个算法问题,关于求矢量和的问题
怪我咯
怪我咯 2017-04-10 13:10:09
[JavaScript讨论组]

现在一个吊扇有32个叶片,并且每个叶片质量不一样,因此其叶片的离心力矢量和会导致吊扇剧烈振动,现请教一个算法,如何用程序循环得出能够使得这些叶片的矢量和最小的组合?以javascript为例,目前项目需要,但苦苦冥思几天都难以破解,求智商高的达人

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(1)
高洛峰

智商低禁入的意思呗。

因为你的问题正文不爽好几次了。会好好说话不?

长眼睛了就看看你自己的提问记录,快成SF公敌了。长点心反思反思会死吗?


这是背包问题的变种子集和问题并且是多维度的。我记得解法是伪多项式时间的动态规划。(解的量本身出现在时间复杂度表达式中,时间复杂度不纯是n的函数。)

伪多项式做起来是很啰嗦的,需要按照实际问题的规模,对重量本身做整数化、离散化处理才能做到。

或者也可以考虑用随机化算法(随机爬山法等),在合理的时间内慢慢爬一个不那么差的解。


补充1:

最后的怎么算必须注意一下。不能非常单纯的只把矢量和作为解。因为这样做的结果就是:最优解是空集{},矢量和准确等于0。

对付空集最优,也许可以用阶跃的方法加权(子集大小为0时给解加上+Infinity)。

还有其他问题,比如说所有扇叶一样大的时候,就只会找出两个对侧扇叶的解。对付这个,也许也可以把子集大小当作比较过程中的次要关键字——解一样大(或很接近)的时候多的比较好。

总之就是:多多少少需要把子集的大小,纳入解当中作为考虑。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号