es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo reducir el número de estados en un algoritmo BFS?

Tengo un algoritmo de BFS en Python. Estoy creando el árbol mientras lo recorro. Aquí está el código de mi implementación:

def bfs(estado_inicial, objetivo):

    visitados = []
    cola = [estado_inicial]

    encontrado = False

    while not encontrado:

        s = cola.pop(0)

        # Objetivo
        for r in s.robots:
            if r.x == 5 and r.y == 10:
                print("ENCONTRADO")
                return visitados

        # Si el estado no tiene hijos -> Crear sus hijos
        if not s.hijos:
            s.crear_hijo()

        for hijo in s.hijos:
            if hijo not in visitados:
                visitados.append(hijo)
                cola.append(hijo)

Aquí quiero intentar una solución en 3 movimientos. Cuando imprimo la longitud de la lista visitados, imprime 20k estados. Eso es demasiado porque cada padre tiene 16 hijos, por lo que una solución de 3 movimientos genera 16^3 + 16^2 + 16 estados.

¿Es el problema mi BFS?
El número de hijos creados es el correcto, hice muchas pruebas.

Gracias por sus respuestas.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Basándose en el código proporcionado, parece que el algoritmo BFS está funcionando correctamente. El problema de generar demasiados estados puede deberse a la complejidad del problema que se está resolviendo o al número de posibles estados.

    También es posible que el problema que se está resolviendo requiera métodos más eficientes o técnicas de optimización para reducir el número de estados generados.

    Sin información o contexto adicional sobre el problema que se está resolviendo, es difícil proporcionar una respuesta más específica. Sin embargo, puede ser útil revisar el problema y el enfoque que se está tomando para ver si se pueden hacer ajustes o mejoras.

Comments are closed.