def ObterD(G, M): D = GrafoListaAdj(orientado = True) D.DefinirN(G.n+1) D.tV1 = G.tV1 D.Exp = [False]*(D.n+1) for v in range(1, D.n): D.Exp[v] = (M[v] == None) for v in range(1, G.tV1+1): if D.Exp[v]: D.AdicionarAresta(D.n, v) for w in G.N(v): if M[v] == w: D.AdicionarAresta(w,v) else: D.AdicionarAresta(v,w) return D
def Aumentante(G, M): #Construcao de Df Df = GrafoListaAdj(orientado=True) Df.DefinirN(G.n) Df.ExpAssoc = [None] * (Df.n + 1) for v in G.V(): for w in G.N(v): if M[w] != v: #vw nao esta em M if M[w] == None: Df.ExpAssoc[v] = w else: e = Df.AdicionarAresta(v, M[w]) e.inter = w Df.Exp = [True] * (Df.n + 1) for v in M: if v != None: Df.Exp[v] = False Pf = BuscaCamAumentante(Df) (P, F, H) = CONSTRUCAO_3(Pf, Df, G, M) return (P, F, H)