Пример #1
0
def busqueda_recursiva(nodo, solucion, visitados, limite):
    nodo_visitado = nodo.get_datos()
    visitados.append(nodo_visitado)
    if nodo.get_datos() == solucion:
        return nodo
    else:
        # Expandir nodos hijo
        dato_nodo = nodo.get_datos()
        lista_hijos = []
        for un_hijo in conexiones[dato_nodo]:
            hijo = Nodo(un_hijo)
            if not hijo.get_datos() in visitados:
                lista_hijos.append(hijo)

        nodo.set_hijos(lista_hijos)

        for nodo_hijo in nodo.get_hijos():
            if not nodo_hijo.get_datos() in visitados:
                # llamada recursiva
                sol = busqueda_recursiva(nodo_hijo, solucion, visitados,
                                         limite)
                if sol != None:
                    return sol

    return None
Пример #2
0
            'Madrid': 599
        },
        'Santander': {
            'Madrid': 437,
            'Zaragoza': 394
        },
        'Zaragoza': {
            'Barcelona': 296,
            'Valencia': 309,
            'Madrid': 313
        },
        'Barcelona': {
            'Zaragoza': 296,
            'Madrid': 603,
            'Valencia': 396
        }
    }
    estado_inicial = 'Malaga'
    solucion = 'Santiago'
    nodo_solucion = search_solution_UCS(conexiones, estado_inicial, solucion)
    # Mostrar resultado
    resultado = []
    Nodo = nodo_solucion
    while Nodo.get_padre() is not None:
        resultado.append(Nodo.get_datos())
        Nodo = Nodo.get_padre()
    resultado.append(estado_inicial)
    resultado.reverse()
    print(resultado)
    print("Coste: %s" % str(nodo_solucion.get_coste()))