cecti rodrigo lopez - buqueda del clique
TRANSCRIPT
Deteccion de comunidades
Buqueda del Clique con la mayor Interconectividad en un Grafo
utilizando Optimizacion basado en Colonia de Hormigas
Rodrigo Lopez Farıas1 Juan J. Flores 2
14 de octubre de 2016
Universidad Michoacana de San Nicolas de Hidalgo
1 Centro de Informacion y Computo
2 Posgrado de Ingenierıa Electrica
Tabla de Contenidos
1. Introduccion
2. Los Cliques en los Grafos
3. Algoritmo para la deteccion de un clique
4. Optimizacion por colonia de Hormigas
5. Experimentos y Resultados
1/23
Introduccion
Introduccion
• El problema de busqueda del clique tiene muchas aplicaciones como
por ejemplo: bioinformatica, busqueda de estructuras y redes en
quımica computacional, y deteccion de comunidades redes sociales.
Figura 1: Ejemplo de una red compleja
2/23
Introduccion
• Los algoritmos tradicionales enfrentan el obstaculo del alto costo
computacional, y no escalabilidad para la busqueda de ciertas
estructuras en grafos [5].
• El uso de heurısticas como Optimizacion basada en Colonia de
Hormigas (OCH) son adecuados para resolver de manera aproximada
este problema.
• OCH Ha demostrado en la practica su capacidad para resolver
problemas NP-Completos y NP-Duros presentes en grafos como la
busqueda del camino mas corto, el problema del viajero y busqueda
de comunidades.
3/23
Introduccion
Que es OCH?
• Es una metaheuristica que aproxima la solucion.
• Es bio-inspirada, propuesta por Dorigo et al 1991.
• Se basa en la imitacion del comportamiento de las hormigas.
• Las hormigas sirven a su comunidad llevando comida.
• El uso de las feromonas como transmision de conocimiento son de
gran utilidad para su sobrevivencia.
• Estas feromonas son depositadas a lo largo del camino de la hormiga.
• Sirven a la hormiga para seleccionar aquel que fue recorrido
recientemente.
4/23
Puntos clave
• Que es un clique?.
• Como se detecta un clique.
• Como se mide la optimalidad o calidad de un clique.
• Principio de Optimizacion con Colonia de Hormigas.
• Feromonas como componente de aprendizaje.
5/23
Los Cliques en los Grafos
Grafos y Clique
Los cliques ”viven”dentro de los grafos los cuales son definidos como:.
Definition
Grafo: Es un par ordenado G = (V ,E ) donde:
• V es un conjunto de vertices
• Eij ∈ E Son el conjunto de aristas que relacionan el nodo i con el
nodo j .
• En caso de los grafos con pesos: cij es el costo o peso de traslado de
un vertice i a un vertice j .
Definition
Clique
Es un sub-grafo completo no dirigido G con un conjunto de V vertices
los cuales todos estan conectados entre sı.
6/23
Ejemplo: Solucion del Clique Ck mas grande de un grafo no
dirigido
Ck es el clique k que contiene |Ck | elementos, En este caso el clique con
los vertices de color rojo es definido por Ck = {v5, v1, v2} donde el
tamano de la comunidad es la cardinalidad |Ck | = 3
Figura 2: Clique
7/23
Solucion del Clique de tamano 3 con la suma de pesos maxima
Ck es el clique k que ademas de contener el numero maximo de nodos,
tambien es el mayor interconectado de todos,
• c1 = {vg , vb, vg}, Suma de pesos 13
• c2 = {vb, ve , vf }, Suma de pesos 13
• c3 = {vf , ve , vd}, Suma de pesos 103
• c4 = {vc , ve , vd}, Suma de pesos 220
Suma de pesos (Mas
adelante se utiliza como la
funcion de aptitud o
(Fitness))
(|Ck |−1)∑j=1
|Ck |∑j=i+1
cijv′i v′j
2010
100
1002 2
2
1
4 3
2
d
c
eb
f
a
g
Figura 3: Clique
8/23
El problema se va haciendo intratable
El problema se vuelve mas complicado con solo 10 nodos si se trata de
un grafo completo.
Figura 4:
9/23
Algoritmo para la deteccion de
un clique
Algoritmo para la deteccion de un clique
10/23
Construccion del clique
• Se inicializa el clique como vacıo. Ck = {}
• Se selecciona al azar un vertice vi de grafo G
(en este caso v1), y se agrega a Ck = {v1}• Se seleccionan los vertices adyacentes y se
marcan como candidatos.
Candidatos = {v5, v2}• Se selecciona un vertice de candidatos al azar,
en este caso v5 y se guarda en Ck = {v1, v5}.• Se guardan los nodos adyacentes del nodo
candidato seleccionado v5. ({v1, v2})• Se actualiza
Candidatos = (v2) = Candidatos ∩ {v1, v2}• Se repite la operacion hasta que
Candidatos = {}
11/23
Construccion del clique
• Se inicializa el clique como vacıo. Ck = {}• Se selecciona al azar un vertice vi de grafo G
(en este caso v1), y se agrega a Ck = {v1}
• Se seleccionan los vertices adyacentes y se
marcan como candidatos.
Candidatos = {v5, v2}• Se selecciona un vertice de candidatos al azar,
en este caso v5 y se guarda en Ck = {v1, v5}.• Se guardan los nodos adyacentes del nodo
candidato seleccionado v5. ({v1, v2})• Se actualiza
Candidatos = (v2) = Candidatos ∩ {v1, v2}• Se repite la operacion hasta que
Candidatos = {}
11/23
Construccion del clique
• Se inicializa el clique como vacıo. Ck = {}• Se selecciona al azar un vertice vi de grafo G
(en este caso v1), y se agrega a Ck = {v1}• Se seleccionan los vertices adyacentes y se
marcan como candidatos.
Candidatos = {v5, v2}
• Se selecciona un vertice de candidatos al azar,
en este caso v5 y se guarda en Ck = {v1, v5}.• Se guardan los nodos adyacentes del nodo
candidato seleccionado v5. ({v1, v2})• Se actualiza
Candidatos = (v2) = Candidatos ∩ {v1, v2}• Se repite la operacion hasta que
Candidatos = {}
11/23
Construccion del clique
• Se inicializa el clique como vacıo. Ck = {}• Se selecciona al azar un vertice vi de grafo G
(en este caso v1), y se agrega a Ck = {v1}• Se seleccionan los vertices adyacentes y se
marcan como candidatos.
Candidatos = {v5, v2}• Se selecciona un vertice de candidatos al azar,
en este caso v5 y se guarda en Ck = {v1, v5}.
• Se guardan los nodos adyacentes del nodo
candidato seleccionado v5. ({v1, v2})• Se actualiza
Candidatos = (v2) = Candidatos ∩ {v1, v2}• Se repite la operacion hasta que
Candidatos = {}
11/23
Construccion del clique
• Se inicializa el clique como vacıo. Ck = {}• Se selecciona al azar un vertice vi de grafo G
(en este caso v1), y se agrega a Ck = {v1}• Se seleccionan los vertices adyacentes y se
marcan como candidatos.
Candidatos = {v5, v2}• Se selecciona un vertice de candidatos al azar,
en este caso v5 y se guarda en Ck = {v1, v5}.• Se guardan los nodos adyacentes del nodo
candidato seleccionado v5. ({v1, v2})
• Se actualiza
Candidatos = (v2) = Candidatos ∩ {v1, v2}• Se repite la operacion hasta que
Candidatos = {}
11/23
Construccion del clique
• Se inicializa el clique como vacıo. Ck = {}• Se selecciona al azar un vertice vi de grafo G
(en este caso v1), y se agrega a Ck = {v1}• Se seleccionan los vertices adyacentes y se
marcan como candidatos.
Candidatos = {v5, v2}• Se selecciona un vertice de candidatos al azar,
en este caso v5 y se guarda en Ck = {v1, v5}.• Se guardan los nodos adyacentes del nodo
candidato seleccionado v5. ({v1, v2})• Se actualiza
Candidatos = (v2) = Candidatos ∩ {v1, v2}
• Se repite la operacion hasta que
Candidatos = {}
11/23
Construccion del clique
• Se inicializa el clique como vacıo. Ck = {}• Se selecciona al azar un vertice vi de grafo G
(en este caso v1), y se agrega a Ck = {v1}• Se seleccionan los vertices adyacentes y se
marcan como candidatos.
Candidatos = {v5, v2}• Se selecciona un vertice de candidatos al azar,
en este caso v5 y se guarda en Ck = {v1, v5}.• Se guardan los nodos adyacentes del nodo
candidato seleccionado v5. ({v1, v2})• Se actualiza
Candidatos = (v2) = Candidatos ∩ {v1, v2}• Se repite la operacion hasta que
Candidatos = {}
11/23
Optimizacion por colonia de
Hormigas
Solucion: Optimizacion por colonia de Hormigas
Comportamiento natural de la colonia de hormigas.
Gracias a la feromona y su volatilidad, las hormigas tienden a encontrar
caminos eficientes.
12/23
Comportamiento Natural de las hormigas
Este comportamiento es util para encontrar soluciones en grafos para
diversos problemas clasicos como el camino mas corto entre dos puntos
donde la funcion objetivo es la suma de los pesos de los aristas recorridos.
Las feromonas se distribuyen a lo largo del grafo segun la calidad de la
solucion.
13/23
Algoritmo Basico OCH
1. Inicializa el grafo asignando cero feromona en todos los aristas.
2. Repetir
3. Situar cada hormiga en un vertice de manera aleatoria.
4. Para cada hormiga, generar una solucion tomando caminos con
probabilidad segun la cantidad de feromona.
5. Evaluar cada solucion acorde a la funcion objetivo.
6. Depositar feromona en los nodos/aristas segun a la calidad de la
solucion.
7. Evaporizar feromona y actualizar.
8. Actualizar BestFitness con la mejor solucion hasta el momento.
9. Fin Repetir
14/23
Feromona como componente de aprendizaje
Si la hormiga se encuentra en un vertice vj , la probabilidad de seleccionar
la ruta a vi es:
p(vi ) =ταi∑
vj∈Candidatos ταj
donde τ es la feromona depositada en vertice i , α es un parametro que
pondera exponencialmente los factores de la feromona,
15/23
Actualizacion de las feromonas
Los rastros de feromona se actualizan en dos pasos:
(a): La feromona se refuerza inversamente proporcional a la diferencia de
la mejor solucion y la solucion encontrada.
τi = τi +1
1 + (BestFitness − Fitness(Ck))K
(b): La persistencia/evaporacion de la feromona esta dada por
τi = τi ∗ ρ
Donde 0 < ρ < 1
16/23
Actualizacion de las feromonas (a)
Con la constante K > 1 se regula la penalizacion a las malas soluciones.
Figura 5: Efecto constante K
17/23
Funcion objetivo
Sea Ck = (V ′,E ′) un sub-grafo completo el cual la suma de sus aristas
esta dada por
Fitness(Ck) =
(|Ck |−1)∑j=1
|Ck |∑j=i+1
cijv′i v′j
donde Ck es un clique o sub-grafo completo de tamano q = |Ck |, y cijson los pesos que existen en las conexiones de v ′i a v ′j .
18/23
19/23
Experimentos y Resultados
Resultados
Experimentos.
La instancia para probar el algoritmo es un grafo completo G=(V,E) con
100 vertices, donde la suma de los vertices Maximo Clique
Ck,optimo = {21, 22, 30, 40, 50, 60, 70, 80, 90, 99}, todos los demas aristas
no contenidas en Coptimo son asignados valores con una distribucion
aleatoria uniforme [0,29]. Los parametros de OCH son:
• Iteraciones = 500
• K = 20
• Q = 10
• α = 1
Se programo en Python utilizando librerıas networkx (manejo de grafos) y
numpy (paquete numerico)
20/23
Resultados
Figura 6: Desempeno del algoritmo con diferentes valores en los parametros
21/23
Resultados
Figura 7: Grafico de convergencia para k = 20
22/23
Resultados
Figura 8: Grafico de convergencia para k = 30
23/23
References I
• C. Solnon and S. Fenet, A study of ACO capabilities for solving the
maximum clique problem, Journal of Heuristics, pp. 1 31, 2006.
• Solnon and D. Bridge, Chapter I An Ant Colony Optimization
Meta-Heuristic for Subset Selection Problems, pp. 1 23
• W. Dai, S. Liu, and S. Liang, An improved ant colony optimization
cluster algorithm based on swarm intelligence, Journal of Software,
vol.6 4, no. 4, pp. 299 306, 2009.
• M. Hinne and E. Marchiori, Cutting graphs using competing ant
colonies and an edge clustering heuristic, Evolutionary Computation
in Combinatorial Optimization 2011.
• S. Sadi, . Etaner-Uyar, and . G. U, COMMUNITY DE- TECTION
USING ANT COLONY OPTIMIZATION TECHNIQUES, Proc. Int.
Conf. Soft Computing, 2009.
References II
• B. Alidaee, F. Glover, G. Kochenberger, and H. Wang, Solving the
maximum edge weight clique problem via unconstrained quadratic
pro- gramming, European Journal of Operational Research, vol. 181,
no. 2, pp. 592 597, Sep. 2007.
• R. Battiti and M. Protasi. Reactive local search for the maximum
clique problem. Algorithmica, 29(4):610 637, 2001.
• A. Grosso, M. Locatelli, and F. Della Croce. Combining swaps and
node weights in an adaptive greedy approach for the maximum
clique problem. Journal of Heuristics, 10(2):135 152, 2004
• E. Marchiori. Genetic, iterated andmultistart local search for the
maxi- mum clique problem. In S. Cagnoni, J. Gottlieb, E. Hart, M.
Middendorf, and G.R. Raidl, editors, Applications of Evolutionary
Computing, Pro- ceedings of EvoWorkshops 2002: EvoCOP,
EvoIASP, EvoSTim, volume 2279 of lncs, pages 112 121.
Springer-Verlag, 2002