Aproximando la iluminación por módems∗ A.L. Bajuelos† S. Canales, ‡ G. Hernández§ A. M. Martins¶ Resumen En este artı́culo obtenemos soluciones aproximadas a una generalización del problema clásico de iluminación de polı́gonos. En lugar del foco de luz habitual, consideramos un dispositivo inalámbrico cuya señal puede atravesar un determinado número número k de paredes. Estos dispositivos son designados por k-módems. Presentamos un algoritmo para construir la región poligonal cubierta por un k-módem y analizamos con técnicas metaheurı́sticas el problema de minimizar el número de k-módems, situados en vértices, que son necesarios para cubrir un polı́gono de n lados. Se obtienen resultados para k = 2 y k = 4 tanto en polı́gonos generales como ortogonales. 1 Introducción La iluminación y los problemas de visibilidad han sido siempre áreas de estudio en Matemáticas e Informática, especialmente en Geometrı́a Computacional. La definición clásica de visibilidad asegura que dos puntos x e y de un conjunto D en <2 son visibles si el segmento xy está completamente contenido en D (ver [7]). Sin embargo, el desarrollo de internet y de las redes inalámbricas inspiran nuevas investigaciones en este área de la Geometrı́a Computacional, como se muestra en [3, 4, 8]. Recientemente Aichholzer y otros definen en [5] el problema de iluminación con módem para regiones poligonales. Existen dos factores clave a la hora de conectar un ordenador a una red inalámbrica: la distancia al módem inalámbrico y el número de paredes que separan nuestro ordenador de dicho módem. Ası́, se dice que un punto x en un polı́gono P está cubierto o iluminado por un k-módem w en P si el segmento xw cruza a lo sumo k paredes (aristas) de P , (ver figura 1). Entonces podemos plantear el siguiente problema: Dado un polı́gono P con n vértices, ¿cuál es el número mı́nimo de k-módems (situados sobre puntos de P ) a veces necesarios y siempre suficientes para cubrir P ? Es fácil observar que (i) para el caso en que k = 0 este problema se reduce al problema clásico de la Galerı́a de Arte y que (ii) para k = n bastarı́a un único n-módem situado en cualquier punto para cubrir P (solución trivial). En [5] se obtienen cotas combinatorias ajustadas de este problema para polı́gonos monótonos, quedando abierto el problema para polı́gonos generales y ortogonales. Partiendo del presupuesto de que este problema es N P-duro (como muchas variantes de los problemas de Galerı́a de Arte) tiene sentido abordarlo aplicando técnicas de resolución aproximadas. Este trabajo esta organizado de la siguiente forma: en la sección 2 se presentan dos algoritmos que calculan la región cubierta por un k-módem situado en un punto de un polı́gono con n lados. Uno para k fijo y otro que construye todas las regiones de visibilidad (cubiertas) para todos los posibles valores de k (0 ≤ k ≤ n). En la sección 3 se discuten las técnicas metaheurı́sticas diseñadas para resolver de forma aproximada el problema de la minimización del número de k-módems, basadas en un método ∗ Parcialmente subvencionado por los proyectos MEC MTM2008-05043, Acción Integrada HP2008-0060, CEOC con Programa POCTI, FAC, cofinanciado por EC fondos FEDER y apoyado por la beca FCT SFRH/BD/19138/2004 † Departament of Mathematics & CEOC. University of Aveiro. [email protected] ‡ Escuela Técnica Superior de Ingenierı́a, ICAI. Universidad Pontificia Comillas de Madrid. [email protected] § Facultad de Informática. Universidad Politécnica de Madrid. [email protected] ¶ Departament of Mathematics & CEOC. University of Aveiro. [email protected] hı́brido que utiliza tanto algoritmos genéticos como simulated annealing. Presentamos a continuación en la sección 4 los resultados experimentales obtenidos para k = 2 y k = 4. Se realizó un estudio detallado del número mı́nimo de k-módems que producen en media dichas técnicas sobre conjuntos de polı́gonos generados aleatoriamente distinguiendo dos casos: polı́gonos simples arbitrarios ó generales y polı́gonos ortogonales. Los resultados obtenidos muestran que, aproximadamente ¥ n ¦ y en ¥media, ¦ el n número de 2-módems necesarios para cubrir un polı́gono P con n lados es 26.10 , ¥siendo¦ 52.35 ¥ n ¦si n consideramos 4-módems. Si los polı́gonos son ortogonales, los valores obtenidos son 27.39 y 57.47 , respectivamente. Figura 1: Zona cubierta por un 2-módem en un polı́gono con 100 vértices 2 Región de visibilidad de un k-módem Sea P un polı́gono simple con n vértices {v0 , v1 , . . . , vn−1 }, y x un punto de P donde se ha ubicado un k-módem. Construiremos la región iluminada desde x atravesando a lo sumo k paredes. Esta región tendrá zonas del interior de P y zonas del exterior. Por razones de simplicidad consideramos P contenido en una caja rectangular R y construiremos la región visible en el interior de la caja. 2.1 Región visible para k fijo En primer lugar describimos un algoritmo que construye la región visible Q desde un k-módem situado en un punto x, con k fijo. Suponemos que x está en posición general y que los vértices de P están ordenados en sentido positivo. Los pasos del algoritmo son: 1. Haz de semirrectas desde x. Se trazan las semirrectas con origen en x y que pasan por los vértices crı́ticos de P para x. Un vértice v es crı́tico para x si los vértices anterior y posterior a v se encuentran en el mismo semiplano respecto de vx, (ver figura 3(a)). Se ordenan angularmente desde x estas semirrectas. 2. Trazado del borde de la región visible Q (a) Primero detectamos un punto z en ese borde. Consideramos la semirrecta horizontal (a la derecha de x) y detectamos el punto de corte z con P tras atravesar k paredes. En este punto z comenzamos a trazar el borde de Q en el sentido positivo de P . (Si se alcanza el rectángulo R sin llegar a atravesar k paredes, se toma el punto de corte con R como punto z). (b) Si k es par se avanza por P (en sentido positivo) hasta alcanzar la siguiente semirrecta del haz. Si k es impar se retrocede por el borde de P hasta alcanzar la siguiente semirrecta. (c) Si t es el punto de corte con dicha semirrecta, se distinguen dos casos: (i) t está más cerca de x que el vértice crı́tico, en cuyo caso se prosigue por el borde de P y (ii) t está más lejos de x que el punto crı́tico. Entonces se avanza por la semirrecta, o bien hacia el punto crı́tico (casos 1 y 2), o bien en sentido contrario (casos 3 y 4) según se indica en la figura 2. El siguiente vértice del polı́gono de visibilidad Q es, o bien el punto crı́tico (casos 1 y 2), o bien el segundo punto posterior de corte de la semirrecta con P . 3. Se continua la construcción del borde de Q siguiendo la nueva arista hasta alcanzar la siguiente semirrecta. Y se repite el análisis anterior. Se prosigue hasta cerrar Q, polı́gono de visibilidad desde el k-módem x. Complejidad del algoritmo. La complejidad de este algoritmo proviene del paso de ordenación de las semirrectas en tiempo O(n log n). La construcción posterior del polı́gono Q se realiza en tiempo lineal, pues cada lado de P sólo interviene O(1) veces. x x Caso 1 x x Caso 4 Caso 3 Caso 2 Figura 2: Casos posibles para k fijo 2.2 Regiones visibles para k variable Si se desea calcular la región visible desde x con varios k-módems y diferentes valores de k, el algoritmo anterior permite calcular cada uno en O(n log n). Ası́ si se quiere la región k-visible para t valores diferentes de k, el coste serı́a O(tn log n). Sin embargo, se pueden calcular todas las regiones de visibilidad desde x para todos los posibles valores de k en tiempo O(n2 ) con el algoritmo cuyos pasos se describen a continuación: 1. Trazar todas las semirrectas con origen en x, y que pasan por los vértices crı́ticos (ver figura 3(a)). Determinar los puntos de intersección de las semirrectas con cada uno de los lados del polı́gono P . 2 0 4 1 2 3 0 2 2 1 1 1 x x módem vértice crı́tico (a) Caja exterior 0 (b) Figura 3: (a) Semirrectas y uno de los vértices crı́ticos de P ; (b) Etiquetado de segmentos y ruta para la construcción de la región cubierta por un 2-módem 2. Las semirrectas dividen cada lado del polı́gono en uno o varios segmentos. Etiquetamos cada segmento con el número de paredes atravesadas por un rayo que partiendo de x alcance el segmento, (ver figura 3(b)). 3. La región visible desde x con un k-módem se construye conectando los segmentos con etiqueta k, utilizando para ello las semirrectas incidentes en sus extremos. Si en uno de los sectores determinado por dos semirrectas consecutivas no hay segmento de etiqueta k, la conexión se efectúa por el borde de la caja que contiene al polı́gono y evidentemente si no hay ningún segmento con etiqueta k toda la caja que contiene al polı́gono está iluminada. En la figura 3(b) podemos ver los segmentos etiquetados y la conexión de los segmentos etiquetados con un 2, para construir la región cubierta por un 2-módem. Complejidad del algoritmo. Cada semirrecta que parte del módem puede cortar a todos los lados del polı́gono, por lo que el número total de etiquetas de los segmentos es cuadrático. Por tanto, la fase de etiquetado tiene complejidad O(n2 ). La construcción del polı́gono de visibilidad para cada valor de k fijo se puede hacer en tiempo lineal usando el algoritmo descrito en las sección 2.1, por lo que la construcción de todos los polı́gonos de k-visibilidad se efectúa en tiempo cuadrático. 3 Técnicas Metaheurı́sticas Un conjunto recubridor de k-módems vértice G es un subconjunto de vértices de P tal que S r∈G V is(r) = P , siendo V is(r) la región de visibilidad del módem r. Desarrollamos una técnica metaheurı́stica hı́brida que conjuga los algoritmos genéticos y la heurı́stica simulated annealing, para determinar el menor conjunto de k-módems vértice recubridores. Según se muestra en [1], después de utilizar una técnica heurı́stica sobre un problema de optimización, (en ese caso el problema estudiado era el Minimum Vertex Guard Set, para el cálculo del número mı́nimo de luces que iluminan un polı́gono), es preciso en algunas ocasiones aplicar un postproceso que permita afinar más la solución obtenida. Basándonos en esta experiencia desarrollamos para el problema una técnica hı́brida, que fundamentalmente recurre a un algoritmo genético pero donde además de los operadores clásicos de cruce y mutación, se añade un nuevo operador basado en la heurı́stica simulated annealing (SA). Básicamente el proceso consiste en aplicar SA tras utilizar el operador de cruce, con el objetivo de refinar la solución que produce dicho operador. Tras esta operación se puede aplicar el operador de mutación correspondiente al algoritmo genético. Veamos a continuación la adaptación de simulated annealing a nuestro problema y después explicaremos la adaptación general del algoritmo genético. 3.1 Simulated Annealing La principal ventaja de la heurı́stica simulated annealing (SA) con respecto a otros métodos de aproximación es su capacidad para evitar quedar atrapada en un máximo ó mı́nimo local. El método emplea una búsqueda aleatoria que no sólo acepta los cambios que mejoran la función objetivo, sino que también acepta cambios que la empeoren. Estos últimos se aceptan con un cierta probabilidad que depende de un parámetro de control llamado temperatura T, que disminuye en cada iteración según un conjunto de reglas. Para resolver un problema de optimización con la estrategia SA, es necesario identificar lo siguiente: (i) Parámetros Especı́ficos: espacio de soluciones, función objetivo, vecindad de cada solución y solución inicial ; (ii) Parámetros Generales: temperatura inicial (T0 ), regla de disminución de la temperatura, número número de iteraciones para cada valor de T , (N (T )) y condición de parada. Describimos a continuación la adaptación de estos parámetros a nuestro problema. 3.1.1 Parámetros Especı́ficos Espacio de soluciones. El espacio de soluciones S está formado por los subconjuntos de vértices de P , i donde se colocan los k-módems. Representamos S como S = {S1 , S2 , . . . , Sm }, donde Si = v0i v1i . . . vn−1 con i = 1, . . . , m. De esta manera cada candidato Si está representado por una cadena de longitud n, donde vji con j ∈ {0, . . . , n − 1} representa al vértice vj ∈ P y su valor es 0 ó 1. Si vji = 1 entonces hay un k-módem en dicho vértice, siendo vji = 0 en caso contrario. Función Objetivo. La función objetivo f : S → N asigna a cada elemento de S el cardinal del correspondiente conjunto de k-módems. Vecindad de cada solución. Según SA, para cada posible solución Si ∈ S, se obtiene un vecino i Si+1 ∈ S, que será el elemento a analizar en la siguiente iteración. Aquı́, dado Si = v0i v1i . . . vn−1 , generamos un número aleatorio natural t ∈ [0, n − 1] y procedemos de la siguiente manera: (a) si vti = 1 ponemos vti+1 = 0, aceptando la nueva solución si es válida y rechazándola en caso contrario; (b) si vti = 0 ponemos vti+1 = 1, aceptando esta nueva solución con un cierta probabilidad, pues en este caso empeoramos la solución. Solución Inicial. Un conjunto de k-módems situados en los vértices de P es nuestra solución inicial S0 . Se ha tomado la solución obtenida por el algoritmo genético tras aplicar el operador de cruce como se explica en la sección 3.2. 3.1.2 Parámetros Genéricos Basándonos en los estudios realizados para un problema de iluminación con caracterı́sticas similares a las que tratamos en este artı́culo, hemos considerado los siguientes parámetros para nuestro algoritmo: • Temperatura Inicial (T0 = n 4 ). Valor dependiente del número de vértices del polı́gono. • Regla de disminución de la temperatura. Se considera la regla definida por Tk+1 = simulated annealing (VFSA) decrease). T0 , ek (very fast • Número de iteraciones para cada temperatura, N (Tk ) = Tk . Esta elección del número de iteraciones garantiza que el número de iteraciones es mayor a temperaturas altas, que es solución se encuentra más alejada del óptimo. • Condición de terminación. En teorı́a, el proceso de búsqueda se debe detener cuando se llegue a la congelación, es decir, cuando Tk = 0. No obstante, es posible detener el proceso para una temperatura Tf mayor que 0, sin que ello afecte a la calidad de la solución. Por ejemplo se puede parar la búsqueda cuando no se obtenga ya ninguna mejora en la solución. Esta falta de mejora se puede definir de varias maneras, pero una solución útil es la siguiente: detener el proceso cuando no se encuentre ninguna mejora de la solución en la última serie consecutiva de las temperaturas y además el porcentaje de aceptación de nuevas soluciones se sitúa por debajo de un valor (pequeño) ε%. En este sentido, la condición de terminación elegida en nuestro algoritmo consiste en detener la búsqueda cuando Tf ≤ 0, 005, ó cuando durante las últimas l = 3000 series consecutivas de temperaturas no se ha obtenido ninguna mejora en la solución y el porcentaje de aceptación de nuevas soluciones se sitúa por debajo del ε = 2.0%. 3.2 Algoritmo Genético Los Algoritmos Genéticos (AG) son técnicas que simulan los procesos de evolución biológica en la naturaleza (véase por ejemplo [6]). Para resolver un problema de optimización con AG es necesario identificar los siguientes parámetros: una representación de las posibles soluciones llamadas individuos, para el problema (codificación); una población inicial ; una función objetivo adecuada; operadores genéticos (selección, cruce y mutación) y diversos valores de los parámetros utilizados por el algoritmo genético (por ejemplo, el tamaño de la población, la probabilidad de los operadores genéticos, la evaluación de la población y la condición de finalización). La adaptación de todos estos parámetros a nuestro problema se explica detalladamente en [1]. Un individuo I está representado por una cadena I = g0 g1 . . . gn−1 , donde cada gi representa al vértice vi de P y su valor puede ser 0 ó 1. Si gi = 1, tenemos situado un k-módems en vi , siendo gi = 0 en caso contrario. El tamaño de la población que consideramos es el número de vértices cóncavos, (es decir con un ángulo interior superior a π) de P , y si R = {u0 , u1 , . . . , ur−1 } es dicho conjunto de vértices cóncavos, para generar la población inicial aplicamos el siguiente proceso: ∀i ∈ {0, . . . , r − 1}, si colocando un k-módem en cada vértice de R\{ui } cubrimos todo el polı́gono, admitimos R\{ui } como individuo de la población, tomando todos Pn−1 los vértices de R como individuo en caso contrario. La función objetivo se define por f (I) = j=0 gj y para los operadores de selección y cruce usamos el método de selección por torneo y una variante de cruce en un punto con probabilidad pc = 80%, respectivamente. Tras aplicar el operador de cruce a dos individuos aplicamos con una probabilidad psa = 10% la heurı́stica SA al individuo obtenido para obtener un refinamiento de la solución. El proceso de mutación que se aplica en el algoritmo es el cambio con una probabilidad pm = 5% de cada dı́gito binario de 0 a 1 ó viceversa. La evaluación de la población se obtiene tomando el menor de los valores obtenidos por la función objetivo f en cada uno de los individuos, finalizando el algoritmo cuando dicha función no mejora en 500 generaciones. 4 Resultados Experimentales La implementación de nuestro algoritmo se hizo en C/C++ (usando MS Visual Studio 2005) con CGAL 3.2.1 [2], realizando las pruebas en un PC Intel(R) Core (TM) 2 CPU 6400 a 2.66 Ghz. y 1 GB de RAM. Hemos realizado un significativo número de experimentos utilizando para ello dos generadores aleatorios de polı́gonos: para polı́gonos generales se uso la función de CGAL random polygon 2 y para polı́gonos ortogonales el generador desarrollado por Joseph O’Rourke (comunicación personal 2002). En las subsecciones 4.1 y 4.2 se dan los resultados para k = 2 y k = 4 respectivamente, tanto para polı́gonos generales como para polı́gonos ortogonales. En cada caso se proporciona el número mı́nimo de k-módems obtenido en función del número de vértices de los polı́gonos, ası́ como los tiempos de respuesta y el número de iteraciones realizado por el algoritmo. Además se proporciona las funciones lineales obtenidas al realizar un ajuste por mı́nimos cuadrados, relacionando el número de vértices de los polı́gonos con el resultado en k-módems proporcionado por el algoritmo. 4.1 Resultados para 2-módems En la siguientes tablas presentamos los datos obtenidos al aplicar nuestro algoritmo a conjuntos de 40 polı́gonos con 30, 50, 70, 100, 110, 130, 150 y 200 vértices cada uno de ellos, tanto para polı́gonos generales (Tabla 1) como ortogonales (Tabla 2). Para cada conjunto de polı́gonos presentamos el número promedio de 2-módems que proporciona como solución el algoritmo, ası́ como el tiempo medio de respuesta y el número de iteraciones. • Resultados para polı́gonos generales Los resultados que se presentan a continuación se han obtenido aplicando un operador de selección por torneo y cruce en un punto con probabilidad de cruce pc = 0.8, probabilidad de aplicar SA psa = 0.1 y probabilidad de ejecutar el operador de mutación pm = 0.05. Vértices 2-módems Tiempo/Runtime(seg.) Iteraciones 30 50 70 100 110 130 150 200 1.9 2.675 3.45 4.55 4.875 5.725 6.65 8.35 7.775 37.35 114.55 343.5 448.825 723.575 1091.5 2644.3 532.725 541.575 577.3 613.2 653.1 629.7 613.7 702.75 Tabla 1: Resultado para k = 2 en polı́gonos generales Usando el método de mı́nimos cuadrados, la función que ajusta el número de 2-módems con n n relación al número n de vértices del polı́gono es f (n) = 0.0383n+0.7523 ≈ 26.10 +0.7523 ≈ 26.10 , con un factor de correlación de 0.9988, (ver figura 4(a)) • Resultados para polı́gonos ortogonales Con las mismas probabilidades que en el punto anterior la tabla de resultados para polı́gonos ortogonales con k = 2 es la Tabla 2 y la recta de n n + 0.5844 ≈ 27.39 , con un factor de ajuste correspondiente es f (n) = 0.0365n + 0.5844 ≈ 27.39 correlación de 0.9988, (ver figura 4(b)) Vértices 2-módems Tiempo/Runtime(seg.) Iteraciones 30 50 70 100 110 130 150 200 1.675 2.45 3.15 4.2 4.6 5.325 5.95 7.95 6.1 32.25 101.375 318.175 409.675 708.175 1091.9 2541.3 523.075 559.275 547.65 618.6 585.375 604.6 692.7 656.45 Tabla 2: Resultado para k = 2 en polı́gonos ortogonales (a) (b) Figura 4: Ajuste lineal k = 2: (a) polı́gonos generales; (b) polı́gonos ortogonales Por tanto podemos concluir que, en media y de forma ¨ § n ¨ el número de 2-módems § n aproximada, y 27.39 si el polı́gono es ortogonal. vértice necesarios para cubrir un polı́gono general es 26.10 4.2 Resultados para 4-módems Si k = 4, los resultados experimentales tanto para polı́gonos generales como ortogonales son los siguientes: • Resultados para polı́gonos generales Vértices 4-módems Tiempo/Runtime(seg.) Iteraciones 30 50 70 100 110 130 150 200 1.075 1.65 2.0 2.65 2.825 3.05 3.575 4.375 4.475 30.975 114.975 417.45 550.4 1014.9 1527.0 4207.4 538.65 517.675 539.625 582.175 543.825 603.4 572.1 613.3 Tabla 3: Resultado para k = 4 en polı́gonos generales La recta de ajuste para los datos de la siguiente tabla es f (n) = 0.0191n + 0.6436 ≈ n , (ver figura 5(a)) 0.6436 ≈ 52.35 n 52.35 + • Resultados para polı́gonos ortogonales Igualmente la recta de ajuste para los datos de la n n + 0.5028 ≈ 57.47 , (ver figura 5(b)). Tabla 4 es f (n) = 0.0174n + 0.5028 ≈ 57.47 Vértices 4-módems Tiempo/Runtime(seg.) Iteraciones 30 50 70 100 110 130 150 200 1.0 1.35 1.8 2.225 2.45 2.75 3.15 3.975 2.725 22.825 87.6 359.15 481.475 827.475 1535.0 4088.894 517.6 555.5 536.15 594.2 603.625 567.7 625.775 649.325 Tabla 4: Resultado para k = 4 en polı́gonos ortogonales (a) (b) Figura 5: Ajuste lineal k = 4: (a) polı́gonos generales; (b) polı́gonos ortogonales Estos resultados permiten asegurar de 4-módems necesarios § n ¨ que, de forma aproximada, § eln número ¨ para cubrir un polı́gono es 52.35 en polı́gonos generales y 57.47 en polı́gonos ortogonales Referencias [1] A.L. Bajuelos, S. Canales, G. Hernández y A. M. Martins, Optimizing the Minimum Vertex Guard Set on Simple Polygons via a Genetic Algorithm, WSEAS Transactions in Information Science and Applications, Vol 5, Issue 11, pp. 1584-1596, 2008. [2] CGAL, Computational Geometry Algorithms Library, http://www.cgal.org. [3] D. Christ, M. Hoffmann, Y. Okamoto y T. Uno, Improved Bounds for Wireless Localization. Proc. 11th Scandinavian Workshop on Algorithm Theory, pp. 77–89, 2008. [4] D. Eppstein, M.T. Goodrich y N. Sitchinava, Guard Placement for Efficient Point-in-Polygon Proofs. Proc. 23rd Symposium on Computational Geometry, pp. 27–36, 2007. [5] O. Aichholzer, R. Fabila-Monroy, D. Flores-Peñaloza, T. Hackl, C. Huemer, J. Urrutia y B. Vogtenhuber, Modem Illumination of Monotone Polygons. Proc.25th European Workshop on Computational Geometry, pp. 167-170, Belgium, 2009. [6] Reeves, C.R: Genetic Algorithms. Handbook of Metaheuristics, F. Glover e G.A. Kochenberger (eds). Kluwer, Boston, 55–82, (2003) [7] J. Urrutia, Art Gallery and Illumination Problems. In: J.R. Sack, J. Urrutia (eds.) Handbook of Computational Geometry, pp. 973–1027, Elsevier Science Publishers B.V., 2000. [8] Y. Wang, C. Hu, Y. Tseng, Efficient Placement and Dispatch of Sensors in a Wireless Sensor Network. IEEE Transactions on Mobile Computing, 7:262–274, 2008.