Sei sulla pagina 1di 7

UNIVERSIDAD NACIONAL DEL ALTIPLANO - PUNO

PRACTICA DIRIGIDA 12; ASIGNATURA: Taller de Inteligencia Artificial


ESCUELA PROFESIONAL: Ingeniería de Sistemas, Semestre Vacacional 2006

Apellidos/Nombres/Código:_________________________________________________________________

TEMA: Sistema Experto, Búsqueda del Conocimiento


En esta practicas se mostrara como encontrar el conocimiento en base a reglas de deducción, que traerá como
consecuencia que la computadora logre generar conocimiento, en base a reglas propuestas.

PARTE 1: Entendiendo el Problema.


CASO: Un alumno de Informática, debido al nerviosismo del primer día de clase, ha anotado el nombre de sus
profesores (María, Jesús y Faraón ), las asignaturas que se imparten ( Lógica, Programación y Matemáticas ) y el
día de la semana de las distintas clases ( lunes, miércoles y jueves ), pero sólo recuerda que:
- La clase de Programación, impartida por María, es posterior a la de Lógica
- A Faraón no le gusta trabajar los lunes, día en el que no se imparte Lógica
¿ Serías capaz de ayudarle a relacionar cada profesor con su asignatura, así como el día de la semana que se
imparte ?
( Sabemos que cada profesor imparte una única asignatura y que las clases se dan en días diferentes)
Caso: Departamento de Ciencia de la Computación e Inteligencia Artificial, Universidad de Alicante : M. Jesús
Castel Faraón Lloréns

RESOLUCIÓN: Tomando en cuenta una propuesta de solución se empiezan a considerar soluciones paso a paso
hasta llegar a la solución esperada, para esto tendrá que aplicar todo el conocimiento que hasta ahora a logrado.
Primero entendiendo el problema se tiene ideas diferentes: nombre del profesor, asignatura, día; además existen
relaciones entre estos considerando tres relaciones:
Relación 1: r1 nombre con asignatura
Relación 2: r2 nombre con día
Relación 3: r3 asignatura con día
Así que se propone (copiar):
Domains
nombre,asignatura,dia_e =symbol
Predicates
prof(nombre)
asig(asignatura)
dia(dia_e)
r1(nombre,asignatura)
r2(nombre,dia_e)
r3(asignatura,dia_e)
Clauses
/*---- BASE DE CONOCIMIENTOS ----*/
/*- PROPIEDADES -*/
/* prof(Profesor) <- Profesor es el nombre de un profesor */
prof("maria").
prof("jesus").
prof("faraon").
/* asig(Asignatura) <- Asignatura es el nombre de una asignatura */
asig("logica").
asig("programacion").
asig("matematicas").
/* dia(Dia) <- Dia es un dia de la semana que hay alguna clase */
dia("lunes").
dia("miercoles").
dia("jueves").

PARTE 2: Definiendo Relaciones.


Ahora es necesario definir las relaciones, según la especificaciones definidas inicialmente en el problema, en
cada especificación se dan las cláusulas y se describe del porque se coloco cada relación:
/*- RELACIONES -*/
/* r1(Profesor,Asignatura) <- Profesor imparte la Asignatura */
r1("maria","programacion"). %Maria enseña programación
r1(Profesor,Asignatura):-prof(Profesor),Profesor<>"maria",asig(Asignatura).
%Otras relaciones profesor asignatura
Goal r1(N,A).
Resultado de la Ejecución(Copie abajo): Como cree que debería ser las relaciones (Copie abajo):
N=maria, A=programacion N=maria, A=programacion
N=jesus, A=logica N=jesus, A=logica
N=jesus, A=programacion N=jesus, A=matematicas
N=jesus, A=matematicas N=faraon, A=logica
N=faraon, A=logica N=faraon, A=matematicas
N=faraon, A=programacion 5 Solutions
N=faraon, A=matematicas Ya que Maria enseña de echo programación y los otros
7 Solutions dos docentes tiene dos cursos que podrían enseñar

/* r2(Profesor,Dia) <- Profesor imparte clases el Dia de la semana */


r2("faraon",Dia) :- dia(Dia), Dia<>"lunes". %Farahon no enseña el lunes
r2(Profesor,Dia) :- prof(Profesor), Profesor<>"faraon",dia(Dia). %Otras relaciones
Goal r2(N,D).
Resultado de la Ejecución(Copie abajo): Como cree que debería ser las relaciones (Copie abajo):

/* r3(Asignatura,Dia) <- Asignatura se imparte el Dia de la semana */


r3("logica",Dia) :- dia(Dia), Dia<>"lunes", Dia<>"jueves".
%Lógica no es el lunes Tampoco el jueves por que es después de lógica es programación
r3("programacion",Dia) :- dia(Dia), Dia<>"lunes". %Programación no es el lunes
r3(Asignatura,Dia) :- asig(Asignatura), Asignatura<>"logica",Asignatura<>"programacion", dia(Dia).
%otros casos
Goal r3(A,D)
Resultado de la Ejecución(Copie abajo): Como cree que debería ser las relaciones (Copie abajo):

Resultado Final
Goal r1(N,A),r2(N,D),r3(A,D).
Resultado de la Ejecución(Copie abajo): Como debería ser las relaciones:
N=maria, A=programacion, D=jueves
N=jesus, A=matematicas, D=lunes
N=faraon, A=logica, D=miércoles
3 Solutions

Este es el resultado a encontrar pero que todavía no se


llega conocer

13 Solutions
PARTE 3: Mejorando las relaciones.
Como se ha visto las relaciones no llegan a satisfacer los resultados esperados, entonces hay que mejorar las
relaciones especificadas en las cláusulas.

Análisis de la Relación 1:
Como se ah visto las relaciones:
r1("maria","programacion").
r1(Profesor,Asignatura):-prof(Profesor),Profesor<>"maria",asig(Asignatura).
No cumplen con el objetivo buscado, tienen dos relaciones por demás
N=jesus, A=programacion
N=faraon, A=programacion
Son por demás por que Maria enseña programación y ni Jesús ni faraón podrían enseñar estas asignaturas
r1("maria","programacion"). %Maria enseña programación
Análisis de Lo que sucede
N=maria, A=programación
¿Dónde esta el problema?
r1(Profesor,Asignatura):-prof(Profesor),Profesor<>"maria",asig(Asignatura).
Análisis de Lo que sucede Resulto final logrado(combinación final):
prof(Profesor) ,Profesor<>"maria" asig(Asignatura) prof(Profesor),Profesor<>"maria",asig(Asignatura).
N=Jesús, A= programacion N=jesus, A=logica
N=faraon, A=logica N=jesus, A=programación (error)
A=matemáticas N=jesus, A=matematicas
(no debería N=faraon, A=logica
existir N=faraon, A=programación (error)
programación) N=faraon, A=matemáticas
¿Cómo eliminar la condicional?
El curso que enseña María no debería aparecer en las asignaturas, por lo que utilizando la búsqueda(Recursiva):
r1("maria",AsignaturaM),=> AsignaturaM=Programacion lo que hace que AsignaturaM<>Asignatura =>
Programacion <>Programacion
Análisis de Lo que sucede Resulto final logrado(combinación final):
prof(Profesor) asig(Asignatura) prof(Profesor),Profesor<>"maria",asig(Asignatura).
,Profesor<>"maria" r1("maria",AsignaturaM),
AsignaturaM<>Asignatura
N=Jesús, A=logica N=jesus, A=logica
N=faraon, A=matemáticas N=jesus, A=matematicas
N=faraon, A=logica
N=faraon, A=matemáticas
Según la nueva solución:
La nueva relación será: (Copie abajo): Resultado Esperado Goal r1(N,A). :
r1("maria","programacion"). N=maria, A=programacion
r1(Profesor,Asignatura) :- N=jesus, A=logica
prof(Profesor), N=jesus, A=matematicas
Profesor<>"maria",asig(Asignatura), N=faraon, A=logica
r1("maria",AsignaturaM),AsignaturaM<>Asignatura. N=faraon, A=matematicas
5 Solutions

Análisis de la Relación 2:
La segunda relación no presenta problemas devuelve el resultado esperado
r2("faraon",Dia) :- dia(Dia), Dia<>"lunes".
Análisis de Lo que sucede
N=faraon, D=miércoles
N=faraon, D=jueves (faraón solo puede enseñar miércoles y jueves)
r2(Profesor,Dia) :- prof(Profesor), Profesor<>"faraon",dia(Dia).
Análisis de Lo que sucede Resulto final logrado(combinación final):
prof(Profesor), Profesor<>"faraon" dia(Dia). prof(Profesor),Profesor<>"maria",asig(Asignatura).
N=___________ D=_________ N=maria, D=lunes
N=___________ D=__________ N=maria, D=miercoles
D=__________ N=maria, D=jueves (María enseña cualquier día)
N=jesus, D=lunes
N=jesus, D=miercoles
N=jesus, D=jueves (Jesus enseña cualquier día)
Análisis de la Relación 3:
Como se ah visto las relaciones:
r3("logica",Dia) :- dia(Dia), Dia<>"lunes", Dia<>"jueves".
r3("programacion",Dia) :- dia(Dia), Dia<>"lunes". %Programación no es el lunes
r3(Asignatura,Dia) :- asig(Asignatura), Asignatura<>"logica",Asignatura<>"programacion", dia(Dia).
No cumplen con el objetivo buscado, tienen varias relaciones por demás
A=programacion, D=miércoles (error) Lógica se supone que es el miércoles
A=matematicas, D=miércoles (error) Lógica se supone que es el miércoles
A=matematicas, D=jueves (error) Programación es después de lógica ósea el jueves

Entonces analicemos las cláusulas una a una:


1) r3("logica",Dia) :- dia(Dia), Dia<>"lunes", Dia<>"jueves".
Análisis de Lo que sucede
A=logica, D=miércoles

2) r3("programacion",Dia) :- dia(Dia), Dia<>"lunes". %Programación es después de lógica


Análisis de Lo que sucede
A=programacion, D=miércoles (error)No puede ser por que ya es ocupado con lógica
A=programacion, D=jueves
¿Cómo eliminar el problema?
El día miércoles que es el día de lógica no debería aparecer como alternativa por lo que se debe agregar a la
segunda cláusula: ......,r3("logica",DiaL),DiaL<>Dia. Eso encuentra el día que esta se lleva a
cabo el curso lógica (r3("logica",DiaL)) y lo inhabilita para su uso (DiaL<>Dia), en consecuencia solo quedara
como alternativa valida el jueves para programación .

3) r3(Asignatura,Dia) :- asig(Asignatura), Asignatura<>"logica",Asignatura<>"programacion", dia(Dia).


Análisis de Lo que sucede Resulto final logrado(combinación final):
asig(Asignatura), dia(Dia). asig(Asignatura), Asignatura<>"logica",
Asignatura<>"logica", Asignatura<>"programacion", dia(Dia).
Asignatura<>"programacion",
A=m_____________ D=lunes A=matematicas, D=lunes
D=________________ A=matematicas, D=miércoles (error)
D=jueves A=matematicas, D=jueves (error)
6 Solutions
¿Cómo eliminar el problema?
Se presupone que las cláusulas anteriores han resuelto las asignaturas lógica y programación y el día en que se
desarrollan por lo que hay que identificar que día suceden y eliminarlos de la posibilidad de matemáticas :
r3("programacion",DiaP), r3("logica",DiaL), DiaP<>Dia,DiaL<>Dia. % agregar a la cláusula
Análisis de Lo que sucede
asig(Asignatura), r3("programacion", dia(Dia) dia(Dia), Resulto final logrado
Asignatura<>"logica", DiaP), DiaP<>Dia, (combinación final):
Asignatura<> r3("logica",DiaL), DiaL<>Dia,
"programacion",
A=ma_____________ DiaP=D=_________ D=____________ D=___________ A=matematicas, D=lunes
DiaL=D=_________ D=____________
D=____________

Según la nueva solución:


La nueva relación r3 será: (Copie abajo los resultados) Resultado Esperado: Goal r3(A,D).(copie abajo):
r3("logica",Dia):-
dia(Dia),Dia<>"lunes",Dia<>jueves".
r3

r3 3 Solutions

Ejecución de las Relaciones


Hasta ahora se ha verificado la valides de las tres y las posibilidades que ofrece, es necesario ver el resultado
final de la combinación final de las tres reglas para esto ejecute:
Goal r1(N,A),r2(N,D),r3(A,D).
Complete el cuadro siguiente:
Resultado de la Ejecución(Copie abajo): Como debería ser las relaciones:
N=maria, A=programacion, D=jueves
N=jesus, A=matematicas, D=lunes
N=faraon, A=logica, D=miércoles
3 Solutions

Este es el resultado a encontrar pero que todavía no se


4 Solutions llega conocer

PARTE 4: Reflexionando sobre el resultado final


El resultado hallado es el resultado final, ya que no se cuenta con mas datos para resolverlo, hasta ahora se
cuenta con cuatro soluciones factibles, en el que Jesús aparece con la posibilidad de dictar dos días en dos cursos
diferentes pero los otros dos profesionales ya tienen su día y su curso asignado, por lo que la alternativa única
que quedaría para Jesús es única: “matemáticas” y el día es el “lunes”, pero esa deducción la hace mentalmente,
como hacer que la deducción la haga el computador.
La solución parte por definir una nueva regla que distinga el trabajo pero como hacerlo, se hará en base a la
modificación de r2 ya que es la que menos conclusiones llega y sus resultados son amplios; por ende se plantea
una nueva relación r2m (r2 modificado) .
Para definir r2m, se conoce que faraón no enseña el lunes y se supone que Maria dicta un día después de lógica,
es de suponer (ojo suponer) que faraón dicte el día miércoles.
r2m("faraon","miercoles").
Análisis de Lo que sucede
N=faraon, D=miércoles
Ahora es necesario completar
r2m(Profesor,Dia) :- _________________________________________________________________
Análisis de Lo que sucede (complete todos los cuadros) Resulto final logrado(combinación final):
____________________________ dia(Dia). ______________________________________
_____________________________________
N=___________ D=_________ N=maria, D=lunes
N=___________ D=__________ N=maria, D=jueves
N=jesus, D=lunes
N=jesus, D=jueves

Según la nueva solución:


La nueva relación r3 será: (Copie abajo los resultados) Resultado Esperado: Goal r2m(N,D).(opie abajo):

Ejecución de las Relaciones


Hasta ahora utilizando las cuatro relaciones:
Goal r1(N,A),r2(N,D),r3(A,D).
Complete el cuadro siguiente:
Resultado de la Ejecución(Copie abajo): Como debería ser las relaciones:
N=maria, A=programacion, D=jueves
N=jesus, A=matematicas, D=lunes
N=faraon, A=logica, D=miércoles
3 Solutions

Se supone haber llegado al resultado esperado


3 Solutions

Consulta:
¿En que tiempo promedio logro entender el problema y resolverlo?:__________horas___________minutos.

No se moleste Siga adelante.


TRABAJO APLICATIVO: PRACTICA NRO 12:

1. Presente en impreso o en un disquete el desarrollo de la practica 12.

2. Liste los programas que realizo en la practica Nro 12


REFERENCIA TEORICA: DE LA PRACTICA 12:

1. RECOPILACIÓN DE REFERENCIAS TEÓRICA :


1. Ayuda de Visual Prolog 5.0
2. Lógica de primer orden, lógica computacional y ampliación de lógica, trabajo con SWI Prolog, Internet.
3. Tutorial básico de programación en Prolog, Autor: Angel Fernández Pineda
4. Documentos de Internet diversos autores

Potrebbero piacerti anche