Sunteți pe pagina 1din 17

INSTITUTO TECNOLGICO

SUPERIOR DE MISANTLA

Algoritmo de agrupamiento basado


en hipergrafos.
PRESENTA

CECILIA GABRIELA VELZQUEZ RUZ


NEFTAL ZACARAS GARCA

DOCENTE

M. I. A. ELVA MARA NOVOA DEL TORO

MISANTLA VERACRUZ, JUNIO DE 2015

RESUMEN
El clustering es un proceso de descubrimiento en datos y puede ser usado
para agrupar los objetos de una base de datos dentro de subclases tiles lo cual
servira de base para otras tcnicas de anlisis de datos.
En este trabajo se implementa un algoritmo de agrupamiento para un
conjunto de datos basado en un modelo de hipergrafo. El hipergrafo es construido
a partir de un grafo de triangulacin Delaunay de los datos de entrada, el cual
permite representar el grado de proximidad de los puntos que conforman los
tringulos. Despus se particiona el hipergrafo de manera que el peso total de las
hiperaristas sea minimizado. Por ltimo, se agrupan los puntos que formen parte
de las mismas hiperaristas para obtener como resultado los cluster finales
obtenidos de la particin.
A continuacin se presenta el desarrollo del algoritmo de agrupamiento
basado en hipergrafos, el cual se implement en tres diferentes conjuntos de
datos. Se requiri que la distribucin espacial de los datos se encontrara de
manera dispersa, densa y combinada, para observar el comportamiento del
algoritmo. Y poder comprobar si la tcnica empleada para la representacin del
grado de proximidad de los datos fue prctica.

INTRODUCCIN
La agrupacin automtica de datos que comparte caractersticas similares
sin conocer a qu pertenecen es llamada clustering [1]. El clustering o
agrupamiento de datos se utiliza para explicar las caractersticas de la distribucin
de los datos. Por ejemplo, en muchos negocios se puede aplicar clustering para
determinar grupos de diferentes clientes y permitir a las empresas dar soluciones
personalizadas o predecir patrones de compra basados en la agrupacin a la que
pertenecen.
Existen diversos algoritmos para la agrupacin de datos, uno de ellos es el
algoritmo de agrupamiento basado en hipergrafos. El cual usa un hipergrafo para
representar un conjunto de datos, en donde los vrtices representan los puntos de
datos y las hiperaristas ponderadas representan las similitudes entre los puntos
[1].
Un hipergrafo es un grafo en el cual una arista puede conectar ms de dos
vrtices. Es decir, una arista (hiperarista) es un subconjunto de vrtices [2]. Un
hipergrafo provee ms beneficios que un grafo sobre el modelado de un conjunto
de datos. Una de las principales ventajas es que un modelo de hipergrafo permite
representar efectivamente relaciones
En este trabajo implementamos un algoritmo de agrupamiento que usa un
hipergrafo para representar un conjunto de datos espacial. El hipergrafo es
inicialmente construido de un grafo de triangulacin Delaunay del conjunto de
puntos de datos. Las ventajas de generar hiperaristas ponderadas usando el grafo
de triangulacin Delaunay es que los puntos de datos que estn muy separados
podran ser completamente desconectados importantes entre puntos de datos en
una estructura de datos poco densa. [3] en el hipergrafo [1]. Y otra es que en
regiones densas, las secciones de puntos de datos estn estrechamente
definidas, por lo tanto las hiperaristas ponderadas tienden a ser ms grandes [1].
En regiones dispersas, las secciones de puntos de datos estas definidas ms
ampliamente y aqu el peso de las hiperaristas tiende a ser ms pequea.
Despus de obtener las hiperaristas con mayor peso, se agrupan aquellas que
tengan similitudes entre ellas para obtener los cluster finales.

ESTADO DEL ARTE


A continuacin se analizan artculos donde se describen algoritmos de
agrupamiento similares al que se est implementando, en este caso la semejanza
que comparten tales algoritmos es el uso de hipergrafos para representar un
conjunto de datos.
(Clustering basado en hipergrafos en conjuntos de datos de alta
dimensionalidad: Un resumen de resultados, Han Eui-Hong, Universidad de
Minnesota, 1998). En este artculo proponen un mtodo para el agrupamiento de
los datos en un espacio de alta dimensin basado en un modelo de hipergrafos.
Utilizan un algoritmo de particionamiento de hipergrafos para encontrar una
particin de los vrtices de manera que los elementos de los datos de cada
particin estn altamente relacionados y el corte de las hiperaristas sea
minimizado. Los resultados de sus experimentos fueron prometedores para los
datos de agrupaciones de espacios de dimensionalidad alta.
(Hypergraph based geometric biclustering algorithm, Zhiguan Wang, City
University of Hong Kong, Mayo 2012). Presentan un algoritmo biclustering
geomtrico basado en hipergrafos (HGBC). Usan la transformada de Hough para
encontrar sub-biclusters los cuales corresponden a estructuras en espacios
columna-par. Construyeron un modelo de hipergrafos para mezclar los subbiclusters en los ms grandes y reducir la complejidad computacional de
fusionarlos. Los experimentos realizados sobre datos biolgicos simulados y
reales arrojaron que el algoritmo propuesto puede combinar los sub-biclusters de
forma eficiente y proporcion resultados de clasificacin ms precisos en
comparacin con los mtodos actuales de biclustering.
(High-dimensional clustering: a clique-based hypergraph partitioning
framework, Tianmng Hu, Dongguan University of Tecnology, Donggua,
China, 2013). Proporcionan un marco de particionamiento de hipergrafos basado
en CLIQUE para el agrupamiento de datos de alta dimensin. En comparacin con
las hiperaristas basadas en conjunto de elementos frecuentes, las hiperaristas
basadas en hipercliques son capaces de cubrir ms datos; lo que hace ms fcil la
particin. Demostraron que las hiperaristas basadas en patrones de asociacin
presentan dificultades en los datos de agrupacin con diferentes densidades.

MATERIALES Y MTODOS
Para el desarrollo e implementacin del algoritmo de agrupamiento basado
en hipergrafos se utiliz una computadora porttil con procesador AMD visin E2,
memoria RAM de 6GB, bajo la plataforma del sistema operativo Windows 7.
Se utiliz el software MATLAB R2012b para la codificacin del algoritmo, y
las bases de datos utilizadas para analizar su comportamiento fueron las
siguientes:
i.

Base de datos Iris: La cual consta de 150 instancias con valores de tres
clases diferentes de la flor Iris (setosa, versicolor y virginica). Los valores
corresponden a cuatro atributos de la flor: longitud y anchura para el ptalo
y el spalo. Para la clasificacin de esta base de datos con el algoritmo se
tomaron en cuenta los atributos longitud del ptalo y del spalo, para formar
una matriz de 150 filas y 2 columnas.
Base de datos apta: Se gener una matriz nombrada baseC, con 100 filas y
2 columnas de valores aleatorios en MATLAB, en donde se busc que los
datos formaran agrupaciones visiblemente separadas.
Base de datos no apta: En MATLAB se cre una matriz nombrada baseD,
con 160 filas y 2 columnas de valores aleatorios, en donde los datos no
formaran agrupaciones visiblemente separadas.

ii.

iii.

Los pasos para el desarrollo del algoritmo de agrupamiento basado en


hipergrafos fueron los siguientes:
I.

V.

Se obtuvo la matriz de triangulacin Delaunay a partir de una matriz de


mx2 (BD) para obtener los puntos que formarn tringulos, donde cada
tringulo represent tres puntos ms cercanos entre s.
II. La matriz de triangulacin Delaunay obtenida form un hipergrafo. Los
lados de cada tringulo representaron las hiperaristas y los puntos del
tringulo los vrtices del hipergrafo.
III. Se obtuvo el peso de las hiperaristas, con base a la distancia euclidiana
de los vrtices (puntos) que conformaron cada tringulo.
IV. Se calcul la media de los pesos de las hiperaristas. Se eliminaron
aquellas que tuvieran un peso menor a la media, ya que indicaba que
los puntos unidos por esas hiperaristas estaban ms alejados que los
dems. Se conservaron aquellas que tuvieran un peso mayor o igual a
la media.
Por ltimo, se realiz el agrupamiento de los puntos que pertenecieran a la
misma hiperarista para obtener los cluster finales.

METODOLOGA.
Para obtener los resultados que se muestran en la prxima seccin, se
siguieron los siguientes pasos:
1. Se abri el archivo Dt.m con el programa MATLAB. En la primera lnea
del cdigo se escribi el nombre del archivo iris.txt, este archivo contena
los datos que se deseaban agrupar. En la segunda lnea se escribi el
nombre de la matriz que almacen los datos de la BD, la cual se llam igual
que el del archivo. Ejemplo:
1ra lnea: load iris.txt

2da lnea: X=iris(:,[1:2]);

Los archivos de las bases de datos estaban ubicados dentro la misma


carpeta que los archivos Dt.m y bD.m.
2. Se dio clic en el botn Run que se encontraba en la ventana donde estaba
abierto el archivo Dt.m para ejecutar el algoritmo de agrupamiento basado
en hipergrafos. O desde la lnea de comandos de MATLAB se escribi Dt.
3. Se mostr una grfica con los valores de la base de datos agrupados por el
algoritmo de agrupamiento basado en hipergrafos.
4. Para obtener los resultados de las otras dos bases de datos (apta, no apta),
se realizaron los pasos del 1 al 2. Se sustituy el nombre del archivo iris.txt
por baseC.mat y baseD.mat respectivamente.

RESULTADOS
Los resultados obtenidos para la base de datos Iris son los que se muestra de la
Figura 1 a la 3, y la Tabla 1:

Figura 1. Grfica de los clusters reales de la base de


datos Iris.

Figura 3. Grfica de los clusters obtenidos de la


base de datos Iris por el algoritmo de
agrupamiento basado en hipergrafos.

Nmero de puntos obtenidos para cada


cluster generado por el algoritmo de
agrupamiento basado en hipergrafos para la
base de datos Iris.
Original

Cluster de color rojo.


Cluster de color azul.
Cluster
de
color
verde.
Cluster de color cian.
Total

Obtenidos

50
50
50

35
79
4

0
150

4
122

Tabla 1. Tabla comparativa entre el nmero total de


puntos y los utilizados por el algoritmo para la generacin
de clusters para la BD Iris.
Figura 2. Grfica de los clusters que se esperaban
fueran obtenidos por el algoritmo sobre la base de
datos Iris.

Los resultados obtenidos para la base de datos llamada baseC, se muestran de la


Figura 4 a la 6, y en la Tabla 2:

Figura 4. Grfica de los valores de la base de


datos baseC para el algoritmo.

Figura 6. Grfica de los clusters obtenidos


de la base de datos baseC por el algoritmo
de agrupamiento basado en hipergrafos.

Nmero de puntos obtenidos para cada


cluster generado por el algoritmo de
agrupamiento basado en hipergrafos para la
base de datos baseC.
Esperados

Cluster de color rojo.


Cluster de color azul.
Total:

51
49
100

Obtenidos

49
41
90

Tabla 2. Tabla comparativa entre el nmero total


de puntos y los utilizados por el algoritmo para la
generacin de clusters para la BD baseC.

Figura 5. Grfica de los clusters que se


esperaban fueran obtenidos por el algoritmo para
la base de datos baseC.

Los resultados que se obtuvieron para la base de datos llamada baseD, se


muestran en la Tabla 3 y de las Figuras del 7 al 9..

Figura 7. Grfica de los valores de una base de


datos baseD para el algoritmo.

Figura 9. Grfica de los clusters obtenidos de la


base de datos baseD por el algoritmo de
agrupamiento basado en hipergrafos.

Nmero de puntos obtenidos para cada


cluster generado por el algoritmo de
agrupamiento basado en hipergrafos para
la base de datos baseD.

Cluster de color rojo.


Cluster de color azul.
Cluster
de
color
verde.
Cluster de color cian.
Total:
Figura 8. Grfica de los clusters que se esperaban
fueran obtenidos por el algoritmo para la base de
datos baseD.

Esperados

Obtenidos

77
75
4

106
4
3

4
160

4
117

Tabla 3. Tabla comparativa entre el nmero total de


puntos y los utilizados por el algoritmo para la
generacin de clusters para la BD baseD.

DISCUSIN
En la Figura 1 se observa la clasificacin real de los tres tipos de flores de
la base de datos iris: setosa (color azul), versicolor (color verde) y virginica (color
rojo). En la Figura 2 se muestra lo que se esperaba con base a la distribucin de
los datos observada, es decir, que el algoritmo formara clusters de los grupos de
puntos donde se exista ms cohesin. El resultado que gener el algoritmo se
observ en la Figura 3, donde se formaron 4 clusters, en donde slo el cluster de
color rojo correspondi a la agrupacin esperada. El nmero de puntos que
formaron parte de cada cluster se observa en la Tabla 1. El nmero total de
puntos que formaron parte de los clusters fue de 122, esto nos indic que el
algoritmo de agrupamiento basado en hipergrafos no tom en cuenta 28 puntos
para que formarn parte de algn cluster. La razn de que estos puntos no se
tomarn en cuenta fue debido a que su proximidad en comparacin con los puntos
que s formaron parte de un cluster era menor, o porque el valor de algn punto se
repeta ms de una vez.
En la Figura 4 se graficaron los datos de una base de datos generada de
manera aleatoria. En la Figura 5 se mostr los clusters que se esperaban fueran
agrupados por el algoritmo, basndose en que visiblemente se formaron dos
grupos, y la distancia entre los puntos de cada grupo se vea constante. En la
Figura 6 se muestran los dos clusters que gener el algoritmo, los cuales
corresponden a los que se esperaban. En la Tabla 2 se observ el nmero de
puntos que formaron cada cluster; que en total fueron 90 de 100 puntos, los que el
algoritmo consider en base al peso de las hiperaristas formadas por los puntos.
Por ltimo, en la Figura 7 se muestra otra base de datos generada de
manera aleatoria, en donde la distribucin de los datos en algunas regiones se
mostraba ms densa y en otras ms dispersa. Con base en lo observado, en la
Figura 8 se muestran los clusters que se esperaban fueran identificados por el
algoritmo. Y los clusters que obtuvo el algoritmo de agrupamiento basado en
hipergrafos se muestran en la Figura 9, los cuales no coinciden con los
esperados, debido a que la distancia entre los puntos es muy variable. El nmero
de puntos que formaron parte de cada cluster se muestra en la Tabla 3.

CONCLUSIN
De los resultados obtenidos por el algoritmo de agrupamiento basado en
hipergrafos con las tres bases de datos, se concluye que el comportamiento del
algoritmo depender de la distribucin de los datos. Es decir, si los datos
mantienen una distancia similar entre ellos, el peso de sus hiperaristas ser mayor
en comparacin con aquellos en que su distancia sea ms variable, por lo que el
peso de las hiperaristas ser menor. Lo cual influye cuando se realiza la
eliminacin de stas, ya que slo se considerarn aquellas con mayor peso, que
reflejan que existe mayor grado de proximidad entre los datos.
Tambin se observ que si en conjunto de datos existen puntos que estn
demasiado alejados de aquellos que se encuentren ms densos, no se tomarn
en cuenta. Debido a que la distancia con otro punto es ms grande, el peso de la
hiperarista es menor, lo cual resultar en que no sea tomado en cuenta para que
forme parte de un cluster. Es decir, que esos puntos sern considerados como
ruido,
por
lo
tanto
no
se
incluirn.

REFERENCIAS
[1]. J.S Cherng and M.J. Lo, A Hypergraph Based Clustering Algorithm fos Spatial
Data Sets. IEEE 2001.
[2]. P. Purkait, T-J. Chin H. Ackermann and D. Suter, Clustering with
Hypergraphs: The Case for Large Hyperedges..
[3]. Eui-Hong Han, G. Karypis and V. Kumar, Hypergraph Based Clustering in
High-Dimensional Data Sets: A Summary of Results. IEEE Computer Society
Technical Committee on Data Engineering, 1997.

ANEXOS

Cdigo fuente Dt.m:


%%MATRIZ DE DISTANCIAS ENTRE LAS COORDENADAS DE LOS PUNTOS
MD=[SCXY12,SCXY23, SCXY31];
%%% OBTENER PESOS EN BASE A LA DISTANCIA ENTRE LOS PUNTOS
VP = sum(MD,2)./sum((MD).^2,2);
%%% RELACION ENTRE EL PESO Y LOS PUNTOS DE TRIANGULACION
MTYP=[PT, VP];
%%% VALOR MEDIO DEL PESO DE LOS PUNTOS
% sumaM=0;
% tam=length(VP);
% for ini=1:tam
%
sumaM=sumaM+VP(ini);
% end
%valorMedio = median(VP);valorMedio=sumaM/tam;
%valorMedio=mean(VP);
valorMedio=max(VP)*0.28;
%%COMPARACION DE VALORES
RM=MTYP(:,4)>=valorMedio;
MTYP=[MTYP, RM];
[f,c]=size(MTYP);
%% SE TOMAN EN CUENTA SOLO AQUELLOS ELEMENTOS QUE DE ACUERDO A SU PESO
%% (MAYOR PESO MS PROXIMIDAD)
for i=1:f
if MTYP(i,5)==1
NMTYP(i,:)=MTYP(i,:);
end
end
%% SE DEPURA LA MATRIZ PARA ELIMINAR FILAS VACIAS
MP_A = NMTYP(find(sum(NMTYP')>0),:);
%%ELIMINA LAS ULTIMAS DOS COLUMNAS: PESO(4) Y VALORACION(5)
MP_A(:,5)=[]; MP_A(:,4)=[];
%%OBTENER LISTA DE TODOS LOS NUMEROS
[valor_unic] = unique(MP_A);
valor_unic(:,2)=0;
%%SE AGREGA UNA NUEVA COLUMNA A LA LISTA DE LOS NUMEROS QUE INDICAR SI
%%PERTENECE A UN CLUSTER, POR DEFECTOTENDR VALOR DE 0
ind_encontrado=[];
%VECTOR QUE CONTENDR LA LISTA DE PUNTOS QUE
PERTENECEN A UN MISMO CLUSTER
ind_relacionado=[];
%%VECTOR QUE ALMACENAR LOS PUNTOS QUE SE
RELACIONEN ENTRE S
%COMENZAR EL CICLO PARA EXPLORAR LA LISTA DE TODOS LOS PUNTOS QUE
QUEDARON
%DE LA ELIMINACION
contador=0;
%%INDICAR AL NUMERO DE CLUSTER
for q=1:length(valor_unic);
%SE BUSCA SI EL NUMERO QUE SE VA RECORRIENDO EN LA MATRIZ DE

%PUNTOS YA HA SIDO AGRUPADO, SI TIENE UN CERO INDICA QUE AUN NO


HA
%SIDO AGRUPADO
if valor_unic(q,2)==0
%%SE INGRESA EN LA MATRIZ DE RELACIONADOS Y SE ENVIA A LA
%%FUNCION BD QUE BUSCARA EN QUE OTRAS FILAS SE ENCUENTRA EL
%%NUMERO Y QUE OTROS NUMEROS LO ACOMPAAN
ind_relacionado=(valor_unic(q));
%%IND_ENCONTRADO CONTENDRA LOS INDICES DE LOS QUE YA HAN
SIDO
%%BUSCADOS Y QUE ESTEN RELACIONADOS ENTRE SI.
%%LA FUNCION BD RECIBE COMO PARAMETROS EL NUMERO INDICE
SOBRE
%%EL CUAL SE COMENZAR A BUSCAR OTROS RELACIONADOS, LA
MATRIZ
%%DE TODOS LOS PUNTOS, IND_RELACIONADO GUARDAR LOS NUMEROS
QUE
%%SE VAYAN ASOCIANDO AL NUMERO QUE SE ESTE ANALIZANDO EN ESE
%%MOMENTO E IND_ENCONTRADO CONTENDR LA LISTA COMPLETA DE
LOS
%%NUMEROS QUE SE HA DETERMINADO PERTENEZCAN A UN MISMO GRUPO
ind_encontrado=bD(valor_unic(q),MP_A,ind_encontrado,
ind_relacionado);
contador=contador+1000; %SE ASIGNA EL NUMERO DE CLUSTER
%SE RECORRE LA LISTA DE PUNTOS QUE SE ENCUENTRAN DENTRO DE
UN
%MISMO GRUPO PARA ASIGNARLES EL NUMERO DE CLUSTER AL QUE
%PERTENCEN
for d=1:length(ind_encontrado);
F=find(valor_unic==ind_encontrado(d));
valor_unic(F,2)=contador;
end
ind_encontrado=[];
%SE LIMPIA EL VECTOR DE ENCONTRADOS
PARA LA SIGUIENTE BUSQUEDA
end
end
%%%% GRAFICACIN
[row,col]=size(MP_A);
%%OBTENER DIMENSIONES DE LA MATRIZ DE PUNTOS DE
TRIANGULACION
for uno=1:row
for dos=1:col
%%SE BUSCA QUE EL NUMERO QUE SE ESTE RECORRIENDO EN LA MATRIZ MP_A
SE
%%ENCUENTRE EN LA LISTA DE VALORES UNICOS PARA DETERMINAR A QUE
%%CLUSTER PERTENECE
fila2=find(valor_unic==MP_A(uno,dos));
f2=fila2;
c2= valor_unic(f2,2);
%%SE COMPARA LA COLUMNA 2 DE LA LISTA DE VALORES QUE CONTIENE EL
NUM
%%DE CLUSTER
if(c2==1000)
%%SE BUSCA EN PET LAS COORDENADAS DEL PUNTO A GRAFICAR

plot(PET(valor_unic(f2)),PET(valor_unic(f2),2),'vr');
hold on;
end
if(c2==2000)
plot(PET(valor_unic(f2)),PET(valor_unic(f2),2),'db');
hold on;
end
if(c2==3000)
plot(PET(valor_unic(f2)),PET(valor_unic(f2),2),'*g');
hold on;
end
if(c2==4000)
plot(PET(valor_unic(f2)),PET(valor_unic(f2),2),'sm');
hold on;
end
if(c2==5000)
plot(PET(valor_unic(f2)),PET(valor_unic(f2),2),'+k');
hold on;
end
if(c2==6000)
plot(PET(valor_unic(f2)),PET(valor_unic(f2),2),'hc');
hold on;
end
end
end

Cdigo bD.m:
function ind_encontrado= bD(numero,MP_A,ind_encontrado, ind_relacionado)
%Parmetros de entrada
%numero -> valor con el cual se comenzar a buscar sus relaciones
%MP_A -> matriz que contiene todos los puntos que ha resultado de la
eliminacion
%ind_encontrado -> contendr la lista de los nmeros que se determina
%se encuentren en un mismo grupo
%ind_relacionado -> guardar la lista de los nmeros que se vayan
%relacionando entre s.
%SI LA LISTA DE LOS INDICES RELACIONADOS SE ENCUENTRA VACA ES QUE YA
%NO SE ENCONTRARON MAS
if(isempty(ind_relacionado) == 0)
%%DE LO CONTRARIO TODAVIA SE NECESITA VERIFICAR CON QUE OTROS
NUMEROS SE ESTA RELACIONADO
%%SE OBTIENE LAS POSICIONES DENTRO DE LA MATRIZ DONDE SE ENCUENTRE
EL
%%NUMEROQUE SE COMENZARA A RELACIONAR
[fila,col]=find(MP_A==numero);
no_filas=length(fila);
%OBTENER EL TAMAO DEL VECTOR FILA PARA
%%COMENZAR A BUSCAR LOS OTROS NUMERO QUE TAMBIEN SE ENCUENTRAN
DENTRO
%%DE LA MISMA FILA.
for r=1:no_filas
%%ASIGNAR INDICE PARA NUMERO DE FILA Y COLUMNA
num_col=col(r); num_fila=fila(r);
switch num_col
case 1
col1=2; col2=3;
case 2
col1=1; col2=3;
case 3
col1=1; col2=2;
end
%%SE AGREGAN LOS OTROS NUMEROS QUE ESTAN EN LA MISMA FILA QUE EL
%%NUMERO INICIAL
%% SE VERIFICA QUE LOS NUMEROS QUE SE VAYAN OBTENIENDO NO SE HAYAN
ANALIZADO AN
if(isempty(find(ind_encontrado==MP_A(num_fila,col1))))
ind_relacionado=[ind_relacionado ; MP_A(num_fila,col1)];
end
if (isempty(find(ind_encontrado==MP_A(num_fila,col2))))
ind_relacionado=[ind_relacionado ; MP_A(num_fila,col2)];
end
end
%%SE ORDENAR EL VALOR DE LOS INDICES QUE SE OBTIENEN EN LA FILA
PARA
%%PODER ELIMINAR LAS FILAS DONDE YA SE HA BUSCADO
fila=sort(fila);
for elim=length(fila):-1:1

MP_A(fila(elim), :)=[];
end
%SE ASOCIA EL NUMERO QUE YA SE RECORRIO A IND_ENCONTRADO PARA FORMAR
LA LISTA
ind_encontrado=[ind_encontrado ; numero];
%%SI SE ENCUENTRAN NUMERO REPETIDOS SE ELIMINAN
ind_relacionado = unique(ind_relacionado);
%%TAMBIEN SE BUSCA QUE EL NUMERO QUE SE ACABA DE ANALIZAR SE ELIMINE
DE
%%LA LISTA DE RELACIONADOS PARA NO VOLVER A REALIZAR LA MISMA
BUSQUEDA
I=find(ind_relacionado==numero);
for ciclo=length(I):-1:1
ind_relacionado(I(ciclo))=[];
end
%% SE VERIFICA SI LA LISTA DE LOS INDICES DE PUNTOS RELACIONADOS ESTA
VACA
if isempty(ind_relacionado) == 0
%%SE ORDENA LA LISTA Y SE TOMA EL PRIMER NUMERO PARA COMENZAR A
BUSCAR
%%LOS NUMEROS RELACIONADOS A EL.
ind_relacionado=sort(ind_relacionado);
numero=ind_relacionado(1); %%SE TOMA EL SIGUIENTE NUMERO DE LA
LISTA
auxiliar = bD(numero,MP_A,ind_encontrado, ind_relacionado);
ind_encontrado=unique([ind_encontrado ; auxiliar ]);
else
variable = 1;
end
end

S-ar putea să vă placă și