SUPERIOR DE ENSENADA, BAJA CALIFORNIA
MR
PROGRAMA DE POSGRADO EN CIENCIAS
EN CIENCIAS DE LA COMPUTACI ´
ON
Algoritmo para encontrar el conjunto independiente fuerte
m ´aximo sobre un grafo tipo cactus
Tesis
para cubrir parcialmente los requisitos necesarios para obtener el grado de Maestro en Ciencias
Presenta:
Alejandro Flores Lamas
Alejandro Flores Lamas
y aprobada por el siguiente comit ´e
Dr. Jos ´e Alberto Fern ´andez Zepeda.
Director del Comit ´e
Dr. Carlos Alberto Brizuela Rodr´ıguez.
Miembro del Comit ´e
Dr. Ra ´ul Rangel Rojo.
Miembro del Comit ´e
Dra. Ana Isabel Mart´ınez Garc´ıa
Coordinador del Programa de
Posgrado en Ciencias de la Computaci ´on
Dr. Jes ´us Favela Vara
Director de Estudios de Posgrado
Resumen de la tesis que presenta Alejandro Flores Lamas como requisito parcial para la obtenci ´on del grado de Maestro en Ciencias en Ciencias de la Computaci ´on.
Algoritmo para encontrar el conjunto independiente fuerte m ´aximo sobre un grafo tipo cactus
Resumen elaborado por:
Alejandro Flores Lamas
Esta tesis analiza el problema del conjunto independiente fuerte (CIF) m ´aximo sobre un grafo cactusK = (VK, EK). El CIF es un problema bien conocido en el ´area de teor´ıa
de grafos y algoritmos, que se define como subconjunto de v ´ertices del grafo tal que para todo par u, v ∈ CIF, la trayectoria m ´as corta entre ellos es de al menos tres aristas. La soluci ´on a esta problem ´atica tiene diversas aplicaciones entre las que se incluyen el es-tudio de mol ´eculas y ´atomos, modelado de redes, planificaci ´on de rutas, de operaciones y asignaci ´on de instalaciones. En el ´area de teor´ıa de juegos, existen aplicaciones en el campo econ ´omico, ingenieril e incluso b ´elico. Hasta el momento, se desconoce la exis-tencia de alg ´un algoritmo para el grafo cactus o para el grafo general capaz de resolver el CIF m ´aximo en tiempo polinomial y las propuestas que existen ´unicamente encuentran conjuntos m ´aximos en topolog´ıas muy restringidas o conjuntos maximales en grafos m ´as complejos. En este trabajo, se resuelve el CIF m ´aximo sobre grafos tipo cactus mediante un algoritmo (CIF-MAXIMUM-CACTUS) que descompone el grafo en componentes bico-nectados y que mediante un recorrido sobre el grafo e informaci ´on acerca de los compo-nentes visitados y v ´ertices previamente marcados, encuentra el CIF en cada componente biconectado. La uni ´on de los v ´ertices marcados produce un CIF m ´aximo sobre el grafo original. La complejidad computacional del CIF-MAXIMUM-CACTUSes deO(n2)unidades
de tiempo, donde|VK| =n. El algoritmo se codific ´o en lenguaje JAVA versi ´on 1.8.0 05 y
se aliment ´o con dos conjuntos de prueba: el primero con grafos simples cuyo CIF m ´aximo es conocido o f ´acilmente identificable; el segundo con 120 grafos ( ´arboles, cadenas de ciclos, sistemas de engranes y cactus) generados de forma aleatoria. El an ´alisis formal del algoritmo, as´ı como los resultados obtenidos mediante la implementaci ´on y evaluaci ´on de los casos de prueba, demuestran la correcci ´on del algoritmo propuesto.
Abstract of the thesis presented by Alejandro Flores Lamas as a partial requirement to obtain the Master of Science degree in Master in Sciences in Computer Science.
Algorithm to find the maximum 2-Packing set in a cactus graph
Abstract by:
Alejandro Flores Lamas
In this thesis we analyze the problem of the maximum 2-packing set in a cactus graph
K = (VK, EK). The 2-packing set is a well known problem in the fields of graph theory and
algorithms. In a graphG= (V, E), a subsetS ⊆V is a 2-packing if for every pairu, v ∈S
the shortest path between them is at least three edges long. The solution to this problem results in a wide range of applications such as the study of molecules and atoms, network modeling, route planning and operations, and allocation of facilities. Also, there are several applications in game theory, ranging from economics, engineering and warfare. Hitherto, to the best of the author knowledge, there is no algorithm for the cactus nor do exists for the general graph to solve the maximum 2-packing set in polynomial time; other propo-sals find maximum sets in restricted graph topologies or maximal sets in more complex graphs. In this study, we propose an approach to solve the maximum 2-packing set pro-blem in cactus graphs using an algorithm (CIF-MAXIMUM-CACTUS) which decomposes the graph in biconnected components and finds its 2-packing set following a path through the graph and applying previously gathered information about visited components and marked vertices. The union of marked vertices produces a maximum 2-packing set in the original graph. The running time of the algorithm isO(n2)time units, where|VK| =n. The
CIF-MAXIMUM-CACTUS was implemented in JAVA 1.8.0 05 and two test sets were em-ployed to evaluate its performance: the former includes simple graphs which its maximum 2-packing set is known or easily identified; the other consists of 120 randomly generated graphs (trees, cycle chains, cycle arrangements and cactus). The formal proof of the al-gorithm, its implementation and results in the test sets show the algorithm’s correctness.
Dedicatoria
Agradecimientos
A Dios: por darme la vida y por todos estos a ˜nos, por permitirme a mis padres, por los sue ˜nos que me has brindado, por todo aquello que me has dejado ver, ser y hacer.
A mis padres: por apoyarme en los momentos dif´ıciles y celebrar conmigo los mo-mentos de felicidad, porque gracias a su apoyo y consejos, hoy alcanzo otra m ´as de mis
grandes metas, el grado de Maestro. Por la formaci ´on que me han dado, por su ternura y
amor. Gracias por ense ˜narme a perseverar.
A mi director de tesis: Dr. Jos ´e Alberto Fern ´andez Zepeda, gracias por guiarme pacientemente durante el desarrollo de este trabajo.
A mis maestros y comit ´e de tesis:mi profundo y sincero respeto por haber compar-tido desinteresadamente a lo largo de estos a ˜nos sus conocimientos y por su capacidad
de transmitirlos, por sus observaciones y comentarios para mejorar mi investigaci ´on.
A mis amigos y compa ˜neros: nada de esto hubiera sido as´ı tan especial sin su apoyo.
Al Centro de Investigaci ´on Cient´ıfica y de Educaci ´on Superior de Ensenada:por su apoyo durante mi estancia en esta instituci ´on y por la ense ˜nanza acad ´emica.
Al Consejo Nacional de Ciencia y Tecnolog´ıa (CONACyT):por brindarme el apoyo econ ´omico para realizar mis estudios de maestr´ıa.
A todos ustedes, gracias.
Tabla de contenido
P ´agina
Resumen en espa ˜nol iii
Resumen en ingl ´es iv
Dedicatoria v
Agradecimientos vi
Lista de figuras ix
Lista de tablas xi
1. Preliminares 1
1.1. Conceptos b ´asicos de algoritmos distribuidos . . . 6
1.2. Visi ´on general del problema del CIF m ´aximo sobre el grafo cactus . . 7
1.3. Organizaci ´on de la tesis . . . 9
2. Marco te ´orico 11 2.1. Introducci ´on . . . 11
2.2. Algoritmos para encontrar conjuntos m ´aximos y m´ınimos . . . 11
2.2.1. Conjunto independiente y 2-conjunto independiente sobre cactus 11 2.2.2. Conjunto independiente sobre grafo ´arbol . . . 12
2.2.3. Conjuntok-packing sobre grafo ´arbol . . . 13
2.2.4. Conjunto dominante m´ınimo en grafos cactus . . . 16
2.3. Algoritmos que encuentran conjuntos maximales . . . 18
2.3.1. Algoritmo autoestabilizante para un CIF maximal en cactus . . 18
2.3.2. Algoritmo autoestabilizante para encontrar el CIF en un grafo arbitrario . . . 19
2.3.3. Metodolog´ıas de informaci ´on a distanciak . . . 20
3. Algoritmo para encontrar el CIF m ´aximo en grafos cactus 23 3.1. Introducci ´on . . . 23
3.2. Descripci ´on de alto nivel . . . 23
3.3. Notaci ´on empleada . . . 24
3.4. Descripci ´on del algoritmo CIF-MAXIMUM-CACTUS . . . 25
3.4.1. C ´alculo de los componentes biconectados deK . . . 25
3.4.2. Creaci ´on del ´arbol de componentes biconectados . . . 26
3.4.3. C ´alculo del CIF por componente . . . 27
3.4.3.1. C ´alculo del vecino izquierdo y derecho . . . 29
3.4.3.2. Empaquetamiento . . . 29
3.4.3.3. C ´alculo del CIF cuando el componente es una hoja . . . . 29
3.4.3.4. C ´alculo del CIF para componentes intermedios o ra´ız . . . 30
3.4.4. Mejor lista y mejor distancia . . . 31
3.4.5. Construcci ´on de la respuesta enK . . . 32
3.5. Pseudoc ´odigos . . . 32
Tabla de contenido (continuaci ´
on)
3.6.1. Demostraci ´on formal de que el algoritmo CIF-MAXIMUM-CACTUS
es correcto . . . 40
3.7. An ´alisis del tiempo de ejecuci ´on del algoritmo . . . 50
3.8. Ejemplo final . . . 51
4. Resultados 59 4.1. Introducci ´on . . . 59
4.2. Software de apoyo y simuladores . . . 59
4.2.1. Simulador BAP . . . 60
4.2.2. Generadores de los casos de prueba . . . 63
4.3. Detalles de implementaci ´on . . . 65
4.4. Casos de prueba . . . 66
4.4.1. Resultados . . . 68
4.5. Discusi ´on . . . 76
5. Conclusiones 81 5.1. Aportaciones y discusi ´on . . . 81
5.2. Trabajo futuro y problemas no resueltos . . . 82
Lista de figuras
Figura P ´agina
1. Grafo cactus con dos componentes conectados . . . 2
2. Grafo outerplanar . . . 2
3. Conjunto independiente . . . 3
4. Conjunto 3-packing sobre un grafo tipo ´arbol . . . 4
5. Conjuntos m ´aximo y maximal . . . 4
6. Conjunto dominante . . . 5
7. Conjunto dominante m´ınimo y CIF m ´aximo . . . 5
8. Grafo con v ´ertices de articulaci ´on . . . 6
9. Clique . . . 6
10. Conjunto independiente m ´aximo . . . 13
11. Conjunto 3-packing, algoritmo de Mjelde (2004) . . . 17
12. Modelo de informaci ´on a distacia k . . . 21
13. Arbol´ TB con la notaci ´on empleada . . . 25
14. B ´usqueda de ciclos . . . 26
15. Componentes biconectados . . . 26
16. Grafo de componentes biconectados . . . 27
17. Arbol de componentes biconectados . . . .´ 28
18. Vecindario izquierdo y derecho de un v ´ertice . . . 28
19. Evaluaci ´on del ´arbol TB . . . 31
20. CIF sobre el grafo cactus . . . 32
21. Flujo de la demostraci ´on del algoritmo CIF-MAXIMIM-CACTUS . . . 39
22. Selecci ´on de v ´ertices a distancia 1 . . . 43
23. Arbol enraizado en´ rcon m ´ultiples hijos. . . 43
24. Evaluaci ´on deBi con v ´ertice de articulaci ´on compartido yrestricci ´on(vi,0) = 1 45 25. Evaluaci ´on deBi con v ´ertice de articulaci ´on compartido yrestricci ´on(vi,0) = 2 45 26. Evaluaci ´on de Bi,restricci ´on(vi,0) = 2sin v ´ertice de articulaci ´on compartido 46 27. Evaluaci ´on de Bi,restricci ´on(vi,0) = 3sin v ´ertice de articulaci ´on compartido 46 28. ComponenteBi con restricciones y distancias . . . 48
29. Marcado de v ´ertices en el recorrido por la izquierda . . . 48
Lista de figuras (continuaci ´
on)
Figura P ´agina
31. Marcado final de v ´ertices sobre Bi . . . 49
32. Complejidad del CIF-MAXIMUM-CACTUS . . . 51
33. Ejemplo, grafo cactus con 64 v ´ertices . . . 52
34. Arbol´ TB obtenido del grafo de ejemplo . . . 53
35. Evaluaci ´on de B1 y paso de restricciones aB32 . . . 54
36. Evaluaci ´on del sub ´arbol enraizado enB10 . . . 54
37. Evaluaci ´on de los componentesB11aB25 . . . 55
38. Evaluaci ´on de los componentesB26aB32 . . . 55
39. Posibles configuraciones de v ´ertices para B32 . . . 56
40. Mejores configuraciones de marcado de v ´ertices para B32 . . . 56
41. Arbol´ TB evaluado completamente . . . 57
42. CIF sobre el cactus . . . 58
43. Diferentes configuraciones del grafo cactus . . . 67
44. Grafo ´arbol con 4324 v ´ertices . . . 73
45. Grafo cactus con 4096 v ´ertices . . . 74
46. Grafo sistema de engranes con 4118 v ´ertices . . . 75
47. Caso de prueba con CIF conocido . . . 76
48. Gr ´afica CDM contra CIF m ´aximo . . . 77
49. Gr ´afica CDM contra CIF m ´aximo, continuaci ´on . . . 78
Lista de tablas
Tabla P ´agina
1. Algoritmos para conjuntos m ´aximos y m´ınimos. . . 22
2. Algoritmos para conjuntos maximales y minimales. . . 22
3. Atributos de la clase Node.class del Simulador BAP. . . 61
4. Atributos de la clase Graph.class del Simulador BAP. . . 61
5. Casos de prueba del grafo tipo ´arbol. . . 69
6. Casos de prueba del grafo tipo cadenas. . . 70
7. Casos de prueba del grafo tipo engranes. . . 71
8. Casos de prueba del grafo tipo cactus. . . 72
9. Relaci ´on tama ˜no del CIF contra tama ˜no del grafo. . . 72
Cap´ıtulo 1.
Preliminares
El presente trabajo de tesis cae dentro del ´ambito de dise ˜no y an ´alisis de algoritmos para grafos. Unalgoritmo es una herramienta para resolver problemas computacionales bien definidos. Se dice que un algoritmo es un procedimiento ordenado que se puede aplicar a cualquiera de ciertas clases de entradas simb ´olicas, las cuales eventualmente convergen produciendo salidas simb ´olicas (Rogers, 1987). Una definici ´on alternativa se encuentra en (Cormenet al., 2009) y describe al algoritmo como un proceso computacio-nal bien definido que recibe como entrada un conjunto de valores y produce un valor o conjunto de valores como salida o respuesta. Asimismo, este trabajo se relaciona fuer-temente con el ´area de teor´ıa de grafos que se encarga del estudio de las estructuras matem ´aticas empleadas para modelar relaciones entre objetos mediantegrafos. Formal-mente, un grafoGes una representaci ´on matem ´atica compuesta por el par(V, E), donde
V es un conjunto finito de v ´ertices deG, yE es el conjunto de aristas que describen una relaci ´on binaria sobreV (Cormenet al., 2009). Los v ´ertices normalmente se representan por peque ˜nos c´ırculos o puntos, mientras que a las aristas por arcos o l´ıneas que unen a los v ´ertices. Existen diversos tipos de grafos, entre ellos se encuentran grafos simples, completos, bipartitos, planos, conexos, ponderados, densos, c´ıclicos, entre muchos otros m ´as.
En particular, esta tesis presta atenci ´on al grafo cactus. Un grafo K = (VK, EK) es
un cactus si cada arista e ∈ EK pertenece a lo m ´as a un ciclo en K; equivalentemente,
cualquier par de ciclos adyacentes comparten a lo m ´as un v ´ertice en com ´un. La Figura 1 muestra un grafo cactus con 2 componentes conectados. Un grafoG= (V, E)es un grafo
planar si es posible dibujarlo de tal forma que cualquier par de aristas se crucen ´unica-mente en los v ´ertices. Los cactus son una subclase del grafoouterplanar, el cual se define como un grafoG= (V, E)que es planar y cuyos v ´ertices recaen en la periferia del grafo (Trejo-S ´anchez y Fern ´andez-Zepeda, 2014). La Figura 2a muestra un grafo outerplanar que no es cactus puesto que la arista{a−c}pertenece a dos ciclos. La Figura 2b es un grafo que no es outerplanar ya que el grafo no se puede redibujar de tal forma que los v ´ertices queden en la periferia sin que se crucen en las aristas.
Figura 1: La imagen de la izquierda representa un componente conectado, mientras que el grafo de la derecha es el segundo componentes.
Figura 2: a) Ejemplo de grafo outerplanar. b) Ejemplo de un grafo no outerplanar.
problemas modelados en la forma de grafos; por ejemplo, b ´usquedas en anchura y pro-fundidad, ordenamiento topol ´ogico, arboles de esparcimiento, rutas m ´as cortas entre uno y m ´ultiples puntos, recorridos, caminatas, b ´usqueda de ciclos, coloreo de grafos, marcado de v ´ertices, entre otros.
Dentro de los problemas de marcado de v ´ertices se encuentra la b ´usqueda de con-juntos. Dado un grafo G = (V, E) un marcado de v ´ertices I ⊆ G es un conjunto in-dependiente si ning ´un par de v ´ertices arbitrarios u, v que pertenecen a I son vecinos (Hayneset al., 1998; Diestel, 2005). Otra definici ´on de este concepto se encuentra en (Valiente, 2002), el cual define al conjunto independiente como un conjunto de v ´ertices
I ⊆V, tal que el subgrafo deGinducido porI no tiene aristas, esto es,{u−v}∈/ E para todos los v ´ertices distintosu, v ∈I. La Figura 3 muestra un conjunto independiente sobre
G, los v ´ertices marcados u obscuros pertenecen al conjunto.
Figura 3: Conjuntos independientes, los v ´ertices marcados pertenecen al conjunto. a) Conjunto m ´aximo. b) Conjunto maximal.
ver la Figura 3a. Un conjunto es m ´aximo, si dentro de los conjuntos maximales ´este es el de cardinalidad m ´axima (ver la Figura 3b). Sobre un grafo G = (V, E), el problema del conjunto independiente m ´aximo significa marcar la mayor cantidad de v ´ertices que legalmente puedan existir en el grafo, lo cual es un problema NP-Dif´ıcil para topolog´ıas de grafo general (Johnson, 1985).
Otro problema de marcado de v ´ertices sobre un grafo es el conjunto k-packing que consiste en encontrar aquellos v ´ertices del grafo tal que la trayectoria m ´as corta entre cualquier par de v ´ertices seleccionados sea mayor quek, donde k es un entero positivo y la distancia entre un par de v ´ertices se mide como el n ´umero m´ınimo de aristas que los separa (Mjelde, 2004). La Figura 4 muestra un conjunto 3-packing. Al conjunto inde-pendiente tambi ´en se le conoce como 1-packing (Meir y Moon, 1975). Un caso especial del problemak-packing es cuandok = 2. Este problema tambi ´en se conoce como el con-junto independiente fuerte(CIF). De esta forma, un CIF es un subconjuntoS de v ´ertices,
S ⊆ V, tal que la longitud del camino m ´as corto entre cualquier par de v ´ertices u, v ∈ S
es mayor que 2 (Gairinget al., 2004).
Figura 4: Los v ´ertices marcados sobre el grafo pertenecen al conjunto 3-packing.
Figura 5: a) CIF maximal. b) CIF m ´aximo.
El conjunto dominante es otro problema de marcado de v ´ertices (relacionado al an-terior) que se formula de la siguiente manera: dado un grafo G = (V, E), se dice que un conjunto D ⊂ V es dominante si cada v ´ertice que no est ´a en D es adyacente al menos a un v ´ertice que s´ı est ´a enD(ver la Figura 6). Al conjunto dominante de cardina-lidad m´ınima se le denota porγ(G), mientras que al de cardinalidad m ´axima comoΓ(G) (Chellaliet al., 2012). Es bien conocido que para cualquier grafoG= (V, E),γ(G)≥ρ(G) (Imrichet al., 2008) (ver la Figura 7). Asimismo, Hayneset al.(1998) demostraron que el problema de encontrar el conjunto dominante m´ınimo es el problema dual del CIF m ´aximo en cuanto a programaci ´on lineal se refiere.
Figura 6: Los v ´ertices 1,2 y 3 son adyacentes al v ´ertice 0, mientras que los v ´ertices 4 y 5 lo son al v ´ertice 6.
Figura 7: Conjunto dominante m´ınimo y CIF m ´aximo. a) Conjunto dominante m´ınimo, b) CIF m ´aximo. En este caso, la cardinalidad del conjunto dominante m´ınimo es mayor que la cardinalidad del CIF.
los v ´ertices que son adyacentes av, es decir, aquellos que se encuentran conectados av
por medio de una arista (Chellaliet al., 2012). Al vecindario dev se le denota comoN(v); por su parte, a la uni ´on deN(v)∪v =N[v]se le conoce comovecindario cerrado dev.
Un v ´ertice de articulaci ´on o de corte en un grafo conectado (ver Figura 8) es aquel v ´ertice que al eliminarse del grafo, junto con todas sus aristas vecinas, parte el grafo en dos o m ´as componentes conectados. Uncomponente biconectado es un grafo maximal que no tiene v ´ertices de articulaci ´on. En el caso del grafo cactus, los componentes bico-nectados pueden tomar la forma de un conjunto de v ´ertices en un ciclo, o de un “clique”de tama ˜no 2. Uncliqueen un grafo no dirigidoG= (V, E)es un conjunto de v ´erticesC ⊆V
tal que todo par u, v ∈ C se encuentra conectado por una arista (ver Figura 9). Al des-componer el grafo en componentes biconectados es posible generar a partir de ´estos, un ´arbol de componentes biconectados (TB), en el cual los v ´ertices son los
Figura 8: El v ´ertice 1 es un v ´ertice de articulaci ´on puesto que descompone el grafo en 2 o m ´as componentes conectados; asimismo lo son los v ´ertices 6 y 7.
Figura 9: Clique de tama ˜no 4 (izquierda) y clique de tama ˜no 2 (derecha).
bloques. Asimismo, Hedetniemiet al.(1986) proponen la descomposici ´on del cactus en bloques para encontrar conjuntos dominantes. Posteriormente, Das (2012) utiliza nueva-mente este concepto para construir el ´arbolTBC para calcular el conjunto independiente
sobre grafos tipo cactus.
1.1. Conceptos b ´asicos de algoritmos distribuidos
Como se mencion ´o al inicio de este documento, un algoritmo es un proceso sistem ´ati-co para resolver problemas espec´ıfi´ati-cos mediante una secuencia finita no ambigua de reglas, donde se garantiza que en un n ´umero finito de pasos el procedimiento termina (Blass y Gurevich, 2003). En la misma forma en que existen diversos enfoques para ata-car un problema, tambi ´en hay m ´ultiples tipos de algoritmos que se pueden clasifiata-car de acuerdo a c ´omo ejecutan los pasos involucrados en ellos. Por ejemplo, un algoritmo se-cuencial realiza una operaci ´on a la vez, mientras que los algoritmosparaleloso distribui-dospueden llevar a cabo varias operaciones de forma simult ´anea (Berman y Paul, 2005).
De forma general, un algoritmo distribuido se implementa sobre una colecci ´on de pro-cesadores, posiblemente heterog ´eneos, conectados entre s´ı por medio de alg ´un tipo de red. En este modelo no existe un control central ya que cada procesador o v ´ertice en la red tiene sus propios recursos tanto de hardware como de software, y ´estos realizan c ´alculos de forma independiente a los dem ´as, y donde la sincronizaci ´on est ´a involucrada en varios niveles (Berman y Paul, 2005; Trejo-S ´anchez y Fern ´andez-Zepeda, 2012).
Dentro del c ´omputo distribuido, un enfoque innovador es la auto-estabilizaci ´on. La auto-estabilizaci ´on es una propiedad relacionada con la tolerancia afallas transitorias en sistemas distribuidos. Las fallas transitorias son aquellas que generan alteraciones l ´ogi-cas en un procesador y una vez que se corrigen, el procesador contin ´ua funcionando normalmente. Dijkstra (1974) define a un sistema auto-estabilizante como aquel que, ini-ciando en un estado arbitrario, garantiza su convergencia en un n ´umero finito de pasos. La tolerancia a fallas de los algoritmos auto-estabilizantes es una propiedad muy desea-ble en sistemas distribuidos donde pueden ocurrir fallas transitorias, de tal manera que le permita al sistema recuperarse y retomar un estado leg´ıtimo sin intervenci ´on externa (Johnen y Beauquier, 1995).
Shuklaet al.(1994) consideran tres modelos diferentes para seleccionar cu ´ales pro-cesadores se ejecutar ´an en cierto instante, el modelo de calendarizadorcentral, m ´aximo paralelismo y paralelismo restringido. Con el calendarizador central s ´olo un procesador puede ejecutarse a la vez; mientras que en el calendarizador de m ´aximo paralelismo, todos los procesadores habilitados pueden ejecutar tareas en paralelo. En el modelo de paralelismo restringido, cuando 2 o m ´as procesadores se encuentran privilegiados, s ´olo un subconjunto de ellos se selecciona para ejecutar tareas. Adem ´as, se dice que un ca-lendarizador esadversariocuando ´este selecciona los v ´ertices de tal forma que maximiza el tiempo de ejecuci ´on del algoritmo que se est ´a ejecutando.
1.2. Visi ´on general del problema del CIF m ´aximo sobre el grafo cactus
co-mo recuperaci ´on de informaci ´on, teor´ıa de clasificaci ´on, econom´ıa, planificaci ´on, dise ˜no experimental, visi ´on por computadora, ingenier´ıa biom ´edica, entre otras.
Asimismo, Abelloet al.(1999) analizan el grafo de llamadas que es una represen-taci ´on de un grafo masivo en telecomunicaciones mediante el clique m ´aximo. En esta representaci ´on, los v ´ertices son n ´umeros telef ´onicos y las aristas unen pares de v ´ertices al realizarse una llamada telef ´onica entre ellos. En cuanto al modelado de mercados me-diante grafos, existe trabajo por parte de Michael y Battiston (2009), donde se estudian las relaciones de agentes econ ´omicos en un grafo. De forma particular, Butenko (2003) tam-bi ´en presenta una aplicaci ´on para el conjunto independiente y clique, donde los mercados se representan por v ´ertices y donde las aristas describen relaciones entre los mercados cuyos precios se encuentran en fluctuaci ´on. El mismo autor estudia el problema de cons-truir eficientemente una columna vertebral para una red de sensoresad-hoc mediante la soluci ´on al problema del conjunto dominante.
Algunos de los problemas modelados por el grafo cactus son: la ubicaci ´on de insta-laciones (Manne y Mjelde, 2006), designaci ´on de servidores en una red, asignaci ´on de diferentes frecuencias a estaciones transmisoras de radio para eliminar o minimizar in-terferencia (Hale, 1980), manejo de materiales en una red al usar veh´ıculos automatiza-dos (Kariv y Hakimi, 1979) y en el modelado de rutas perimetrales de l´ıneas telef ´onicas para conectar a los usuarios hacia la columna vertebral principal (Koontz, 1980); de for-ma general, se aplica en situaciones que involucran la distribuci ´on de recursos evitando el traslape entre las asignaciones y a la vez cubriendo completamente la red. Adem ´as, Patenet al.(2010) presentan al grafo cactus como una estructura de datos para compa-rar conjuntos de genomas relacionados. Siendo el cactus una representaci ´on superior a otras para la comparaci ´on de genomas, puesto que soporta duplicidad y es capaz de descomponer subestructuras comunes en cadenas jer ´arquicas y redes.
algunos problemas NP-Dif´ıciles para topolog´ıas arbitrarias admiten soluciones en tiempo polinomial sobre esta configuraci ´on (Ben-Mosheet al., 2005; Zmazek y ˇZerovnik, 2004).
En este documento se desarrolla un algoritmo secuencial para encontrar el CIF m ´axi-mo sobre grafos cactus en tiempo polinomial, bajo la suposici ´on de que todos los grafos a evaluar est ´an formados por un s ´olo componente conectado; de no ser as´ı, se pro-cede a evaluar cada componente por separado. Para alcanzar este objetivo, se adapta la estrategia de descomposici ´on por componentes biconectados presentada tanto por Hedetniemiet al.(1986) como por Das (2012), adem ´as de tomar elementos de la meto-dolog´ıa de Mjelde (2004).
1.3. Organizaci ´on de la tesis
Ya se han presentado varios conceptos que forman el sustento de esta tesis y sobre los cuales se construye en cap´ıtulos posteriores. En cuanto a la estructura del resto de este trabajo, los cap´ıtulos se organizan de la siguiente forma.
Cap´ıtulo II: Se introduce el marco te ´orico asociado al problema del CIF sobre topo-log´ıas de grafos como anillo, ´arbol, cactus y grafo general. Lo anterior, mediante la exposici ´on de los algoritmos que se encuentran en el estado del arte para encontrar conjuntos de cardinalidad maximal y m ´axima para problemas similares al conjunto independiente. Asimismo, se presenta un algoritmo para calcular el conjunto domi-nante m´ınimo sobre un grafo cactus. Tanto las metodolog´ıas como los algoritmos que aqu´ı se presentan difieren entre s´ı, var´ıan desde programaci ´on din ´amica has-ta modelos extendidos del vecindario de un v ´ertice. Adicionalmente, los algoritmos pueden ser secuenciales o auto-estabilizantes.
Cap´ıtulo III: Se describe el algoritmo de tiempo polinomial desarrollado para encon-trar el CIF m ´aximo sobre grafos cactus. Primero se presenta la idea general detr ´as del algoritmo, luego se explica de forma m ´as detallada sus componentes. Posterior-mente, se incluyen los pseudoc ´odigos; el cap´ıtulo finaliza con la formalizaci ´on del algoritmo y la incorporaci ´on del an ´alisis del tiempo de ejecuci ´on.
del algoritmo descrito en el Cap´ıtulo III y de la experimentaci ´on realizada. Se ex-plican los tipos de grafos sobre los cuales se evalu ´o el algoritmo y se comparan los resultados obtenidos, en el caso del grafo tipo ´arbol, contra aquellos obtenidos por otros algoritmos en la literatura. Adem ´as, en la secci ´on final de este cap´ıtulo se discuten los desaf´ıos encontrados para la realizaci ´on del algoritmo y el c ´omo se solucionaron.
Cap´ıtulo 2.
Marco te ´
orico
2.1. Introducci ´on
El objetivo de este cap´ıtulo es explicar brevemente los algoritmos existentes para re-solver problemas similares al conjunto independiente sobre ciertas tolopog´ıas de grafos como anillo, ´arbol, cactus, grafo outerplanar y grafo general. Dichos algoritmos y litera-tura que los acompa ˜na se toman como bases para esta investigaci ´on. A pesar de que algunos de estos algoritmos son capaces de encontrar conjuntos de cardinalidad m ´axima en algunas topolog´ıas de grafos, hasta la fecha, el autor de este documento desconoce la existencia de alg ´un algoritmo que pueda calcular el CIF m ´aximo en tiempo polinomial sobre grafos cactus. En la parte final de este cap´ıtulo, las tablas 1 y 2 muestran la infor-maci ´on condensada de los algoritmos descritos.
2.2. Algoritmos para encontrar conjuntos m ´aximos y m´ınimos
En esta secci ´on se discuten algunos algoritmos para encontrar conjuntos de cardina-lidad m ´axima para los problemas del conjunto independiente, 2-conjunto independiente, CIF, y conjunto k-packing. Tambi ´en se expone un algoritmo para encontrar el conjunto do-minante m´ınimo. Este ´ultimo algoritmo es importante porque sienta algunas bases para el algoritmo del CIF desarrollado en esta tesis.
2.2.1. Conjunto independiente y 2-conjunto independiente sobre cactus
El problema del conjunto2-independientem ´aximo busca determinar sobre un grafoG
dos conjuntos independientes disjuntos I1, I2 tal que la cardinalidad del conjuntoI1 ∪I2
sea m ´axima. La generalizaci ´on de este problema recibe el nombre dem ´aximo conjunto k-independiente(MKIS) cuyo objetivo es encontrar k conjuntos independientes disjuntos tal que∪k
i=1Ii sea m ´axima. Tanto el 2-conjunto independiente (Sarrafzadeh y Lee, 1989)
como el MKIS (Yannakakis y Gavril, 1987) son problemas NP-Dif´ıcil para topolog´ıas de grafos en general.
cactus. Como siguiente paso, etiquetar comoSOaquellos componentes biconectados con
n ´umero impar de v ´ertices y comoSE a los que contienen un n ´umero par. Para los
com-ponentes en SO se sigue una t ´ecnica de borrado para aquellos v ´ertices que no sean de
corte. Posteriormente, de forma secuencial se etiquetan los v ´ertices restantes comoR y
M de tal manera que dos v ´ertices consecutivos no tengan la misma etiqueta. Finalmente, los v ´ertices enR forman el primer conjunto independiente, denotado porS1 y los v ´ertices
en M el segundo conjunto, S2. As´ı se obtienen dos conjuntos independientes disjuntos,
donde el conjunto 2-independiente m ´aximo es S1 ∪S2. El tiempo de ejecuci ´on de este
algoritmo es O(n) unidades de tiempo (u. t.), donden es el n ´umero de v ´ertices. Para en-contrar un s ´olo conjunto independiente m ´aximo, se sigue un procedimiento similar, pero en esta ocasi ´on al etiquetar los v ´ertices alternadamente se selecciona aquel conjunto que sea mayor por componente, no importando si son pares o impares siempre y cuando la selecci ´on no afecte a otros v ´ertices.
2.2.2. Conjunto independiente sobre grafo ´arbol
Un conjunto independienteI en un grafo tipo ´arbol se puede definir como aquella se-lecci ´on de v ´ertices tal que si un v ´erticeuse marca para pertenecer al conjunto, entonces ning ´un v ´ertice hijo deupertenece aI, pero s´ı los nietos deu. De forma similar, si un v ´erti-cewes marcado para formar parte deI, entonces su padre no puede ser marcado para el conjunto (Valiente, 2002). Eln ´umero de independenciade un grafoG= (V, E), denotado porβ(G), indica la cardinalidad del conjunto independiente m ´aximo que se obtiene deG
(Valiente, 2002; Chellaliet al., 2012).
Como se mencion ´o, para encontrar el conjunto independiente en grafos tipo ´arbol existen dos posibilidades, marcar tanto el v ´ertice u y sus nietos o marcar ´unicamente a los hijos deu. Esto se puede expresar mediante la ecuaci ´on 1, dondeI(u)es el tama ˜no del conjunto independiente m ´aximo del sub ´arbol enraizado en el v ´erticeu.
I(u) = max
X
v∈hijos(u)
I(v),1 + X
w∈nietos(u)
I(w)
(1)
Figura 10: Conjunto independiente m ´aximo en un ´arbol.
programaci ´on din ´amica, se puede evaluar el ´arbol mediante un recorrido postorden. Por lo que el tiempo de ejecuci ´on de este algoritmo es O(n), ya que cada arista u−v ∈ E
es examinada a lo m ´as 2 veces durante el recorrido. La Figura 10 muestra una selecci ´on posible de v ´ertices para el conjunto independiente m ´aximo sobre el grafo.
2.2.3. Conjuntok-packing sobre grafo ´arbol
El algoritmo secuencial propuesto por (Mjelde, 2004) se basa en la metodolog´ıa de programaci ´on din ´amica y se divide en dos fases. La idea general de la primera fase es comenzar en las hojas del ´arbol, realizar una serie de c ´alculos e ir avanzando hacia la ra´ız. Durante esta fase, se hace distinci ´on entre los v ´ertices del ´arbol y se les clasifica en: hojas, v ´ertices intermedios y ra´ız. Al finalizar los c ´alculos de la primera fase, cada sub ´arbol enraizado en el v ´erticev conoce el tama ˜no de la soluci ´on ´optima, pero no iden-tifica cu ´ales son los v ´ertices marcados para el conjunto.
La segunda fase comienza en la ra´ız y se desplaza hacia las hojas. Durante esta fase, se usa la informaci ´on obtenida en la fase anterior para detallar la soluci ´on encontrada y as´ı marcar los v ´ertices del conjunto.
Cada v ´ertice del ´arbol mantiene una tabla con informaci ´on de tama ˜no k + 1; para llenar las celdas de cada tabla se necesitanO(Cv) u. t., dondeCv es el n ´umero de hijos
del v ´erticev. Por lo tanto, para cada v ´erticev se utiliza un total de O(kCv) u. t., puesto
que el n ´umero total de hijos en el grafo esn−1(el v ´ertice ra´ız no es un hijo) el tiempo de ejecuci ´on total del algoritmo esO(kn+n) =O(kn)u. t.
v ´ertice del ´arbol; las dimensiones de la tabla son k renglones y 4 columnas, donde el ´ındice i de cada rengl ´on indica el n ´umero de v ´ertices no marcados que existen debajo del v ´erticev, incluy ´endose a s´ı mismo. La primera columna de la tabla indica el n ´umero de v ´ertices marcados que pueden llegar a existir si se tienen i v ´ertices no marcados debajo de v; el encabezado de la tabla se denota por la letra M. La convenci ´on que utiliza el autor para indicar cu ´ales v ´ertices pertenecen al conjunto es como sigue: un v ´ertice est ´a marcado si pertenece al conjunto, apagado en caso contrario. El resto de las columnas de la tabla llevan por encabezadopd, sd yheir cuyo significado es: distancia de padre, distancia a hermano y heredero, respectivamente. El algoritmo comienza haciendo un recorrido del ´arbol en postorden para llenar la tabla de cada v ´ertice.
Si el v ´ertice es una hoja, entonces la columna M se llena con ceros en todos los renglones, excepto en el ´ındice 0 donde se coloca un 1. Esto significa que la hoja se marca.
Para cualquier otro v ´ertice que no sea hoja, existen tres posibilidades de acuerdo al ´ındicei, ´estas son:
Si el ´ındice i = k, entonces para llenar la celda correspondiente en la columna M
se utiliza la ecuaci ´on 2
Mv[k] =
X
c∈Cv
Mc[k−1]. (2)
Si el ´ındice i se encuentra en el intervalo: k −1 ≥ i ≥ 1. En este punto, existe la posibilidad de que un par de v ´ertices hijos devpuedan seleccionarse como v ´ertices marcados pero que se encuentren a una distancia menor que k. Para revisar esta ocurrencia se utiliza la condici ´on 3.
if(i6= 0 ∧ 2i−1< k). (3)
al sub ´arbol enraizado en v. Sean u, w los v ´ertices hijos de v, para seleccionar al heredero se hace una revisi ´on de las tablas de los hijos y se guarda en una variable auxiliar aux1 el resultado de Mu[i−1] + Mw[i]; posteriormente, en una segunda
variableaux2se le asignaMu[i] + Mw[i−1]. Siaux1> aux2, entoncesheirv[i] =u;
de lo contrario, el heredero ser ´a el v ´ertice v. Este procedimiento se repite para todo c ∈ Cv. Asimismo, el valor de sdv[i] = k −(i−1). Si la condici ´on 3 es falsa,
entonces se puede usar la ecuaci ´on 2. La diferencia es que en esta ocasi ´on hay que reemplazark por el valor adecuado de la posici ´on de la tabla.
Finalmente, cuando el ´ındicei= 0, el valor deMv[0]es igual a la suma deMc[k]∀c∈
Cv y a este resultado se le suma una unidad.
A pesar de que ya se ha explicado el llenado de la tabla de cada v ´ertice, hay una opci ´on que no se ha considerado, que una soluci ´on obtenida en alg ´un ´ındicei−1no sea tan buena como la soluci ´on calculada para un ´ındicei(recuerde que el llenado de la tabla comienza por el ´ındicei = k, y decrece hasta llegar a i = 0). Por ello hay que realizar una operaci ´on adicional que el autor llamaverificaci ´on de antecedentes, en la cual, cada resultado obtenido enMv[i]se compara contraMv[i+ 1]. De aqu´ı se obtiene la ecuaci ´on
4 que asigna aMv[i]la mejor soluci ´on encontrada.
Mv[i] =max{Mv[i], Mv[i+ 1]}. (4)
El ´ultimo campo por llenar es la distancia de padre pdv[i], cuyo valor por defecto es
pdv[i] = i. Este campo indica la posici ´on de la tablaMv[ ]en donde se encontr ´o la mejor
soluci ´on para Mv[i]. Es decir, cada vez que la ecuaci ´on 4 encuentra una mejor soluci ´on
paraMv[i] el valor de pdv[i] cambia. Al finalizar el llenado de la tabla del v ´ertice ra´ız se
tiene toda la informaci ´on necesaria para iniciar la Fase 2.
El prop ´osito de la Fase 2 es marcar los v ´ertices que formar ´an parte del conjunto; esto se hace con base en la informaci ´on obtenida en la Fase 1. Para marcar los v ´ertices, es necesario introducir un nuevo t ´ermino: la distancia finalf inalv. La distancia final indica la
el v ´ertice se marca; por el contrario, si el v ´ertice no debe de marcarse, entoncesf inalv
muestra el n ´umero m´ınimo de v ´ertices no marcados que se encuentran por abajo de v
(incluyendo av) antes del pr ´oximo v ´ertice marcado.
La distancia final de cada v ´erticev puede caer en cualquiera de los siguientes casos:
1. El v ´erticev es la ra´ız.
f inalr=pdr[0]. (5)
2. El v ´erticev es el heredero o su padrepno tiene heredero.
f inalv =pdv[(f inalp−1)mod(k+ 1)]. (6)
3. El v ´erticev no es el heredero, pero su padreps´ı tiene heredero.
f inalv =pdv[(sdp[f inalp]−1)mod(k+ 1)]. (7)
De esta forma finaliza la Fase 2 y tambi ´en el algoritmo. Es importante notar que mien-tras el recorrido del ´arbol en la Fase 1 se realiza en postorden, la Fase 2 emplea un reco-rrido preorden. El tiempo de ejecuci ´on total del algoritmo esO(kn)u.t. Asimismo, existe la versi ´on distribuida de este algoritmo, cuya complejidad esO(n3)u. t. La Figura 11 muestra un conjunto 3-packing encontrado mediante este algoritmo.
2.2.4. Conjunto dominante m´ınimo en grafos cactus
Para encontrar el conjunto dominante de cardinalidad m´ınima en un grafo cactus Hedetniemiet al.(1986) proponen el algoritmo MCACTUS, el cual se compone de tres rutinas:MCYCLE, CREATEPATH, y DOMSET. MCACTUS identifica los componentes bi-conectados del cactus y los v ´ertices de corte. Posteriormente, hace uso del algoritmo MCYCLE para identificar los v ´ertices que forman parte del conjunto dominante.
La rutina MCYCLE trabaja bajo la suposici ´on que los v ´ertices del grafo se dividen en tres conjuntos free, bound, required (F, B, R). Los v ´ertices que se encuentran en R
encuentran dominados por los v ´ertices deR. Los v ´ertices libres no se encuentran domi-nados, pero pueden incluirse enRpara dominar a los v ´ertices deB. MCYCLE encuentra el conjunto dominante mixto, es decir encuentra los v ´ertices que se encuentran tanto en
R como enB, de un componente biconectado. Lo anterior se lleva a cabo mediante las rutinas DOMSET y CREATEPATH. La primera rutina encuentra el conjunto dominante en un componente no c´ıclico, mientras que la rutina CREATEPATH recibe un v ´ertice u eti-quetado como R y un ciclo C, el vecindario de u se re-etiqueta como F y u se elimina del ciclo. Finalmente, CREATEPATH regresa el camino generado al borrar al v ´erticeudel ciclo.
Para encontrar los componentes biconectados, el autor hace uso del algoritmo 5.3 de (Aho y Hopcroft, 1974) cuya complejidad es de O(|E|), es decir, para el grafo cactus es O(n) u. t. El tiempo de ejecuci ´on tanto de CREATEPATH como MCYCLE es lineal. Asimismo, MCACTUS manda llamar a MCYCLE a lo m ´as 3 veces por componente. De aqu´ı que la complejidad total del algoritmo MCACTUS esO(n)unidades de tiempo.
2.3. Algoritmos que encuentran conjuntos maximales
Diversos procedimientos se emplean para encontrar conjuntos de v ´ertices sobre un grafo; estos procedimientos suelen emplear tanto secuencias de pasos bien definidos, como selecci ´on voraz, e incluso aleatoriedad. No obstante, el resultado que se obtiene no siempre es el ´optimo (debido a la complejidad del problema) y en caso de encontrar el conjunto de mayor tama ˜no el tiempo de ejecuci ´on puede llegar a ser muy elevado. Esta secci ´on presenta algunos de los algoritmos que es posible encontrar en la literatura para calcular conjuntos maximales sobre el grafo.
2.3.1. Algoritmo autoestabilizante para un CIF maximal en cactus
se realiza partiendo de la ra´ız del ´arbol de esparcimiento y avanza asignando el mismo color a los v ´ertices que se encuentren en el mismo nivel. La idea de este coloreo es que los v ´ertices rojos sean el conjunto de v ´erticesS que forman el CIF maximal. Dentro del conjunto de v ´ertices de color azul existen dos tonalidades azul = {azul1, azul2}, que se
asignan a cada v ´ertice dependiendo de su cercan´ıa a un v ´ertice rojo. La complejidad del algoritmo es O(DK) u. t., dondeDK es el di ´ametro del cactus. Si el grafo es un anillo, el
algoritmo encuentra el CIF m ´aximo.
2.3.2. Algoritmo autoestabilizante para encontrar el CIF en un grafo arbitrario
Gairinget al.(2004) describe un algoritmo auto-estabilizante para encontrar un CIF maximal sobre un grafo arbitrario; no obstante, el n ´umero de movimientos requeridos para alcanzar el objetivo es exponencial. La estrategia que sigue el autor es utilizar punteros para conocer la informaci ´on del vecindario de un v ´ertice a distancia 2. De esta forma se van construyendo ´arboles de esparcimiento donde la ra´ız de cada sub ´arbol son los v ´ertices marcados para el CIF. Un v ´ertice se agrega al conjunto s ´olo si todos sus vecinos apuntan hacia ´el. Un v ´erticev ∈CIF se puede remover del conjunto si existe otro v ´ertice
u vecino de v tal que u tambi ´en est ´a en el CIF y tiene menor identificador que v. El calendarizador que emplea este algoritmo es el adversario. Posteriormente, Shi (2012) mejora notablemente este enfoque, reduciendo el sobre costo aO(mn)movimientos bajo cualquier calendarizador y cuya estabilizaci ´on se alcanza en O(n2) rondas. El algoritmo
est ´a compuesto de 4 reglas :c-Decrease, Leave, Join, c-Orphan. La reglac-Decreasese encarga de actualizar la distancia de un nodo hacia otros si es que existe un nodo en el vecindario con menor identificador. La reglaLeaveasegura que la distancia entre cada par de nodos en el conjunto sea por lo menos 3; esta regla se acompa ˜na de la reglac-Orphan
2.3.3. Metodolog´ıas de informaci ´on a distanciak
Los autores en (Goddardet al., 2008) proponen una metodolog´ıa (modelo extendido) para expandir la informaci ´on que un v ´ertice puede tener acerca de los v ´ertices en su vecindario, extendiendo as´ı el conocimiento de este v ´ertice hasta aquellos v ´ertices que se encuentren a una distanciak(ver la Figura 12). En esta metodolog´ıa, cada v ´ertice tiene una variable binariaf, tal quef(i) = 1si eli- ´esimo v ´ertice pertenece al conjunto;f(i) = 0, en caso contrario. Tambi ´en se emplea la variable σ que se encarga de almacenar una copia de la informaci ´on a distanciakdel v ´ertice. Finalmente, se emplea un apuntador−→
hacia alg ´un miembro del vecindario cerrado del v ´ertice que se encuentre a lo m ´as a distancia k. El algoritmo se compone de 4 reglas UPDATE, ASK, RESET y CHANGE. La regla UPDATE actualiza y verifica que la informaci ´on guardada por σ sea correcta, mientras que la reglaASK comprueba si un v ´ertice se encuentra privilegiado para realizar cambios o corregir sus valores enσ. Por su parteRESET monitorea los punteros de los v ´ertices para que cada uno de ellos apunte hacia el v ´ertice con menor identificador dentro de su vecindario cerrado a distancia k. Finalmente,CHANGE le permite que un v ´ertice se agregue al conjunto si todos sus vecinos a distanciakapuntan hacia ´el y si los valores de σ son correctos. Este algoritmo tiene una complejidad de O(n2m) movimientos. El Algoritmo 1 encuentra un CIF maximal bajo el modelo extendido.
Algoritmo 1:Algoritmo: 2-Packing suponiendo el modelo extendido
1 ENTER:ifi /∈S∧S∩N2(i) =∅then 2 enterS;
3 end
4 LEAVE:ifi∈S∧S∩N2(i)6=∅then 5 leaveS;
6 end
Posteriormente, Turau (2012) retoma la transformaci ´on anterior (renombr ´andola como modelo de expresi ´on) y la mejora a tan s ´olo O(m) movimientos. El autor desarrolla dos algoritmos auto-estabilizantes, uno para el calendarizador central y otro para el calenda-rizador distribuido. Para el calendacalenda-rizador central, el algoritmo se llamaTransformador C
y consiste de 5 reglas: Update, Request, Grant, Execute,y Reset.Update garantiza que las variables de las expresiones tengan valores correctos. Un v ´ertice hace uso de la regla
Figura 12: De izquierda a derecha, informaci ´on a distancia 4, 2, y 1 desde el v ´ertice i. Bajo este modelo, la arista punteadahb, ei ∈Eno es visible a distancia dos desde el v ´erticei. Imagen tomada de (Goddardet al.,2008).
reglaGrant, pero ´unicamente para ejecutar las reglas Execute o Reset. La regla Execu-te ejecuta cualquier algoritmo que se encuentre dentro se esta regla; conversamente, la reglaReset cancela los permisos otorgados al v ´ertice.
Bajo un planificador distribuido, los v ´ertices vecinos no pueden llevar a cabo las reglas
Execute y Reset de forma concurrente puesto que estos nodos se podr´ıan aprobar de forma simult ´anea; por ello, para este calendarizador, se agregan un par de reglas adi-cionalesLockR y LockE, que simplemente verifican si un v ´ertice quiere pedir permiso y si quiere ejecutar alguna acci ´on. Ambas reglas le avisan al resto del vecindario que no ejecuten ninguna acci ´on hasta que el v ´ertice al que se le concedi ´o permiso realice sus tareas. Posteriormente, las reglasUnlockR y UnlockE cancelan las peticiones del v ´ertice. El Algoritmo 2 encuentra un conjuntok-dominante minimal bajo el modelo de expresi ´on.
Algoritmo 2:AlgoritmoA1: Conjuntok-dominante (modelo de expresi ´on)
1 εA={IN count::|{w∈N(v) :w.state=IN}|}
2 R1:ifv.state=OU T ∧v.Incount < k then
3 v.state←IN;
4 end
5 R2:ifv.state=IN ∧v.IN count≥k∧(∀w∈N(v) :w.state =IN ∨w.IN count > k)
then
6 v.state←OU T;
7 end
Tanto Goddardet al.(2008) como Turau (2012) presentan aplicaciones de la metodo-log´ıa en problemas comok-packing, conjuntos irredundantes y otros conjuntos maximales o minimales. Asimismo, Manne y Mjelde (2006) toman la metodolog´ıa desarrollada por Goddardet al.(2008) para encontrar un CIF maximal donde la complejidad temporal del algoritmo se mantiene, pero la complejidad espacial se reduce.
con-Tabla 1: Algoritmos para conjuntos m ´aximos y m´ınimos.
Problema Grafo T(n)
Conjunto independiente y 2-conjunto independiente
(Das, 2012) cactus O(n)
Conjunto independiente ´arbol O(n)
Conjuntok-packing (Mjelde, 2004) ´arbol O(kn)
Conjunto dominante (Hedetniemiet al., 1986) cactus O(n) Conjuntok-packing autoestabilizante (Mjelde, 2004) ´arbol O(n3)
juntos independientes maximales y conjuntos dominantes minimales. La estrategia re-quiere ´unicamente de un n ´umero lineal de movimientos bajo un planificador central. El algoritmo se compone de tres estadosIN, OUT yWAIT. El estadoIN indica que un v ´erti-ce se marca para el conjunto. Por su parte, el estado OUT etiqueta al v ´ertice que no pertenece al conjunto, y WAIT indica que un v ´ertice u podr´ıa cambiar hacia el estado
IN si es que el vecindario de u no tiene otro v ´ertice que tambi ´en este en WAIT y cuyo identificador sea menor.
Tabla 2: Algoritmos para conjuntos maximales y minimales.
Problema Grafo T(n)
CIF auto-estabilizante
(Trejo-S ´anchez y Fern ´andez-Zepeda, 2012) cactus O(Dk) CIF auto-estabilizante
(Gairinget al., 2004) general exponencial
CIF auto-estabilizante
(Shi, 2012) general O(n
2)
CIF auto-estabilizante, modelo extendido
(Goddardet al., 2008) general O(n
2m)
CIF auto-estabilizante, modelo de expresi ´on
(Turau, 2012) general O(m)
CIF distribuido
(Trejo-S ´anchez y Fern ´andez-Zepeda, 2014) outerplanar O(n) Conjuntok-packing auto-estabilizante
(Manne y Mjelde, 2006) general O(n
2m)
Conjunto independiente auto-estabilizante
(Turau, 2007) general O(n)
Conjunto dominante auto-estabilizante
Cap´ıtulo 3.
Algoritmo para encontrar el CIF m ´aximo en
grafos cactus
3.1. Introducci ´on
En este cap´ıtulo se presenta el algoritmo CIF-MAXIMUM-CACTUS, que es el algoritmo de tiempo polinomial desarrollado en este trabajo para encontrar el CIF m ´aximo en un grafo tipo cactus. El cap´ıtulo inicia con la descripci ´on de alto nivel de c ´omo funciona el algoritmo. Posteriormente, se explican m ´as detalles acerca de sus componentes; asimis-mo, se presentan los pseudoc ´odigos y formalizaci ´on del mismo. Finalmente, se analiza su tiempo de ejecuci ´on.
3.2. Descripci ´on de alto nivel
El algoritmo para encontrar el CIF sobre un cactusK = (VK, EK), se descompone en
las siguientes partes:
1. Si la cantidad de v ´ertices del grafo es exactamente igual a 1, entonces marque el v ´ertice y termine el proceso. Si la condici ´on anterior no se cumple, continue con los siguientes incisos.
2. Divida el grafo de entradaK en componentes biconectados.
3. Genere un ´arbol de componentes biconectadosTB, y seleccione cualquier
compo-nente como ra´ız para el ´arbol. De los v ´ertices que integran el compocompo-nente ra´ız, seleccione un v ´ertice ra´ız.
4. Siga el recorrido postorden sobre TB y calcule el CIF en cada componente de la
siguiente manera:
a) Si el componente biconectado es una hoja en el ´arbol, marque la mayor canti-dad de v ´ertices posibles de tal forma que no se violen las propiecanti-dades del CIF, y donde la distancia m ´as corta del v ´ertice de articulaci ´on hacia el v ´ertice mar-cado m ´as cercano sea lo m ´as grande posible, llame a esta distanciarestricci ´on
b) Si el componente es un v ´ertice intermedio o ra´ız del ´arbol TB, primero eval ´ue
las restricciones que recibe de sus hijos y, posiblemente, de su padre, mante-niendo aquella cuya distancia sea menor (restricci ´on de mayor peso).
c) Dentro del proceso de marcado de v ´ertices, evite marcar el v ´ertice de articu-laci ´on hacia el componente padre; el marcado de dicho v ´ertice depende del componente padre (excepto en la ra´ız.)
5. Reconstruya la respuesta enK a partir del marcado realizado enTB.
3.3. Notaci ´on empleada
As´ı como se menciona en la Secci ´on 1, un grafo cactus se denota por K = (VK, EK)
donde VK y EK son el conjunto finito de v ´ertices y aristas de K, respectivamente. El
´arbol de componentes biconectados se representa por TB = (B, EB), los v ´ertices de
este ´arbol son los componentes biconectados del grafo K. Al conjunto de v ´ertices de
TB se les denota por B = {B1, B2, ...Bi, ..., BN}, donde el i- ´esimo elemento denota el
orden de aparici ´on del componenteien el recorrido postorden sobre TB, de aqu´ı que el
componenteBN sea el v ´ertice ra´ız del ´arbol de componentes biconectados.
Los v ´ertices que integran al componente Bi, cuando ´este es un ciclo, se denotan
si-guiendo una numeraci ´on en el sentido de las manecillas del reloj de la siguiente manera: para el v ´erticevi,j, el sub´ındiceiindica que pertenece al componenteBi, mientras que el
sub´ındicej, para j ≥ 0, indica que es el j- ´esimo v ´ertice que se encuentra en el compo-nenteBi. Considere tambi ´en que cadaBi tiene un ´unico v ´ertice de articulaci ´on vi,0 hacia
su componente padre, y quevi,j0 es el v ´ertice marcado m ´as cercano haciavi,0. Adem ´as, si
Bies un componente intermedio, entoncesv¯i,j denota el v ´ertice de articulaci ´on hacia uno
de los componentes hijos. SiBi es un clique de tama ˜no 2, entoncesvi,0 es el v ´ertice que
tiene una arista hacia su componente padre yvi,1es el v ´ertice restante en el componente.
El resto de la notaci ´on que se emplea en los componentes c´ıclicos se conserva para los componentes cliques.
La distancia m ´as corta entre entre un v ´ertice vi,j y el v ´ertice marcado m ´as cercano
Figura 13: En el ´arbolTB que muestra la figura, el conjunto de v ´ertices es:B ={B1, B2, B3}, mien-tras que el conjunto de aristas es:EB ={B1−B3, B2−B3}. El componenteB3 tiene dos v ´ertices de articulaci ´on hacia componentes hijos,v3,2 que es el v ´ertice v3,2 y de forma similar v3,1 = v3,1. Asimismo, para el componenteB3, el conjunto de componentes hijos esCB3 ={B1, B2}.
de v ´ertices vi,j y vi,k se escribe mediante la notaci ´on dist(vi,j, vi,k) y la restricci ´on que
recibe un v ´ertice se denota con:restricci ´on(vi,0). Finalmente, al conjunto de componentes
biconectados hijos de un v ´erticeBi ∈TB se denota porCBi (ver la Figura 13).
3.4. Descripci ´on del algoritmo CIF-MAXIMUM-CACTUS
Esta secci ´on describe las partes que integran el algoritmo CIF-MAXIMUM-CACTUS. Cada subsecci ´on, iniciando con la descomposici ´on de componentes biconectados hasta la reconstrucci ´on de la respuesta en K, detalla en prosa las operaciones que se llevan a cabo; asimismo, en la subsecci ´on de marcado de v ´ertices, se explica el criterio de desempate entre las diversas configuraciones de v ´ertices marcados.
3.4.1. C ´alculo de los componentes biconectados deK
La b ´usqueda de componentes biconectados para el TB se lleva a cabo mediante 2
procedimientos preliminares: lab ´usqueda de ciclosyb ´usqueda de cliques de tama ˜no 2.
Figura 14: B ´usqueda de ciclos. a) GrafoKde entrada. b) grafoKsin ciclos. Los v ´ertices punteados indican que tambi ´en se encuentran en alg ´un ciclo.
para que un componente biconectado no aparezca en m ´as de una ocasi ´on (ver la Figura 14).
2. B ´usqueda de cliques de tama ˜no 2: Al finalizar la b ´usqueda de ciclos, el grafo K
se compone un bosque. Cada arista con sus v ´ertices extremos (clique de tama ˜no 2) es un componente biconectado. La Figura 15 muestra los cinco componentes biconectados que se desprenden del grafoK de la Figura 14a.
Figura 15: Componentes biconectados del grafoK.
3.4.2. Creaci ´on del ´arbol de componentes biconectados
Un paso previo a la construcci ´on del ´arbolTBes la construcci ´on de un grafo intermedio
Figura 16: GrafoGBcon un ciclo.
encontrados por la b ´usqueda (ciclos y de cliques de tama ˜no 2) y donde E0 ⊆ EK. Para
formar el grafo intermedio se elige aleatoriamente un componente como ra´ız para GB.
Posteriormente, para todo parBi, Bk de componentes de B se agrega una arista entre
los componentesBi, Bk, si existe un v ´erticevi,j y un v ´erticevk,l tal quevi,j yvk,l tienen el
mismo identificador. La Figura 16 muestra el grafo de componentes obtenido; los v ´ertices
v5,1 yv4,0 tienen el mismo identificador, la letra b y los componentes{B1, B3, B4} poseen
aristas entre s´ı puesto que tienen un v ´ertice en com ´un, el v ´erticee.
A partir deGBse forma el ´arbol de bloquesTB = (B, EB), dondeEB ⊆E0, eliminando
las aristas entre los bloques que se encuentran en el mismo nivel, esto se puede realizar mediante una b ´usqueda en anchura (BFS). Por ejemplo, en la Figura 16, la arista entre
B1 y B3 (pintada en negritas) se elimina generando as´ı el ´arbol que se muestra en la
Figura 17.
3.4.3. C ´alculo del CIF por componente
El calculo del CIF sobre el ´arbol TB sigue un recorrido en postorden (visita el v
Figura 17: ´ArbolTBobtenido al remover las aristas entre componentes hermanos.
Figura 18: Vecindario izquierdo y derecho de un v ´ertice. a) El vecino izquierdo debes el v ´erticegy el vecino derecho esc. b) Para el v ´erticee, el vecino izquierdo y derecho es el v ´erticei; similarmente,
3.4.3.1. C ´alculo del vecino izquierdo y derecho
Cada componente biconectado tiene al menos dos v ´erticesvi,0yvi,1. Es necesario que
´estos conozcan su vecindario inmediato, en otras palabras, aquellos que se encuentran a distancia 1. Adem ´as, cada v ´ertice debe conocer la posici ´on de sus vecinos, es decir, cu ´al de ellos se encuentra a la izquierda y a la derecha. En caso de que el componente sea un clique, se considera que el vecino izquierdo devi,0 es el v ´ertice vi,1; asimismo, el
vecino derecho devi,0 tambi ´en esvi,1 (ver la Figura 18).
3.4.3.2. Empaquetamiento
La selecci ´on de v ´ertices para el CIF sigue cuatro procesos:
1. Marcar legalmente la mayor cantidad de v ´ertices que se pueda, evitando marcar el v ´ertice de articulaci ´on.
2. Si dos o m ´as configuraciones v ´alidas (enti ´endase por configuraci ´on al marcado de v ´ertices) aportan la misma cantidad de v ´ertices para al CIF, entonces elija aquella donde la distancia m ´as corta del v ´ertice marcado hacia el punto de articulaci ´on sea la mayor posible, es decir: dist(vi,0 v0i,j) sea m ´axima.
3. Si existe la posibilidad de marcar el v ´ertice de articulaci ´on para que la cardinalidad del conjunto sea mayor, entonces no hacerlo. Note que el v ´erticevi,0 por ser v ´ertice
de articulaci ´on tambi ´en existe en el componente padre Bp comov¯p,j; por lo tanto, si
se marca o no dicho v ´ertice es decisi ´on del componente padre.
4. Cada vez que se marca un v ´ertice para formar parte del conjunto, la distancia m ´as corta de cada v ´ertice hacia el v ´ertice marcado m ´as cercano debe actualizarse.
3.4.3.3. C ´alculo del CIF cuando el componente es una hoja
Considere el componenteB2(Figura 17), el cual contiene los v ´ertices{i, j, k}y donde
hacia al v ´ertice de articulaci ´on sea m ´axima, esta distancia se pasa hacia el componente padre como restricci ´on. En este ejemplo, podr´ıa marcarse el v ´ertice i para formar parte del CIF; sin embargo, dicho marcado implica que la distancia de i hacia el v ´ertice de articulaci ´on (que es el mismo) sea cero. Otro posible marcado es tomar como parte del conjunto ya sea al v ´erticej o el v ´erticek, lo cual aporta (al igual que el marcado anterior) un s ´olo v ´ertice al conjunto; sin embargo, al seleccionarj, la distancia hacia ies de una arista (algo similar ocurre al seleccionar k), por lo que ´esta es una mejor configuraci ´on. En caso de que se genere un empate en cuanto a qu ´e v ´ertice se marca, elija aquel con el menor identificador; particularmente, para este ejemplo el v ´ertice j se marcar ´a para formar parte del CIF.
3.4.3.4. C ´alculo del CIF para componentes intermedios o ra´ız
Si el componente es intermedio significa que sus componentes hijos ya se han evalua-do (recorrievalua-do postorden) y por lo tanto, puede existir alguna restricci ´on. Un componente puede tener tantas restricciones como n ´umero de hijos. Asimismo, cada¯vi,j puede tener
varias aristas hacia sus componentes hijos (una por hoja). Es responsabilidad de cada componente intermedio, en particular de cada v¯i,j, ponderar todas las restricciones que
recibe y mantener la de mayor peso, es decir, la que entre todas las distancias sea menor. Tome como ejemplo el componente B4 de la Figura 17, el cual tiene como hijos a B1 y
B3. Se supone que sus hijos as´ı como los sub ´arboles enraizados en cada componente
hijo ya han sido evaluados, entonces se tiene que el componenteB1 pasa una restricci ´on
de distancia uno al componente B4 (esto es porque el v ´ertice h se ha seleccionado
pa-ra formar parte del CIF). De forma similar, el componenteB3 pasar´ıa una restricci ´on de
distancia dos. Dadas las anteriores restricciones, el componente B4 toma la restricci ´on
del componente B1 (por ser aquella de distancia menor) y la asigna al v ´ertice e como
distancia hacia su v ´ertice marcado m ´as cercano.
Una vez que el componente conoce todas las restricciones, procede a buscar el mar-cado de v ´ertices en el componente actual, respetando los cuatro principios generales mencionados en la secci ´on deEmpaquetamiento. Si el componente a evaluar es el v ´erti-ce ra´ızBN, entonces la evaluaci ´on procede igual que si se tratara de un nodo intermedio,
Figura 19: ´ArbolTB una vez que sus componentes han sido evaluados. Los v ´ertices marcados u obscuros pertenecen al conjuntoS.
adem ´as, de ser necesario se permite el marcado del v ´ertice ra´ız para aumentar la cardi-nalidad del conjunto.
Dentro del algoritmo existe un procedimiento llamadoincrementaρcuya tarea es sim-ple: contar el n ´umero de v ´ertices que se han marcado dentro de cada componente deTB.
De forma similar, existe un m ´etodo llamadocalculaρque se encarga de contar el total de los v ´ertices marcados en todo el ´arbolTB.
3.4.4. Mejor lista y mejor distancia
Durante la ejecuci ´on del algoritmo se emplean diversas estructuras de datos, entre ellas se puede nombrar una lista llamada mejorLista que se encarga de mantener el marcado de v ´ertices que realiza el algoritmo sobre un componente Bi que hasta cierto
Figura 20: GrafoK= (VK, EK)con v ´ertices marcados u obscuros que pertenecen al CIF.
Existe un par ´ametro adicional llamado mejorDistancia que mantiene la distancia en-contrada del v ´erticevi,j0 al v ´ertice de articulaci ´on, en caso necesario, este par ´ametro sirve para desempatar distintas configuraciones de v ´ertices almacenadas enmejorListatal que su cardinalidad sea igual entre ellas y a la vez m ´axima enBi.
3.4.5. Construcci ´on de la respuesta enK
La traducci ´on de la respuesta encontrada en elTB hacia el grafoK es una tarea trivial
que se construye siguiendo un recorrido en postorden sobre los bloques delTBy copiando
el marcado de v ´ertices hacia el grafoK.
3.5. Pseudoc ´odigos
En esta secci ´on se presenta el pseudoc ´odigo del algoritmo propuesto. La sintaxis empleada se describe a continuaci ´on:
1. Los objetos tales como grafos, nodos y variables se escriben en cursiva:G.
2. La asignaci ´on de valores se indican mediante el signo “←”.
4. Los comentarios se denotan de la siguiente manera:/*´este es un comentario*/.
5. Los procedimientos se escriben en min ´usculas si requieren una palabra, por ejem-plo, “calcular(<valor>)”, en caso de necesitar m ´as de una palabra para su descrip-ci ´on entonces se utilizan min ´usculas y may ´usculas: “calcularRecorrido(<valor>)”. Si el procedimiento es bien conocido, como la b ´usqueda en profundidad, entonces se utiliza la abreviaci ´on del mismo (BFS).
6. Si un procedimiento se explica en alg ´un otro algoritmo de esta secci ´on, se denota de la siguiente manera RUTINA(<valor>).
7. Las variables se denotan con letras cursivas:variable.
8. Los atributos de un objeto se acceden mediante el operador “.” y se nombran
si-guiendo la misma convenci ´on empleada en los procedimientos, i.e,K.nodo(<identificador>).
Algoritmo 3:CIF-MAXIMUM-CACTUS
Entrada: Un grafo cactusK = (VK, EK), donde∀u∈VK,u.marcado = falso.
Salida : Un conjunto independiente fuerteS ⊆VK, tal que los v ´ertices enS se
marcan sobreK.
1 begin
2 if|K|=1then
3 K.nodo.marcado←verdadero 4 else
5 SeaTB un ´arbol de componentes biconectados
6 Obtenga los componentes biconectados deK, y agr ´eguelos aTB 7 Agregue una arista entre cada par de componentesBi, Bk si existen los
v ´erticesvi,j, vk,l tal que sus etiquetas sean iguales
8 Elija de los componentes deTB un componente ra´ız,BN
9 agregarRa´ız(TB,BN, falso)/*agregue una ra´ız pero no enra´ıce el grafo*/
10 BFS(TB,BN)
11 Elimine las aristas entre los componentes deTB que se encuentren a la
misma altura
12 agregarRa´ız(TB,BN, verdadero)/*enra´ıce el grafo en BN*/ 13 OBTENERCIF(TB)
14 /*Marcado de v´ertices en el grafo original*/
15 for1≤i≤ |B|do
16 for0≤j <|Bi|do
17 ifvi,j.marcado = verdadero then
18 K.nodo(vi,j).marcado←−verdadero
19 end
20 end
21 end
Algoritmo 4:OBTENERCIF(TB).
Entrada: Un ´arbol de componentes biconectadosTB.
Salida : El ´arbol de entrada con los v ´ertices marcados que pertenecen al CIF.
1 begin
2 SeaB ={B1, B2, ..., Bi, ...BN}el conjunto de componentes biconectados deTB
donde eli- ´esimo elemento denota el orden de aparici ´on del componenteBi en
el recorrido postorden sobreTB.
3 Identifique los v ´ertices de articulaci ´on en cada componenteBi. 4 SeaBp el componente padre de Bi.
5 for1≤i≤ |B|do
6 restricci ´on←restricci ´on(¯vp,j) 7 restricci ´on(vi,0)←restricci ´on 8 EMPAQUETAMIENTO(Bi)
9 ifdist(vi,0) = 0then
10 distancia← ∞
11 else
12 distancia←dist(vi,0)
13 end
14 ifrestricci ´on< distanciathen 15 nuevaRestricci ´on←restricci ´on
16 else
17 nuevaRestricci ´on←distancia
18 end
19 restricci ´on(Bp.nodo(vi,0))←nuevaRestricci ´on 20 actualizarDistancias(Bi, vi,0)
21 end
22 calculaρ(TB) 23 returnTB 24 end
Algoritmo 5:EMPAQUETAMIENTO(Bi)
Entrada: Un componente biconectadoBi ∈TB.
Salida : El componente de entrada con los v ´ertices marcados para el CIF.
1 begin
2 calculaVecinoIzquierdoDerecho(Bi) 3 if|Bi|>2then
4 PROCEDIMIENTO1(Bi) 5 else
6 PROCEDIMIENTO2(Bi)
7 end
8 reiniciarDistancias(Bi)
9 distancia(vi,0, vi,j0 )←mejorDistancia 10 actualizarDistancias(Bi,vi,0)
Algoritmo 6:PROCEDIMIENTO1(Bi).
Entrada: Un componente biconectadoBi ∈TB con m ´as de dos v ´ertices sobre los
cuales se realizar ´a el recorrido.
Salida : El componente biconectado de entrada con los v ´ertices marcados para el CIF.
1 begin
2 iftieneRestricciones(Bi) = verdaderothen 3 u←vi,0
4 reiniciarDistancias(Bi) 5 actualizarDistancias(Bi,u) 6 RECORRIDO(Bi,u, “derecha”) 7 u←vi,0
8 reiniciarDistancias(Bi) 9 actualizarDistancias(Bi, u) 10 RECORRIDO(Bi,u, “izquierda”) 11 else
12 restricci ´on(vi,0)←3
13 actualizarDistancias(Bi, vi,0) 14 EMPAQUETAMIENTO(Bi) 15 returnBi
16 end 17 end
Algoritmo 7:RECORRIDO(Bi, u, sentido)
Entrada: El sentido del recorrido{“derecho”, “izquierdo”}.
Salida : Un marcado de v ´ertices sobreBi iniciando por el v ´erticeuy cuyo
recorrido
sigue la direcci ´on indicada por la variablesentido.
1 begin
2 Seasentidola direcci ´on por la que se realizar ´a el recorrido
3 for0≤l <|Bi|do
4 BUSCARMARCADO(Bi, u) 5 reiniciarDistancias(Bi) 6 actualizarDistancias(Bi, u)
7 ifsentido= “derecho” then
8 u←Bi.nodo(vecinoDerecho(u))
9 else
10 u←Bi.nodo(vecinoIzquierdo(u))
11 end