Ayuda con implementación de programa en C con búsqueda profunda, a lo ancho y escalada simple
Soy Juan Aguilar de Mexico, DF. Se muy poco sobre programación en C (Casi NADA). Para acreditar La materia de Inteligencia artificial me piden realizar tres programas, que realicen, una búsqueda por profundidad, otra a lo ancho y otra por escalada simple. Lo único que he podido hacer son estos algoritmos:
---------------------------------------
Búsqueda a lo ancho:
1.- Crear una variable llamada LISTA-NODOS y asignarle el estado inicial.
2.-Hasta que se encuentre un estado META, o LISTA-NODOS esté vacía, hacer lo siguiente:
>Eliminar el primer elemento de LISTA-NODOS y llamarlo E. Si LISTA-NODOS esta vacía. TERMINAR.
>Para Cada regla cuya condición se corresponda (aparece) con el estado descrito en E Hacer lo siguiente:
I. Aplicar la regla para generar un nuevo estado.
II. Si el nuevo estado es un estado META, terminar y devolver este estado.
III. En caso contrario, añadir el nuevo estado al final de LISTA-NODOS
---------------------------------------
Búsqueda por profundidad:
1.-Crear una variable llamada LISTA-NODOS y asignarle el estado inicial E.
2.- Si LISTA-NODOS esta vacía retornar un fallo y terminar.
3.-Si el primer elemento de la lista es un estado meta M, retornar un éxito y parar. En caso contrario:
>Eliminar de LISTA-NODOS el primer elemento y generar sus sucesores colocando estos al inicio de LISTA-NODOS (en algún Orden)
>Retornar al Paso 2.
--------------------------------------
Escalada simple:
1.- Evaluar es estado inical. Si también es el estado objetivo, devolverlo y TERMINAR. En caso Contrario, continuar con el estado inicial como estado actual.
2.- Repetir hasta que se encuentre una solución o hasta que no queden nuevos operadores que aplicar al estado actual:
I. Seleccionar un operador que no haya sido aplicado con anterioridad al estado actual y aplicarlo para generar un nuevo estado.
II. Evaluar el nuevo estado.
>Si es un estado objetivo, devolverlo y TERMINAR.
>Si no es un estado objetivo, pero es mejor que el estado actual, convertirlo en el estado actual.
>Si no es mejor que el estado actual, continuar con el bucle (es decir regresar al paso1).
----------------------------------------
Como te podrás imaginar me fue muy difícil entender y transcribir con ayuda del maestro estos algoritmos, más como me falla la programación no se como implementarlo en C y desplegar en pantalla según el maestro algo parecido a lo siguiente (más bien dicho el guey lo quiere así..¡):
*********************************************
Contenido actual de LISTA-NODOS :
A C
----- -----
Contenido Actual de LISTA-NODOS :
-A -C -E
----- -----
Contenido Actual De LISTA-NODOS :
-A -C -E -K
----- -----
-------------------------------------------
------------------------------------------
Se ha alcanzado un estado meta : G .
El estado del que fue generado : QUE .
Desde el estado Inicial : A .
Se aplicaron : 4 Operadores.
La Secuencia de Estados es la siguiente:
-A -C -E -K -G
- - FIn del la busqueda.
*********************************************
Pido ayuda a los expertos puesto que los cuates de la materia o no saben igual que yo o son ojeis y no los quieren pasar. Ojala y me puedas ayudar a generar el código en C y si no quieres o puedes y conoces a alguien que me pueda ayudar te estaré en verdad mil veces agradecido.
---------------------------------------
Búsqueda a lo ancho:
1.- Crear una variable llamada LISTA-NODOS y asignarle el estado inicial.
2.-Hasta que se encuentre un estado META, o LISTA-NODOS esté vacía, hacer lo siguiente:
>Eliminar el primer elemento de LISTA-NODOS y llamarlo E. Si LISTA-NODOS esta vacía. TERMINAR.
>Para Cada regla cuya condición se corresponda (aparece) con el estado descrito en E Hacer lo siguiente:
I. Aplicar la regla para generar un nuevo estado.
II. Si el nuevo estado es un estado META, terminar y devolver este estado.
III. En caso contrario, añadir el nuevo estado al final de LISTA-NODOS
---------------------------------------
Búsqueda por profundidad:
1.-Crear una variable llamada LISTA-NODOS y asignarle el estado inicial E.
2.- Si LISTA-NODOS esta vacía retornar un fallo y terminar.
3.-Si el primer elemento de la lista es un estado meta M, retornar un éxito y parar. En caso contrario:
>Eliminar de LISTA-NODOS el primer elemento y generar sus sucesores colocando estos al inicio de LISTA-NODOS (en algún Orden)
>Retornar al Paso 2.
--------------------------------------
Escalada simple:
1.- Evaluar es estado inical. Si también es el estado objetivo, devolverlo y TERMINAR. En caso Contrario, continuar con el estado inicial como estado actual.
2.- Repetir hasta que se encuentre una solución o hasta que no queden nuevos operadores que aplicar al estado actual:
I. Seleccionar un operador que no haya sido aplicado con anterioridad al estado actual y aplicarlo para generar un nuevo estado.
II. Evaluar el nuevo estado.
>Si es un estado objetivo, devolverlo y TERMINAR.
>Si no es un estado objetivo, pero es mejor que el estado actual, convertirlo en el estado actual.
>Si no es mejor que el estado actual, continuar con el bucle (es decir regresar al paso1).
----------------------------------------
Como te podrás imaginar me fue muy difícil entender y transcribir con ayuda del maestro estos algoritmos, más como me falla la programación no se como implementarlo en C y desplegar en pantalla según el maestro algo parecido a lo siguiente (más bien dicho el guey lo quiere así..¡):
*********************************************
Contenido actual de LISTA-NODOS :
A C
----- -----
Contenido Actual de LISTA-NODOS :
-A -C -E
----- -----
Contenido Actual De LISTA-NODOS :
-A -C -E -K
----- -----
-------------------------------------------
------------------------------------------
Se ha alcanzado un estado meta : G .
El estado del que fue generado : QUE .
Desde el estado Inicial : A .
Se aplicaron : 4 Operadores.
La Secuencia de Estados es la siguiente:
-A -C -E -K -G
- - FIn del la busqueda.
*********************************************
Pido ayuda a los expertos puesto que los cuates de la materia o no saben igual que yo o son ojeis y no los quieren pasar. Ojala y me puedas ayudar a generar el código en C y si no quieres o puedes y conoces a alguien que me pueda ayudar te estaré en verdad mil veces agradecido.
2 Respuestas
Respuesta de pablojbf
1
Respuesta de shakarc
1