def test(): print( 'Testando grafo de exemplo do livro Algoritmos 3rd (Cormen), página 480.' ) g = grafo(True) g.inserir_vertice('a') g.inserir_vertice('b') g.inserir_vertice('c') g.inserir_vertice('d') g.inserir_vertice('e') g.inserir_aresta('a', 'b', 6) g.inserir_aresta('a', 'c', 7) g.inserir_aresta('a', 'e', 2) g.inserir_aresta('b', 'd', 5) g.inserir_aresta('b', 'c', 8) g.inserir_aresta('b', 'e', -4) g.inserir_aresta('c', 'd', -3) g.inserir_aresta('c', 'e', 9) g.inserir_aresta('d', 'b', -2) g.inserir_aresta('e', 'd', 7) m = minimo() m.bellman_ford(g, 'd') # bellman_ford(g, 'd') print(export_list(g)) for v in g.get_vertices(): caminho = [v.get_id()] caminho_minino(v, caminho) print('O menor caminho é: %s com custo %d.' % (caminho[::-1], v.get_distancia()))
def ex1(g, j, i, f): m = minimo() m.dijkstra(g, str(i)) m.dijkstra(j, str(i)) distancia_g = g.get_vertice(f).get_distancia() distancia_j = j.get_vertice(f).get_distancia() if distancia_g > distancia_j: print(distancia_j) else: print(distancia_g)
def test(): print( 'Testando grafo de exemplo do livro Algoritmos 3rd (Cormen), página 480.' ) g = grafo(direcionado=True) g.inserir_vertice('a') g.inserir_vertice('b') g.inserir_vertice('c') g.inserir_vertice('d') g.inserir_vertice('e') g.inserir_aresta('a', 'b', 10) g.inserir_aresta('a', 'c', 5) g.inserir_aresta('b', 'd', 1) g.inserir_aresta('b', 'c', 2) g.inserir_aresta('c', 'b', 3) g.inserir_aresta('c', 'e', 2) g.inserir_aresta('c', 'd', 9) g.inserir_aresta('d', 'e', 4) g.inserir_aresta('e', 'a', 7) g.inserir_aresta('e', 'd', 6) d = dict() l = list() for i in g.get_vertices(): for j in i.get_vertices_adjacentes(): l.append(j.get_id()) d.update({i.get_id(): l.copy()}) l.clear() m = minimo() m.dijkstra(g, 'a') c = caminho() # c.BFS(g, 'd') v = g.get_vertice('a') w = g.get_vertice('e') q = list() q.append(w.get_id()) distancia = w.get_distancia() # while w.get_anterior() != None: # q.append(w.get_anterior().get_id()) # w = w.get_anterior() print('O menor caminho é:' + str(caminho_min(w)) + 'com custo: ' + str(distancia))
def ex1(q): m = minimo() dist = list() for i in q.get_vertices(): m.dijkstra(q, i.get_id()) d = 0 for v in q.get_vertices(): w = [v.get_id()] caminho_minino(v, w) d += v.get_distancia() dist.append([d, i.get_id()]) menor = [dist[0]] for i in range(1, len(dist)): if dist[i][0] == menor[0][0]: menor.append(dist[i]) elif dist[i][0] < menor[0][0]: menor.clear() menor.append(dist[i]) return menor
def ex(g, i, f): m = minimo() m.dijkstra(g, i) v = g.get_vertice(f) t = caminho_min(v) distancia = v.get_distancia() if distancia - 120 <= 0: print('Will not be late. Travel time - ' + str(distancia) + ' - best way - ', end='') for i in t: if t[len(t) - 1] == i: print(str(i)) else: print(str(i) + ' ', end='') #print() else: print('It will be ' + str(distancia - 120) + ' minutes late. Travel time - ' + str(distancia) + ' - best way - ', end='') for i in t: if t[len(t) - 1] == i: print(str(i)) else: print(str(i) + ' ', end='')