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

lunes, 23 de noviembre de 2015

PODA ALFA-BETA

INTRODUCCIÓN
Poda alfa-beta surgió como mejora del algoritmo minimax. Este algoritmo es capaz de reducir significativamente el número de nodos evaluados en un árbol de juegos y es una técnica muy usada en juegos entre adversarios como por ejemplo: el ajedrez, tres en raya y otros.
DESARROLLO
¿QUÉ ES PODA ALFA-BETA?
El poda alfa-beta es una mejora del algoritmo minimax, y se puede calcular una decisión mínima correcta y es posible aplicarlo a arboles de cualquier profundidad. Emplea la búsqueda primero en profundidad para considerar los nodos que se encuentran a lo largo del camino.
Existen dos jugadores en:
·         Maximizador
·         Minimizador
Y existen dos valores que son:
·         Alfa
·         Beta
Estos valores ayudan en la búsqueda, lo que mejora la búsqueda y mejorando la velocidad sin que se pierda la información
CARACTERÍSTICAS DE LA PODA ALFA-BETA
·         Omite la expansión de nodos donde los valores no son los mejores.
·         La búsqueda se para en algún nivel y se realizan evaluaciones heurísticas.
·         Si el valor del nodo MAX es decir alfa, es menor que el más alto hasta este momento, entonces omitir nodo.
·         Si el valor nodo MIN es decir, beta es mayor que el nodo más bajo hasta el momento, entonces omitir  nodo.
·         El algoritmo alfa-beta permite una búsqueda más completa.
·         En este algoritmo solo importa el orden y no los valores exactos.
·         Poda alfa-beta nos lleva al resultado final.
·         Alfa-beta es una mejora del algoritmo Minimax que evita revisar aquellos nodos donde la información no es útil en la jugada.
La búsqueda se realiza en profundidad y avanza de forma ordenada y usa la información para podar las ramas.

ESTRUCTURAS DE DATOS
Dos variables que se deben ser recordadas durante la búsqueda:
·         Alfa: limite inferior encontrando hasta ese momento.
·         Beta: limite superior.
·         En los niveles maximizantes MAX, se usa beta para podar.
·         En los niveles MIN, se usa alfa para podar.
·         Alfa-beta es muy usado para busqueda en árboles de juegos.
CONCLUSIÓN
Poda alfa beta es una mejora del algoritmo minimax que evita recorrer todos los nodos del árbol lo cual mejora la velocidad y no se pierde la información. El poda alfa-beta usa dos valores para obtener sus propósitos: alfa y beta.
BIBLIOGRAFÍA
López, B. 2009. Poda Alfa-Beta. (En línea). ME. Consultado, 20 de NOV. 2015. Formato PDF. Disponible en: http://www.itnuevolaredo.edu.mx/takeyas/

Solano, R. 2008. Poda Alfa-Beta. (En línea). EC. Consultado, 20 de nov. 2015. Formato PDF. Disponible en: http://es.slideshare.net/rfsolano/ poda-alfa-beta

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

viernes, 13 de noviembre de 2015

BÚSQUEDA ENTRE ADVERSARIOS-JUEGOS

INTRODUCCIÓN
Los juegos son entornos donde se desenvuelven dos agentes, cada agente debe considerar las acciones del otro agente que se desenvuelven en entornos competitivos donde los agentes siempre están en conflictos, solo puede haber un ganador y el otro indiscutiblemente será el perdedor, esto da lugar a la búsqueda entre adversarios más conocido como juegos.
DESARROLLO
JUEGOS
La teoría de los juegos es una rama de la economía porque ve un entorno multiagente como un juego donde cada acción realizada genera un impacto significativo.
Los juegos son una clase especializada a la que los teóricos de juegos la llamaban juegos de suma cero, de dos jugadores, etc.
Los primeros juegos fueron: el ajedrez, tres en raya. En todo juego si un jugador de gana el otro pierde, por esta razón los agentes producen una situación de adversarios.
Los juegos ocupan las facultades mentales de la gente, en ocasiones en un grado muy elevado, pero los investigadores indican que la naturaleza de los juegos los hacen un tema interesante.
Jugar juegos fue una de las primeras tareas de la inteligencia artificial, poco después de que las computadoras se hicieran programables. Los juegos son parecidos a la vida real en cierto modo, por ejemplo: en un juego se requiere de la capacidad de tomar decisiones cuando se debe calcular una solución óptima y castigan la ineficiencia   
DECISIONES ÓPTIMAS EN JUEGOS
Puede definirse como una clase de problemas de búsqueda con los siguientes componentes:
·         El estado inicial.
·         Una función sucesor devuelve una lista de movimientos pares o estados.
·         El test terminal determina cuando termina el juego.
·         Una función utilidad.
e   Ejemplo:

CONCLUSIÓN
Los juegos fueron uno de los primeros objetivos de la I.A, tiene la capacidad de ocupar la mentalidad de algunas personas en niveles excesivos lo que no es bien visto. Un juego está conformado por dos agentes donde uno de ellos es el ganador y el otro debe ser el perdedor.
BIBLIOGRAFÍA
Ceccaroni, L. 2008. Búsqueda entre adversarios. (En línea). ES. Consultado,  13 de nov. 2015. Formato PDF. Disponible en: http://www.cs.upc.edu/~luigi/II

Pérez, G. 2011. Búsqueda entre adversarios. (En línea). ES. Consultado,  13 de nov. 2015. Formato PDF. Disponible en: http://es.slideshare.net/gvnyps/

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


viernes, 6 de noviembre de 2015

AGENTES DE BÚSQUEDA ONLINE Y AMBIENTES DESCONOCIDOS

INTRODUCCIÓN
La busqueda online es una idea necesaria para un problema de explaración. La busqueda online es una idea necesaria para un problema de explaración.
Estos agentes observan el entorno de trabajo y hace un cambio en donde va a trabajar. Un agentes de este tipo es una buena idea para dominios estocasticos.
Los agentes de búsqueda online escogen la major ruta para llegar al objetivo con solo saber los acontecimientos que realmente suceden.
                                                         DESARROLLO            
Un agente de búsqueda online es una buena idea en dominios, es una idea incluso mejor que los dominios estocásticos. Esta búsqueda es una idea necesaria para un problema de exploración donde los estados y las acciones son desconocidos por el agente, y como el agente está en estado de ignorancia debe usar sus acciones como experimentos para determinar que hace después y luego se empieza a intercalar el cálculo y la acción.
AGENTES DE BÚSQUEDA ONLINE
Luego de una acción el agente online recibe una percepción al conocer el estado que ha alcanzado y a partir de esta información puede crear o aumentar su mapa del entorno, dicho mapa se usa para decidir dónde ir después.
El algoritmo online puede expandir sólo el nodo que ocupa físicamente. Para evitar viajar a través de todo el árbol para expandir el siguiente nodo es mejor expandir los nodos en orden local. La búsqueda primero en profundidad tiene exactamente dicha propiedad porque el siguiente nodo a expandir es hijo del nodo anteriormente expandido.

OBJETIVO DEL AGENTE
·         Alcanzar el estado objetivo.
·         Minimizar el coste.
INTERCALACIÓN PLANIFICACIÓN-ACCIÓN
Luego de cada acción el agente online recibe una percepción al decir que el estado se ha alcanzado. Dicha información aumenta el mapa de entorno, y luego ese mismo mapa se usa para decidir hacia dónde ir.
La búsqueda online es necesaria en problemas de exploración. Los estados deben expandirse teniendo en cuenta la posición física que la búsqueda en profundidad.
Búsqueda online: intercala el cálculo y la acción:
·         Tomar una acción.
·         Observar el entorno.
·         Calcular la siguiente acción.
Usos de la búsqueda online:
·         Problemas de exploración donde el agente desconoce los estados y las acciones
Un problema de búsqueda online puede ser resuelta solo por un agente que ejecute acciones más que por un proceso computacional
CONCLUSIÓN
Los agentes de búsqueda online trabajan en ambientes desconocidos, ellos deben explorar para aprender y con lo aprendido arma un mapa y decide que hacer luego de llegar a una meta. Son parecidos a los bebes que exploran el mundo para conocerlo.

BIBLIOGRAFÍA
Russell S. y P. Norvig Inteligencia Artificial: Un enfoque moderno. 2 ed. España. Pearson. p 138-142.


Mora, M. 2014. Agentes de búsqueda online y ambientes desconocidos. (En línea). ES. Consultado,  12 de oct. 2015. Formato PDF. Disponible en: http://inteligenciartificialmariana.blogspot.com/

jueves, 29 de octubre de 2015

ALGORITMOS GENÉTICOS

INTRODUCCIÓN
Los algoritmos genéticos están basados en la biología y en la teoría de evolución planteada por Darwin, en los últimos años se ha vuelto muy popular ya que es una técnica que se basa en los mecanismos que usa la naturaleza para seleccionar. Los individuos que se adaptan a los cambios son los que sobreviven, los cambios hacen referencia a la transformación de los genes y las características más destacadas de los individuos deben ser heredadas a sus descendientes.
DESARROLLO
Definición
Es un algoritmo matemático paralelo que transforma objetos matemáticos usando operaciones modeladas de acuerdo a la teoría de evolución de Darwin que trata sobre la reproducción y supervivencia del individuo más apto.
Este algoritmo está basada en mecanismo de selección natural y genética natural, combinando la supervivencia de los individuos más compatibles con una estructura de información aleatoria donde se intercambia información para construir un algoritmo de búsqueda con capacidades de innovación.
Lo que hace el algoritmo es que en cada generación se crea un conjunto nuevo de criaturas artificiales usando bits y partes del progenitor, esto genera un proceso aleatorio que no es tan simple.

La forma más simple de algoritmos genéticos usa tres tipos de operadores:
Selección o reproducción: se encarga de escger las cormosomas entre la población para efectuar la reproducción, si el cromosomas es más capaz tendrá más oportunidades de ser seleccionado para la reproduccion.
Cruce: se trata de cambiar las secuencias entre la posicion de dos cromosomas para crear una nueva desendencia.
Mutaciones: se producen variaciones de modo aleatorio en el cromosomas, puede mutar en cda posición de un bit en una cadena.
Ventajas
·         Permite trabajar con varias soluciones.
·         Tiene mayor tolerancia en la optimización.
·         Mejor manipulación de parámetros simultáneamente.
·         No requiere de conocimiento específico sobre el problema.
·         Usa algoritmo probabilístico.
Desventajas  
·         Puede tardarse demasiado en llegar a su objetivo.
Debe realizarse con lenguajes que toleren cambios

CONCLUSIÓN
Los algoritmos genéticos están basados en la teoría de Darwin y permiten que una población de individuos evolucione mediante la mutación o recombinaciones genéticas de forma aleatoria.
BIBLIOGRAFÍA
Martínez, M; Palacios, B; Sergio, T; Barreco, F. 2011. Aplicación de algoritmos genéticos a la identificación de la estructura de enlaces en portales web. ES. Revista española de documentación científica. Vol. 2. Pag 233.

Rodríguez, P. 2009. Introducción a los algoritmos genéticos y sus aplicaciones. ES. Consultado, 28 de oct. 2015. Formato PDF. Disponible en: http://www.uv.es/asepuma/X/J24C.pdf

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