Generate all simple paths in the graph G from source to target.
A simple path is a path with no repeated nodes.
Parameters :  G : NetworkX graph source : node
target : node
cutoff : integer, optional


Returns :  path_generator: generator :

See also
all_shortest_paths, shortest_path
Notes
This algorithm uses a modified depthfirst search to generate the paths [R201]. A single path can be found in time but the number of simple paths in a graph can be very large, e.g. in the complete graph of order n.
References
[R201]  (1, 2) R. Sedgewick, “Algorithms in C, Part 5: Graph Algorithms”, Addison Wesley Professional, 3rd ed., 2001. 
Examples
>>> G = nx.complete_graph(4)
>>> for path in nx.all_simple_paths(G, source=0, target=3):
... print(path)
...
[0, 1, 2, 3]
[0, 1, 3]
[0, 2, 1, 3]
[0, 2, 3]
[0, 3]
>>> paths = nx.all_simple_paths(G, source=0, target=3, cutoff=2)
>>> print(list(paths))
[[0, 1, 3], [0, 2, 3], [0, 3]]