Que
tal, como dije, en la anterior entrada del blog hoy publicare la respuesta al
reto propuesto (ver): bien comencemos:
Parte
1:
Nuestro
licenciado trato de generar Fbf, pero no lo consiguió del todo, aquí su
trabajo:
1.-
¬invetigador(x) v otras_habilidades v constructor_futuro(x)
2a.-
ingeniero(x) v investigador(x)
2b.-
científico(x) v investigador(x)
3a.-
¬ing_informatica(x) ^ otras_habilidades(x)
3b.-
¬ing_informatica(x) ^ ingeniero(x)
Como
podrás darte cuenta el problema que se le a encargado a esta persona esta erróneo,
pero no en su totalidad, recuerda que cualquier Fbf tiene que estar ligada a través
de “v” y negando el primer predicado:
¬pvq~p→q
Una vez dicho esto será
más claro notar los errores que existen en su lógica, corrigiéndolos quedara así:
1.-
¬invetigador(x) v otras_habilidades v constructor_futuro(x)
2a.- ¬ingeniero(x)
v investigador(x)
2b.- ¬científico(x)
v investigador(x)
3a.-
¬ing_informatica(x) v otras_habilidades(x)
3b.-
¬ing_informatica(x) v ingeniero(x)
Parte
2:
Ahora
se te pide que hagas un programa en Prolog, con las Fbf obtenidas (si no sabes
que necesitas revisa esta entrada (ver)), quedando de esta forma:
constructor_futuro(X):-
investigador(X),
otras_habilidades(X).
investigador(X):-
ingeniero(X).
investigador(X):-
cientifico(X).
ingeniero(X):-
ing_informatica(X).
otras_habilidades(X):-
ing_informatica(X).
cientifico('extmail').
ing_informatica('alberto').
Como
habrás notado una vez que tienes la Fbf solo es separar el consecuente, para
generar la regla, las (,) significan un AND, y los (;) un OR, las reglas se
construyen por el siguiente símbolo (:-) el cual significa un IF, para entra
mas a fondo a los operadores te recomiendo veas los que aquí escribo (ver).
Parte
3:
Realizando
las consultas que se pidieron los valores retornados son:
1.-
ing_informatica(alberto)
Yes, ya
que al buscar Prolog encuentra que es un Hecho
2.-
ing_informatica(extmail)
No, ya
que la búsqueda que hace Prolog determina que el Hecho que menciona a extmail,
no es contenido por ing_informatica(), si no por científico()
3.-
investigador(eyoz)
No, ya
que eyoz, no figura como argumento en ningún Hecho, o Regla
4.-
constructor_futuro(alberto)
Yes, ya
que al hacer la búsqueda Prolog se encuentra con un Hecho que menciona a alberto,
y después entre Regla y Regla, descubriendo que las Reglas hacen referencia a
otras
5.-
constructor_futuro(x)
Esta regla
traerá a todos los constructores_futuros(), a los que se hace referencia en la
base de conocimiento de nuestro programa, pero solo traerá a alberto,
Si
colocamos un (;), desechara a la variable encontrada e ira en busca de otra posible
respuesta, como en la base del conocimiento no se encuentran mas personas que
cubran esta cualidad retornara un valor no.
Bien
eso es todo, nos leemos en la próxima…
Dudas,
comentarios, ya sabes retoswm [at] gmail.com
No hay comentarios:
Publicar un comentario