Categories
General

Práctica Sesión 3

Hoy hemos comenzado la clase repasando aspectos básicos del Prolog para que la gente que no supiera por dónde empezar cogiera ritmo, una vez que Carlos ha explicado estos aspectos nos hemos puesto a trabajar en el proyecto de “Aquí no hay quien estudie… mates 1”

Carlos nos ha explicado con ayuda del proyector aspectos como:

Limpiar la pantalla, :-write(‘33[2J’).

“:-cuerpo” es una regla sin cabeza, se ejecutará en primer lugar cuando se compile el programa.

Más de uno le hemos preguntado a Carlos que como debíamos llamar a las variables, por si había que seguir alguna regla para que no se diferenciara mucho el código de un alumno al de otro y este nos ha dicho que ese aspecto es a elección del alumno, siempre y cuando siga la estructura durante todo el proyecto y no cree confusión, este aspecto tanto a mi como a los que hayan programado alguna vez nos pareció genial ya que te permite la libertad de personalizar el código
En la sesión de hoy hemos hecho la fase 1 y 2

En la fase 1 hemos declarado los hechos, en este caso los vecinos y las zonas, y para terminar hemos hecho preguntas para comprobar que el código está bien hecho

En la fase 2 hemos definido a los personajes (recordar que el propio jugador también es un personaje a introducir), la ubicación de los personajes es otro aspecto a introducir y los lindes de cada sala en el mapa para saber cómo debemos movernos y con que linda cada habitación

Ejemplos de cómo meter el código

% descripcion(Tp,Nom,Desc): Desc es la descripción textual (cadena de texto)
del objeto llamado Nom, que es del tipo Tp (por ahora, Tp puede ser vecino o zona)

% ubicacion(Pj, Zn): El personaje Pj está ubicado en la zona Zn.

% lindes_zona(Zn, N, S, E, O): La zona Zn tiene al norte la zona N, al sur la zona
S, al este la zona E y al oeste la zona O.

Categories
General

Teoria Sesión 3

Hola una semana más a tod@s aquí estamos para intentar hacer un resumen de la sesión de teoría correspondiente a (28/09/10)

En esta sesión hemos visto la gramática de la lógica proposicional y la lógica de predicados.

Gramática lógica proposicional: fórmula lógica proposicional bien formada (fbf).

Reglas para la construcción de fórmulas proposicionales bien formadas (fbf):

1-Toda variable proposicional es una fbf.

2-Si A es una fbf entonces ¬A también lo es.

3-Si A y B son fbf también lo son A ^ B, A v B, A -> B, A <-> B.

4-Sólo son fbf las que cumplen las reglas 1, 2 y 3.

5-Para evitar exceso de paréntesis se establece una jerarquía entre sus conectivas.

De prioridad más alta a menos: ¬ / ^ , v   / ->, <->

6-La fbf queda definida por al conectiva de mayor jerarquía.

7-Usar paréntesis para agrupar operaciones cuando aparece ambigüedad en la fórmula.

8-Si un operador negativo antecede a otro negativo el de la izquierda tiene mayor prioridad.

Una expresión formada por una cadena de símbolos del alfabeto del lenguaje proposicional es una fórmula lógica bien formada (fbf) de dicho lenguaje si representa la formalización de una proposición atómica o molecular, construida según las reglas establecidas por la gramática del lenguaje.

Ejemplo teórico: En la expresión (p^q) -> r  .  La fbf queda definida por la conectiva de mayor jerarquía que es -> luego la fórmula es un condicional. La fbf se puede escribir como: p^q -> r, la regla número 5 nos dice que no es necesario usar paréntesis.

Podemos encontrar más ejemplos teóricos en la  página 3 de los apuntes del Tema 2.

Un ejemplo práctico de lo visto hasta ahora puede ser el que vimos en clase:

Sólo si bebo vino en la cena, no bebo cerveza, pero si bebo cerveza y vino no tomo chinchón.
También te aseguro que no bebo vino a menos que beba chinchón y cerveza.

Definimos el marco conceptual donde se ponen las diferentes premisas.
MC={ce: bebe cerveza en la cena; vi: bebe vino en la cena; ch: bebe chinchón en la cena}
La de este problema es: ¬ce->vi, ce ^ vi -> ¬ch, ¬(¬vi) -> ch^ce

A continuación pongo las “chuletas” que nos dio la profe:

En los dos casos siguientes A es el antecedente:

Si A entonces B
Es suficiente A para que B
No A a menos que B  (en este caso A->B)

En los siguientes casos A es el consecuente:
Sólo si A entonces B
Es necesario A para B  (por ejemplo en este caso se pondría B->A y NO A->B)

Lenguaje de predicados

En el lenguaje de predicados la formalización de las proposiciones se realiza atendiendo no sólo a las conexiones posibles sino que en cada una de ellas se distingue a los individuos, sus propiedades y relaciones, dentro de un conjunto de referencia.

Alfabeto.

Conjunto de símbolos formado por:

-Variables: x, y, z…. Se refieren a objetos indeterminados, cualquier sujeto de un conjunto.

-Constantes: a, b, c…. Se refieren a objetos concretos, como David, Juan…

-Símbolos de función n-aria: símbolos que corresponden a funciones que denotan sujetos concretos de un conjunto de referencia, en función de sus argumentos. Se diferencian de los predicados en que no simbolizan fórmulas sino términos constantes.

-Símbolos de predicados o símbolos de relaciones n-arias: símbolos que reciben argumentos y que denotan una propiedad o una relación entre sujetos de un conjunto de referencia.

Ejemplo: D(x, y) predicado 2-ario que expresa que los sujetos “x” e “y” están relacionados mediante “D”.

-Cuantificadores:
– Cuantificador universal (∀): se utiliza para afirmar que todos los elementos de un conjunto cumplen
una determinada propiedad o relación.
– Cuantificador existencial (∃): se utiliza para indicar que hay uno o más elementos de un conjunto que
cumplen una determinada propiedad

-Símbolos del lenguaje proposicional: variables proposicionales, conectivas y paréntesis.

Un ejemplo de lo que hemos visto seria este visto en clase

Maki y Popeye son colegas.

Se puede decir que Maki es colega de Popeye y Popeye es colega de Maki.

El marco conceptual seria este=> MC:{pop=Popeye; mak=Makinavaja; Bc(x): x tener buen corazón}

También se introduce “tener buen corazón” en el marco conceptual, es un predicado con 1 argumento.

La solución es la siguiente: Bc(pop) ^ Bc(mak)

Cuantificación

Veremos este apartado con otro ejemplo:

Todos los que se levantan pronto van a trabajar.

Para empezar definimos nuestro marco conceptual:

Mc={Lv(x): x se levantan pronto;

Tr(x): x va a trabajar

D={sótano} =>en este caso hemos agrupado a todas y cada una de las personas de la clase en este conjunto (dimos la clase en el sótano).}

∀x [Lv(x) -> Tr(x)]
x E D

∀x: para todo “x”, es decir, para cualquier valor de “x”
x E D: “x” pertenece al dominio (en nuestro caso al dominio “sótano”)

Si alguna de las personas que hemos incluido en el dominio no se levanta temprano no pasa nada, nuestra fórmula seguirá siendo verdadera.

En cambio, si lo ponemos de la siguiente forma:

∀x [Lv(x) ^ Tr(x)]

Si alguna de las personas del dominio no se levanta temprano entonces todo se incumple ya que en una conjunción ambas partes deben ser verdaderas, una conjunción siempre va con (->, implicador).

Hasta aquí el resumen de hoy otro día más y mejor

Categories
General

Prácticas Sesión 2

En esta segunda sesión ( 21/09/2010) hemos profundizado con prolog, hemos visto la sintaxis a emplear y las distintas partes de un programa en prolog:

Comentarios:

Un comentario es: Texto dentro de un archivo de código PROLOG (.pl)que es ignorado por el intérprete/compilador. Escribiendose de la siguiente manera:

% Comentario
% Más comentarios
…  sentencias de código ….
/* Comentario
de 2 líneas  o más*/

Predicado es: Construcción lógica que expresa propiedades y relaciones entre objetos. Se escriben de la siguiente manera : “predicado(arg1, arg2, arg3,….,argN)”. Y siguen las siguientes normas:

  1. – Empiezan siempre por letra minúscula.
  2. – No hay espacio entre el nombre y el paréntesis.
  3. – Argumentos separados por comas.
  4. – Pueden tener 0 argumentos (y no habría paréntesis)
  5. EJEMPLO: % habitacion(X): X es una habitación
    habitacion(salon).

Variable: Representación abstracta de un objeto cualquiera, indeterminado, del dominio. Empiezan por letras mayúsculas o subrayado. No contienen espacios.

Ejemplos: %
% X
% _predicado
% VALOR
% Jugador_1

Si hay “_” entonces es una variable anónima: %_

Hecho: Indica unos valores concretos para los cuales ese predicado se cumple.

Si un hecho está definido y preguntamos por él se nos dira Yes, si no está definido un hecho y preguntamos por él nos dirá que no existe. Para preguntar por un hecho se ponen los valores de las variables, el intérprete se encargará de buscar el hecho y nos responderá.

EJEMPLO:

% sumar(O1, O2, S): S es O1 + O2
% Cada una de las siguientes líneas
% es un hecho del predicado sumar/3
sumar( 2, 2, 4).
sumar( 1, 5, 6).
sumar(-2,10, 8).

Definición de cabeza :- cuerpo: (Parte importante)

Cabeza: objetivo (cláusula de un predicado) que puede ser cierto o falso, es decir, tener éxito o fracasar.
Cuerpo: condiciones de las que depende que cabeza tenga éxito o fracase.

Ejemplo:

mortal(david):-persona(david)

Si preguntamos que si david es mortal obtendremos una respuesta afirmativa si david está definido como persona, es decir, la respuesta del cuerpo nos indicará la falsedad o veracidad de la cabeza.

Predicado predefinido: Un predicado que ya viene definido en SWI-PROLOG y que tiene alguna funcionalidad asociada. Sólo pueden utilizarse en preguntas al intérprete o en el cuerpo de una regla. Si ponemos hechos de un predicado predefinido en un programa nuestro dará error al compilar, porque no podemos redefinirlo. Para conocer los predicados predefinidos de Swi-Prolog podemos utilizar la ayuda, poniendo ?- help. en el intérprete. Un ejemplo sería el write, consult, etc….

Preguntas: Durante la ejecución de cualquier programa se pueden realizar preguntas a este, ya sea para realizar pruebas, por que lo exija la aplicación, etc…

Por ejemplo si definimos un hecho: habitacion(cocina)

Podemos preguntar si cocina es una habitacion poniendo: ?-habitacion(cocina).

El sistema nos devolverá un “Yes” o un “No” en función de si ha encontrado una coincidencia o hecho igual a lo que le indicamos.

Hay más formas de preguntar, podemos preguntar por todas las habitaciones, habitaciones con otro nombre, etc…

Cuando hagamos una pregunta que tenga varios resultados podemos ir pasando de uno a otro con “;” o pulsando la “n”.

Para escribir por pantalla
% write(A): Escribe el átomo A por pantalla.

Reglas con conectivas: Permiten describir condiciones complejas en reglas o preguntas al intérprete. Las conectivas fundamentales son el conjuntor (,), el disyuntor (;) y el negador(not(A).

Prolog

– Intenta satisfacer los objetivos de izquierda a derecha
– Prolog recorre la BC de arriba hacia abajo.

Aqui acaba el resumen de hoy, otro dia más y mejor

Categories
General

Teoria Sesión 2

Hola a tod@s, esta entrada corresponde a la segunda sesión de teoría dada el 21/09/2010.

Tras una primera toma de contacto la pasada sesión, esta semana ya  hemos empezado el temario de lógica, que aunque la lógica parezca algo fácil de deducir pronto te das cuenta que poco se parece a la lógica cotidiana, aunque con practica resulta más sencillo.

Lo primero que hicimos fue un test de introducción a la lógica que mostró en el proyector, nos juntamos por parejas e íbamos apuntando los resultados de las preguntas de forma conjunta, el test ha servido para darnos cuenta lo poco lógicos que somos la mayoría, y como es sencillo caer en una falacia (razonamiento lógicamente incorrecto) por cierto pongo las respuestas por si alguno tiene dudas sobre alguna o no le quedo claro: 1-d.   2-a,b,c,d.   3-a,b.   4-d.   5-a.    6-a

A continuación comenzamos el primer tema del temario:

TEMA-1: RAZONAR CON “LOGICA”, CON LOGICA FORMAL DE PRIMER ORDEN:(Introducción, conceptos básicos)

Comenzamos aprendiendo el concepto de razonar:

Razonar es la facultad humana que permite resolver problemas a partir de un conjunto de actividades mentales que conectan unas ideas con otras según unas reglas determinadas.

Existen dos tipos de razonamiento:

  • Razonamiento inductivo: a partir de premisas que continúen datos particulares, se deducen conclusiones generales. Ejemplo: El perro es mamífero y cuadrúpedo
    El gato es mamífero y cuadrúpedo
    Por lo tanto los mamíferos son cuadrupedos.

En realidad la verdad de las premisas no afirma la verdad de la conclusión.

  • Razonamiento deductivo: A partir de un conjunto de preposiciones se obtiene una proposición (conclusión) aplicando reglas de inferencia. Inventado por Aristóteles. Este método es el que vamos a estudiar.                                                              Ejemplo: Todos los mamíferos tienen sangre caliente (proposición).
    El humano es un mamífero (proposición).
    El humano tiene sangre caliente (conclusión).

La lógica, es la ciencia formal de los principios de la validez de los razonamientos. La lógica formal es la que se encarga de capturar las características de las inferencias validas en los lenguajes naturales y realizar demostraciones rigurosas sobre ellas.

Una definición menos formal seria esta: la lógica es la ciencia formal que determina la verdad o falsedad de sentencias (conclusión) a partir de otras verdaderas (premisas) usando reglas de inferencia.

Notación formal y componentes de los razonamientos deductivos:

Estos sistemas deductivos se componen de proposiciones, reglas de inferencia y una proposición llamada conclusión.

Un razonamiento se representa así en notación formal: P1, P2, …Pn-> Q

“P” son las premisas, “Q” la conclusión y la flecha es el proceso mediante el cual se obtiene la conclusión.

Componentes:

Premisa: proposición que declara información de un problema. Puede ser verdadera o falsa y puede haber 1 o más premisas en un razonamiento.
Conclusión: proposición objetivo o respuesta a un problema. Resultado que se quiere demostrar.
Inferencia o deducción: proceso por el que se obtienen proposiciones a partir de otras conocidas aplicando reglas de inferencia.

Proceso a llevar en el razonamiento deductivo:
1-Se aceptan las premisas.
2-Se aplican leyes lógicas de inferencia y se obtienen nuevas proposiciones.
3-Se obtiene la proposición conclusión.

Unidad básica de información: proposición

Proposición: sentencia declarativa (hecho del mundo) del lenguaje natural que puede ser verdadera o falsa. Para que haya una proposición tiene que haber un verbo en la oración.
Ejemplo: El casa es roja.

El elemento básico de información en un razonamiento es la proposición atómica, que es una sentencia con sentido completo que puede ser interpretada como verdadera o falsa. Conectando proposiciones atómicas se obtienen más complejas: las proposiciones moleculares.

  • Ejemplo de proposición atómica: “Hace frío.” Es una información indivisible.
  • Ejemplo de proposición molecular: “Si hace calor me voy a la playa”. 2 proposiciones unidas por el conector “si”: “hace calor” y “me voy a la playa”.

Tipos de proposiciones moleculares:

  • Conjuntiva: Las proposiciones están ligadas por expresiones como “y”, “pero”, “sin embargo”, etc.                                    Ejemplo: “Roció es guapa y amable”.
  • Disyuntiva: Expresiones como “o” y sus equivalentes. Ejemplo: “David es rubio o moreno”.
  • Condicional: Las proposiciones están conectadas por la expresión “si (P1), entonces (P2)”. Llamaremos de aquí en adelante a P1 antecedente, y P2 consecuente. No es necesaria una relación de contenidos entre ambas proposiciones para que la condicional sea lógicamente correcta. P1 se corresponde con la condición suficiente P2, y P2 es la consecuente del condicional, y a su vez, condición necesaria. Ejemplo: “Si Laura estudia entonces aprobará”.
  • Bicondicional: Ligadas por la expresión “P1 si y sólo si P2″ o “P1 es equivalente a P2″, y expresiones equivalentes. Se establece por tanto dos condicionales de sentido inverso, donde ambas son condiciones necesarias y suficientes entre ellas. Ejemplo: “Laura aprobará si y sólo si estudia”.

Razonamientos deductivos correctos y falacias

En los razonamientos deductivos la verdad de las premisas debe implicar la verdad de la conclusión, sino es así, y
de la verdad de las premisas se demuestra la falsedad de la conclusión el razonamiento no sería válido o correcto.

Razonamiento correcto:
Ejemplo:
P1: Juan y Jesús son cuñados de Javi.
Q: Jesús es amigo de Mario.

Este razonamiento sería correcto.

Cabe destacar que si la información transmitida en las premisas es falsa pero se deduce una conclusión verdadera, el razonamiento es correcto.

Ejemplo:
P1: Todos los peces viven en el océano. (falso).
P2: Las nutrias marinas son peces. (falso).
Q: Luego, las nutrias marinas viven en el océano. (verdadero).

Una parte importante del razonamiento es no caer en falacias.

Falacias:

Razonamientos que parecen correctos pero que no lo son.
P1: Si el jardinero tiene el cadáver en su casa es el asesino.
P2: El jardinero lo tiene.
Q: El jardinero es el asesino.

La lógica de primer orden no se centra en el contenido, si no en la estructura.

Sistema formal lógico

Los sistemas formales deductivos son la principal herramienta de la lógica formal moderna para estudiar los razonamientos.
Objetivos:
-Afirmar como válidas expresiones a partir de otras.
-Sistemas de deducción natural, basados en reglas de inferencia.

Consta de:

  1. Lenguaje: alfabeto y reglas que explican cómo construir fórmulas.
  2. Semántica: Cómo las fórmulas representan hechos en el mundo.
  3. Proceso deductivo: Cómo se obtiene nuevo conocimiento de otro dado.

Los sistemas formales más usados actualmente dentro de la lógica formal son los que se refieren a la lógica de primer orden. Estos se desarrollan en dos niveles de abstracción que son:
·Lógica proposicional: supone que existen hechos en el mundo real que pueden ser verdaderos o falsos: las proposiciones.

·Lógica de predicados de primer orden (LPO): destaca los objetos, sus propiedades y relaciones.

Principios de cálculo lógico

· De identidad: toda proposición es igual a sí misma.
·De (no) contradicción: es falso que una proposición sea verdadera y falsa.
·De tercero excluido: Una proposición solamente puede ser verdadera o falsa.

Con esto finaliza la teoría del Tema 1

TEMA -2: EL LENGUAJE DE LA LÓGICA DE PRIMER ÓRDEN Y LA TEORÍA DE CONJUNTOS

En este tema estudiaremos la forma de trasformar el lenguaje natural al lenguaje formal de la lógica de primer orden, pues éste carece de ambigüedades y posee una forma clara de representación basada en la forma y no en el contenido, lo haremos mediante proposiciones atómicas y moleculares y se puede realizar en dos niveles de abstracción:

  • Proposicional: busca hechos y posibles conexiones entre ellos y los formaliza.
  • Predicativo: también busca hechos y los formaliza teniendo en cuenta no sólo las conexiones entre ellos sino
    que destaca los sujetos que aparecen en el enunciado, las características que les afectan y las posibles relaciones entre ellos.

En el lenguaje proposicional permite construir fórmulas lógicas proposicionales a partir de la formulación de proposiciones atómicas y moleculares. Tiene su alfabeto y gramática propios.

Alfabeto: conjunto de símbolos con los que trabaja el lenguaje. Para representar las proposiciones atómicas utilizaremos letras. Para representar las conexiones entre proposiciones utilizaremos un conjunto de conectores u operadores lógicos (¬, ^, –>, <–, <–>, …). Y símbolos auxiliares, que serán los paréntesis, que utilizaremos para dar prioridad.

Gramática: son una serie de reglas para la construcción de fórmulas preposicionales bien formadas (fbf).

Conectivas lógicas

·Negador ¬p

·Conjunción ^

·Disyunción v

·Implicador ->

-Coimplicador <->

Para cada conectiva hay diferentes expresiones, para más detalle consultar el tema 2.
El tema 2 está sin acabar, continuará la próxima sesión con el lenguaje predicativo.

Esto es todo por hoy que no es poco, no me esperaba este ritmo de tema y medio por sesión jejeje

Categories
General

Primer dia, primeras impresiones

El martes fué el primer dia de clase y básicamente nos esplicaron como iba a funcionar la asignatura y la finalidad de esta, también nos dijeron que uno de los objetivos era hacerse un blog como este y que teniamos que hacerle un diario a un tal Bitácoras… o quizás ¿era un diario para nosotros? bueno no se ya averiguaré esto y mucho más que me falta por ver.