请教一个算法问题,关于求矢量和的问题

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

阅读 3.5k
1 个回答

智商低禁入的意思呗。

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

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


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

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

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


补充1:

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题