有关,我做一个项目,我分解,我使用NetworkX到使用NetworkX adj_matrix()函数邻接矩阵创建的曲线图。然而,我所遇到的一个问题是,每一个图,我分解给了我下面的错误,当我试图找到矩阵的逆。

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

我试图从5个不同的图形生成邻接矩阵和当我试图找到的邻接矩阵的逆所有这些产生的同样的错误。我提出的问题是,是否有任何方式NetworkX图去矩阵。什么是我最好从这里开始的行动方针?我知道有关于逆矩阵的其他问题,但我在某种程度上被我需要的邻接矩阵的事实的限制。

有帮助吗?

解决方案

邻接矩阵是并不总是可逆。有论文对这个问题的;我不知道是否有相应的图表任何简单的表征。务实的做法是赶上LinAlgError例外,在你的代码(试行... ...除外),并在邻接矩阵不可逆警告(并保持执行,否则你的计算)。

其他提示

我不知道networkx究竟是如何产生的邻接矩阵,但也绝对没有理由为它是可逆。例如,考虑完全图(所有节点都连接到每一个彼此),其adacency矩阵是满的人,并且所述基体具有明显0作为一个特征值(只要节点的数量是> = 2当然。 ..)。或具有N个节点和没有边的图表中,它的邻接矩阵是0 ...

那你想干什么?我从来没有考虑邻接矩阵的逆,但很多时候对一些x(小)值I - x A的倒数。其逆是

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

这是可逆的一些x值(事实上,只要| X |

,您在要求以生成图表,其邻接矩阵是非奇异的方法?它是没有networkx的故障或numpy的是一个你生成的图具有邻接矩阵不具有逆。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top