In [12]:
%matplotlib inline
from networkx import nx
from matplotlib import pyplot

def algo(des, p, S):
	if p is des:
		print S
		return
	elif p not in S:
		S.append(p)
		for q in G.neighbors(p):
			algo(des, q, S)
		S.remove(p)

def algo_with_cut_off(des, p, S, L, LEN):
	if p is des:
		print S
		return
	elif p not in S:
		L += 1
		S.append(p)
		for q in G.neighbors(p):
			if L < LEN:
				algo_with_cut_off(des, q, S, L, LEN)
		S.remove(p)
		L -= 1


if __name__ == '__main__':
	nodeList = [x for x in xrange(10)]
	G = nx.Graph()
	G.add_nodes_from(nodeList)
	G.add_edges_from([[0,1],[0,2],[0,3],[1,2],[1,4],[2,3],[2,4],[2,9],[3,5],[3,6],[4,6],[4,7],[5,6],[5,7],[5,9],[6,7],[7,8],[8,9]])

	S = []
	src = 0
	des = 9

	print 'Native phase I: '
	algo(des, src, S)

	L = 0
	LEN = 4

	print
	print 'Phase I with cut off: '
	algo_with_cut_off(des, src, S, L, LEN)

	nx.draw(G)
	pyplot.show()
Native phase I: 
[0, 1, 2, 3, 5]
[0, 1, 2, 3, 5, 6, 4, 7, 8]
[0, 1, 2, 3, 5, 6, 7, 8]
[0, 1, 2, 3, 5, 7, 8]
[0, 1, 2, 3, 6, 4, 7, 8]
[0, 1, 2, 3, 6, 4, 7, 5]
[0, 1, 2, 3, 6, 5]
[0, 1, 2, 3, 6, 5, 7, 8]
[0, 1, 2, 3, 6, 7, 8]
[0, 1, 2, 3, 6, 7, 5]
[0, 1, 2, 4, 6, 3, 5]
[0, 1, 2, 4, 6, 3, 5, 7, 8]
[0, 1, 2, 4, 6, 5]
[0, 1, 2, 4, 6, 5, 7, 8]
[0, 1, 2, 4, 6, 7, 8]
[0, 1, 2, 4, 6, 7, 5]
[0, 1, 2, 4, 7, 8]
[0, 1, 2, 4, 7, 5]
[0, 1, 2, 4, 7, 6, 3, 5]
[0, 1, 2, 4, 7, 6, 5]
[0, 1, 2]
[0, 1, 4, 2, 3, 5]
[0, 1, 4, 2, 3, 5, 6, 7, 8]
[0, 1, 4, 2, 3, 5, 7, 8]
[0, 1, 4, 2, 3, 6, 5]
[0, 1, 4, 2, 3, 6, 5, 7, 8]
[0, 1, 4, 2, 3, 6, 7, 8]
[0, 1, 4, 2, 3, 6, 7, 5]
[0, 1, 4, 2]
[0, 1, 4, 6, 3, 2]
[0, 1, 4, 6, 3, 5]
[0, 1, 4, 6, 3, 5, 7, 8]
[0, 1, 4, 6, 5]
[0, 1, 4, 6, 5, 3, 2]
[0, 1, 4, 6, 5, 7, 8]
[0, 1, 4, 6, 7, 8]
[0, 1, 4, 6, 7, 5]
[0, 1, 4, 6, 7, 5, 3, 2]
[0, 1, 4, 7, 8]
[0, 1, 4, 7, 5]
[0, 1, 4, 7, 5, 3, 2]
[0, 1, 4, 7, 5, 6, 3, 2]
[0, 1, 4, 7, 6, 3, 2]
[0, 1, 4, 7, 6, 3, 5]
[0, 1, 4, 7, 6, 5]
[0, 1, 4, 7, 6, 5, 3, 2]
[0, 2, 1, 4, 6, 3, 5]
[0, 2, 1, 4, 6, 3, 5, 7, 8]
[0, 2, 1, 4, 6, 5]
[0, 2, 1, 4, 6, 5, 7, 8]
[0, 2, 1, 4, 6, 7, 8]
[0, 2, 1, 4, 6, 7, 5]
[0, 2, 1, 4, 7, 8]
[0, 2, 1, 4, 7, 5]
[0, 2, 1, 4, 7, 6, 3, 5]
[0, 2, 1, 4, 7, 6, 5]
[0, 2, 3, 5]
[0, 2, 3, 5, 6, 4, 7, 8]
[0, 2, 3, 5, 6, 7, 8]
[0, 2, 3, 5, 7, 8]
[0, 2, 3, 6, 4, 7, 8]
[0, 2, 3, 6, 4, 7, 5]
[0, 2, 3, 6, 5]
[0, 2, 3, 6, 5, 7, 8]
[0, 2, 3, 6, 7, 8]
[0, 2, 3, 6, 7, 5]
[0, 2, 4, 6, 3, 5]
[0, 2, 4, 6, 3, 5, 7, 8]
[0, 2, 4, 6, 5]
[0, 2, 4, 6, 5, 7, 8]
[0, 2, 4, 6, 7, 8]
[0, 2, 4, 6, 7, 5]
[0, 2, 4, 7, 8]
[0, 2, 4, 7, 5]
[0, 2, 4, 7, 6, 3, 5]
[0, 2, 4, 7, 6, 5]
[0, 2]
[0, 3, 2, 1, 4, 6, 5]
[0, 3, 2, 1, 4, 6, 5, 7, 8]
[0, 3, 2, 1, 4, 6, 7, 8]
[0, 3, 2, 1, 4, 6, 7, 5]
[0, 3, 2, 1, 4, 7, 8]
[0, 3, 2, 1, 4, 7, 5]
[0, 3, 2, 1, 4, 7, 6, 5]
[0, 3, 2, 4, 6, 5]
[0, 3, 2, 4, 6, 5, 7, 8]
[0, 3, 2, 4, 6, 7, 8]
[0, 3, 2, 4, 6, 7, 5]
[0, 3, 2, 4, 7, 8]
[0, 3, 2, 4, 7, 5]
[0, 3, 2, 4, 7, 6, 5]
[0, 3, 2]
[0, 3, 5]
[0, 3, 5, 6, 4, 1, 2]
[0, 3, 5, 6, 4, 2]
[0, 3, 5, 6, 4, 7, 8]
[0, 3, 5, 6, 7, 8]
[0, 3, 5, 6, 7, 4, 1, 2]
[0, 3, 5, 6, 7, 4, 2]
[0, 3, 5, 7, 8]
[0, 3, 5, 7, 4, 1, 2]
[0, 3, 5, 7, 4, 2]
[0, 3, 5, 7, 6, 4, 1, 2]
[0, 3, 5, 7, 6, 4, 2]
[0, 3, 6, 4, 1, 2]
[0, 3, 6, 4, 2]
[0, 3, 6, 4, 7, 8]
[0, 3, 6, 4, 7, 5]
[0, 3, 6, 5]
[0, 3, 6, 5, 7, 8]
[0, 3, 6, 5, 7, 4, 1, 2]
[0, 3, 6, 5, 7, 4, 2]
[0, 3, 6, 7, 8]
[0, 3, 6, 7, 4, 1, 2]
[0, 3, 6, 7, 4, 2]
[0, 3, 6, 7, 5]

Phase I with cut off: 
[0, 1, 2]
[0, 2]
[0, 3, 2]
[0, 3, 5]

In []: