viernes, 15 de enero de 2016

Estructura de Datos en Prolog

1.1.   INTRODUCCIÓN
Como hemos venido mencionando en las anteriores publicaciones existen diversos lenguajes de inteligencia artificial, entre ellos tenemos a Prolog que es un sistema en el cual maneja hechos y reglas para su funcionamiento, este a su vez esta conformado por una base de conocimiento en donde se almacenan los datos pertinentes al problema que se esta desarrollando y una maquina de inferencia la cual hará uso de esta base para poder sacar conclusiones a las diversos problemas que posea.
Como sabemos este lenguaje es diferente a los lenguajes de programación comunes los cuales estan programados para realizar las funciones que nosotros le proporcionemos a diferencia de esto Prolog es un sistema inteligente el cual hace uso de su conocimiento para obtener diversos resultados.

En este seccion hablaremos sobre las estructuras de datos en Prolog, que tipos de estructuras tenemos disponibles, que son las listas, que operaciones podemos realizar con estas, y cuando es necesario utilizarlas.

1.2.   OBJETIVO
Conocer acerca de las estructuras de datos en prolog para que tipos de estructuras podemos utilizar en los diversos problemas de inteligencia artificial.



MARCO TEÓRICO
2.1. Arboles
Los arboles son un tipo de estructura de datos que utiliza prolog para poder representar su base de conocimiento, estas estructuras poseen un nodo principal del cual se desprende otros nodos dependientes de la raiz. Como podemos ver en el siguiente ejemplo tenemos un ejemplo de una estructura de datos en prolog.


Imagen 2.1. Estructura de arbol en Prolog

2.2. Listas
Las listas son un tipo de estructura que sirven para trabajar en situaciones imprevisibles de una manera facil, es decir que son utilizadas en situaciones en donde es difícil manipular el numero de datos con lo que se esta trabajando y los que van a ser almacenados en base de conocimiento.
En la inteligencia artificial muchos de los programas con los que se trabaja tienen infinidades de soluciones parciales en las cuales al momento de ejecutarlos se pueden tener diversos cambios de forma dinámica.


Imagen 2.2. Listas


2.2.2. Elementos de una lista
Entre los elementos que podemos encontrar dentro de una lista dos, los cuales son:

  • Cabeza: Es el primer elemento que se encuentra en la lista.
  • Cola: El resto de elementos que componen la lista.
Un dato importante que debemos conocer es que una lista no necesariamente tiene que contener elementos dentro de ella, existen listas vacías y estas se definen de esta manera
[ ]


Para poder diferencia cual es la cabeza y la cola en una lista tenemos la siguiente notación:
[Cabeza|Cola]

Para poder explicar como se estructura la lista lo haremos con la imagen 2.3. en donde podemos apreciar varios ejemplos de listas en prolog.


Imagen 2.3. Ejemplos de listas

2.2.3. Unificación de la Lista
Las unificaciones son una manera sencilla de instanciar una lista con cabeza X y cola Y mediante el símbolo |  este seria para diferenciar la cabeza a X y la cola a Y. Un ejemplo seria:

  • [a,b,c]= [X|Y]
  • X=a
  • Y=[b,c]
  • [a,b,c]=[X,Y,Z]
  • X=a
  • Y=b
  • Z=c
2.3. Operaciones con Listas
Las listas se pueden utilizarse para representar conjuntos sin embargo entre las listas y los conjuntos existen algunas diferencias:

  • El orden de los elementos en un conjunto es relevante mientras que en una lista si lo es.
  • En un conjunto pueden existir elementos repetidos mientras que en una lista no
Entre las operaciones que podemos realizar con las listas tenemos:

2.3.1. Pertenencia de un elemento a la Lista
Para verificar la pertenencia de un elemento en especifico en la lista , utilizamos la siguiente regla:
member(X,[X|L]).

2.3.2. Concatenación de Listas
Esta operación sirve para unir los elementos de una lista con otra en una sola lista nueva, utilizamos la siguiente regla:
contat([X|Y],Z[X|W]):-append(X,Z,W).

2.3.3. Adición de un elemento a la Lista
Sirve para agregar un elemento nuevo a la lista, se tiene que considerar que este nuevo elemento será parte de la cabeza, por lo tanto se escribe de esta manera:
add(X,L,[X|L]).

2.3.4. Eliminar elementos de la Lista
Como su nombre lo indica sirve para eliminar un elemento de la lista, se denota de la siguiente manera:

delete(X,[X|R],R)

CONCLUSIONES
Las estructuras de datos en Prolog son de suma importancia, las listas son una de estas y nos ayudan a facilitar el trabajo en situaciones en donde la cantidad de datos con los que se esta trabajando es inmenso.
Gracias a este tipo de estructuras podemos manejar gran cantidad de elementos en los que comúnmente no podríamos trabajar con una estructura simple. 

BIBLIOGRÁFICA
Galiano, F. (2012). Tutorial de PROLOG. (En linea). Consultado el 12 de Enero del 2015. Disponible en: http://elvex.ugr.es/decsai/intelligent/workbook/ai/PROLOG.pdf

Universidad Nacional del centro de la Provincia de Buenos Aires. (2014). Listas:Prolog. (En linea). Consultado el 14 de Enero del 2015. Disponible en: http://www.exa.unicen.edu.ar/catedras/prog_exp/apuntes/clase3.pdf

Universidad de Zaragoza (2015). Inteligencia Artificial Capitulo 5 Listas. (En linea). Consultado el 13 de Enero del 2015. Disponible en: http://www.unizar.es/pde/fjgaspar/cap5.pdf.

Russell, S., Norvig, P. 2008. Inteligencia Artificial Un Enfoque ModernoSegunda Edición. Pearson Education. España

No hay comentarios.:

Publicar un comentario