Hice esta pregunta en stackoverflow genérico y fui dirigido aquí.
Será genial si alguien puede explicar cómo abordar los problemas de gráficos parciales o totalmente dinámicos en general.
Por ejemplo:
- Encuentre la ruta más corta entre dos vértices en un gráfico ponderado no dirigido para n instancias, cuando se elimina un borde en cada instancia.
- Encuentre el número de componentes conectados en un gráfico no dirigido para n instancias cuando se elimina un borde en cada instancia, etc.
Recientemente encontré este género de problemas en un concurso de programación. Busqué en la web y encontré muchos trabajos de investigación relacionados con gráficos dinámicos [1,2]. Leí un par de ellos y no pude encontrar nada sencillo (agrupación, dispersión, etc.). Perdón por ser vago.
Realmente aprecio si algunos pueden proporcionar sugerencias para comprender mejor estos conceptos.
- Algoritmos de gráficos dinámicos de D. Eppstein, Z. Galil, GF Italiano (1999)
- Caminos más cortos en gráficos dinámicos por G. Nannicini, L. Liberti (2008)
fuente
Los modelos de gráficos dinámicos se han estudiado intensamente en informática distribuida. Para algoritmos distribuidos, el cálculo se estructura en rondas y la topología de los gráficos (= red) puede sufrir algunos cambios de ronda a ronda, que están bajo el control de un adversario. Además, cada nodo del gráfico ejecuta un algoritmo que puede enviar un mensaje a sus vecinos (¡actuales!). (Este mensaje es la entrada del algoritmo de los vecinos en la siguiente ronda). Lo que hace que las cosas sean interesantes es que un nodo no "ve" todo el gráfico sino solo su vecindario local.
Los problemas que se consideran en esta configuración son, por ejemplo, la difusión de información donde cada nodo en el gráfico inicialmente contiene un token y eventualmente desea que cada nodo haya visto todos los tokens. El objetivo es diseñar algoritmos que logren esto en el menor número de rondas, utilizando el menor número de mensajes. Ver [2] para una encuesta reciente.
Para la configuración no distribuida, es posible que desee ver [1], que es una extensión del documento que ha mencionado.
[1] Aris Anagnostopoulos, Ravi Kumar, Mohammad Mahdian, Eli Upfal, Fabio Vandin: Algoritmos sobre gráficos en evolución . ITCS 2012: 149-160
[2] Fabian Kuhn, Rotem Oshman: Redes dinámicas: modelos y algoritmos . SIGACT News 42 (1): 82-96 (2011)
fuente
Basándome en las respuestas de @Peter (es un comentario muy largo, por lo que acabo de incluir como respuesta que alguien se beneficiará de ello).
Sugeriría la siguiente referencia:
Arnaud Casteigts, Paola Flocchini, Walter Quattrociocchi, Nicola Santoro: gráficos que varían en el tiempo y redes dinámicas. IJPEDS 27 (5): 387-408 (2012)
Lo realmente importante de esta clasificación es que existen relaciones de inclusión entre las diferentes clases. Entonces, si resuelve un problema en una clase determinada, lo resolverá en cualquier otra clase en la que esté incluido.
Los mismos autores presentaron algoritmos de transmisión en algunos de los gráficos mencionados. Proporcionaron diferentes métricas de rendimiento relacionadas con el tiempo (es decir, una definición diferente del tiempo más corto). En la radiodifusión, la idea es que cada nodo construya una vista de la red en el dominio del tiempo. Esto se hace escuchando repetidamente a los vecinos y enviando información a los vecinos. Si se asume la periodicidad, un nodo puede decir cuál es la ruta de tiempo más corta a otro nodo. Utiliza esta información en el enrutamiento. Más detalles se pueden encontrar en:
Arnaud Casteigts, Paola Flocchini, Bernard Mans, Nicola Santoro: Cálculos deterministas en gráficos que varían en el tiempo: Difusión bajo movilidad no estructurada. IFIP TCS 2010: 111-124
Asistí a una conferencia de los autores anteriores. Según tengo entendido, afirman que estamos lejos de poder manejar algoritmos de gráficos dinámicos (siguiendo las definiciones que siguen). Que todavía estamos en el caso de clases simples. De hecho, afirman que la mayoría de los algoritmos de computación móvil simplemente suponen que sus algoritmos son demasiado rápidos para ejecutarse mientras la red está en transición. (que creo que escuché mucho) - O simplemente, asuma la periodicidad de la apariencia de los bordes (vea redes tolerantes al retraso, etc.)
fuente