Código fuente de Matlab de un algoritmo
1. Parece que k del bucle while siempre es fijo, que es el número de conjuntos de 2 elementos frecuentes. ¿No tiene que cambiar el número de k después de obtener conjuntos frecuentes de 3 elementos? ¿Cómo manifestarlo?
2. Hay dos bucles for grandes en el programa, pero se descubrió que el segundo bucle for finalizará siempre que encuentre un conjunto frecuente de 3 elementos, pero debería haber otros 3 frecuentes. -conjuntos de elementos. ¿No debería ejecutarse el bucle for incondicionalmente hasta el final del parámetro K? En ese momento, el valor de k era 15, pero al final del programa, i = 2, j = 3, y luego J no ejecutó la parte 4 hasta k. Por favor dame algún consejo. Esto es urgente...
mientras(k>0)
le = longitud(candidato{1});
num = 2;
nl = 0;
Para i=1:k-1
Para j=i+1:k
x 1 = Candidato { I }; el valor inicial de %candidate es el conjunto frecuente de 2 elementos, que representa el elemento I del conjunto de elementos frecuentes.
x2 = candidato { j };
c = intersección(x1, x2
m = 0
r =; 1;
nn = 0;
l 1 = 0
si (longitud (c) = = le-1)& (suma( c = = x 1(1:le-1))= = le-1)
Huxuan=union(x1(1:le),x2(le));
% Poda de árboles, si un subconjunto de los elementos K-1 del candidato es poco frecuente, se podará.
sub_set=subset(Huxuan);
% genera todos los subconjuntos K-1 de este candidato.
NN = longitud (sub_set);
% determina si estos elementos K-1 son frecuentes.
Y (r & ampM & ltNN)
M = M+1;
r=in(sub_set{M}, candidato);
Fin
Si M==NN
nl = nl+1;
% k conjuntos de elementos candidatos
cand { nl } =houxuan;
%Registre el número de apariciones de cada conjunto de elementos K candidatos.
le = length(cand { 1 });
Porque i=1:m
s = cand { nl }; >x=X(i,);
si suma(x(s))==le
nn = nn+1;
Fin p> p>
Fin
Fin
Fin
% Encuentra conjuntos de elementos frecuentes del conjunto candidato
Si nn y gt =th
ll = ll+1;
candmid { nl } = cand { nl }
pfxj(nl). elemento = cand { nl };
pfxj(nl). Time = nn
Disp('Obtener conjuntos de elementos frecuentes:')
Resultado=(cand mid { nl });
disp(resultado);
Fin
Fin
Fin
Fin