¿Cómo puedo determinar si los nodos seleccionados en un gráfico están conectados directamente?
Creo que necesito calcular rutas para cada nodo seleccionado a todos los demás nodos seleccionados. Luego, cuando tengo la ruta, tengo que verificar si la ruta contiene solo los nodos seleccionados.
En el código, todo lo que tengo es una noción de nodes y edges , así:
const nodes = [ { id: "A" }, { id: "B" }, { id: "C" }, { id: "D" }, { id: "E" }, { id: "F" }, ]; const edges = [ { target: "A", source: "B" }, { target: "B", source: "C" }, { target: "C", source: "D" }, { target: "D", source: "E" }, { target: "E", source: "F" }, ];Ejemplos:
Buena selección:
Mala selección:
¿Hay algún algoritmo para verificar eso? ¿Conoce algunos paquetes npm en el caso de JavaScript?
(source, target) , (target, source) también debe agregarse a los edges ), ya que no estamos interesados en si A llega a B o B llega a A, sino estamos tratando de ver si están conectadostrue , de lo contrario, devuelva falseselected node ejecute el DFS/BFS, siempre que el gráfico no esté dirigido. Por lo tanto, es importante ejecutar DFS/BFS solo una vez para mantener la complejidad de tiempo O(1) . Ejecutar DFS/BFS desde todos los nodos seleccionados dará como resultado una complejidad de tiempo O(N) , donde N = # of nodes , y también proporcionaría un resultado correcto, pero introduciría recorridos de gráficos redundantes.