def pruebas_camino_minimo(): print("PRUEBAS CAMINO MINIMO\n") grafo = Grafo() grafo.add_edge(1, 2) grafo.add_edge(2, 3) grafo.add_edge(3, 4) camino = funciones.camino_minimo(grafo, 1, 4) for v in camino[:-1]: print(v, "-> ", end='') print(camino[-1]) camino2 = funciones.camino_minimo(grafo, 2, 4) for v in camino2[:-1]: print(v, "-> ", end='') print(camino2[-1]) grafo.add_edge(2, 4) camino = funciones.camino_minimo(grafo, 1, 4) for v in camino[:-1]: print(v, "-> ", end='') print(camino[-1]) camino2 = funciones.camino_minimo(grafo, 2, 4) for v in camino2[:-1]: print(v, "-> ", end='') print(camino2[-1]) grafo.add(5) camino = funciones.camino_minimo(grafo, 1, 5) print(camino)
def pruebas_ciclo(): print("\n\n PRUEBAS CICLO DE LARGO n\n") grafo = Grafo() grafo.add_edge('A', 'B') grafo.add_edge('B', 'C') grafo.add_edge('C', 'A') grafo.add_edge('C', 'D') grafo.add_edge('B', 'E') grafo.add_edge('E', 'D') grafo.add_edge('D', 'F') grafo.add_edge('F', 'E') grafo.add('G') lista = funciones.ciclo(grafo, 'B', 3) print(lista)
def pruebas_tarjan(): print("\n\nPRUEBAS COMPONENTES CONEXAS\n") grafo = Grafo() grafo.add_edge('A', 'B') grafo.add_edge('B', 'C') grafo.add_edge('C', 'A') grafo.add_edge('C', 'D') grafo.add_edge('B', 'E') grafo.add_edge('E', 'D') grafo.add_edge('D', 'F') grafo.add_edge('F', 'E') grafo.add('G') #! H e I tienen que ser una sola componente grafo.add_edge('H', 'I') grafo.add_edge('I', 'H') cfc(grafo)
def letras() -> Grafo: """ Ejemplo 1: Letras """ # Crear grafo y agregar nodos grafo = Grafo() grafo.add('A', 'B', 'C', 'D') # Conectar nodos con sus respectivas distancias grafo.connect('B', 'C', 200) grafo.connect('B', 'A', 100) grafo.connect('A', 'D', 50) grafo.connect('D', 'C', 10) imprimir_camino(grafo, 'A', 'C') return grafo
def _agregar_nodo(grafo: Grafo): """ Agregar un nodo al grafo :param grafo: El grafo donde se agregará el nodo """ while True: nombre = input( 'Ingrese un nombre para el nuevo nodo (ENTER para cancelar): ') if len(nombre) == 0: _clear_screen() break if grafo.add(nombre): print(f'Nodo "{nombre}" agregado correctamente\n') _wait_enter() break else: print(f'El nodo "{nombre}" ya existe\n')
for row in csvfile: relations.append(row) for relation in relations: for value in csvfile[relation]: triples.append((counter, relation, value)) counter += 1 counter = 1 return triples graph = Grafo() triples = maketriples(pathtocsv) for triple in triples: graph.add(triple[0], triple[1], triple[2]) def triples2dot(triples): dot = \ """ graph "grafo" { overlap = "scale"; """ for s, p, o in triples: dot = dot + ('%s -- %s [label=%s]\n' % (re.sub('[^A-Za-z0-9]+', '', str(s)), re.sub('[^A-Za-z0-9]+', '', str(o)), re.sub('[^A-Za-z0-9]+', '', str(p)))) dot = dot + "}"
# -*- coding: utf-8 -*- from __future__ import unicode_literals from grafo import Grafo #Triplestore from staticvars.staticpaths import pathtocsv #String path to CSV file import pandas as pd relations = [] triples = [] pathtocsv = pathtocsv def maketriples(filepath): counter = 1 csvfile = pd.read_csv(filepath) csvfile.drop_duplicates(inplace=True, keep='first') for row in csvfile: relations.append(row) for relation in relations: for value in csvfile[relation]: triples.append((str(counter), str(relation), str(value))) counter += 1 counter = 1 return triples graph = Grafo() triples=maketriples(pathtocsv) for triple in triples: graph.add(str(triple[0]),str(triple[1]),str(triple[2]))