Exemplo n.º 1
0
    def nova_aresta(self, origem, destino, peso):
        origem_aux = self.busca_vertice(origem)
        destino_aux = self.busca_vertice(destino)
        if (origem_aux is not None) and (destino_aux is not None):
            self.lista_Arestas.append(Aresta(origem_aux, destino_aux, peso))
        else:
            print("Um do Vertice ou ambos são invalidos")

        if self.direcionado == False:
            self.lista_Arestas.append(Aresta(destino_aux, origem_aux))
Exemplo n.º 2
0
    def nova_Aresta(self, origem, destino, peso):  # Método recebe dois identificadores
        origem_aux = self.busca_Vertice(origem)
        destino_aux = self.busca_Vertice(destino)
        if (origem_aux is not None) and (destino_aux is not None):
            self.lista_Arestas.append(Aresta(origem_aux, destino_aux, peso))
        else:
            print("Um do Vertice ou ambos são invalidos")

        if self.direcionado == False:
            self.lista_Arestas.append(Aresta(destino_aux, origem_aux, peso))  # Aresta(u,v) e Aresta(v,u)
Exemplo n.º 3
0
 def addAresta(self, id, origem, destino, peso=0):
     origem = self.findVerticeByRotulo(origem)
     destino = self.findVerticeByRotulo(destino)
     if (origem is not None) and (destino is not None):
         self.arestas.append(Aresta(id, origem, destino, peso))
     else:
         print("Vertice %s ou %s não existe" % (origem, destino))
    def __constroiGrafo(self):
        # construindo o grafo Matriz de Incidencia (MxN)
        self.grafo = [[0 for i in range(self.qtdVertices + 1)]
                      for i in range(self.qtdArestas)]

        for i in range(2, len(self.linhasAqr) - 1):
            linha = i - 2
            # print(self.linhasAqr[i])
            a, b = map(int, self.linhasAqr[i].split("--"))
            self.grafo[linha][a] = 1
            self.grafo[linha][b] = 1
            cor = None
            self.grafo[linha][self.qtdVertices] = cor
            self.listAresta.append(Aresta(a, b, cor))
            vA = Vertice(a)
            vB = Vertice(b)
            if a not in self.verticesChaves:
                self.listVertice[a] = vA
                self.verticesChaves.append(a)
            if b not in self.verticesChaves:
                self.listVertice[b] = vB
                self.verticesChaves.append(b)

            self.listVertice[a].insereVizinho(b, cor)
            self.listVertice[b].insereVizinho(a, cor)
Exemplo n.º 5
0
    def addAresta(self, origem, destino, peso):
        
        try:
            id_origem = int(origem)
        except ValueError:
            print("ValueError: O valor do Id de origem tem que ser um número.")
            return False
        
        try:
            id_destino = int(destino)
        except ValueError:
            print("ValueError: O valor do Id de destino tem que ser um número.")
            return False
        
        no_origem = self.getNo(id_origem)
        no_destino = self.getNo(id_destino)
        
        if no_origem==None:
            no_origem = No(id_origem)
            #define o child_id que vai diferenciar os filhos quando gerar a arvore
            no_origem.id_ref = 0
            #adiciona o vertice no grafo
            self.grafo.append(no_origem)
        
        if no_destino==None:
            no_destino = No(id_destino)
            #define o child_id que vai diferenciar os filhos quando gerar a arvore
            no_destino.id_ref = 0
            #adiciona o vertice no grafo
            self.grafo.append(no_destino)
            

        #cria arestas
        aresta_1 = Aresta(id_origem, id_destino, peso)
        aresta_2 = Aresta(id_destino, id_origem, peso)
        
        #coloca as arestas nos vertices
        no_origem.arestas.append(aresta_1)
        no_destino.arestas.append(aresta_2)
        
        #salva uma delas pra representar a aresta unica
        self.arestas_unicas.append(Aresta(id_origem, id_destino, peso))
        
        return True
 def atualizaArestas(self):
     vizinhos = []
     self.listAresta.clear()
     for i in range(self.qtdArestas):
         for j in range(self.qtdVertices):
             if self.grafo[i][j] == 1:
                 vizinhos.append(j)
         v1 = vizinhos[0]
         v2 = vizinhos[1]
         cor = self.grafo[i][self.qtdVertices]
         # print (v1, v2, cor)
         self.listAresta.append(Aresta(v1, v2, cor))
         vizinhos.clear()
Exemplo n.º 7
0
 def encontrarArestaPara(self, v2):
     idAresta = Aresta.gerarIdAresta(self, v2)
     if (idAresta in self.arestas):
         return self.arestas[idAresta]
     return None
 def adicionarRelacao(self, v1, v2, peso):
     id = self.gerarIdRelacao(v1, v2)
     relacao = Aresta(id, v1, v2, peso)
     self.relacoes[id] = relacao
     self.vertices[v1.numero - 1].adicionarRelacao(relacao)
     self.vertices[v2.numero - 1].adicionarRelacao(relacao)
Exemplo n.º 9
0
 def grafo_Transposto(self):  # w(u,v) passa a ser w(v,u)
     for i in range(len(self.lista_Arestas)):
         origem = self.lista_Arestas[0].getOrigem()
         destino = self.lista_Arestas[0].getDestino()
         self.lista_Arestas.pop(0)
         self.lista_Arestas.append(Aresta(destino, origem, 0))
Exemplo n.º 10
0
print(arquivo.read())

arquivo = open(txt)
objetos = arquivo.read().split(';')

num_cidades = int(objetos[0])
# Limitar em 20 cidades
if num_cidades > 20:
    raise Exception('Numero de cidades inválido')
print(str(num_cidades) + ' cidades ')

cidades = PopulacaoManager.get_cidades(num_cidades)

cont = 0
for obj in objetos[1:num_cidades + 1]:
    arestas.append(Aresta(cont, cont + 1, obj))
    # Correcao para aresta ser bidirecional
    arestas.append(Aresta(cont + 1, cont, obj))
    cont = cont + 1

# for obj in objetos[num_cidades+1:]:
# gerar arestas em direções aleatórias com valores que sobraram

# for a in arestas:
#    print(a.destino)
populacao = PopulacaoManager.get_primeiras_populacoes(num_cidades, num_populacoes)
populacao_peso = list


nova_geracao = list
for geracao in range(0, geracoes):