Estoy buscando una solución al siguiente problema y me pregunto si alguien podría señalarme alguna investigación existente sobre este tema. Vengo de una aplicación de gráficos del mundo real, así que tengan paciencia conmigo si mi terminología no es exactamente la correcta.
Tengo un sistema de base de datos donde el usuario puede agregar / eliminar / mover objetos creando / eliminando y alterando las relaciones. Como tal, puedo ver los objetos como vértices en un gráfico y las relaciones como bordes y bordes se pueden ponderar según el tipo de relaciones (composición, asociación o agregación).
Desde el punto de vista del usuario, agregar un nuevo elemento puede ser un solo clic y debajo del capó, el programa crea un gráfico de objetos vinculados por relaciones. Este gráfico, luego se agrega al gráfico principal que define la base de datos completa. Eliminar un elemento sería el reverso donde los enlaces / bordes están desconectados y el gráfico se convierte en dos gráficos disjuntos donde 1 es la base de datos, y el otro consiste en vértices formados por el elemento y sus subelementos.
Necesito una forma realmente rápida de determinar cuándo tengo gráficos disjuntos y cuándo 2 gráficos disjuntos se convierten en 1 nuevamente. Eché un breve vistazo a Holm, de Lichtenberg y Thorup ( 2001 ; pdf ). Parece el camino a seguir, pero el autor mencionó que solo están considerando un gráfico con un número fijo de vértices. Solo me pregunto si los algoritmos generalmente se extienden a la adición / eliminación de vértices simplemente realizando la adición de bordes de forma incremental ¿O ha habido trabajos que se adaptan específicamente para tal escenario?
fuente