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). : N=maria, A=programacion r1("maria","programacion"). N=jesus, A=logica r1(Profesor,Asignatura) :N=jesus, A=matematicas prof(Profesor), N=faraon, A=logica Profesor<>"maria",asig(Asignatura), 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 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) r3("logica",Dia):dia(Dia),Dia<>"lunes",Dia<>jueves". r3 r3 Resultado Esperado: Goal r3(A,D).(copie abajo): 2)

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 llega conocer

4 Solutions

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

Sign up to vote on this title
UsefulNot useful