ziji.m
上传用户:cdlibang
上传日期:2016-03-24
资源大小:3k
文件大小:1k
- function [a]=ziji(b)
- %对于一个集合,生成该集合的所有非空非全子集
- %结果的记录方式
- %a{i}{j} 其中i表示含有i个元素的子集,j表示其中的一个
- %生成一项子集
- m=length(b);
- for i=1:m
- a{1}{i}=b(i);
- end
- n=floor(m/2);
- for i=2:n
- %由K-1项子集生成k项子集
- nm=0;
- l=length(a{i-1});
- for j=1:l
- md=a{i-1}{j};
- [c, ia, ib] = intersect(md, b);
- mx=max(ib);
- if mx<m
- for k=mx+1:m
- nm=nm+1;
- a{i}{nm}=union(md,b(k));
- end
- end
- end
- end
- %由前半生成后半
- %如b中含有m个元素,则其m-i项子集为 b减 i项子集
- for i=n+1:m-1
- for j=1:length(a{m-i})
- a{i}{j}=setsub(b,a{m-i}{j});
- end
- end