title: Most time efficient method of finding all simple paths between all nodes in an undirected graph
body: <p>To expand on the title, I need <strong>all</strong> simple (non-cyclical) paths between all nodes in a very large undirected graph. </p>
  
  <p>The most obvious optimization I can think of is that once I have calculated all the paths between a particular pair of nodes I can just reverse them all instead of recalculating when I need to go the other way. </p>
  
  <p>I was looking into transitive closures and the Floyd–Warshall algorithm, but it looks like the best I could do if I went down that route would be to find only the shortest paths between all nodes.</p>
  
  <p>Any ideas? Right now I'm looking at running a DFS on every node in the graph, which seems to me to be significantly less than optimal.</p>