如何解决有约束条件的排列组合问题

要求节点0作为路径的起点和终点,现有3,4,5这三个节点,排列组合后会产生6条路径0-3-4-5-0、0-3-5-4-0、0-4-3-5-0、0-4-5-3-0、0-5-3-4-0、0-5-4-3-0. 但是后三条路径与前三条路径是对称的。现在想如何直接生成前三条路径,而不是在生成6条路径用条件后删除后三条路径。

多谢大神们解答。

例如以下代码中的Chrom01中包含对称路径,导致矩阵元素过多。

for i=5
    T=1:9;
    Chrom1=nchoosek(T,i);%从1到9中随机选取4个数进行不同组合
    k1=size(Chrom1,1);
    Chrom1=Chrom1+1;
    %% 对i个节点进行“排列”得到Chrom01(Chorm01中存在对称路径)
    Chrom01=[];
    for ii=1:k1
        q=perms(Chrom1(ii,:));
        Chrom01=[Chrom01;q];
    end
   
end