Aproximando la iluminación por módems

Anuncio
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.
Descargar