Ejemplo n.º 1
0
    def start(self):
        prim_graph = Graph("n")
        nodes_visited = list()
        nodes_to_visit = self.graph.nodes
        prim_graph.addNodes(nodes_to_visit)
        print(nodes_to_visit)
        nodes_to_visit["A"].data["key"] = 0
        while nodes_to_visit:
            min = self.return_min_value(nodes_to_visit)
            nodes_to_visit.pop(min.name)
            print(nodes_to_visit)
            if min.data["parent"] is not None:
                # self.lista[min.name] = min.data["parent"]

                prim_graph.addEdge(min.name, min.data["parent"].name,
                                   min.data["key"])

            nodes_adj = self.return_all_vertices(min)

            for node in nodes_adj:
                if node[1].weight < node[0].data["key"]:
                    node[0].data["parent"] = min
                    node[0].data["key"] = node[1].weight

            # break

        self.graph = prim_graph
Ejemplo n.º 2
0
def graphOne():
    grafo = Graph("d")

    grafo.addNode("A")
    grafo.addNode("B")
    grafo.addNode("C")
    grafo.addNode("D")
    grafo.addNode("E")
    grafo.addNode("F")

    grafo.addEdge("A", "B", 1)
    grafo.addEdge("A", "C", 8)
    grafo.addEdge("B", "D", 2)
    grafo.addEdge("C", "B", 3)
    grafo.addEdge("C", "E", 1)
    grafo.addEdge("D", "F", 1)
    grafo.addEdge("D", "C", 1)
    grafo.addEdge("D", "E", 3)
    grafo.addEdge("E", "D", 2)
    grafo.addEdge("E", "F", 9)

    # teste com valores negativos
    # grafo.addEdge("C", "A",-1)
    # grafo.addEdge("B", "C",-1)

    # Ciclo infinito bug na hora de rotanar a lista de Pai
    # grafo.addEdge("C", "E", -1)
    # grafo.addEdge("E", "D", -2)

    return grafo
Ejemplo n.º 3
0
def graphThree():
    grafo = Graph("n")
    grafo.addNodes(["A", "B", "C", "D", "E", "F", "G"])
    grafo.addEdge("A", "B", 2)
    grafo.addEdge("A", "D", 3)
    grafo.addEdge("A", "C", 3)
    grafo.addEdge("B", "C", 4)
    grafo.addEdge("B", "E", 3)
    grafo.addEdge("C", "D", 5)
    grafo.addEdge("C", "F", 6)
    grafo.addEdge("C", "E", 1)
    grafo.addEdge("D", "F", 7)
    grafo.addEdge("E", "F", 8)
    grafo.addEdge("F", "G", 9)

    return grafo
Ejemplo n.º 4
0
def graphTwo():
    grafo = Graph("d")
    grafo.addNode("S")
    grafo.addNode("A")
    grafo.addNode("B")
    grafo.addNode("C")
    grafo.addNode("D")
    grafo.addNode("E")

    grafo.addEdge("S", "A", 10)
    grafo.addEdge("S", "E", 8)
    grafo.addEdge("A", "C", 2)
    grafo.addEdge("E", "D", 1)
    grafo.addEdge("D", "A", -4)
    grafo.addEdge("D", "C", -1)
    grafo.addEdge("C", "B", -2)
    grafo.addEdge("B", "A", 1)

    return grafo