Domanda

Per un progetto che sto facendo, ho decompongono un grafico che ho creato utilizzando NetworkX in una matrice di adiacenza utilizzando la funzione di () adj_matrix NetworkX. Tuttavia, uno dei problemi che ho incontrato è che ogni singolo grafico che si decompongono mi dà il seguente errore quando cerco di trovare l'inverso della matrice.

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

Ho provato generare matrici di adiacenza da 5 diversi grafici e tutti prodotti lo stesso errore quando ho cercato di trovare l'inversa della matrice di adiacenza. La domanda che mi pongo è se non v'è alcun modo per andare dal grafico NetworkX alla matrice. Qual è la mia linea di condotta migliore da qui? Mi rendo conto che ci sono altre domande relative alla matrice inversi, ma il mio è piuttosto limitata dal fatto che ho bisogno la matrice grafo di adiacenza.

È stato utile?

Soluzione

sempre invertibile . Ci sono carte in materia; Non sono sicuro se c'è qualche semplice caratterizzazione dei grafici corrispondenti. Un approccio pragmatico sarebbe quello di intercettare l'eccezione LinAlgError nel codice (try ... except ...), e avvertire quando la matrice di adiacenza non è invertibile (e mantenere eseguendo i calcoli in altro modo).

Altri suggerimenti

Non so esattamente come NetworkX produce la matrice di adiacenza, ma non c'è assolutamente alcuna ragione per essere inversible. Ad esempio, si consideri il grafo completo (tutti i nodi sono collegati a ogni vicenda), la sua matrice adacency è completo di pile, e la matrice ha ovviamente 0 come autovalore (non appena il numero di nodi è> = 2 naturalmente. ..). O il grafico con n nodi e privo di spigoli, la sua matrice di adiacenza è 0 ...

Che cosa vuoi fare? Non ho mai dovuto prendere in considerazione l'inverso della matrice di adiacenza, ma molto spesso l'inverso di I - x A per un certo valore (piccola) di x. Il suo inverso è

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

che è inversible per un certo valore di x (in realtà, non appena | x |

stai chiedendo per un metodo per generare grafici le cui matrici di adiacenza sono non singolare? non è colpa di NetworkX del o NumPy è che i grafici si generati hanno matrici di adiacenza che non hanno inverse.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top