def probando(pos_ini, tipo):
    """
    Muestra el resultado de aplicar un tipo de búsqeda
    al problema del 8 puzzle con una posición inicial
    determinada.

    Por el momento muy manual, solamente descomentar
    las búsquedas que se deseen realizar.
    
    Recuerda que las búsquedas no informadas pueden ser
    muy lentas.
    
    Tipo:
        0: busqueda_ancho,
        1: busqueda_profundo,
        2: busqueda_profundidad_iterativa,
        3: busqueda_costo_uniforme,
        4: busqueda_A_estrella con heuristica h1,
        5: busqueda_A_estrella con heuristica h2
    """
    print(Modelo8puzzle.dibuja(pos_ini))
    tipos = ["BFS", "DFS", "IDS", "UCS", "A* con h1", "A* con h2"]
    print("---------- Utilizando {} -------------".format(tipos[tipo]))
    problema = Ocho_puzzle(pos_ini)
    t_inicial = time()
    solucion = (busquedas.busqueda_ancho(problema) if tipo is 0 else
                busquedas.busqueda_profundo(problema, 50) if tipo is 1 else
                busquedas.busqueda_profundidad_iterativa(problema, 50) if tipo is 2 else
                busquedas.busqueda_costo_uniforme(problema) if tipo is 3 else
                busquedas.busqueda_A_estrella(problema, h_1) if tipo is 4 else
                busquedas.busqueda_A_estrella(problema, h_2))
    t_final = time()
    print(solucion)
    print("Explorando {} nodos".format(solucion.nodos_visitados))
    print("Tiempo: {} segundos".format(t_final-t_inicial))
Beispiel #2
0
def probando(pos_ini):
    """
    Muestra el resultado de aplicar un tipo de búsqeda
    al problema del 8 puzzle con una posición inicial
    determinada.

    Por el momento muy manuel, solamente descomentar
    las búsquedas que se deseen realizar.

    Recuerda que las búsquedas no informadas pueden ser
    muy lentas.

    """
    print(Modelo8puzzle.dibuja(pos_ini))

    # ------- BFS -----------
    print("---------- Utilizando BFS -------------")
    problema = Ocho_puzzle(pos_ini)
    solucion = busquedas.busqueda_ancho(problema)
    print(solucion)
    print("Explorando {} nodos\n\n".format(solucion.nodos_visitados))

    # ------- DFS -----------
    print("---------- Utilizando DFS -------------")
    problema = Ocho_puzzle(pos_ini)
    solucion = busquedas.busqueda_profundo(problema, 50)
    print(solucion)
    print("Explorando {} nodos\n\n".format(solucion.nodos_visitados))

    # ------- IDS -----------
    print("---------- Utilizando IDS -------------")
    problema = Ocho_puzzle(pos_ini)
    solucion = busquedas.busqueda_profundidad_iterativa(problema, 50)
    print(solucion)
    print("Explorando {} nodos\n\n".format(solucion.nodos_visitados))

    # ------- UCS -----------
    print("---------- Utilizando UCS -------------")
    problema = Ocho_puzzle(pos_ini)
    solucion = busquedas.busqueda_costo_uniforme(problema)
    print(solucion)
    print("Explorando {} nodos\n\n".format(solucion.nodos_visitados))

    # # ------- A* con h1 -----------
    print("---------- Utilizando A* con h1 -------------")
    problema = Ocho_puzzle(pos_ini)
    solucion = busquedas.busqueda_A_estrella(problema, h_1)
    print(solucion)
    print("Explorando {} nodos".format(solucion.nodos_visitados))

    # # ------- A* con h2 -----------
    print("---------- Utilizando A* con h2 -------------")
    problema = Ocho_puzzle(pos_ini)
    solucion = busquedas.busqueda_A_estrella(problema, h_2)
    print(solucion)
    print("Explorando {} nodos".format(solucion.nodos_visitados))
    """
        #     x['nC_izq'] += accion[1]
        #     x['canoa'] = 'izquierda'

        # return x


def es_meta(estado):
    return estado[0] == estado[1] == 0


class PblCanibales(busquedas.ProblemaBusqueda):
    def __init__(self, nM, nC):
        super().__init__((nM, nC, 1), es_meta, ModeloCanibales(nM, nC))


if __name__ is "__main__":

    print("Problema de los canibales resuelto con busqueda a lo ancho:")
    print(busquedas.busqueda_ancho(PblCanibales(3, 3)))

    print("\nProblema de los canibales resuelto con busqueda a lo profundo:")
    print(busquedas.busqueda_profundo(PblCanibales(3, 3)))

    print(
        "\nProblema de los canibales resuelto con busqueda profundidad iterativa:"
    )
    print(busquedas.busqueda_profundidad_iterativa(PblCanibales(3, 3)))

    print("\nProblema de los canibales resuelto con busqueda costo uniforme:")
    print(busquedas.busqueda_costo_uniforme(PblCanibales(3, 3)))