Pregunta

Para un proyecto que estoy haciendo, me descomponen un gráfico que creé usando NetworkX en una matriz de adyacencia se utiliza la función () adj_matrix NetworkX. Sin embargo, uno de los problemas que he encontrado es que cada gráfico que descompongo me da el siguiente error cuando trato de encontrar la inversa de la matriz.

str: Traceback (most recent call last):
  File "C:\eclipse\plugins\org.python.pydev.debug_1.4.7.2843\pysrc\pydevd_resolver.py", line 179, in _getPyDictionary
    attr = getattr(var, n)
  File "C:\Python26\lib\site-packages\numpy\core\defmatrix.py", line 519, in getI
    return asmatrix(func(self))
  File "C:\Python26\lib\site-packages\numpy\linalg\linalg.py", line 355, in inv
    return wrap(solve(a, identity(a.shape[0], dtype=a.dtype)))
  File "C:\Python26\lib\site-packages\numpy\linalg\linalg.py", line 254, in solve
    raise LinAlgError, 'Singular matrix'
LinAlgError: Singular matrix

I intentado generar matrices adyacencia a partir de 5 gráficos diferentes y todos ellos produjeron el mismo error cuando traté de encontrar la inversa de la matriz de adyacencia. La pregunta que planteo es si hay alguna manera de pasar de gráfico NetworkX a la matriz. ¿Cuál es mi mejor curso de acción desde aquí? Sé que existen otras cuestiones pertenecientes a una matriz inversas, pero la mía es un poco limitado por el hecho de que necesito la matriz gráfica de adyacencia.

¿Fue útil?

Solución

invertible . Hay papeles sobre este tema; No estoy seguro de si existe alguna caracterización simple de los gráficos correspondientes. Un enfoque pragmático sería la de capturar la excepción LinAlgError en su código (try ... except ...), y advertir cuando la matriz de adyacencia no es invertible (y mantener la realización de los cálculos de otra manera).

Otros consejos

No sé exactamente cómo NetworkX produce la matriz de adyacencia, pero no hay absolutamente ninguna razón para que sea inversible. Por ejemplo, considere el gráfico completo (todos los nodos están conectados a cada uno del otro), su matriz adacency está lleno de unos, y la matriz tiene obviamente 0 como un valor propio (tan pronto como el número de nodos es> = 2 por supuesto. ..). O el gráfico con N nodos y sin bordes, su matriz de adyacencia es 0 ...

¿Qué quieres hacer? Nunca tuve que considerar la inversa de la matriz de adyacencia, pero muy a menudo la inversa de I - x A para un cierto valor (pequeña) de x. Su inversa es

(I - x A) ^(-1) = I + xA + x^2 A2 + ...

que es inversible para algún valor de x (de hecho, tan pronto como | x |

estás pidiendo un método para generar gráficos cuyas matrices de adyacencia son no singular? no es culpa de la NetworkX o numpy es que los gráficos que usted generó tienen matrices de adyacencia que no tienen inversas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top