Cómo encontrar si dos nodos están conectados

La frase “conectado” en este sentido es algo ambigua. Por ejemplo, alguien puede usar el término “conectado” aquí para decir “adyacente”, o en el sentido de que es probable que se pregunte qué pregunta realmente, ¿cómo puedo saber si dos vértices en un gráfico tienen una ruta donde están los dos vértices? los extremos del camino? (puede definir esto como “conectado”)

Para determinar si existe una ruta de este tipo, puede atravesar el gráfico utilizando la mayoría de los algoritmos de recorrido de gráficos (los que recomendaría son Breadth-First Search o Depth-First Search , un algoritmo de ruta más corto funcionará, pero sería imprudente) es menos eficiente ya que puede tener una ruta entre dos vértices que no tienen relación con el cálculo de una ruta más corta). Si no existe ese camino y el gráfico no está dirigido, lo que se puede inferir es que el gráfico no está conectado y los dos vértices pertenecen a dos componentes conectados diferentes.

Tenga en cuenta que algo se indica en la respuesta de Sean Francis Ballais a ¿Cómo encuentro si dos nodos están conectados? eso es incorrecto es decir que la búsqueda de Breadth first es un algoritmo de ruta más corta, esto no es cierto. La búsqueda de amplitud se puede usar para calcular rutas más cortas en situaciones tales como si el gráfico tiene los mismos pesos en cada borde, esto generalmente no es cierto para el problema de la ruta más corta .

¡Espero que esto ayude!

Dos nodos están conectados entre sí si hay una ruta desde un nodo al otro nodo. Wikipedia nos da esta definición:

En la teoría de grafos, un componente conectado (o solo componente ) de un gráfico no dirigido es un subgrafo en el que dos vértices están conectados entre sí por caminos, y que está conectado a ningún vértice adicional en el supergrafo

Fuente: componente conectado (teoría de grafos)

Deje G ser el gráfico de arriba. Digamos que necesitamos verificar si el nodo A está conectado al nodo B en G. Usando la definición indicada anteriormente, solo necesitamos verificar si hay una ruta de A a B.

Mirando a G , podemos ver que hay un camino de A a B. Hay dos caminos de A a B para ser exactos. Tenemos caminos {A, C, B} y {A, D, E, B} .

Para hacer esto usando el código, podemos usar cualquiera de los algoritmos de ruta más cortos como Breadth-First Search (BFS) y el Algoritmo de Dijkstra para encontrar si hay una ruta desde el nodo A al nodo B.

Sin embargo, recomendaría usar BFS para verificar si dos nodos están conectados. Puede usar el Algoritmo de Dijkstra, pero requeriría verificar el peso de los bordes. Solo necesitamos verificar si dos nodos están conectados para que los pesos de borde no importen.