Sono molto nuovo alla codifica di Python e sto cercando un algoritmo che trovi rapidamente tutti i percorsi tra un nodo iniziale e un nodo finale per un grafico molto grande - ad esempio un grafico che ha circa 1000 nodi e 10.000 bordi. Il numero di percorsi effettivamente esistenti dal nodo iniziale al nodo finale è di dimensioni inferiori o inferiori a dieci. Per aiutare a contestualizzare la domanda un po 'di più, considera un social network - Se avessi 1000 amici e volevo sapere in quanti modi il mio migliore amico della scuola si connette al mio compagno di stanza del college, non mi interessa il fatto che il mio il migliore amico della scuola superiore è collegato a tutti e 200 i miei amici del liceo perché questi percorsi non portano mai al mio compagno di stanza. Quello che voglio fare con questo codice Python è quello di suddividere rapidamente i percorsi che esistono tra i miei due amici e sostanzialmente di eliminare tutto il "rumore" che esiste attorno a questi due nodi.Algoritmo molto veloce per tutti i percorsi tra due nodi
Ho provato a implementare un numero di esempi di codice, che funzionano bene su grafici piccoli e semplici. Tuttavia, quando provo a incorporarli nella mia analisi a grandi grafici, richiedono troppo tempo per essere utili.
Avete qualche suggerimento sui metodi da investigare (ad esempio, qualcosa già creato in networkx o anche informazioni sull'utilizzo di uno stack rispetto alla ricorsione, ecc ...), esempi di codice da implementare, o anche altri percorsi al di fuori di pitone da perseguire? Tieni presente che sono un principiante pitone.
Tradurre una delle soluzioni in questo post per python: http://stackoverflow.com/questions/58306/ graph-algorithm-to-find-all-connections-between-two-arbitrary-vertes –
Inoltre, questo: http://stackoverflow.com/questions/8922060/breadth-first-search-trace-path –
La sfida è sapere quando li hai trovati tutti Non penso che sia possibile senza esaminare un numero enorme di nodi. L'algoritmo non può trascurare i tuoi 200 amici, dal momento che non può sapere (senza esaminare loro e i loro altri amici) che non si connettono al tuo compagno di stanza. In effetti, non è determinante stabilire se vi siano percorsi attraverso questi amici per il punto in cui si esegue la ricerca? – Blckknght