viernes, 29 de enero de 2016

EJEMPLOS EN PROLOG


TEMA: EJEMPLOS EN PROLOG
Fecha:28 de Enero del 2016

INTRODUCCIÓN

Prolog es un lenguaje de programación compuesto por hechos, reglas y lista estas pueden ser aplicado en diversos tipos de ejercicios para ello es primordial que se realice la práctica correspondiente.
Se tiene como objetivo primordial en este  apartado poder resolver ejercicios de diversos tipos empleando: hechos, reglas y listas.
A medida que se vaya viendo los ejemplos se podrá obtener una visión más clara de cómo funciona en si el lenguaje Prolog.

 MARCO TÉORICO

1)    EJEMPLOS CON -> HECHOS EN PROLOG
Estos ejemplos consisten en hechos que son las sentencias más sencillas que verifican la relación (predicado) sobre los objetos (términos).

El siguiente ejemplo que veremos esta en realizado en Prolog, mismo que  puede responder consultas sobre qué tipos de movimiento puede hacer un determinado animal.


Todos los hechos de este programa son hechos sin variables como axiomas, por ejemplo: suma (0, X, X). En ellos, las variables se consideran cuantificadas universalmente .Es decir al igual que el hecho pueden(fido, correr) establece la verdad de la sentencia “ fido puede correr”, el hecho suma(0,X,X) establece la verdad para cualquier valor que pueda tomar la variable, es decir que “para todo termino X, la suma de 0 con X es X ”.Equivale a un conjunto de hechos de base como serían : suma(0,1,1), suma(0,3,3), etc.
Una vez que se tiene el programa describiendo una situación, se pueden hacer las respectivas preguntas para así obtener la debida información acerca de él. Por ejemplo:
Haciendo la respectiva consulta en Prolog , se puede observar en la primera imagen que en el primer hecho “fido puede correr” pero no puede volar porque no hay ningún hecho que lo afirme. 

Ya que lo que puede hacer “fido” es caminar y correr.

2)  EJEMPLOS CON -> REGLAS EN PROLOG
Las reglas son sentencias condicionales. Por ejemplo “Si el León como carne  entonces es carnívoro”. La siguiente imagen no muestra con son interpretados el símbolo:- la coma (,) y (;).


Ejemplo:

La regla es: le_gusta (juan, X) :- le_gusta(tomas, X).
Que corresponde a regla lógica: a tomas le gusta X => a juan le gusta X o equivalentemente: a juan le gusta X si a tomas le gusta X.



Las variables anónimas también pueden ser usadas en hechos, por ejemplo: le_gusta (_,tenis).  Se lee "a toda persona le gusta el tenis”.
EJEMPLO:   ÁRBOL GENEALÓGICO   



     Consultas realizadas


3)    EJEMPLOS CON  -> LISTAS EN PROLOG

Las listas son una estructura de datos simples, usadas en la programación numérica.
La práctica en el manejo de lista con Prolog es básica para el aprendizaje del lenguaje .Ese es el objetivo de este apartado.
Para poder resolver un problema de listas con Prolog, para esto primero veremos algunos ejemplos de su funcionamiento, para determinar los argumentos que son necesarios en la definición de la relación y la respuesta de Prolog en distintos casos.

Ejemplos de Operaciones con Listas

 1. Este es un predicado que obtiene la suma de los elementos de una lista:

a) La suma S es cero si la lista está vacía

b) 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 */


Consulta en Prolog.


2. Predicado que obtiene el promedio de valores almacenados en una lista.



     Consulta en Prolog 

3. Insertar un elemento a una lista, concatenar y eliminar




CONCLUSIONES

Prolog es un lenguaje de programación que nos habré un camino muy amplio en el que se puede programar fácilmente ya que este revisa toda la base de datos para poder encontrar las soluciones a las preguntas planteadas. Para poder entender de cierto modo el manejo básico de las listas se debe estudiar primeramente los hechos y las reglas. Los hechos son aplicados cuando algo es verdadero mientras que las reglas conllevan  a la unión  de los hechos.
Se debe tener en cuenta que la teoría es importante pero la práctica es quien nos facilita entender mucho más y si se practica lo suficiente los resultados se verán reflejados en las consultas que se le realicen a Prolog porque este nos devolverá el resultado dependiendo de lo que nosotros hagamos.

BIBLIOGRAFÍA

Mijuanlo, G.2012.EL lenguaje de Programación Prolog. (En línea).Consultado, 21 de ene. 2016. Formato PDF. Disponible en: http://mural.uv.es/mijuanlo/PracticasPROLOG.pdf

Rodríguez, O.2010. Programación Lógica Prolog. (En línea).Consultado, 25 de ene. 2016. Formato PDF. Disponible en: http://www.oldemarrodriguez.com/yahoo_site_admin/assets/docs/Programacion_PROLOG_VStrawBerryV2.223100300.pdf



lunes, 25 de enero de 2016

ESTRUCTURA DE PROLOG


TEMA: Estructura de Prolog
Fecha: Jueves 21 de Enero del 2016

INTRODUCCIÓN

En Prolog la estructura se utilizan básicamente para poder simplificar lo que se hacía con los hechos y las reglas, estas nos bridan un mayor beneficio  puesto que nos ahorran  declaraciones innecesarias, ya que las lista también pueden contener a su vez sablistas. Cuando se considera a las propias clausulas como estructuras nos da las posibilidad de poderlas crear, modificar, eliminar elementos de dichas listas.
Conforme se valla viendo cada uno de los conceptos acerca de este lenguaje, se consiguiera definirlo como un lenguaje muy potente y flexible, ampliamente utilizado dejando atrás a otros lenguajes de programación.

MARCO TEÓRICO

¿QUÉ ES UNA ESTRUCTURA EN PROLOG?

Una estructura es un único objeto que está compuesto de una colección de otros objetos, llamados componentes, facilitando su tratamiento. En Prolog una estructura se escribe especificando su nombre  y sus componentes es decir los argumentos. Estos componentes están encerrados entre paréntesis y separados por una coma; el nombre siempre va a estar adelante del paréntesis:  
                                    nombre (comp1, comp2,…compn)  
Por ejemplo se puede tener una estructura con el nombre libro, que está compuesto por tres elementos: título, autor, y año de edición. A su vez el autor puede ser una estructura con dos componentes: nombre y apellido.  
libro (estadística, autor(juan, cuena), 1869)
Como se puede observar las estructuras utilizan las mismas sintaxis como lo hacen los hechos.
  
LISTAS EN PROLOG

En Prolog no hay matrices, en su lugar se usan Listas.
Las listas son consideradas estructuras simples, empleadas en la programación no numérica. Pueden tener cualquier longitud y estos pueden ser: Constantes, Variables, Estructuras y otras listas. Una lista en si es una secuencia de varios elementos tales como:
Juan, Manuel, Jorge, Oscar
[ ] %lista vacía
La sintaxis de Prolog para las listas consiste en englobar las secuencias de elementos entre corchetes  [Juan, Manuel, Jorge, Oscar]
La manera en que se representan las listas internas en Prolog es con árboles binarios, siendo la rama de la izquierda el primer elemento o como generalmente conocida la cabeza de la lista y la rama de la derecha el resto o cola de la lista. De la rama que contiene el resto de la lista también se distingue dos ramas: la cabeza y la cola .Y la lista vacía es representada por [].
Ejemplo de cómo sería la representación de la cabeza y la cola de una lista.

[Juan, [Manuel, Jorge, Oscar] en donde Juan representa la cabeza y los demás la cola. La cabeza y la cola de una lista se pueden separar con el símbolo “|”.

Ejemplos:
[a, b, c]       [a|[b, c]]      [a, b| c]]       [a, b ,c|[]]    [a| X],[Y|[b, c]
Todas estas son expresiones válidas y se refieren a la misma lista, no obstante hay que tener en cuenta el orden de los elementos.


LAS LISTA COMO EXPRESIONES LÓGICAS
El conjunto de hechos y reglas constituye lo se denomina una descripción, que llega a ser un programa donde combinado con un procedimiento de inferencia independiente de la aplicación hace posible a la computadora sacar conclusiones acerca del área de aplicación y responder preguntas aun cuando estas respuestas no estén explícitamente registradas en la descripción. Esta capacidad es la base de la tecnología de la programación lógica.
Representación de operadores lógicos como listas.
La negación se puede representar como una lista de dos elementos: la palabra neg y una expresión lógica.
Las conjunciones, disyunciones, implicaciones y equivalencias se pueden representar como una lista de tres elementos: el alcance izquierdo, la conexión lógica y el alcance derecho.
Se supone que todo lo que no se puede demostrar es considerado como falso por definición.
Ejemplo de una operación con lista:
Este es un predicado que permite saber si una lista está ordenada ascendentemente; si una lista tiene un solo elemento esta ordenada. 

Consulta realizada



CONCLUSIONES
Prolog está preparado para poder responder a cada pregunta que se le plantee ya que utiliza una base de conocimiento, misma que es primordial cuando nos referimos a la Inteligencia Artificial.
A la hora de realizar una búsqueda de las posibles soluciones se lo puede representar mediante un árbol porque este busca las respuesta de la preguntas de forma similar, si la respuesta a la pregunta es éxito esta será la respuesta del sistema caso contrario si no satisface a lo requerido seguirá buscando. 

BIOBLIOGRAFÍA

Amo, A; Villalobos, M. 2012. Programación lógica: Un enfoque para desarrollar aplicaciones. México. Revista Redalyc.Num.14.p.4

Llorens, F; Castel, M.2011.Prácticas de Lógica Prolog. (En línea).Consultado, 15 de ene. 2016. Formato PDF. Disponible en: http://sistemasumma.com/2011/11/02/estructuras-en-prolog/

Pacheco, J.2013.El lenguaje de Programación Prolog. (En línea). Consultado, 14 de ene. 2016. Formato PDF. Disponible en: ttp://mural.uv.es/mijuanlo/PracticasPROLOG.pdf

Rodríguez, O.2010. Programación Lógica Prolog. (En línea).Consultado, 14 de ene. 2016. Formato PDF. Disponible en: http://www.oldemarrodriguez.com/yahoo_site_admin/assets/docs/Programacion_PROLOG_VStrawBerryV2.223100300.pdf

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



domingo, 17 de enero de 2016

INTRODUCCIÓN A PROLOG


TEMA: INTRODUCCÍON DE PROLOG
Fecha: 14  de Enero del 2016 

INTRODUCCIÓN

La Inteligencia Artificial ha venido constituyendo consigo varios lenguajes de programación y uno de ellos es el denominado Prolog. Un lenguaje de fácil uso para programadores, basado en una base de conocimiento para poder dar una respuesta a determinada interrogante realizada por el programador.
Prolog emplea una estructura muy básica constituida por; hechos, reglas, variables  y consultas, permitiéndole ser entendido por cualquier inexperto en cuanto se refiera a la materia.

En este documento veremos más afondo acerca de este lenguaje de programación que ha sido parte de la Inteligencia Artificial. 

MARCO TEÓRICO
¿QUÉ ES PROLOG?

Prolog se diferencia de otros lenguajes de programación por ser un lenguaje conversacional; lo que quiere decir es que este mantiene un dialogo continuo con el programador desde el comienzo hasta el final de la sesión. Dicho dialogo viene siendo un interrogatorio, ya que programador en todo el transcurso  le plantea preguntas al sistema Prolog.
Por su parte, el sistema Prolog responderá a cada una de las preguntas que se le formulen siempre y cuando sea posible.
Prolog le indica al programador que está esperando a que éste le formule una pregunta mostrando en pantalla el siguiente símbolo ?- .
Tras este símbolo, el programador ya puede teclear cualquier pregunta, la misma que debe ser terminada en un punto y pulsar el retorno de carro. Con ello, el programador está solicitando a Prolog que responda a dicha pregunta formulada.
Luego de que la pregunta fue procesada por el sistema Prolog mostrará en pantalla la respuesta correspondiente.
Por ejemplo, si queremos preguntar a Prolog si 5 es igual a 2+3 podemos teclear la pregunta
?- 5 es 2+3
Yes
Base de Conocimiento de Prolog
La base de conociendo forma un papel muy importante en Prolog,  ya que para responder a las preguntas formuladas por el programador, Prolog consulta una base de conocimiento. Cuando inicia una sesión Prolog, la base de conocimiento lo que hace es almacenar un conocimiento básico que incluye cosas, conceptos y definiciones de la aritmética de los números naturales. Este conocimiento es el que le da a Prolog la eficiencia de poder responder correctamente a cada una de las preguntas que se le llegases a formular.
Ejemplo:

Obviamente, Prolog no es capaz de poder responder cualquier  pregunta que se le formule. Por ejemplo, si le pregunta a Prolog si el pato Lucas es un pato




Prolog nos dará como respuesta  que no sabe determinar si algo es o no un pato, pues su base de conocimiento no incluye información acerca de los patos. Formalmente, lo que ocurre es que el predicado lógico ‘esPato/1’ no está definido (undefined predicate).
La base de conocimiento se expresa mediante hechos y reglas Prolog , que no son otra cosa que una representación sintética concreta de Horn de primer orden.

Hecho: Es un hecho de lenguaje cotidiano .En lenguaje normal, una proposición puede ser “hace calor”.
Ejemplo: Este hecho, consta de dos objetos, “coche” y “ruedas”, y de una relación llamada “tiene”. La forma de representarlo en Prolog es:
Tiene (coche, ruedas).
Nota: Los nombres de los objetos y relaciones deben comenzar con una letra minúscula.
Reglas: Las reglas son las capacidades del programa. Estas son consultadas al hacer una consulta para verificar su validez o invalidez.
Las reglas se utilizan en Prolog para significar que un hecho depende de uno o más hechos. Son la representación de las implicaciones lógicas del tipo pàq (implica q).
Una regla tiene una cabeza y un cuerpo, unidos por el signo “:-”.
Nota: La cabeza está formada  por un único hecho, el cuerpo puede ser uno o más hechos (conjunción de hechos), separados por una coma (“,”), que actúa como el “y” lógico, y las reglas finalizan con un punto (“.”). 

VENTAJAS 

Una de las ventajas de Prolog es que este le da al usuario la facilidad para programar  ya que se pueden escribir programas rápidamente, con pocos errores originando programas claramente legibles, aun si no se conoce muy bien el lenguaje
DESVENTAJAS 


CONCLUSIONES
Prolog es un lenguaje de programación, el mismo que lo podemos considerar como un lenguaje simple, pero no obstante es muy eficiente ya que este se basa en base del conocimiento, a la hora de querer obtener la solución a diferencia de otros lenguajes a este solo le debemos hacerle interrogantes, permitiéndole al programador satisfacción al momento de formular una pregunta.


BIBLIOGRAFÍA

Jones K; Yong, G. 2012.Introducción al lenguaje de programación lógica Prolog. Universidad de Costa Rica.

Llorens, F; Castel, M .2010. Prácticas de Lógica Prolog. (En línea).Consultado, 11 ener    2016. Formato PDF. Disponible en:http://www.dccia.ua.es/logica/prolog


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

                                                                      


lunes, 23 de noviembre de 2015

ALGORITMO MINIMAX


TEMA:ALGORITMO MINIMAX

Semana del 16 a 20 de Noviembre

INTRODUCCIÓN

Desde el inicio de  la Inteligencia Artificial los juegos siempre han estado a la vanguardia, en la actualidad son considerados desafiantes ya que los sistemas que optan por estos son capaces de ganarle a sus oponente si ningún temor.
El algoritmo minimax  es uno de ellos, su estrategia como por así decirlo es buscar maximizar su jugada a lo contrario con lo que sucede con su oponente sus jugadas siempre van hacer minimizadas ya que el minimax siempre elegirá las mejores jugadas y su oponente se verá inverso a reducir sus movimientos.
Nuestras dudas acerca de este algoritmo se irán despejando conforme se vaya estudiando este tema.
MARCO TEÓRICO
¿QUÉ ES UN ALGORITMO MINIMAX?

El Minimax es el más empleado en los juegos bipersonales. Trabaja con una búsqueda en profundidad la misma que es limitada, dicha profundidad viene determinada por:

Para comenzar un juego deben estar definidos sus roles; quien empieza el juego es denominado MAX y el oponente es MIN.
MAX siempre va a maximizar sus valores con respecto a su contrincante ya que los valores de MIN serán minizarlos.
Para dicho juego se deben tomar en cuenta los siguientes pasos:

Debemos tener en cuenta que cada capa corresponde a una jugada de MAX o MIN respectivamente.
Como la recursión es recortada entonces la utilidad de una función heurística.

ESTRUCTURA MINIMAX
Minimax utiliza la siguiente estructura:
CARACTERÍSTICAS
  • Puede crear situaciones complejas en base a reglas sencillas
  • Tiene gran versatilidad de ser adictivos
  • A diferencia a otras búsquedas, el adversario introduce incertidumbre porque no se sabe que va a tirar, lo que se asemeja más a problemas reales.


EJEMPLO:

JUEGO TRES EN RAYA

  • Jugadores: MAX y MIN, primero jugará MAX luego este le da el paso a MIN y surgirá el flujo hasta que se acabe el juego.

  • Número de jugadores: 1 jugador que juega con la máquina.
  • El algoritmo MINIMAX se centra en ganar siempre,  es decir no se le va a poder ganar solo empatar.

Pero si se diera el caso en el que MIN gane se obtiene una raya de tres fichas O



En el caso de que todas las casillas estén ocupadas pero sin que haya una raya en tres fichas del mismo tipo,  se debe a un empate.


CONCLUSIONES

La Inteligencia Artificial se centró desde el principio con los juegos,  mismos que se proporcionaron para probar que tanto era la inteligencia de un sistema que era aplicable a juegos contra un humano, por tanto el algoritmo minimax es aplicable ha dicho sistema.
El algoritmo Minimax se centra en dos jugadores MAX y MIN; Max busca ser siempre el vencedor estando siempre por encima de su adversario Min ya que sus jugadas siempre van a ser mínimas, en el caso del juego tres en  raya, como resultado se obtendrá un ganador, empate y el peor de los casos un perdedor.


BIBLIOGRAFÍA
Rodríguez, J.2005.Minimax. (En Línea).Consultado 19 de Nov.2015.Formato PDF. Disponible en: http://www.itnuevolaredo.edu.mx/takeyas/Apuntes/Inteligencia%20Artificial/Apuntes/tareas_alumnos/Minimax/Minimax.pdf

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

  
Sánchez, Ana. 2011. Juegos con Adversario Algoritmo Minimax. (En Línea).Consultado 19 de Nov.2015.Formato PDF. Disponible en: http://www.it.uc3m.es/jvillena/irc/practicas/estudios/minimax.pdf

Trigozo, G. 2014. Inteligencia Artificial y Algoritmo: Minimax. (En Línea).Consultado 19 de Nov.2015.Formato PDF. Disponible en: http://conacin.upeu.edu.pe/wp-content/uploads/2014/10/CIn_3466.pdf





martes, 10 de noviembre de 2015

BÚSQUEDA ENTRE ADVERSARIOS


TEMA: BÚSQUEDA ENTRE ADVERSARIOS

Semana 2 al 6 de Noviembre 2015


INTRODUCCIÓN

Los agentes en algunas circunstancias presentan ciertos problemas con respecto a los  objetivos planteados, estos problemas se pueden dar en entornos que en los que existen contrincantes. A los cuales se los son conocidos como búsqueda entre adversarios y en ocasiones se los opta por denominarlos juegos.
En la Inteligencia Artificial los juegos se han  venido ocupando un rol importante ya que siempre han estado presentes, la búsqueda por adversarios tiene como propósito reemplazar en cada jugada con su adversario, cada uno incentivado por ser el ganador por ejemplo en el caso del juego del ajedrez, la utilidad al final del juego siempre va a  tener su pro y su contra con  respecto al contrincante ya que solo puede tener un ganador o un perdedor. 

MARCO TEÓRICO


JUEGOS: En los entornos multiagente(cooperativos o competitivos), los agente se deben caracterizar por considerar las acciones de otros agentes.

La teoría matemática de juegos es una rama de la economía .Los  juegos  se han tomado las facultades intelectuales de la gente mientras se ha dado la civilización. Los investigadores de la Inteligencia Artificial la forma en que se dan estos lo hacen cada vez más interesantes para poder estudiarlos con ahínco. El estado de un juego no presenta ninguna complejidad al representarlos, y los agentes se encuentran restringidos, a un diminuto número de acciones mismas que están definidos por reglas precisas. 

La Inteligencia Artificial opto por los juegos desde un principio, en el año 1950, casi como las computadoras se hicieron programables, el ajedrez fue abortado por Korand Zuse,Clalude Shannon ,Nobert Wiener y por Alan Turing desde entonces los juegos se volvieron indispensables.

Los juegos se tornan muy interesantes porque estos son muy difíciles de resolver. Como es el caso del ajedrez, tiene un factor de ramificación promedio de 35 y los juegos van a menudo a 50 movimientos por cada jugador.
Los juegos, como en el mundo real requieren la capacidad de tomar alguna decisión la jugada cuando es infectable calcular la función óptima.


CARACTERISTICAS

DECISIONES OPTIMAS EN JUEGOS
 
Un juego puede definirse formalmente como una clase de problemas de búsqueda con los componentes siguientes:


 
  1. El estado inicial es donde comienza el juego 
  2. La función sucesor define todos aquellos movimientos que se dan el cada juego así como los estados de los mismos 
  3. Test Terminal, indica cuando se acaba el juego 
  4. La función utilidad, es aquella que determina si un jugador gana , pierde o empata.

  • Ejemplo : Búsqueda Entre Adversarios 
   
Img.Juego del Tres en Raya entre Max y Min

CONCLUSIONES


Los juegos entre adversarios se centran como objetivo encontrar un ganador, en cada jugada, cada jugada va a depender del adversario ya que solo puede existir un ganador, darse un empate o por ende ser el perdedor del juego.
Los juegos se constituyen de cuatro aspectos importantes las cuales son; un estado inicial, función sucesor, un test terminal y por último de la función utilidad que determina los resultados obtenidos en la jugada.
Los juegos van invadiendo día a día a los seres humanos ya que desde el inicio de la Inteligencia Artificial se han venido dando.


BIBLIOGRAFÍA

Ceccaroni, L. 2011. Inteligencia Artificial Búsqueda entre adversarios. (En Línea).Consultado 7 de Nov.2015.Formato PDF. Disponible en: http://www.cs.upc.edu/~luigi/II/IA-2007-fall/2d-busqueda-entre-adversarios-(es).pdf
 

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