Pour un projet que je suis en train de faire, je décomposerai un graphe que j'ai créé en utilisant NetworkX dans une matrice d'adjacence en utilisant la fonction network_ adj_matrix(). Cependant, un des problèmes que j'ai rencontré est que chaque graphique que je décomposais me donne l'erreur suivante quand j'essaie de trouver l'inverse de la matrice.Matrices et matrices inverses en Python
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
J'ai essayé de générer des matrices de contiguïté de 5 graphiques différents et tous les a produits la même erreur quand j'ai essayé de trouver l'inverse de la matrice de contiguïté. La question que je pose est de savoir s'il est possible de passer du graphe NetworkX à la matrice. Quel est mon meilleur plan d'action à partir d'ici? Je me rends compte qu'il y a d'autres questions relatives aux matrices inverses, mais la mienne est quelque peu limitée par le fait que j'ai besoin de la matrice d'adjacence du graphe.
L'inverse de la liste d'adjacence est nécessaire pour ce que je fais. J'essaie de trouver une somme d'ensembles de chemins dans un graphe (mesure de Katz) que l'on peut trouver en utilisant la matrice d'adjacence d'un graphe. La formule est ci-dessous. Katz = ((I-xA)^- 1) -I – GobiasKoffi
Intéressant. S'il y a un nombre infini de chemins entre deux points (ce qui arrive quand vous avez des boucles dans votre graphe), alors je suppose que vous ne pouvez pas effectuer l'inversion (le résultat est infini). Peut-être que c'est le problème que vous rencontrez? Vous pourriez essayer votre routine avec un graphique non-cyclique, par exemple. – EOL