예제 #1
0
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)
예제 #3
0
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))
예제 #4
0
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='')