に5組に行列をパーティションIはMatlabの
sV:=[0 -1;
1 1;
1 0;
2 1;
2 0;
3 1;
3 0]
がマトリックスsV
は、その要素上記1x2
行ベクトルである集合を表していることを想像してマトリックスを有しています。
sV
を5つの空でないセット(140からhere)に分割する方法はいくつかあります。
例えば5分割sV
の方法がある:
{(0,-1)}
{(1,1)}
{(1,0)}
{(2,1)}
{(2,0), (3,2), (3,0)}
分割セットの可能カーディナリティは(順序を考慮せず)1,1,1,1,3
又は1,1,1,2,2
あります。
QUESTION:
はあなたが
V_all{1,1}
は、パーティショニングセットは持っているsV
ように5-分割セットのすべての可能な方法をリストmx5
細胞であることをV_all
な1x2
セルを構築するために私を助けてもらえカーディナリティー1,1,1,1,3
。具体的には、任意のJ = 1、...、M、V_all{1,1}{j,1}
が1x2
ベクターであるべきで、V_all{1,1}{j,2}
は1x2
ベクターであるべきで、V_all{1,1}{j,3}
は1x2
ベクターであるべきで、V_all{1,1}{j,4}
は1x2
ベクターであるべきで、V_all{1,1}{j,5}
は3x2
ベクターであるべきです。
V_all{1,2}
は、パーティショニング・セットが、それぞれ、カーディナリティ1,1,1,2,2
を有するsV
ようにセットし、5分割のすべての可能な方法を列挙nx5
細胞です。具体的には、任意のJ = 1、...、N、V_all{1,1}{j,1}
が1x2
ベクターであるべきで、V_all{1,1}{j,2}
は1x2
ベクターであるべきで、V_all{1,1}{j,3}
は1x2
ベクターであるべきで、V_all{1,1}{j,4}
は2x2
ベクターであるべきで、V_all{1,1}{j,5}
は2x2
ベクターであるべきです。
m+n=140
に注意してください。
ここで私の試み。 140以上のパーティションがあるため、エラーが発生する可能性があります。
%3+1+1+1+1
k=3;
M=reshape(sV(nchoosek(1:size(sV,1),k),:),[],k,size(sV,2));
V_1=cell(size(M,1),2);
for p=1:size(M,1)
V_1{p,1}=squeeze(M(p,:,:));
left=~ismember(sV, V_1{p,1}, 'rows');
V_1{p,2}=sV(left,:);
end
%Rearrange
for j=1:size(V_1,1)
V_1new{j,1}=V_1{j,1};
V_1new{j,2}=V_1{j,2}(1,:);
V_1new{j,3}=V_1{j,2}(2,:);
V_1new{j,4}=V_1{j,2}(3,:);
V_1new{j,5}=V_1{j,2}(4,:);
end
V_all{1,1}=V_1new;
%2+2+1+1+1
k=4;
M=reshape(sV(nchoosek(1:size(sV,1),k),:),[],k,size(sV,2));
V_2=cell(size(M,1),2);
for p=1:size(M,1)
V_2{p,1}=squeeze(M(p,:,:));
left=~ismember(sV, V_2{p,1}, 'rows');
V_2{p,2}=sV(left,:);
end
k=2;
count=0;
for j=1:size(V_2,1)
M=reshape(V_2{j,1}(nchoosek(1:size(V_2{j,1},1),k),:),[],k,size(V_2{j,1},2));
V_2_22=cell(size(M,1),2);
for p=1:size(M,1)
V_2_22{p,1}=squeeze(M(p,:,:));
left=~ismember(V_2{j,1}, V_2_22{p,1}, 'rows');
V_2_22{p,2}=V_2{j,1}(left,:);
end
for l=1:size(V_2_22,1)
V_2new{count+l,1}=V_2_22{l,1};
V_2new{count+l,2}=V_2_22{l,2};
V_2new{count+l,3}=V_2{j,2}(1,:);
V_2new{count+l,4}=V_2{j,2}(2,:);
V_2new{count+l,5}=V_2{j,2}(3,:);
end
count=size(V_2new,1);
end
V_all{1,2}=V_2new;
十分。あなたは*何でも試しましたか? – thewaywewalk
2つのパーティショニングセットが必要な場合は、このコードがあります。 2つのパーティショニングセットにそれぞれカーディナリティ3,4が必要であるとします。すべての可能なパーティションを作成するためのコードは.... – user3285148
k = 3;M = reshape(sV(n:1)size(sV、1)、k)、:)、[]、k、size(sV、2)); V_34 =セル(サイズ(M、1)、2); (M、1) V_34 {p、1} =スクイーズ(M(p、:、:) :); left =〜ismember(sV、V_34 {p、1}、 'rows'); V_34 {p、2} = sV(left、:); end – user3285148