Cómo encontrar nodos adyacentes

Un grafo es un conjunto de nodos y aristas que conectan esos nodos.

Ejemplo de grafo

Hay dos tipos de grafos: dirigidos y no dirigidos. En un grafo no dirigido, las aristas entre los nodos no tienen una dirección específica (como una calle de doble sentido), mientras que, en un grafo dirigido, cada arista tiene una dirección asociada (como una calle de un solo sentido).

Para que dos nodos de un grafo se consideren adyacentes, debe haber una arista entre ellos. En el ejemplo anterior, los nodos 0 y 1 son adyacentes, pero los nodos 0 y 2 no lo son.

Podemos representar grafos mediante una matriz de adyacencia. La matriz de adyacencia de un grafo con "n" nodos es una matriz de "n * n", donde el valor de la fila "i" y la columna "j" es 0 si los nodos "i" y "j" no son adyacentes, y 1 si los nodos "i" y "j" son adyacentes.

Para el ejemplo anterior, la matriz de adyacencia sería la siguiente:

[
  [ 0, 1, 0, 0 ],
  [ 1, 0, 1, 1 ],
  [ 0, 1, 0, 1 ],
  [ 0, 1, 1, 0 ]
]

Un uno indica que existe una conexión y un cero indica que no existe. En términos booleanos, corresponden a true y false, respectivamente.

Así se podría describir el modelo anterior:

  • En la primera fila, el nodo 0 no se conecta consigo mismo, pero sí con el nodo 1. No se conecta con el nodo 2 ni con el nodo 3. La fila se escribe como 0, 1, 0, 0.
  • En la segunda fila, el nodo 1 se conecta con los nodos 0, 2 y 3, pero no consigo mismo. La fila se escribe como 1, 0, 1, 1.
  • En la tercera fila, el nodo 2 no se conecta con el nodo 0, pero sí con el nodo 1; no se conecta consigo mismo y sí se conecta con el nodo 3. La fila se escribe como 0, 1, 0, 1
  • En la cuarta fila, el nodo 3 no se conecta con el nodo 0, pero sí con los nodos 1 y 2. No se conecta consigo mismo. La fila se escribe como 0, 1, 1, 0.

Tu tarea es determinar si dos nodos son adyacentes en un grafo no dirigido a partir de la matriz de adyacencia y los dos nodos.

Ejemplos

Ejemplo de grafo

Matriz de adyacencia:

[
  [ 0, 1, 0, 0 ],
  [ 1, 0, 1, 1 ],
  [ 0, 1, 0, 1 ],
  [ 0, 1, 1, 0 ]
]
  • Para los nodos 0,1, se debe devolver true.
  • Para los nodos 0,2, se debe devolver false.

Ejemplo de grafo 2

[
  [ 0, 1, 0, 1, 1 ],
  [ 1, 0, 1, 0, 0 ],
  [ 0, 1, 0, 1, 0 ],
  [ 1, 0, 1, 0, 1 ],
  [ 1, 0, 0, 1, 0 ]
]
  • Para los nodos 0,3, se debe devolver true.
  • Para los nodos 1,4, se debe devolver false.

Notas

  • Los grafos pueden tener entre 0 y 25,000 nodos.
  • Límite de tiempo: 100 milisegundos.