sábado, 30 de enero de 2016

EJERCICIOS EN PROLOG

INTRODUCCIÓN
El objetivo de este bloc es presentar algunos ejercicios realizados durante el curso de Inteligencia Artificial II.  Todos estos ejercicios han sido comprobados en prolog para garantizar el correcto funcionamiento.

DESARROLLO
1. Elabore un predicado para determinar el último de una lista teniendo en cuanta que:
q X es el último elemento de una lista que tiene a X como único elemento
q X es el último elemento de una lista que tiene cabeza y cola si X es el último de la cola

   
 ultimo(C,X) :-append(_,[C],X).

1 ?- ultimo(X,[1,2,3,4,5]).
X = 5 

2. Elabore un predicado que permita clasificar números en positivos cero o negativo (no se utiliza listas).
clasificar(Numero,positivo):-Numero>0.
clasificar(0,cero).
clasificar(Numero,negativo):-Numero<0.
 3 ?- clasificar(3,X).
X = positivo 

3. Elabore un predicado que obtenga la suma de los elementos de una lista sabiendo que:
1. La suma S es cero si la lista está vacía
2. La suma de una lista con E1 en la cabeza y L en la cola es S si S1 es la suma de los elementos de la cola y S es S1 + E1

suma_lista([],0).
suma_lista([C|L],Y) :-suma_lista(L,Y1),Y is C+Y1.

4 ?- suma_lista([1,3,4],X).
X = 8.

4. Elabore un predicado que obtenga el factorial de un número sabiendo que:
1. Factorial de cero es 1
2. F es factorial de N si N > 0, Na es N-1, factorial de Na es F1 y F es F1 * N


factorial(N,F) :- N>1, N1 is N-1, factorial(N1,F1), F is N*F1.
factorial(N,F) :- N=1, F is 1.

5 ?- factorial(5,X).
X = 120

5. Elabore un predicado que obtenga la cantidad de elementos de una lista sabiendo que:
1. cantidad de elementos de una lista vacía es cero
2. Cantidad de elementos de una lista que tiene cabeza y cola es cantidad de elementos de la cola +1


contar([],0).
contar([X|Cola],Num):-!,contar(Cola,Tam),Num is Tam+1.

6 ?- contar([1,2,3],X).
X = 3.

6. Elabore un predicado que obtenga el promedio de valores almacenados en una lista.

sumaElem([X],X):-!.
sumaElem([X|Y],S):-sumaElem(Y,T),S is T + X.
long([],0):-!.
long([_X|Y],S):-long(Y,T), S is T+1.
promedio([X],X):-!.
promedio(L,P):-sumaElem(L,S),long(L,R),P is (S/R).

7 ?- promedio([2,4,5],X).
X = 3.6666666666666665.

7. Elabore un predicado que permita saber si una lista está ordenada ascendentemente sabiendo que:
1. una lista que tiene un solo elemento está ordenada
2. una lista con X,Y en la cabeza y C en la cola está ordenada si X<Y y está ordenada la lista con Y en la cabeza y C en la cola.
 

ordenada([_]).
ordenada([X,Y|L]) :-X =< Y,ordenada([Y|L]).

14 ?- ordenada([1,2,3,4]).
true 
CONCLUSIÓN
Los ejercicios realizados en clases permitieron fortalecer los conocimientos adquiridos en el aula.

BIBLIOGRAFÍA
Alonso, J. 2010. Ejercicios de programación declarativa en prolog.  (En línea). ES. Consultado,  20 de ene. 2016. Formato PDF. Disponible en: http://www.cs.us.es/~jalonso/

Carlos, J; Berzal, F. 2011. Relación de ejercicios prolog. (En línea). ES. Consultado,  20 de ene. 2016. Formato PDF. Disponible en: http://elvex.ugr.es/decsai/
Walls, D. 2010. Aprendiendo a usar prolog. (En línea). ES. Consultado,  21 de ene. 2016. Formato HTML. Disponible en: http://swi-prolog.blogspot.com/


jueves, 21 de enero de 2016

ESTRUCTURA DE DATOS EN PROLOG

INTRODUCCIÓN
Las listas son una estructura de datos muy común en la programación no numérica de prolog. Puede tener cualquier longitud y es ordenada. Un elemento puede ser un término o incluso una lista, está representado por un aserie de elementos separados por una coma y cerrados con corchetes.
Se debe tener en cuenta que las listas están divididas en dos partes que son: cabeza y cola. La cabeza es el primer elemento de la lista y la cola el resto de la lista.
DESARROLLO
La estructura de datos común no numérica son las listas, las listas son una secuencia de elementos ordenados de cualquier longitud. Las listas están divididas en dos partes que son: cabeza y cola, la cabeza es el primer elemento de la lista y la cola es el resto de elementos.
En este tipo de estructura se utilizan dos tipos de símbolos especiales que son: los corchetes y el separador (|) este símbolo se usa para permitir que una lista se represente como cabeza y una cola


Existen cuatro tipos básicos de términos en prolog que son: variables, términos compuestos, átomos y números .

CONCLUSIÓN
Las listas son estructuras de datos no numéricas y están divididas  en dos partes: cabeza y cola. La cabeza es el primer elemento y la cola el resto de la lista.

Las estructuras de datos son usadas para optimizar. 

BIBLIOGRAFÍA
Alfonseca, E. 2011. Introduccion a prolog. (En línea). ES. Consultado,  20 de ene. 2016. Formato PDF. Disponible en: http://arantxa.ii.uam.es/

Castel, J; Llorens, F. 2010. Prolog. (En línea). ES. Consultado,  20 de ene. 2016. Formato PDF. Disponible en: http://www.infor.uva.es/


Escrig, M; Pacheco, J, Toledo, F. el lenguaje de programación de polog. (En línea). ES. Consultado,  20 de ene. 2016. Formato PDF. Disponible en: http://mural.uv.es/mijuanlo

martes, 12 de enero de 2016

INTRODUCCIÓN A PROLOG





INTRODUCCIÓN
Prolog es un lenguaje declarativo basado en reglas que surgió a principios de los 70’s, fue creado por Alain Colmerauer.
Prolog está conformado por la base de conocimiento y por la máquina de inferencias.
Los hechos describen una propiedad y las reglas constituyen una generalización de hechos.
DESARROLLO
¿Qué es el comportamiento?
El conocimiento es la parte fundamental de cualquier sistema que usa inteligencia artificial.
Los sistemas con inteligencia artificial adquieren el conocimiento a partir de la educación o de la experiencia.   
El conocimiento está formado por hechos, relaciones y procedimiento, dicha información es formalizada para luego ser usada para dar solución de problemas y en toma de decisiones.
Partes de un sistema de inteligencia artificial
Está conformado por: la base de conocimiento que está formada por hechos y relaciones y la máquina de inferencias que tiene los procedimientos y reglas.
Hechos
Los hechos describen una propiedad de un objeto.
Ejemplo: el diamante es valioso
Hecho:
valioso(diamante)
Los hechos pueden ser:
Monádicos:
valioso(dianante)
Poliádicos
tiene(juan,libro)
Reglas
Las reglas constituyen una generalización de los hechos aumentando la capacidad de expresión y representación de ideas.
Sentencias condicionales
Ejemplo:
“Si el león come carne, entonces es carnívoro”
                Carnívoro(león):- comecarne(león).
Se emplea el operador lógico AND(,)
Ejemplo:
tia(X,Y):-hermana(X,Z),padre(Z,Y).
Se emplea el operador lógico OR(;)
Ejemplo:
hijo(X,Y):-padre(Y,X);madre(Y,X).
CONCLUSIÓN
Los sistemas con inteligencia artificial adquieren conocimientos a partir de la información o de la experiencia.
El conocimiento se conforma de hechos y reglas que luego sirven para dar solución a un problema

BIBLIOGRAFÍA


López, B. 2011. Introducción a Prolog. (En línea). MX. Consultado,  12 de ene. 2016. Formato PDF. Disponible en: http://www.itnuevolaredo.edu.mx/

Russell S. y P. Norvig Inteligencia Artificial: Un enfoque moderno. 2 ed. España. Pearson. p 181-182.


Sancho, F. 2014. Una introducción a Prolog. . (En línea). MX. Consultado,  12 de ene. 2016. Formato PDF. Disponible en: http://www.cs.us.es/~fsancho/?e=73