def shpgraph_algorithm(self, DstSets, Src, AvoidNodes, AvoidEdges):
	U = (Src - AvoidNodes).nodes
	S = self.mutnodeset(AvoidNodes.nodes)
	G = self.nodegraph()
	unseen = list(enumerate(DstSets))
	DstSets = [self.Nothing]*len(DstSets)
	while U and unseen:
	    S |= U
	    U = self.shpathstep(G, U, S, AvoidEdges)
	    unseen_ = []
	    for i, D in unseen:
		D_ = D & U
		if D_:
		    DstSets[i] = D_
		else:
		    unseen_.append((i, D))
	    unseen = unseen_
	return G, [self.idset_adapt(D) for D in DstSets]
dataset/ETHPy150Open cloudera/hue/desktop/core/ext-py/guppy-0.1.10/guppy/heapy/Path.py/_GLUECLAMP_.shpgraph_algorithm/original