Professional Documents
Culture Documents
A={a,b,c,d}
B A y AB B={c,d,e,f}
A A B
B
Operaciones con conjuntos
• Unión AB
• Intersección AB
• Diferencia A-B
• Complemento A’
Conjunto producto
• Dados los conjunto A y B se llama conjunto
producto de A y B al conjunto de todos los pares
ordenados (a,b) con aA y bB.
• Se le denota por A B.
• A B se llama tambien producto cartesiano
de A y B
Funciones
• Si a cada elemento de un conjunto A se le hace
corresponder de algún modo un elemento único de un
conjunto B, se dice que esa correspondencia es una
función (f: AB).
• Ej. f: RR f(x)=x²
• donde R son los números reales
A B
Lógica
• La lógica simbólica es un medio por el cual las estructuras
lingüísticas utilizadas comúnmente en el proceso de
razonamiento humano son abstraídas en símbolos para evitar
ambigüedad en su interpretación.
• Sus elementos son:
– argumentos (representaciones de razonamientos)
– proposiciones (frases que afirman o niegan algo)
– relaciones (vínculos entre objetos; operadores ,,,,)
– validez (verdad o falsedad de un argumento)
– reglas de inferencia (normas para llegar a conclusiones verdaderas)
• Al aplicar las reglas de inferencia se dice que se lleva a cabo
una demostración (proceso de deducción)
Funciones lógicas
Lenguajes
Sistemas lógicos
Relaciones
Lógica
Funciones
Teoría de conjuntos
Sistemas formales
Cálculo proposicional
• Los enunciados se denotan con letras p,q,r,... (enunciados
simples)
• Un enunciado puede ser verdadero o falso, pero no ambos.
• La verdad o falsedad de un enunciado se llama valor de
verdad
• Los enunciados compuestos se forman con enunciados
simples y conectores (,,,,).
• Una proposición es un polinomio en las variables p,q,r,... Y
se denota por P(p,q,r,...)
• El valor de verdad de una proposición P es función solamente
de los valores de verdad de los enunciados y no de los
enunciados particulares mismos.
Lógicas de primer orden
• Def. una teoría de primer orden consiste de:
– Un alfabeto. (Las variables y las constantes con quién trabajaremos)
– Un lenguaje de primer orden. ( Fórmulas bien formadas de la teoría.)
– Un conjunto de axiomas. ( Un subconjunto de fórmulas bien formadas.)
– Un conjunto de reglas de inferencia. ( Utilizados para deducir
teoremas en la teoría.)
• El alfabeto es el conjunto con el que intuitivamente utilizamos
para declarar conocimiento.
Alfabetos
• Def. Un alfabeto tiene 7 clases de símbolos:
– Variables. ( x,y,z, año, etc.)
– Constantes. (a,b,c, Lucas, 1789, etc.)
– Símbolos funcionales ( g(x,y,z), donde f(x) denota x es primo. o
g(x,y,z) indica la operación 2x+3y-z etc. )
– Símbolos predicados. ( p, q, r. Son relaciones entre elementos del
conjunto. Por ejemplo p(x,y) indica la relación x<y. Observe que las
relaciones tienen un argumento o varios)
– Conectivos: Disyunción, Conjunción, Implicación o Doble
implicación ( ).
– Cuantificadores, de dos tipos, Universales y Existenciales
Lenguajes
Relaciones
Lógica
Funciones
Programación funcional
• La programación funcional pura se caracteriza
por el siguiente principio:
– El valor de una expresión depende solo de los
valores de las subexpresiones, si las tiene.
• Las funciones tienen la misma jerarquía que
cualquier otro valor.
• Una función puede ser el valor de una
expresión, pasarse como argumento y puede
colocarse en una estructura de datos.
• El almacenamiento de datos es transparente.
¿Qué es un lenguaje de
programación funcional?
• Functional programming is a style of programming that emphasizes the
evaluation of expressions, rather than execution of commands. The
expressions in these language are formed by using functions to combine
basic values. A functional language is a language that supports and
encourages programming in a functional style.
• For example, consider the task of calculating the sum of the integers from 1 to 10. In an
imperative language such as C, this might be expressed using a simple loop, repeatedly updating
the values held in an accumulator variable total and a counter variable i:
• total = 0;
• for (i=1; i<=10; ++i)
• total += i;
• In a functional language, the same program would be expressed without any variable updates. For
example, in Haskell, the result can be calculated by evaluating the expression:
• sum [1..10]
• Here, [1..10] is an expression that represents the list of integers from 1 to 10, while sum is a
function that can be used to calculate the sum of an arbitrary list of values.
Programación lógica (1)
• La programación lógica trabaja con relaciones más que con
funciones.
• Se basa en la premisa de que programar con relaciones es
más flexible que con funciones, debido a que las relaciones
tratan de modo uniforme a los argumentos y a los resultados.
• La programación lógica se refiere a:
– El uso de hechos y reglas para representar información
– El uso de deducciones para responder consultas
Base de conocimiento
o de predicados
(reglas y hechos)
Consultas Respuestas
Interprete
Usuario
Interacción con el sistema (1)
• El usuario introduce consultas y recibe respuestas.
• La base de conocimiento contiene los hechos y reglas
que se han introducido.
• El interprete trata de determinar si una consulta del
usuario se encuentra en la base de conocimientos.
• La respuesta es afirmativa o positiva dependiendo si se
encuentra en la base.
• Si la consulta es una regla, el interprete trata de
satisfacer todos los subobjetivos (conduciendo primero
una búsqueda a fondo y en caso extraordinario una
búsqueda a lo ancho)
Interacción con el sistema (2)
Elementos de Prolog
Resolución
Cláusulas de Sintaxis
Horn
Solución de consultas Unificación
(inferencia)
BC/FC
Backtracking
Sistemas formales
• Un sistema formal está compuesto de:
– Un alfabeto A
– Un subconjunto B de palabras en A cuyos
elementos son llamados fórmulas
– Un subconjunto C de B cuyos elementos son
llamados axiomas
– Un conjunto finito P de predicados recursivos
de palabras de B llamados reglas de
inferencia (o de producción)
Resolución:
la regla de inferencia de Prolog
• En lugar de usar muchas reglas de inferencia de
aplicación limitada como modus ponens, modus tollens,
encadenamiento, etc, Prolog utiliza una regla de
inferencia general de resolución (lo que reduce el
espacio de búsquedas).
• La resolución es una operación sobre pares de
disyunciones, que produce nuevas disyunciones.
• El objetivo básico de la resolución es inferir una nueva
cláusula (resolutivo) de otras 2 cláusulas (cláusulas
padre); el resolutivo tendrá menos términos que los
padres. Al seguir el proceso terminará por obtenerse
una contradicción, o el proceso se terminará porque no
se hizo ningún progreso.
Ejemplo de resolución
• (AB) (A-B)
• A (B -B)
• A
Cláusulas de Horn
• Antes de aplicar la resolución, la expresión (fbf)
debe estar en una forma normal (solo usar , y
tal vez ):
– Forma normal conjuntiva (P1 P2 ...) (Q1 Q2 ...) ...
– Forma normal de cláusulas A1 A2 ..B1 B2 ...
– Cláusulas de Horn A1 A2 ..B
• Conclusión condiciones
– if (conditions) then conclusion
• r(a). /* #5 */
• r(b). /* #6 */
• s(a). /* #7 */
• s(b). /* #8 */
• s(c). /* #9 */
•
• u(d). /* #10 */
Ejemplo (2)
Abel
Red semántica Hijo-de
Hija-de Hijo-de
Relación
Diagrama de Acción
estados
Estado
Representación con redes (2)
Red de decisión o
Acción
red de regla
Regla
Si B entonces D
Hipótesis
Red de Suficiencia de necesidades
inferencia Creencias previas de la hipótesis
Evidencia
Visualización de los elementos del
contexto del problema
• Redes semánticas
• Diagramas de estados
Definición del conjunto de hechos y
reglas
• Este es un proceso iterativo
• El predicamento: ¿qué se modela primero:
hechos o reglas?
• Recuerdan los encadenamientos ?
(BC,FC)
Prototipado
• Prototype it is important to model all of the
different types of knowledge that will be
used in the application.
• Initial knowledge engineering should be
focused on what types of information the
expert uses and how it is used.
• The full range of expertise should be
modelled, but not to the depth required for
a real system.
Depuración
– Procedures (predicates) seen as ``black boxes'' in the usual way.
However, simple call/return not enough, due to backtracking.
– Principal events in Prolog execution (goal is a unique, run-time call to a
predicate):
• Call goal: Start to execute goal.
• Exit goal: Succeed in producing a solution to goal.
• Redo goal: Attempt to find an alternative solution to goal
(sol{PRIVATE}{PRIVATE "TYPE=PICT;ALT=$_{i+1}$"} if
sol{PRIVATE}{PRIVATE "TYPE=PICT;ALT=$_{i}$"} was the one computed
in the previous exit).
• Fail goal: exit with fail, if no further solutions to goal found (i.e.,
sol{PRIVATE}{PRIVATE "TYPE=PICT;ALT=$_{i}$"} was the last one, and
the goal which called this box is entered via the ``redo'' port).
Visualización de la aplicación de
reglas y hechos (depuración)
• Redes de decisión
• Redes de inferencia
Ejemplo (1)
• Especificación: sean objetos que pueden ser
artefactos o animales, queremos saber las
cosas que puede hacer de cada tipo, con base
en sus atributos.
• Metas: ¿Qué puede hacer e si tiene cierto
atributo y pertenece a cierto conjunto?
• Representación del contexto del problema:
– a Animales , b Artefactos
– c Humanos Animales, d Aves Animales
– f Atributos (que incluso pueden ser 2 conjuntos)
– g Acciones que pueden realizar los objetos
Ejemplo (2)
• Visualización de los Ave Animal
hechos: Redes Es-un Es-un
semánticas de las
Canario Humano
relaciones entre los
elementos del
problema Alas
tiene
Avión
Redes semánticas
• Una red semántica es una técnica de
representación para información relativa a
las proposiciones (se representa como un
gráfo con nodos y arcos interconectados).
• Una proposición es una frase verdadera o
falsa, y son formas de conocimiento
declarativo por que establecen hechos.
Notas sobre redes semánticas
• La red semántica solo expresa
conocimento superficial (se basa más en
sintáxis que en la semántica). Ejemplo:
– SI una persona tiene resfriado ENTONCES
toma una aspirina
– SI una persona tiene un gato rosa
ENTONCES toma un refrigerador
Ejemplo (3)
A
Si A entonces B
• Visualización de
Si X tiene Atributo1
reglas: podemos usar entonces X es de tipo C
redes de decisión B
pues las reglas de
Prolog son cláusulas Si Y es un animal
de Horn Entonces Y está vivo B
• R(x):-A(x),B(x)….
A
• If (A,B,…) then R
Si Y tiene Alas
Entonces Y puede Volar C
Ejemplo (4)
• % HECHOS
• isa(cardinal, bird). • Preguntas sobre los objetos:
• isa(bluejay, bird).
– La “cosa” vuela, piensa, vive?
• isa(boy, human).
• isa(girl, human). • La “cosa” puede catalogarse
• isa(computer, artifact). como: animal o artefacto.
• isa(airplane, artifact). • La “cosa” puede tener como
• isa(bird, animal).
atributos: plumas, alas,
• isa(human, animal).
• has(bird, feathers).
inteligencia.
• has(bird, wings). • Las “cosas” a considerar son:
has(human, intelligence). niño, niña, cardenal, avion,
• has(computer, intelligence). computadora, etc.
• has(airplane, wings).
• Las relaciones entre las
• % REGLAS “cosas”, sus atributos y clases
• can_do(Thing, fly) :- has(Thing, son: is_a y has
wings).
• can_do(Thing, think) :- has(Thing,
• Las preguntas son sobre que
intelligence). pueden hacer las “cosas”
• can_do(Thing, live) :- isa(Thing, (can_do)
animal).
Ejemplo (5)
• Depuración: el uso
de redes de can_do(X, live)
inferencia permite
diferenciar la isa(Thing, animal)
notación, e incluir
información como: isa(cardinal, bird).
– Texto descriptivo
– Certidumbre de
veracidad
Tarea
• Recuerdan los 5 planteamientos que dejamos
de tarea? Apliquen la metodología propuesta a
sus planteamiento.
• SUGERENCIAS a la metodología: qué le
agregarían uds?
• Responder el siguiente
cuestionamiento:¿Usarían UML? ¿cómo?
• Investigar:
– Qué es un motor de inferencia
– Qué es un sistema experto
• NOTA: vayan instalando un
interprete/compilador de Prolog
Referencias
• FM in IT http://www.rbjones.com/rbjpub/methods/fm/
Xtreme Prolog
Eugenio Jacobo Hernández
Valdelamar
Contenido
• Metodología ADD v 0.2
• Primeros ejemplos de programación
Metodología ADD v 0.2
Especificación
Descripción del problema (lenguaje natural)
Establecimiento de objetivos o metas
a dónde se quiere llegar?
Qué resultados se quieren obtener?
Esto es la base para las consultas en la base de conocimientos
Establecimiento de alcances y restricciones
Modelado iterativo:
Representación del dominio del problema (conjuntos, relaciones, funciones, etc.)
Visualización de los elementos del contexto del problema:
hechos (redes semánticas/diagramas de estado) y
Reglas (redes de decisión)
Implementación del conjunto de hechos y reglas
Especificación en Prolog de los hechos y reglas
Depuración:
Visualización de la aplicación de reglas y hechos
Flujos de control (modelo de cajas de Byrd)
Ejemplo de ADD (1)
Especificación: sean objetos que pueden ser
artefactos o animales, queremos saber las
cosas que puede hacer de cada tipo, con base
en sus atributos.
Metas: ¿Qué puede hacer e si tiene cierto atributo
y pertenece a cierto conjunto?
Representación del contexto del problema:
a Animales , b Artefactos
c Humanos Animales, d Aves Animales
f Atributos (que incluso pueden ser 2 conjuntos)
g Acciones que pueden realizar los objetos
Ejemplo de ADD (2)
• Visualización de los
hechos: Redes
Ave Animal
semánticas de las
Es-un Es-un
relaciones entre los
Canario Humano
elementos del
problema
Alas
tiene
Avión
Ejemplo de ADD (3)
• Visualización de A
Si A entonces B
reglas: podemos usar
Si X tiene Atributo1
redes de decisión entonces X es de tipo C B
pues las reglas de
Si Y es un animal
Prolog son cláusulas Entonces Y está vivo B
de Horn
A
• R(x):-A(x),B(x)….
Si Y tiene Alas
• If (A,B,…) then R Entonces Y puede Volar C
Ejemplo de ADD (4)
• % HECHOS • Preguntas sobre los objetos:
• isa(cardinal, bird). – La “cosa” vuela, piensa,
• isa(bluejay, bird). vive?
• isa(boy, human). • La “cosa” puede catalogarse
• isa(girl, human). como: animal o artefacto.
• isa(computer, artifact). • La “cosa” puede tener como
• isa(airplane, artifact). atributos: plumas, alas,
• isa(bird, animal). inteligencia.
• isa(human, animal).
• has(bird, feathers). • Las “cosas” a considerar
• has(bird, wings). son: niño, niña, cardenal,
has(human, intelligence). avion, computadora, etc.
• has(computer, intelligence). • Las relaciones entre las
• has(airplane, wings). “cosas”, sus atributos y
• % REGLAS clases son: is_a y has
• can_do(Thing, fly) :- has(Thing, wings). • Las preguntas son sobre que
• can_do(Thing, think) :- has(Thing, pueden hacer las “cosas”
intelligence).
(can_do)
• can_do(Thing, live) :- isa(Thing, animal).
Ejemplo de ADD (5)
• ?- xor_(Input1,Input2,Output).
• ?- xor_(Input1,Input2,Output),
nl, fail.
Tarea (1)
• Considere el siguiente programa de Prolog. • Calcula los resultados de las siguientes consultas
(primero haz una red de inferencia para estimar
• easy(1). la ejecución y luego usa el interprete ).
• easy(2).
• easy(3). • ?- gizmo(a,X),easy(X).
• ?- gizmo(c,X),easy(X).
• gizmo(a,1). • ?- gizmo(d,Z),easy(Z).
• gizmo(b,3).
• gizmo(a,2). • ?- easy(Y),gizmo(X,Y).
• gizmo(d,5).
• gizmo(c,3). • ?- write('report'), nl, easy(T), write(T),
gizmo(M,T), tab(2), write(M), fail.
• gizmo(a,3).
• gizmo(c,4). • ?- write('buggy'), nl, easy(Z), write(X),
gizmo(Z,X), tab(2), write(Z), fail.
• harder(a,1).
• harder(c,X). • ?- easy(X),harder(Y,X).
• harder(b,4). • ?- harder(Y,X),easy(X).
• harder(d,2).
Tarea (2)
• Implementar un programa en
Prolog que modele el siguiente
plano incluyendo:
– Los cuartos y sus conexiones
– La localización de objetos en
cada cuarto (define objetos
relacionados a la función del
cuarto)
• Prueba tu programa haciendo
consultas que pregunten
– si existe un cuarto
– Si hay puertas entre cuartos
– Si hay un objeto en un cuarto
Tarea (3)
• double potencia(double
• Implementar la x, int n) {
siguiente función • if (n==0) return 1.0;
else return x *
escrita en lenguaje C, potencia(x, n-1);
en Prolog • }