particionamiento hipergrafo

17
  INSTITUTO TECNOLÓGICO SUPERIOR DE MISANTLA  Algoritmo de agrupamiento basado en hipergrafos. PRESENTA CECILIA GABRIELA VELÁZQUEZ RUÍZ NEFTALÍ ZACARÍAS GARCÍA DOCENTE M. I. A. ELVA MARÍA NOVOA DEL TORO  MISANTLA VERACRUZ, JUNIO DE 2015 

Upload: nef-zacarias

Post on 14-Jan-2016

213 views

Category:

Documents


0 download

DESCRIPTION

Algoritmo de particionamiento de hipergrafo

TRANSCRIPT

Page 1: Particionamiento Hipergrafo

7/18/2019 Particionamiento Hipergrafo

http://slidepdf.com/reader/full/particionamiento-hipergrafo 1/17

 

INSTITUTO TECNOLÓGICO

SUPERIOR DE MISANTLA 

 Algoritmo de agrupamiento basadoen hipergrafos. 

PRESENTA CECILIA GABRIELA VELÁZQUEZ RUÍZ

NEFTALÍ ZACARÍAS GARCÍA

DOCENTEM. I. A. ELVA MARÍA NOVOA DEL TORO 

MISANTLA VERACRUZ, JUNIO DE 2015 

Page 2: Particionamiento Hipergrafo

7/18/2019 Particionamiento Hipergrafo

http://slidepdf.com/reader/full/particionamiento-hipergrafo 2/17

RESUMEN

El clustering es un proceso de descubrimiento en datos y puede ser usadopara agrupar los objetos de una base de datos dentro de subclases útiles lo cualserviría de base para otras técnicas de análisis de datos.

En este trabajo se implementa un algoritmo de agrupamiento para unconjunto de datos basado en un modelo de hipergrafo. El hipergrafo es construidoa partir de un grafo de triangulación Delaunay de los datos de entrada, el cualpermite representar el grado de proximidad de los puntos que conforman lostriángulos. Después se particiona el hipergrafo de manera que el peso total de lashiperaristas sea minimizado. Por último, se agrupan los puntos que formen partede las mismas hiperaristas para obtener como resultado los cluster finalesobtenidos de la partición. 

 A continuación se presenta el desarrollo del algoritmo de agrupamiento

basado en hipergrafos, el cual se implementó en tres diferentes conjuntos dedatos. Se requirió que la distribución espacial de los datos se encontrara demanera dispersa, densa y combinada, para observar el comportamiento delalgoritmo. Y poder comprobar si la técnica empleada para la representación delgrado de proximidad de los datos fue práctica.

Page 3: Particionamiento Hipergrafo

7/18/2019 Particionamiento Hipergrafo

http://slidepdf.com/reader/full/particionamiento-hipergrafo 3/17

INTRODUCCIÓN

La agrupación automática de datos que comparte características similaressin conocer a qué pertenecen es llamada clustering [1]. El clustering oagrupamiento de datos se utiliza para explicar las características de la distribución

de los datos. Por ejemplo, en muchos negocios se puede aplicar clustering paradeterminar grupos de diferentes clientes y permitir a las empresas dar solucionespersonalizadas o predecir patrones de compra basados en la agrupación a la quepertenecen.

Existen diversos algoritmos para la agrupación de datos, uno de ellos es elalgoritmo de agrupamiento basado en hipergrafos. El cual usa un hipergrafo pararepresentar un conjunto de datos, en donde los vértices representan los puntos dedatos y las hiperaristas ponderadas representan las similitudes entre los puntos[1].

Un hipergrafo es un grafo en el cual una arista puede conectar más de dosvértices. Es decir, una arista (hiperarista) es un subconjunto de vértices [2]. Unhipergrafo provee más beneficios que un grafo sobre el modelado de un conjuntode datos. Una de las principales ventajas es que un modelo de hipergrafo permiterepresentar efectivamente relaciones

En este trabajo implementamos un algoritmo de agrupamiento que usa unhipergrafo para representar un conjunto de datos espacial. El hipergrafo esinicialmente construido de un grafo de triangulación Delaunay del conjunto depuntos de datos. Las ventajas de generar hiperaristas ponderadas usando el grafode triangulación Delaunay es que los puntos de datos que están muy separadospodrían ser completamente desconectados importantes entre puntos de datos enuna estructura de datos poco densa. [3] en el hipergrafo [1]. Y otra es que enregiones densas, las secciones de puntos de datos están estrechamentedefinidas, por lo tanto las hiperaristas ponderadas tienden a ser más grandes [1].En regiones dispersas, las secciones de puntos de datos estas definidas másampliamente y aquí el peso de las hiperaristas tiende a ser más pequeña.Después de obtener las hiperaristas con mayor peso, se agrupan aquellas quetengan similitudes entre ellas para obtener los cluster finales.

Page 4: Particionamiento Hipergrafo

7/18/2019 Particionamiento Hipergrafo

http://slidepdf.com/reader/full/particionamiento-hipergrafo 4/17

 

ESTADO DEL ARTE

 A continuación se analizan artículos donde se describen algoritmos deagrupamiento similares al que se está implementando, en este caso la semejanzaque comparten tales algoritmos es el uso de hipergrafos para representar unconjunto de datos.

(Clustering basado en hipergrafos en conjuntos de datos de altadimensionalidad: Un resumen de resultados, Han Eui-Hong, Universidad deMinnesota, 1998). En este artículo proponen un método para el agrupamiento delos datos en un espacio de alta dimensión basado en un modelo de hipergrafos.Utilizan un algoritmo de particionamiento de hipergrafos para encontrar unapartición de los vértices de manera que los elementos de los datos de cadapartición estén altamente relacionados y el corte de las hiperaristas seaminimizado. Los resultados de sus experimentos fueron prometedores para losdatos de agrupaciones de espacios de dimensionalidad alta.

(Hypergraph based geometric biclustering algorithm, Zhiguan Wang, CityUniversity of Hong Kong, Mayo 2012).  Presentan un algoritmo biclusteringgeométrico basado en hipergrafos (HGBC). Usan la transformada de Hough paraencontrar sub-biclusters los cuales corresponden a estructuras en espacioscolumna-par. Construyeron un modelo de hipergrafos para mezclar los sub-biclusters en los más grandes y reducir la complejidad computacional defusionarlos. Los experimentos realizados sobre datos biológicos simulados yreales arrojaron que el algoritmo propuesto puede combinar los sub-biclusters deforma eficiente y proporcionó resultados de clasificación más precisos encomparación con los métodos actuales de biclustering.

(High-dimensional clustering: a clique-based hypergraph partitioningframework, Tianmng Hu, Dongguan University of Tecnology, Donggua,China, 2013). Proporcionan un marco de particionamiento de hipergrafos basadoen CLIQUE  para el agrupamiento de datos de alta dimensión. En comparación conlas hiperaristas basadas en conjunto de elementos frecuentes, las hiperaristasbasadas en hipercliques son capaces de cubrir más datos; lo que hace más fácil lapartición. Demostraron que las hiperaristas basadas en patrones de asociaciónpresentan dificultades en los datos de agrupación con diferentes densidades.

Page 5: Particionamiento Hipergrafo

7/18/2019 Particionamiento Hipergrafo

http://slidepdf.com/reader/full/particionamiento-hipergrafo 5/17

MATERIALES Y MÉTODOS

Para el desarrollo e implementación del algoritmo de agrupamiento basadoen hipergrafos se utilizó una computadora portátil con procesador AMD visión E2,memoria RAM de 6GB, bajo la plataforma del sistema operativo Windows 7.

Se utilizó el software MATLAB® R2012b para la codificación del algoritmo, ylas bases de datos utilizadas para analizar su comportamiento fueron lassiguientes:

i. Base de datos Iris: La cual consta de 150 instancias con valores de tresclases diferentes de la flor Iris (setosa, versicolor y virginica). Los valorescorresponden a cuatro atributos de la flor: longitud y anchura para el pétaloy el sépalo. Para la clasificación de esta base de datos con el algoritmo setomaron en cuenta los atributos longitud del pétalo y del sépalo, para formaruna matriz de 150 filas y 2 columnas.

ii. Base de datos apta: Se generó una matriz nombrada baseC, con 100 filas y2 columnas de valores aleatorios en MATLAB®, en donde se buscó que losdatos formaran agrupaciones visiblemente separadas.

iii. 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 noformaran agrupaciones visiblemente separadas.

Los pasos para el desarrollo del algoritmo de agrupamiento basado enhipergrafos fueron los siguientes:

I. Se obtuvo la matriz de triangulación Delaunay a partir de una matriz demx2 (BD) para obtener los puntos que formarán triángulos, donde cadatriángulo representó tres puntos más cercanos entre sí.

II. La matriz de triangulación Delaunay obtenida formó un hipergrafo. Loslados de cada triángulo representaron las hiperaristas y los puntos deltriángulo los vértices del hipergrafo.

III. Se obtuvo el peso de las hiperaristas, con base a la distancia euclidianade los vértices (puntos) que conformaron cada triángulo.

IV. Se calculó la media de los pesos de las hiperaristas. Se eliminaronaquellas que tuvieran un peso menor a la media, ya que indicaba quelos puntos unidos por esas hiperaristas estaban más alejados que losdemás. Se conservaron aquellas que tuvieran un peso mayor o igual ala media.

V. Por último, se realizó el agrupamiento de los puntos que pertenecieran a la

misma hiperarista para obtener los cluster finales.

Page 6: Particionamiento Hipergrafo

7/18/2019 Particionamiento Hipergrafo

http://slidepdf.com/reader/full/particionamiento-hipergrafo 6/17

METODOLOGÍA.

Para obtener los resultados que se muestran en la próxima sección, sesiguieron los siguientes pasos:

1. Se abrió el archivo “Dt.m” con el programa MATLAB®. En la primera líneadel código se escribió el nombre del archivo iris.txt , este archivo conteníalos datos que se deseaban agrupar. En la segunda línea se escribió elnombre de la matriz que almacenó los datos de la BD, la cual se llamó igualque el del archivo. Ejemplo: 

1ra línea: load iris.txt 2da línea: X=iris(:,[1:2]);

Los archivos de las bases de datos estaban ubicados dentro la mismacarpeta que los archivos “Dt.m” y “bD.m”. 

2. Se dio clic en el botón “Run” que se encontraba en la ventana donde estabaabierto el archivo “Dt.m” para ejecutar el algoritmo de agrupamiento basadoen hipergrafos. O desde la línea de comandos de MATLAB® se escribió Dt. 

3. Se mostró una gráfica con los valores de la base de datos agrupados por elalgoritmo 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.txtpor baseC.mat y baseD.mat respectivamente.

Page 7: Particionamiento Hipergrafo

7/18/2019 Particionamiento Hipergrafo

http://slidepdf.com/reader/full/particionamiento-hipergrafo 7/17

RESULTADOS

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

 

Figura 1. Gráfica de los clusters reales de la base dedatos Iris.

Figura 2. Gráfica de los clusters que se esperabanfueran obtenidos por el algoritmo sobre la base dedatos Iris.

Figura 3. Gráfica de los clusters obtenidos de labase de datos Iris por el algoritmo deagrupamiento basado en hipergrafos.

Número de puntos obtenidos para cadacluster generado por el algoritmo de

agrupamiento basado en hipergrafos para labase de datos Iris.Original Obtenidos

Cluster de color rojo. 50 35Cluster de color azul. 50 79Cluster de colorverde.

50 4

Cluster de color cian. 0 4Total 150 122Tabla 1. Tabla comparativa entre el número total depuntos y los utilizados por el algoritmo para la generaciónde clusters para la BD Iris.

Page 8: Particionamiento Hipergrafo

7/18/2019 Particionamiento Hipergrafo

http://slidepdf.com/reader/full/particionamiento-hipergrafo 8/17

 

Los resultados obtenidos para la base de datos llamada baseC, se muestran de laFigura 4 a la 6, y en la Tabla 2:

 

Figura 4. Gráfica de los valores de la base dedatos baseC para el algoritmo.

Figura 5. Gráfica de los clusters que seesperaban fueran obtenidos por el algoritmo parala base de datos baseC.

Figura 6. Gráfica de los clusters obtenidosde la base de datos baseC por el algoritmode agrupamiento basado en hipergrafos.

Número de puntos obtenidos para cadacluster generado por el algoritmo deagrupamiento basado en hipergrafos para labase de datos baseC.

Esperados Obtenidos

Cluster de color rojo. 51 49Cluster de color azul. 49 41Total: 100 90Tabla 2. Tabla comparativa entre el número totalde puntos y los utilizados por el algoritmo para lageneración de clusters para la BD baseC.

Page 9: Particionamiento Hipergrafo

7/18/2019 Particionamiento Hipergrafo

http://slidepdf.com/reader/full/particionamiento-hipergrafo 9/17

Los resultados que se obtuvieron para la base de datos llamada baseD, semuestran en la Tabla 3 y de las Figuras del 7 al 9..

Figura 7. Gráfica de los valores de una base de

datos baseD para el algoritmo.

Figura 8. Gráfica de los clusters que se esperabanfueran obtenidos por el algoritmo para la base dedatos baseD.

Figura 9. Gráfica de los clusters obtenidos de la

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

Número de puntos obtenidos para cadacluster generado por el algoritmo deagrupamiento basado en hipergrafos parala base de datos baseD.

Esperados Obtenidos

Cluster de color rojo. 77 106

Cluster de color azul. 75 4Cluster de colorverde.

4 3

Cluster de color cian. 4 4Total:  160 117Tabla 3. Tabla comparativa entre el número total depuntos y los utilizados por el algoritmo para lageneración de clusters para la BD baseD.

Page 10: Particionamiento Hipergrafo

7/18/2019 Particionamiento Hipergrafo

http://slidepdf.com/reader/full/particionamiento-hipergrafo 10/17

DISCUSIÓN

En la Figura 1 se observa la clasificación real de los tres tipos de flores dela base de datos iris: setosa (color azul), versicolor (color verde) y virginica (colorrojo). En la Figura 2 se muestra lo que se esperaba con base a la distribución de

los datos observada, es decir, que el algoritmo formara clusters de los grupos depuntos donde se existía más cohesión. El resultado que generó el algoritmo seobservó en la Figura 3, donde se formaron 4 clusters, en donde sólo el cluster decolor rojo correspondió a la agrupación esperada. El número de puntos queformaron parte de cada cluster se observa en la Tabla 1. El número total depuntos que formaron parte de los clusters fue de 122, esto nos indicó que elalgoritmo de agrupamiento basado en hipergrafos no tomó en cuenta 28 puntospara que formarán parte de algún cluster. La razón de que estos puntos no setomarán en cuenta fue debido a que su proximidad en comparación con los puntosque sí formaron parte de un cluster era menor, o porque el valor de algún punto se

repetía más de una vez.

En la Figura 4 se graficaron los datos de una base de datos generada demanera aleatoria. En la Figura 5 se mostró los clusters que se esperaban fueranagrupados por el algoritmo, basándose en que visiblemente se formaron dosgrupos, y la distancia entre los puntos de cada grupo se veía constante. En laFigura 6  se muestran los dos clusters que generó el algoritmo, los cualescorresponden a los que se esperaban. En la Tabla 2  se observó el número depuntos que formaron cada cluster; que en total fueron 90 de 100 puntos, los que elalgoritmo 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 demanera aleatoria, en donde la distribución de los datos en algunas regiones semostraba más densa y en otras más dispersa. Con base en lo observado, en laFigura 8  se muestran los clusters que se esperaban fueran identificados por elalgoritmo. Y los clusters que obtuvo el algoritmo de agrupamiento basado enhipergrafos se muestran en la Figura 9, los cuales no coinciden con losesperados, debido a que la distancia entre los puntos es muy variable. El númerode puntos que formaron parte de cada cluster se muestra en la Tabla 3.

Page 11: Particionamiento Hipergrafo

7/18/2019 Particionamiento Hipergrafo

http://slidepdf.com/reader/full/particionamiento-hipergrafo 11/17

CONCLUSIÓN

De los resultados obtenidos por el algoritmo de agrupamiento basado enhipergrafos con las tres bases de datos, se concluye que el comportamiento delalgoritmo dependerá de la distribución de los datos. Es decir, si los datos

mantienen una distancia similar entre ellos, el peso de sus hiperaristas será mayoren comparación con aquellos en que su distancia sea más variable, por lo que elpeso de las hiperaristas será menor. Lo cual influye cuando se realiza laeliminación de éstas, ya que sólo se considerarán aquellas con mayor peso, quereflejan que existe mayor grado de proximidad entre los datos.

También se observó que si en conjunto de datos existen puntos que esténdemasiado alejados de aquellos que se encuentren más densos, no se tomaránen cuenta. Debido a que la distancia con otro punto es más grande, el peso de lahiperarista es menor, lo cual resultará en que no sea tomado en cuenta para que

forme parte de un cluster. Es decir, que esos puntos serán considerados comoruido, por lo tanto no se incluirán.

Page 12: Particionamiento Hipergrafo

7/18/2019 Particionamiento Hipergrafo

http://slidepdf.com/reader/full/particionamiento-hipergrafo 12/17

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.

Page 13: Particionamiento Hipergrafo

7/18/2019 Particionamiento Hipergrafo

http://slidepdf.com/reader/full/particionamiento-hipergrafo 13/17

ANEXOS

Código 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 MÁS 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 QUEPERTENECEN A UN MISMO CLUSTER ind_relacionado=[]; %%VECTOR QUE ALMACENARÁ LOS PUNTOS QUE SERELACIONEN ENTRE SÍ 

%COMENZAR EL CICLO PARA EXPLORAR LA LISTA DE TODOS LOS PUNTOS QUEQUEDARON %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 

Page 14: Particionamiento Hipergrafo

7/18/2019 Particionamiento Hipergrafo

http://slidepdf.com/reader/full/particionamiento-hipergrafo 14/17

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

%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 ACOMPAÑAN 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 GRUPOind_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 

%%%% GRAFICACIÓN

[row,col]=size(MP_A); %%OBTENER DIMENSIONES DE LA MATRIZ DE PUNTOS DETRIANGULACION for uno=1:row for dos=1:col 

%%SE BUSCA QUE EL NUMERO QUE SE ESTE RECORRIENDO EN LA MATRIZ MP_ASE 

%%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 

Page 15: Particionamiento Hipergrafo

7/18/2019 Particionamiento Hipergrafo

http://slidepdf.com/reader/full/particionamiento-hipergrafo 15/17

  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 

Page 16: Particionamiento Hipergrafo

7/18/2019 Particionamiento Hipergrafo

http://slidepdf.com/reader/full/particionamiento-hipergrafo 16/17

Código bD.m:

function ind_encontrado= bD(numero,MP_A,ind_encontrado, ind_relacionado) %Parámetros 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 números que se determina %se encuentren en un mismo grupo %ind_relacionado -> guardará la lista de los números que se vayan %relacionando entre sí. 

%SI LA LISTA DE LOS INDICES RELACIONADOS SE ENCUENTRA VACÍA 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 TAMAÑO 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 COLUMNAnum_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 AÚN 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 FILAPARA 

%%PODER ELIMINAR LAS FILAS DONDE YA SE HA BUSCADO fila=sort(fila); for elim=length(fila):-1:1 

Page 17: Particionamiento Hipergrafo

7/18/2019 Particionamiento Hipergrafo

http://slidepdf.com/reader/full/particionamiento-hipergrafo 17/17

  MP_A(fila(elim), :)=[]; end 

%SE ASOCIA EL NUMERO QUE YA SE RECORRIO A IND_ENCONTRADO PARA FORMARLA 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 ELIMINEDE 

%%LA LISTA DE RELACIONADOS PARA NO VOLVER A REALIZAR LA MISMABUSQUEDA 

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 ESTAVACÍA 

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