编程序解决组合数学问题,程序效率不高咋办
这么久都没人回答……手机党只好,手写证明了……
很多细节没办法补充,如果你在我面前的话,还能跟你说……不过上面那些结论,可以做出严谨的证明。对了,那个C集合是不可选的元素集合。
■网友
设B中最大元素为S,则B至多有S个元素。
那么把这个S个元素两两配对,(1,S-1),(2,S-2)。。那么可知,B中元素必定是从这些配对中至多每对取一个(一般情况下,有些配对的两个元素一个都没取)。那么可以估计B中元素的数目至多为S/2个(取整什么的细节先不管)。
上面只是一个简单的对于B中元素数目的简单估计。估计结果就是大致是原集合的一般左右。
那么根据上面的想法,可以尝试构造如下:
B={1008,1009,。。。,2015},即将比2015/2大的元素都挑出来。
B={1,3,5,。。。,2015},即将奇数都挑出来。
【编程序解决组合数学问题,程序效率不高咋办】 将2015个元素分成4分,取第二份和第四份。
将2015个元素分成8分,取第2、4、6、8份。
类似分成16份,32份,64份,128份,256份,512份等等,顺着取差不多就行了。不过分得越多分,每份的边缘不一定都会取进去,这样分多了反而浪费。具体计算一下哪个取法多好了。
基本上估计结果就是一半左右了。
暂时想到这么多。。
■网友
设A={1,2,……,N},B={x,x∈A且mod(x,2)=1},即B就是A中所有奇数的集合。因为三个奇数满足x+y≠z,这样计算量就减少了一半。接下来考虑往B中加入偶数,再对偶数细分,将mod(x,2)=0分成两类mod(x,4)=0和mod(x,4)=2,可以证明下B1=B∪{x,x∈A且mod(x,4)=0}是否满足x+y≠z,若不满足则再将mod(x,4)=0细分为mod(x,8)=0和mod(x,8)=4两种情况,以此类推……算法思路就这样。
推荐阅读
- 蟹爪兰叶子软塌,难复花,“根源”在这里,解决后开花一茬接一茬
- 贵州在建骨干水源工程达到465座有效解决工程性区域性缺水问题
- 长春社区开设助老餐厅探索解决老人“吃饭难”
- 互联网怎样解决“家政服务上门速度慢”的问题
- 咋解决电信营业厅对http网址的污染
- 封面新闻|耀出行:滴滴解决你代步的“温饱”问题,我来满足你出行的仪式感需求
- 植物|花卉生长不好,这样养轻松解决!夏天温度高
- 特斯拉|最前线 | 特斯拉首席设计师Franz:设计是要解决问题,艺术追求个人化
- 动态规划能得到一类问题的最优解,比如背包问题用动态规划来解决,怎样证明这个解就是相对应问题的最优解呢
- 家用路由器解决了用户啥需求是否有更好的办法解决用户需求
