Ejemplo n.º 1
0
def GNP(n,p):
    G = Grafica(n)
    for u in range(n):
        for v in range(u+1, n):
            r = random.random()
            if r < p:
                G.conectar(u,v)
    return G
Ejemplo n.º 2
0
def main():
    '''
    Función principal main.	

    Esta función es la encargada de proporcionar al usuario una interfaz desde la cual poder
    seleccionar cada uno de los algoritmos implementados. 
        Antes de seleccionar cualquier opción de algoritmo es necesario cargar la gráfica
    deseada desde un archivo .json, desde el cuál se debe definir "vertices" como una lista
    y "aristas" como una lista de listas, cada lista en cuestión con el siguiente formato:
    [origen, destino, peso].

    :return: None
    '''
    # Variables:
    opcion = 0
    grafica = None

    print("**** Algoritmos de busqueda ****")
    print("Escoja una opcion:\
    \n\t1. Cargar grafica desde archivo .json\
    \n\t2. Dijkstra\
    \n\t3. Bellman-Ford\
    \n\t4. A*\
    \n\t5. Salir")

    while opcion != "5":
        opcion = input("\n\tOpcion: ")

        if opcion == "1":
            try:
                file_name = input("\t\tNombre del archivo json: ")
                grafica = Grafica()
                grafica.leerArchivo(file_name)
                print("\n\tArchivo cargado exitosamente\n")
            except:
                grafica = None
                print("\t\tEl archivo no existe")
        if grafica:
            if opcion == "2":
                origen = int(input("\t\tOrigen: "))
                try:
                    grafica.dijkstra(origen)
                except:
                    print("\t\tEl origen no existe")
            elif opcion == "3":
                origen = int(input("\t\tOrigen: "))
                try:
                    grafica.BellmanFord(origen)
                except:
                    print("\t\tEl origen no existe")
            elif opcion == "4":
                origen = int(input("\t\tOrigen: "))
                destino = int(input("\t\tDestino: "))
                try:
                    grafica.aStar(origen, destino)
                except:
                    print("\t\tDatos incorrectos")
        else:
            print("\n\tElija una opción válida\n")
Ejemplo n.º 3
0
def main():
    """Función principal main	"""
    # Variables:
    opcion = 0
    grafica = None

    print("**** Algoritmos de busqueda ****")
    print("Escoja una opcion:\
    \n\t1. Cargar grafica desde archivo .json\
    \n\t2. Dijkstra\
    \n\t3. Bellman-Ford\
    \n\t4. A*\
    \n\t5. Salir")
    
    while opcion != "5":
        opcion = input("\n\tOpcion: ")
        
        if opcion == "1":
            try:
                file_name = input("\t\tNombre del archivo json: ")
                grafica = Grafica()
                grafica.leerArchivo(file_name)
                print("\n\tArchivo cargado exitosamente\n")
            except:
                grafica = None
                print("\t\tEl archivo no existe")
        if grafica:
            if opcion == "2":
                origen = int(input("\t\tOrigen: "))
                try:
                    grafica.dijkstra(origen)
                except:
                    print("\t\tEl origen no existe")
            elif opcion == "3":
                origen = int(input("\t\tOrigen: "))
                try:
                    grafica.BellmanFord(origen)
                except:
                    print("\t\tEl origen no existe")
            elif opcion == "4":
                origen = int(input("\t\tOrigen: "))
                destino = int(input("\t\tDestino: "))
                try:
                    grafica.aStar(origen, destino)
                except:
                    print("\t\tDatos incorrectos")
        else:
            print("\n\tElija una opción válida\n")
Ejemplo n.º 4
0
    for w, u, v in aristas:
        if D.misma_componente(u, v):
            continue
        mst.append((u, v, w))
        D.juntar(u, v)
    return mst

def kruskal(G):
    aristas = G.aristas()
    aristas.sort()
    D = DisjointSets(G.num_verts)
    return aristas_sin_ciclos(aristas, D)


if __name__ == "__main__":
    G = Grafica(5)
    G.conectar(0,1,2)
    G.conectar(0,2,3)
    G.conectar(1,4,1)
    G.conectar(1,2,3)
    G.conectar(2,3,4)
    G.conectar(3,4,1)
    print("Prim:")
    for arista in prim(G):
        print(arista)

    print("Kruskal:")
    for arista in kruskal(G):
        print(arista)

    
Ejemplo n.º 5
0
from Agente import Agente
from Entorno import Entorno
from Grafica import Grafica

entorno = Entorno(20)
agente = Agente(entorno)
grafica = Grafica(agente, entorno)

agente.ejecutar_acciones(100)
grafica.graficar()
Ejemplo n.º 6
0
    #to do
    def lca(self, u, v):
        if self.A[u] == self.A[v]:
            return lca_ingenuo(p, u, v, A[u])
        else:
            if self.h[u] < self.h[v]:
                v, u = u, v
            while self.h[u] > self.h[v]:
                u = self.A[u]

            if self.A[u] == self.A[v]:
                return lca_ingenuo(p, u, v, A[u])
            else:
                u = self.A[u]
                v = self.A[v]
                return self.lca(u, v)


if __name__ == "__main__":
    G = Grafica(5)
    G.conectar(0, 1)
    G.conectar(1, 2)
    G.conectar(0, 3)
    G.conectar(3, 4)
    print(es_arbol(G))
    p = encontrar_padres(G, 0)
    print(p)
    print(ancestros(p, 4))
    print(lca_ingenua(p, 4, 1))
Ejemplo n.º 7
0
def generar_grafica(n, A):
    G = Grafica(n)
    for u,v in A:
        G.conectar(u,v)
    return G