Grafo geométrico aleatorio

En teoría de grafos, un grafo geométrico aleatorio (GGA) es la red espacial matemáticas más simple, nombrada como un grafo indirecto construido colocando aleatoriamente N nodos en algún espacio métrico (de acuerdo a una distribución de probabilidad especificada) y conectando dos nodos mediante un enlace si y solo si su distancia se encuentra en cierto rango, por ejemplo, más pequeña que cierto radio de un vecino, r.

Los grafos aleatorios geométricos se parecen a las redes sociales humanas en muchos aspectos. Es por esto, que muestran espontáneamente una estructura de comunidad - grupos de nodos con alta modularidad. Otros algoritmos de generación de gráficos aleatorios, como aquellos generando el modelo Erdős–Rényi o el modelo Barabási–Albert (BA) no crean este tipo de estructura. Adicionalmente, los grafos geométricos aleatorios muestran grados de variedad de acuerdo a su dimensión espacial:[1]​ nodos "populares" (aquellos con muchos enlaces) están particularmente ligados a otros nodos populares.

Una aplicación del mundo real de los GGA consiste en el modelamiento de las redes ad hoc.[2]​. Además estas son usadas para realizar puntos de referencia para algoritmos de grafos (externos).

Definición editar

 
Generación de un grafo geométrico aleatorio para diferentes parámetros de conectividad r.

De ahora en adelante G = (V, E) denota un grafo indirecto con un conjunto de vértices V y un conjunto de lados E ⊆ V × V Los tamaños del conjunto está denotado por   y  . Adicionalmente, si no es especificado, el espacio métrico   se considera la distancia euclídea, por ejemplo, para cualquier punto   la distancia euclídea de x y y se define como

. 

Un grafo geométrico aleatorio (GGA) es un grafo geométrico no direccionado con nodos aleatoriamente muestreados a partir de una distribución uniforme en un espacio subyacente  [3]​. Dos vértices p, q ∈ V están conectados si y solo sí, su distancia es menos que la previamente especificada mediante el parámetro r ∈ (0,1), excluyendo cualquier bucle. Así, los parámetros r y n carateriza íntegramente a una GGA.

Algoritmos editar

Algoritmo ingenuo editar

La aproximación ingenua consiste en calcular la distancia de cada vértice a cada vértice. Debido a que hay   posibles conexiones que deben ser verificadas, la complejidad temporal del algoritmo ingenuo es  . Las muestras son generadas usando un generador de números aleatorios (GNA) en  . Prácticamente, uno puede implementar esto utilizando generadores de números aleatorios en  , un GNA para cada dimensión

Pseudocódigo editar

V := generateSamples(n)  // Genera n muestras en el cubo unitario.
for each pV do
    for each qV\{p} do
        if distance(p, q) ≤ r then
            addConnection(p, q) // Añadir el lado (p,q) a cada lado de la estructura de dato.
        end if
    end for
end for

Dado que este algoritmo no es escalable (cada vértice necesita información de cada uno de los otros vértices), Holtgrewe et al. y Funke et al. presentaron nuevos algoritmos para este problema.

Algoritmos distribuidos editar

Holtgrewe et al. editar

Este algoritmo, que fue propuesto por Holtgrewe et al., fue el primer algoritmo generador distribuido GGA para dimensión 2[4]​. Este divide un cuadrado de lado 1 en celdas del mismo tamaño de al menos  . Para un número dado   de procesadores, a cada procesador se le asigna   celdas, donde   Por simplicidad,   se asume como el cuadrado de un número, pero puede ser generalizado para cualquier número de procesadores. Cada procesador genera   vértices, que son distribuidos a sus respectivos propietarios. Entonces, los vértices son ordenados bajo el criterio del número de celda asignado, por ejemplo con el algoritmo de ordenamiento rápido. Luego, cada procesador envia información a sus procesadores adyacentes acerca de los vértices en las células que están en los bordes, de modo que cada una de estas unidades procesadoras puede calcular los lados en su partición independientemente de otras unidades. El tiempo de ejecución esperado es de  . Un límite superior para el costo de comunicación de este algoritmo está dado por  dónde   denota el tiempo para una comunicación de todos-con-todos con mensajes de longitud l bits con c compañeros de comunicación.

Debido a que este algoritmo no es de comunicación libre, Funke et. al. propusieron[5]​ un GGA generador para altas dimensiones, que funciona sin comunicación entre las unidades procesadoras.

Funke et al. editar

La aproximación utilizada en este algoritmo[6]​ es similar a la usada por Holtgrewe: Dividir un cubo de lado unitario en pedazos del mismo tamaño de por lo menos r. En d = 2 serían cuadrados, en d = 3 estos serían cubos. Como puede encajar   pedazos por dimensión, es número de pedazos está limitado a  . Como antes, a cada procesador se le asigna   pedazos. Para lograr un proceso libre de comunicación, cada procesador debe generar la misma cantidad de vértices en los pedazos adyacentes explotando la pseudoaleatoriedad de funciones hash con semillas. De este modo, cada procesador calcula la misma cantidad de vértices y no hay necesidad de intercambiar información con las esquinas

Para la dimensión 3, Funke et al. mostraron que el tiempo de ejecución esperado es  , sin costo de comunicación entre las unidades de procesamiento.

Referencias editar

  1. Antonioni, Alberto; Tomassini, Marco (28 de septiembre de 2012). «Degree correlations in random geometric graphs». Physical Review E 86 (3): 037101. Bibcode:2012PhRvE..86c7101A. PMID 23031054. arXiv:1207.2573. doi:10.1103/PhysRevE.86.037101. 
  2. Nekovee, Maziar (28 de junio de 2007). «Worm epidemics in wireless ad hoc networks». New Journal of Physics 9 (6): 189. Bibcode:2007NJPh....9..189N. S2CID 203944. arXiv:0707.2293. doi:10.1088/1367-2630/9/6/189. 
  3. Penrose, Mathew. (2003). Random geometric graphs. Oxford: Oxford University Press. ISBN 0198506260. OCLC 51316118. 
  4. von Looz, Moritz; Strash, Darren; Schulz, Christian; Penschuck, Manuel; Sanders, Peter; Meyer, Ulrich; Lamm, Sebastian; Funke, Daniel (2017-10-20). «Communication-free Massively Distributed Graph Generation» (en en). arXiv:1710.07565v3  [cs.DC]. 
  5. von Looz, Moritz; Strash, Darren; Schulz, Christian; Penschuck, Manuel; Sanders, Peter; Meyer, Ulrich; Lamm, Sebastian; Funke, Daniel (2017-10-20). «Communication-free Massively Distributed Graph Generation» (en en). arXiv:1710.07565v3  [cs.DC]. 
  6. von Looz, Moritz; Strash, Darren; Schulz, Christian; Penschuck, Manuel; Sanders, Peter; Meyer, Ulrich; Lamm, Sebastian; Funke, Daniel (2017-10-20). «Communication-free Massively Distributed Graph Generation» (en en). arXiv:1710.07565v3  [cs.DC].