|
看了一下subsetsum@home项目主页,有几点疑问
subsetsum问题:
子集和问题 给定一个n个整数的集合X = {x1, x2, …, xn}和整数Y,找出和等于Y的X的子集subX。 比如说,如果X ={10,20,30,40,50,60} 和 Y = 60 则有三种不同长度的解,它们分别是 subY = {10,20,30},{20,40} 和{60}
这个项目貌似是要验证一个假设:
集合X(元素都是正整数)最大的元素为m,元素个数为n,元素之和为S。如果 n>[m/2]+1,那么对于任何符合 m<t<S-m 的整数 t 必有一个X的子集使该子集元素的和为t
PS:[a]表示不超过a的最大整数
而项目的过程就是不断随机生成集合来检测符不符合假设
项目的源代码地址:https://github.com/travisdesell/Subset-Sum
问题1:这个项目用的是什么算法来验证假设的? 一般来说,这个问题的算法应该是动态规划,不过我看了源码之后发现貌似还要生成杨辉三角,不知道有什么用?
问题2:在项目的网站上可以看到一些验证的结果,但是其中有不满足假设的结果,那么假设就应该被推翻了,为什么项目还要继续? |
|