ziji.m
上传用户:cdlibang
上传日期:2016-03-24
资源大小:3k
文件大小:1k
源码类别:

其他数据库

开发平台:

Matlab

  1. function [a]=ziji(b)
  2. %对于一个集合,生成该集合的所有非空非全子集
  3. %结果的记录方式
  4. %a{i}{j}  其中i表示含有i个元素的子集,j表示其中的一个
  5. %生成一项子集
  6. m=length(b);
  7. for i=1:m
  8.     a{1}{i}=b(i);
  9. end
  10. n=floor(m/2);
  11. for i=2:n
  12.     %由K-1项子集生成k项子集
  13.     nm=0;
  14.     l=length(a{i-1});
  15.     for j=1:l
  16.         md=a{i-1}{j};
  17.         [c, ia, ib] = intersect(md, b);
  18.         mx=max(ib);
  19.         if mx<m
  20.             for k=mx+1:m
  21.                 nm=nm+1;
  22.                 a{i}{nm}=union(md,b(k));
  23.             end
  24.         end
  25.     end
  26. end
  27. %由前半生成后半
  28. %如b中含有m个元素,则其m-i项子集为  b减 i项子集
  29. for i=n+1:m-1
  30.     for j=1:length(a{m-i})
  31.         a{i}{j}=setsub(b,a{m-i}{j});
  32.     end
  33. end