我有一个算法需要两个输入:要添加到M个袋子中的N个元素的集合。
我的算法会生成所有可能的元素分配给m个包。例如:
我们将set = {x1,x2,x3}和bags = {b1,b2}设置为:
-开始1:[b1 = {x1},b2 = {empty}]和[b1 = {empty},b2 = {x1}]
-开始2:[b1 = {x1,x2},b2 = {empty}],[b1 = {x1},b2 = {x2}]和[b1 = {empty},b2 = {x1,x2 }]
等.......
我的问题是:如何在数学上证明我的算法会生成所有可能的分配?
我尝试使用集合的代数来做到这一点:我假设A包含所有可能的赋值,B包含A \ B ^ c,其中B ^ c是一组未生成的分配或B的补码。 因此,让A = B成为我的证明:
AΔB =空集=>(A∩B ^ c)和(B∩A ^ c)=空集
A包含所有可能的赋值,则A ^ c = emptyset => B∩A ^ c = emptyset
但是我无法证明A∩B ^ c = emptyset
请帮助。