La lista de adyacencia asigna cada nodo a una lista de sus vecinos. La matriz de incidencia asigna pares de nodo-borde a {0, 1}; seleccionando 1 cuando el borde incide en el nodo y 0 en caso contrario.
Tenga en cuenta que ambas representaciones suponen que los nodos y los bordes están indexados.
def adjacency_list_to_incidence_matrix (adj_list):
cuenta_nodo = len (adj_list)
edge_count = sum (map (len, adj_list)) / 2
inc_matrix = [edge_count * [0] para _ en xrange (0, node_count)]
edge_index_map = {}
para node_index en xrange (0, node_count):
para neighbour_index en adj_list [node_index]:
edge = tuple (ordenado ([node_index, neighbour_index]))
si edge no está en edge_index_map:
edge_index_map [edge] = len (edge_index_map)
edge_index = edge_index_map [edge]
inc_matriz [índice_nodo] [índice_borde] = 1
return inc_matrix
- ¿Cuáles son algunos ejemplos de pruebas matemáticas que contradicen las expectativas?
- Ejecuto un modelo de regresión de Cox con dos variables y luego agrego otra variable a este modelo. Cuando agrego la tercera variable, la dirección de los coeficientes cambia. ¿Cómo puedo interpretar esto?
- En comparación con los matemáticos, ¿cuáles son las habilidades matemáticas de los investigadores de IA?
- ¿Cómo podemos encontrar esos enteros cuyo primer y último dígito son iguales entre dos números dados?
- ¿Cuál es la función de un reóstato?
Ejemplo
Probémoslo en un gráfico pequeño con 3 nodos y 2 aristas: 1 – 0 – 2.
En [1]: adj_list = [
[1, 2],
[0]
[0]
]
En [2]: adjacency_list_to_incidence_matrix (adj_list)
Fuera [2]: [[1, 1],
[1, 0],
[0, 1]]