Exemple #1
0
            adjacent_vertex = edge.get_end_vertex()
            if new_distance < distances[adjacent_vertex]:
                distances[adjacent_vertex] = new_distance

    return distances


if __name__ == "__main__":
    graph = Graph()

    graph.add_vertex("a")
    graph.add_vertex("b")
    graph.add_vertex("c")
    graph.add_vertex("d")
    graph.add_vertex("e")
    graph.add_vertex("f")

    graph.add_edge("a", "b", 2)
    graph.add_edge("a", "c", 4)
    graph.add_edge("b", "c", 1)
    graph.add_edge("c", "d", 5)
    graph.add_edge("c", "e", 3)
    graph.add_edge("d", "e", 1)
    graph.add_edge("e", "f", 8)

    display_graph(graph, "Input graph for Dijkstra's algorithm")

    shortest_distances_to_vertices = dijkstra(graph, graph.get_vertex("a"))
    for vertex, distance in shortest_distances_to_vertices.items():
        print("Vertex {0}, Distance {1}".format(vertex.get_label(), distance))
        queue.extend(adjacent_vertices)

    return result


if __name__ == "__main__":
    graph = Graph()

    graph.add_vertex("Jhon")
    graph.add_vertex("Sophia")
    graph.add_vertex("Emma")
    graph.add_vertex("Mark")
    graph.add_vertex("Alice")
    graph.add_vertex("Jeff")
    graph.add_vertex("George")

    graph.add_edge("Jhon", "Sophia")
    graph.add_edge("Jhon", "Emma")
    graph.add_edge("Jhon", "Mark")
    graph.add_edge("Sophia", "Emma")
    graph.add_edge("Sophia", "Alice")
    graph.add_edge("Emma", "Sophia")
    graph.add_edge("Emma", "Jeff")
    graph.add_edge("Jeff", "George")

    display_graph(graph, "Input graph for Breadth-First Search")

    vertices = bfs(graph.get_vertex("Jhon"))
    for vertex in vertices:
        print(vertex)
    graph.add_vertex("a")
    graph.add_vertex("b")
    graph.add_vertex("c")
    graph.add_vertex("d")
    graph.add_vertex("e")
    graph.add_vertex("f")

    graph.add_edge("a", "b")
    graph.add_edge("a", "c")
    graph.add_edge("a", "d")
    graph.add_edge("b", "c")
    graph.add_edge("b", "f")
    graph.add_edge("c", "d")
    graph.add_edge("d", "e")
    graph.add_edge("e", "f")

    start_vertex = graph.get_vertex("a")
    end_vertex = graph.get_vertex("f")
    shortest_path = bfs_shortest_path(start_vertex, end_vertex)

    display_graph(
        graph, "Input graph for BFS shortest path from {0} to {1}".format(
            start_vertex.get_label(), end_vertex.get_label()))

    if shortest_path:
        for vertex in shortest_path:
            print(vertex)
    else:
        print("There no path between {0} & {1}".format(
            start_vertex.get_label(), end_vertex.get_label()))