Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
UNIVERSIDAD AUTÓNOMA DE NUEVO LEÓN “FACULTAD DE INGENIERÍA MECÁNICA Y ELÉCTRICA” “INTELIGENCIA ARTIFICIAL Y REDES NEURONALES” ACTIVIDAD 5 “EL ESTUDIANTE DEBERÁ DE HACER USO DE SOFTWARE O LENGUAJE DE PROGRAMACION PARA RESOLVER PROBLEMAS DE BUSQUEDA NO INFORMADA Y/O INFORMADA.” EQUIPO 07: SEMESTRE: ENERO-JUNIO 2023 CATEDRÁTICO: FECHA DE ENTREGA: 15/05/2023 Problema El código implementa el algoritmo de búsqueda en anchura (BFS) para resolver un problema de búsqueda en un espacio de estados. En particular, resuelve el problema de los botes, donde se tienen dos botes de capacidad 5 y 3 respectivamente, y se busca encontrar una secuencia de acciones para llegar a un estado objetivo en el que uno de los botes contenga 4 unidades de agua. Comandos utilizados en la resolución - El algoritmo utiliza una cola (bfsQueue) para almacenar los estados a explorar y un conjunto (visitedStates) para almacenar los estados visitados. Comienza con un estado inicial específico (0, 0) que representa que ambos botes están vacíos. - La función isValidState verifica si un estado es válido, es decir, si se encuentra dentro de los límites del problema (los botes tienen capacidad de 0 a 5 y de 0 a 3 respectivamente). - La función generateSuccessors genera los sucesores de un estado dado. Calcula todas las acciones posibles que se pueden realizar desde el estado actual y verifica si cada sucesor generado es válido. - La función isGoalState verifica si un estado es el estado objetivo, es decir, si uno de los botes contiene 4 unidades de agua. - La función printSolution muestra la secuencia de estados desde el estado inicial hasta el estado objetivo. - La función bfs implementa el algoritmo de búsqueda en anchura. Comienza insertando el estado inicial en la cola y en el conjunto de estados visitados. Luego, mientras la cola no esté vacía, extrae un estado de la cola y verifica si es el estado objetivo. Si es el estado objetivo, reconstruye la solución a partir de los estados visitados y la muestra utilizando la función printSolution. Si no es el estado objetivo, genera los sucesores del estado actual y los agrega a la cola y al conjunto de estados visitados si no han sido visitados previamente. - En el main, se crea el estado inicial (0, 0) y se llama a la función bfs para encontrar la solución. Finalmente, se retorna 0 para indicar que el programa se ejecutó correctamente. Flujo del programa Comienza en el estado inicial (0, 0) y lo asigna a la variable initialState. Llama a la función bfs y pasa initialState como argumento. Dentro de la función bfs: - Inicializa la cola bfsQueue y la inserta el estado inicial (initialState). - Inicializa el conjunto visitedStates y lo inserta el estado inicial. - Inicia un bucle mientras la cola no esté vacía: - Extrae el primer estado de la cola y lo asigna a currentState. - Verifica si currentState es el estado objetivo llamando a la función isGoalState. -Si es el estado objetivo: - Crea una cola solution y agrega currentState a ella. -Crea una variable previousState para almacenar el estado anterior en la solución. - Inicia un bucle mientras previousState se encuentre en visitedStates: - Agrega previousState a solution. -Obtiene el estado anterior desde la parte posterior de bfsQueue y lo asigna a previousState. -Extrae el estado anterior de bfsQueue. -Llama a la función printSolution y pasa solution como argumento para mostrar la solución encontrada. -Finaliza la función bfs. -Si no es el estado objetivo: -Genera los sucesores de currentState llamando a la función generateSuccessors y los asigna a successors. -Para cada sucesor en successors: -Si el sucesor no está en visitedStates: -Agrega el sucesor a bfsQueue. -Agrega el sucesor a visitedStates. -Si se completa el bucle sin encontrar una solución: -Imprime "No se encontró solución". -Regresa 0 desde la función main para indicar que el programa se ejecutó correctamente. Conclusión Equipo (Funcionamiento Programa) El código implementa de manera efectiva el algoritmo de búsqueda en anchura (BFS) para resolver el problema de los botes. Utiliza una cola para almacenar los estados a explorar y un conjunto para evitar la repetición de estados visitados. El algoritmo busca exhaustivamente todas las posibles acciones desde cada estado, evitando explorar estados inválidos y repitiendo estados ya visitados. Cuando encuentra el estado objetivo, reconstruye la solución utilizando los estados visitados y la muestra al usuario. En caso de no encontrar una solución, informa al usuario que no se encontró una solución. “INTELIGENCIA ARTIFICIAL Y REDES NEURONALES” CATEDRÁTICO: Problema Flujo del programa Conclusión Equipo (Funcionamiento Programa)
Compartir