Tengo un gráfico que comienza con un único nodo raíz. Los nodos se agregan uno por uno al gráfico. En el momento de creación del nodo, deben estar vinculados al nodo raíz, oa otro nodo, por un solo borde. Los bordes también se pueden crear y eliminar (uno por uno, entre dos nodos). Los nodos se pueden eliminar de a uno por vez. La creación de nodos y bordes, las operaciones de eliminación pueden ocurrir en cualquier orden arbitraria.¿Cómo detectar si al romper un borde se descompone un gráfico?
OK, así que aquí está mi pregunta: Cuando se borra un borde, ¿es posible determinar, en tiempo constante (es decir, con un algoritmo O), si esto divide el gráfico en dos subgrafos disjuntos? Si lo hace, ¿a qué lado del borde pertenece el nodo raíz?
Estoy dispuesto a mantener, dentro de unos límites razonables, cualquier estructura de datos adicional que pueda facilitar la obtención de esta información.
Tal vez no sea posible hacerlo en O (1), de ser así, se apreciarán todos los consejos sobre la literatura.
Editar: El gráfico es un gráfico dirigido.
Editar 2:
Bien, tal vez pueda restringir el caso a la eliminación de bordes del nodo raíz
. [Editar 3: no, en realidad] Además, ningún borde aterriza en el nodo raíz.
Si un borde de conexión del gráfico para un nodo de hoja se va a eliminar, es que supone que eliminar el nodo de hoja, así? Alternativamente, ¿borrar un nodo hoja también elimina el borde que lo conecta al resto del gráfico? – VeeArr
@VeeArr: Al eliminar un nodo de hoja, se eliminan también todos los bordes que se vinculan a él. En cuanto a eliminar un borde que conecta un nodo hoja y un nodo no hoja, eso debería estar cubierto por la pregunta misma (eliminar un borde arbitrario). –
¿Por qué no me dices? ¡Eres ** the_graph_guy **! –