Me preocupa que esto pueda estar funcionando en un problema NP-Completo. Espero que alguien me pueda dar una respuesta si es o no. Y estoy buscando más respuestas que solo sí o no. Me gustaría saber por qué. Si se puede decir, "Esto es básicamente este problema 'X' que es/no es NP-completo. (Enlace Wikipedia)"¿Cómo se determina si dos nodos están conectados?
(No, esto no es tarea)
¿Hay una manera de determinar si dos puntos están conectados en un gráfico arbitrario no dirigido. por ejemplo, la siguiente
Well
|
|
A
|
+--B--+--C--+--D--+
| | | |
| | | |
E F G H
| | | |
| | | |
+--J--+--K--+--L--+
|
|
M
|
|
House
Puntos A pesar de que M (no 'I') son los puntos de control (como una válvula en una tubería de gas natural) que puede ser abierta o cerrada. Los '+' son nodos (como las T de la tubería), y supongo que el pozo y la casa también son nodos.
Me gustaría saber si cierro un punto de control arbitrario (por ejemplo, C) si el pozo y la casa todavía están conectados (otros puntos de control también pueden estar cerrados). Por ejemplo, si B, K y D están cerrados, todavía tenemos un camino a través de A-E-J-F-C-G-L-M, y al cerrar C se desconectará el Pozo y la Casa. Por supuesto; si solo D se cerró, cerrar solo C no desconecta la casa.
Otra forma de expresar esto, ¿es C un puente/borde cortado/istmo?
Podría tratar cada punto de control como un peso en el gráfico (ya sea 0 para abrir o 1 para cerrar); y luego encuentre el camino más corto entre el pozo y la casa (un resultado> = 1 indicaría que estaban desconectados. Hay varias maneras en que puedo cortocircuitar el algoritmo para encontrar el camino más corto también (por ejemplo, descartar un camino una vez que alcanza 1, detener buscando una vez que tenemos CUALQUIER ruta que conecta el Pozo y la Casa, etc.) Y por supuesto, también puedo poner un límite artificial sobre cuántos saltos revisar antes de rendirme.
Alguien debe haber clasificado este tipo del problema antes, estoy sólo falta el nombre
¿Estás seguro de que estás buscando el camino más corto? Parece que solo quieres verificar la conectividad. La conectividad es más fácil que el camino más corto. –
Encuentre un ejemplo de código con ejemplos y explicaciones [aquí] (http://www.geeksforgeeks.org/find-if-there-is-a-path-between-two-vertices-in-a-given-graph) . – evandrix
http://en.wikipedia.org/wiki/Connected_component_%28graph_theory%29 –