Particionar gráficos mientras minimiza los bordes entre particiones

8

Estoy trabajando para intentar dividir un gráfico triangulado en subgrafías conectadas con algunas garantías sobre el número de bordes entre particiones. Aquí hay un ejemplo de un gráfico triangulado que se ha dividido en 4 "grupos":Ejemplo de triangulación con particionamiento

Lo que quería originalmente era un algoritmo que pudiera crear particiones de aproximadamente k triángulos (podría haber algún error siempre que no fuera demasiado grande), y logré descubrir una algoritmo (donde p es el número total de particiones) que podría encontrar dicha partición. Luego me di cuenta de que tener un gran número de bordes entre particiones era perjudicial para la aplicación para la que necesitaba este algoritmo.O(k2p2(v+e))

Idealmente, me gustaría un algoritmo que pueda mantener cada partición dentro de un rango de , idealmente que sea un factor constante como 2. Además, me gustaría poder hacer que el número de bordes intermedios tenga un límite superior eso es "bajo".k

Además, otro problema que tengo es si tengo una partición que tiene estas propiedades, y modifico el gráfico haciendo uno de los siguientes:

  • Agregar un conjunto de aristas que se conectan a vértices existentes
  • Agregar un vértice y un conjunto de bordes que se conectan al vértice agregado
  • Eliminar un conjunto de bordes
  • Eliminar un vértice y todos los bordes que se conectan a este vértice

Quiero poder repartir el gráfico y todavía tener cada partición con el tamaño y el número de bordes de corte minimizados. (Esta es la solución por la que estoy ofreciendo una recompensa). Esto significa que usando este algoritmo, podemos construir cualquier partición comenzando con un gráfico vacío y agregando vértices y bordes uno por uno y reparticionando.k

Aquí hay algunas restricciones adicionales al problema:

  • El grafo es plano
  • Cada "triángulo" es un vértice que tiene bordes no dirigidos a triángulos con los que comparte un borde
  • De la declaración anterior, es obvio que cada vértice en este gráfico tiene un grado como máximo 3
  • El gráfico está conectado
  • Cada subgrafo de la partición está conectado
  • Cada subgrafo tiene aproximadamente k vértices
  • Hay como máximo aristas entre particiones (aristas que contienen vértices de diferentes particiones). Si puede encontrar un límite similar para bordes entre particiones como u entonces eso también podría funcionar. No estoy completamente seguro de que el límite superior para los bordes entre particiones puede ser menor que por lo que si puede demostrar que es imposible hacerlo mejor, también es satisfactorio. 2n O(logn)O(n)2nO(logn)O(n)

Estoy en un punto en el que estoy atascado, por lo que cualquier ayuda con este problema sería encantadora. Si puede resolver este problema, son las abejas de rodillas. De lo contrario, si conoces algún documento, libro de texto o algoritmo que puedas señalarme, te lo agradecería mucho.

¡Avísame si necesito aclarar algo!

EDITAR: Aquí hay algunas restricciones adicionales si facilita el problema.

  • Estamos tratando con triangulaciones de Delaunay limitadas
  • Las restricciones NUNCA serán un solo vértice
  • El gráfico creado a partir de la triangulación se construye de la siguiente manera: cada triángulo se representa como un vértice. Cada borde en el gráfico corresponde a un borde sin restricciones en la triangulación. Esto significa que un borde restringido entre dos triángulos no se mostrará en la representación gráfica de la triangulación.

Otra cosa que me di cuenta es que es posible que necesitemos modificar para crecer a medida que crece, de lo contrario no puede haber garantías sub en el número de bordes entre particiones.n O ( n )knO(n)

zaloo
fuente
2
No está del todo claro lo que quieres. ¿Desea una partición en la que cada conjunto tenga un tamaño aproximadamente igual o uno con un número fijo de conjuntos? Entiendo que en cualquier caso, desea minimizar el número de bordes entre conjuntos.
Suresh Venkat
Solo queremos que las particiones sean conjuntos de aproximadamente el mismo tamaño y dentro de un rango de k, no nos importa el número total de conjuntos.
zaloo
Veo. entonces cada partición debería tener aproximadamente elementos en ella. k
Suresh Venkat
No tengo una garantía para esta heurística, pero dado que su gráfico es plano, algo así como una jerarquía de anillos de Miller podría funcionar. En resumen, use el teorema del separador plano para dividir el gráfico en dos partes más o menos iguales con un pequeño número de aristas entre ellas, y recurra hasta que todas las piezas tengan aproximadamente el tamaño . Terminará con un tamaño de corte cercano a . kn
Suresh Venkat
¿Un separador plano no garantiza nada sobre la conexión de los conjuntos de vértices que se forman?
zaloo

Respuestas:

11

Rao tiene dos documentos sobre el corte más escaso en gráficos planos, parece posible una aproximación de factor constante en el tiempo cuasi lineal . La bisección recursiva, aunque no es ideal, podría ser un enfoque factible para su problema.

Satish Rao. Encontrar separadores casi óptimos en gráficos planos . En el 28º Simposio sobre Fundamentos de Ciencias de la Computación (FOCS), páginas 225-237, 1987.

Satish Rao. Algoritmos más rápidos para encontrar pequeños cortes de borde en gráficos planos (resumen extendido). En el 24º Simposio de ACM sobre Teoría de la Computación (STOC), páginas 229-240, 1992.

Horst D. Simon y Shang-Hua Teng. ¿Qué tan buena es la bisección recursiva? En SIAM Journal on Scientific Computing, Volumen 18, Número 5, páginas 1436-1445, 1997.

Christian Sommer
fuente
Enlaces increíbles, ¡los revisaré!
zaloo
8

http://cse.iitkgp.ac.in/~pabitra/paper/barna-sdm07.pdf

BAM, aquí está la respuesta. Particiones de gráfico de corte mínimo incremental en tiempo para inserciones y eliminaciones. Si haces entonces es poli logarítmico para inserciones y eliminaciones, lo cual es muy bueno.k = O ( log n )O(k3)k=O(logn)

zaloo
fuente
Había muchas restricciones dadas sobre el problema. ¿esto realmente los satisface a todos?
vzn
Si. Podemos elegir cualquier tamaño k para cualquier paso. Garantizamos bordes de corte minimizados (bordes entre particiones). También tenemos la capacidad de agregar y eliminar vértices y bordes en baja complejidad de tiempo. Eso satisface todo.
zaloo
1

El siguiente algoritmo podría ayudar.

1. Choose any vertex from the graph.

2. Do a BFS untill $O(K)$ vertices has been visited.

3. Create a cluster with the visited vertices. (Connectivity is ensured for the cluster).

4. Remover the visited vertices from the graph.

5. Repeat 1-4 untill all nodes are visited.

O(K)O(K)O(N/K)

Además, la modificación del gráfico agregando vértices no afectaría la partición. Cualquier partición en la que se encuentre uno de los vecinos del nuevo vértice, que puede ser la partición del nuevo vértice. Por lo tanto, es posible que no se necesite repartir hasta que el tamaño de uno de los clústeres sea demasiado.

Editar:

kmRkRO(K)O(K)RkO(logn) entonces puede ser que los bordes entre particiones se puedan reducir.

Dibyayan
fuente
Ω(N(NK))O(K)
Creo que la respuesta se refiere a gráficos planos. Pero todavía no veo por qué "cada vértice tiene un grado constante". Esto es cierto "en promedio" pero no para cualquier vértice.
Suresh Venkat
El grado de cada vértice en el gráfico es como máximo 3. Es menor que 3 si está en el límite y no se considera la cara externa. Por lo tanto, cada vértice tiene un grado constante. @SureshVenkat
Dibyayan
O(K)
Ah te refieres en el gráfico dual? no el gráfico plano primario.
Suresh Venkat
-1

busqué un poco sobre esto, pero postergué la publicación de immed para ver qué otras respuestas se materializarían y ahora estoy publicando esto para no tirar algunas ideas / leads misceláneos que podrían tener algún valor (aunque el autor de la pregunta ya ha indicado que ahora ha encontrado un aceptable responder).

En la inspección, existen muchas restricciones dadas a este problema y podría tomar un trabajo completo para crear un algoritmo y demostrar que los satisface a todos (lo que, por supuesto, generalmente está fuera del alcance del formato de intercambio de pila). Sin embargo, hay algunos enfoques básicos para abordar este tipo de problema

  1. empírico. genere gráficos aleatorios que se ajusten a las restricciones o use gráficos de algunos conjuntos de datos que coincidan con las condiciones y pruebe diferentes algoritmos en ellos, y observe el rendimiento. uno puede encontrar que un algoritmo satisface empíricamente las condiciones requeridas. si uno es más estricto, uno podría intentar crear una prueba a partir de la observación empírica si está satisfecho al 100% con grandes conjuntos de datos. También para la investigación empírica, a menudo ayuda saber cómo se obtienen / generan los conjuntos de datos, cuál es su naturaleza / origen.

  2. la pregunta no tiene citas relacionadas de literatura / referencias. ¿Cuáles son los tipos de algoritmos más cercanos en la literatura? Para este tipo de problema, pueden superponerse múltiples tipos de áreas de investigación. hay investigaciones sobre gráficos planos, particiones de gráficos, cortes de gráficos, separadores de gráficos, particiones de gráficos triangulares, etc .; no es obvio descifrar el tema principal de esta pregunta en la medida en que se formule o qué subárea de investigación particular (algoritmo de grafo) lo afectaría más directamente.

Dadas esas calificaciones, un tema básico de la pregunta parece ser "particionar gráficos planos". Aquí hay algunas referencias recientes sobre ese tema que podrían ser útiles y mostrar temas / ángulos adicionales de la investigación relacionada actual. hay algunos algoritmos implementados y pueden estar disponibles a solicitud de los autores.

la 3 rd implica el particionamiento con pesas, lo que generalizar a pesos iguales, pero que da un marco adicional para su examen / investigación: todas las condiciones de preguntas podrían ser cumplidas por algún tipo de esquema de asignación de peso? (Esto también podría estar relacionado con el requisito de tener algún tipo de control dinámico o ajuste sobre las soluciones también mencionadas en la pregunta).

vzn
fuente