Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Apellidos/Nombres/Código:_________________________________________________________________
Note que para ir a “B”, la variable a conocer es PuedeIr y muestra los posibles lugares a ir, y además el
predicado concetado_a llama a la estructura de conocimiento con dos variables de dos maneras conecta(A,B) ó
conecta(B,A) de manera que se evita repetir dos veces la definición de conecta (por ejemplo
conecta("Inicio","B") se colocara una vez y ya no conecta("B","Inicio")).
¿Qué dificultades tendría si en ves de colocar ó(;) coloca y (,) en el predicado conecta? Y que resultados muestra
Ahora es necesario definir la búsqueda para lo que se aplicara recursividad, primero se ha de definir predicados
de manejo que encuentre los siguientes elementos a buscar:
solucion(R):-camino("Inicio",R).
camino(ViejaPos,NuevasPos):-conectado_a(ViejaPos,NuevasPos),write("De: ",ViejaPos," a ",NuevasPos),nl.
Goal solucion(R).
Esto encuentra las alternativas que se tenga después de la Posición Inicial, en R se devuelven las posibles
soluciones. Muestre las Respuesta(s) encontradas
Notar que solo se devuelven las primeras soluciones por lo que es necesario buscar la siguientes entonces es
necesario encontrar los siguientes etapas del camino para esto es necesario utilizar la recursividad, entonces
reemplace el predicado camino de la siguiente forma:
camino(ViejaPos,NuevasPos):-conectado_a(ViejaPos,NuevasPos),write("De: ",ViejaPos," a ",NuevasPos),nl,
camino(NuevasPos,_).
¿Qué resultados tiene?, Explíquelo (Para parar la recursividad CTROL+Pausa+Pausa)
Si se ah dado cuenta se ah pasado de “Inicio” a “B” y con la recursividad de ”B” a “A” y al utilizar nuevamente
la recursividad “A” a “E”, luego “E” a “A” y nuevamente “A” a “E” y así recursivamente sin parar; ¿Que
sucede? Es que el camino escogido para el siguiente vuelve a ser el mismo y entra en un ciclo repetitivo; pero la
idea es no volver al mismo sitio si no a otro lugar y así al siguiente y al siguiente hasta terminar en final, para
esto cuando se busca conectado_a(ViejaPos,NuevasPos) las Nuevas Posiciones no deberían de ser las recorridas
anterioremente entonces ¿que hacer? La respuesta es eliminar las cláusulas de las bases de datos que estén
relacionadas al lugar pero las que nos llevaron a la posición en la que se está; entonces se propone los ejemplos:
Inicio
----| |------
| A B C D|
| | | | |
| E| F G H|
|---------| |
Final
Si "A" nos llevo a "E" con (conecta("A","E").) esta deberá ser eliminada, de manera que cuando “E”
busque el siguiente que debería de encontrar “A” (por conecta("A","E")), pero como de “A” se llevo a “E” y
esta fue eliminada (retract(conecta(“A”,”E”))) ya no exista ningún camino posible y se lleve al error final.
Si "Inicio" nos llevo a "B" con (conecta("Inicio","B").) esta deberá ser eliminada, de manera que cuando
“B” busque el siguiente que debería de encontrar “A”,”F”,”C” y “Inicio” (por conecta("B","A").
conecta("B","F"). conecta("B","C"). conecta("Inicio","B")), pero como de “Inicio” llevo a “B” y esta fue
eliminada (retract(conecta(“Inicio”,”B”))) ya no exista ningún camino posible y solo podrá existir 3 caminos no
cuatro a “A”, “F”, “C” y ya no “Inicio”.
No Solution
Hasta este punto ya se puede identificar el camino y las alternativas no validas y como se llego al final
se supone que existe solución (puede asumirse el trabajo como terminado), pero como la parada a la recursividad
se produce por que ya no se encuentra ninguna opción de continuar en conectado_a(A,B):-
conecta(A,B);conecta(B,A). y esta devuelve falso por no encontrar ninguna cláusula conecta(...,...) valida, esto
conduce a que al final aparece: No Solution (por ser el resultado falso).
Otra dificultad es que se puede ver dos soluciones y solo se supone una y sobre todo se muestra No
Solution
1. Sistemas Expertos
Un sistema experto es un programa de computadora que trata de emular la acción de un experto en un campo
dado. El programa trabaja en un dominio limitado (micro-cosmos). Ejemplos:
Medicina
Infección en sangre (Mycin)
Enfermedades pulmonares (Infermo)
Geología
Prospector. Encontró molibdeno con valor de 6 mdd.
Computadoras
R. Un sistema de Digital que propone sistemas de redes. Tiene 7000 reglas.
Reconocer fallas en equipos
Administración
HearSay. Reconocimiento de voz y escritura
Partes de un sistema experto
Interfaz con el usuario. Es la manera con la que se comunica con el usuario
Motor de inferencias (lógica)
Base de conocimientos
Un sistema experto debe explicar sus diagnósticos y conocimientos. También debe poder trazar su línea de
razonamiento (inferencias).
Antecedentes de sistemas expertos
Parry (paranóico) y Eliza (psicologo) Usaban palabras claves y preguntaban por palabras relacionadas.
SHRLOU (Escrito por Winograd y Weizenbaum en 1972) Entendía semántica y
sintáxis, es decir lenguaje natural. Realizaba acciones sobre su microcosmos: "Poner
un cubo sobre la esfera", "poner una pirámide bajo la mesa".
La simulación de la inteligencia es sencilla.
Motor de inferencias
Blackboard: "Módulos" expertos que se ayudan entre sí hasta conseguir la respuesta. HearSay no los
usa.
Reglas de producción: Backward chaining (encadenamiento hacia atrás) y Forward
chaining (encadenamiento hacia adelante). Siguen los If-Then es decir causas y
efectos.
Frames (Minsk.) Se topa con el problema de ramificación de información.
Información arquetípica. No se puede describir algo al 100%. No se usa ya que puede
dar información irrelevante.
Las formas de llegar al resultado:
Backward: Intenta llegar al resultado usando las preguntas como guía.
Forward: Intenta comprobar un resultado a base de preguntas.
Base de conocimientos
Información relevante para la solución de un problema. La debe de proporcionar un humano experto en la
materia. La diferencia entre un sistema experto y un humano radica en que a mayor datos un sistema experto
toma más tiempo para analizarlos todos, el humano necesita menos tiempo porque se concentra en los datos más
relevantes según su experiencia.
El sistema experto debe poder decir qué hizo y cómo lo hizo. Debe ser capaz de "recordar" los datos ya dados y
usarlos; ya sean estos atemporales (nombre) o temporales (temperatura).
2. VENTAJAS DE PROLOG
Prolog, y en general los lenguajes de programación lógica, tienen las siguientes ventajas frente a los
lenguajes clásicos (procedimentales):
Expresividad: un programa (base de conocimiento) escrito en prolog puede ser leído e interpretado
intuitivamente. Son, por tanto, más entendibles, manejables y fáciles de mantener.
Ejecución y búsqueda incorporada en el lenguaje: dada una descripción prolog válida de un
problema, automáticamente se obtiene cualquier conclusión válida.
Modularidad: cada predicado (procedimiento) puede ser ejecutado, validado y examinado
independiente e individualmente. Prolog no tiene variables globales, ni asignación. Cada relación está
autocontenida, lo que permite una mayor modularidad, portabilidad y reusabilidad de relaciones entre
programas.
Polimorfismo: se trata de un lenguaje de programación sin tipos, lo que permite un
alto nivel de abstracción e independencia de los datos (objetos).
Manejo dinámico y automático de memoria.