Categories
General

Práctica sesión 8

Sesión correspondiente al día (09/11/2010).

En la sesión de hoy hemos empezado la fase 6 de la aplicación, para poder realizarla Carlos nos ha explicado lo que es un bucle repeat-until.

REPEAT

Es un predicado que siempre tiene éxito y, además, obliga a PROLOG a reevaluar a partir de donde está, en adelante. Esto significa que, si alguno de los objetivos siguientes a repeat fracasa, es seguro que, como mínimo, PROLOG continuará la ejecución a partir del repeat.

Objetivos, éxito, fracaso y reevaluación

El mecanismo de proceso de PROLOG está basado en objetivos. Cada nueva cláusula que PROLOG encuentra en su proceso de ejecución es para él un objetivo que debe tratar de cumplir.

Por ejemplo si ponemos:

?-ubicacion(jugador).

El objetivo será encontrar el hecho ubicacion(jugador), que podrá tener éxito o fracaso, dependiendo de si lo encuentra o no lo encuentra respectivamente.

El propósito de la reevaluación es el de encontrar una solución distinta a la que ya se haya encontrado en las anteriores evaluaciones del objetivo. De esta forma, lo que hace PROLOG no es otra cosa que navegar entre todas las posibilidades de solución de nuestra Base de Conocimientos, hasta encontrar alguna que satisfaga (que haga tener éxito) a los dos objetivos a la vez. Esto mismo es aplicable a más de 2 objetivos.

Hasta la próxima….

Categories
General

Teoría sesión 8

Entrada de la sesion correspondiente a (09/11/2010)

  • Deducción natural: a partir de unas premisas y una conclusión había que averiguar si esa conclusión era cierta. Esto se deducía haciendo suposiciones y utilizando las reglas de inferencia.

Ejemplos:

  • PRIMERO

Premisas: ja → v , v→ma Conclusión: ja →ma

-1 ja → v

-2 v →ma

3 ja Suponemos que ja es cierta

4 v De lo anterior se deduce v , se utiliza la regla MP en las proposiciones 1 y 3

5 ma MP de 2,4

6 ja →ma Se hace la TD de 3-5

De 3 a 5, hay una subdeducción que debe ir en un corchete, yo la he puesto en negrita.

  • SEGUNDO

Premisas: at→ so v in, in →¬ju   Conclusión: at→ (¬so→ ¬ju)

-1 at→ so v in

-2 in →¬ju

3 at

4 ¬so

5 so v in   MP 1,3

6 in           SD 4,5

7 ¬ju        MP 2,6

8 ¬so→ ¬ju      TD 4,7

9 at→ (¬so→ ¬ju)

  • TERCERO ( Utilización la reducción al absurdo)

Premisas: A → C ^P , V, P → ¬V     Conclusión:   ¬A

Consiste en comenzar la deducción suponiendo como cierto lo contrario de la conclusión, en este caso: A

-1 A → C ^P

-2 V

-3 P → ¬V

4  A

5 C ^P        MP 1,4

6 P               EC 5

7 ¬V            MP 3,6

8 V^¬V     IC 2,7

9 ¬A             IN (Abs) 4-8

  • Matemática discreta

– Fundamentos de grafos

Un grafo es una estructura discreta formada por vértices y aristas. Según se conecten los vértices tenemos distintos tipos de grafos: dirigidos y no dirigidos.

No dirigidos – Ambos sentidos son correctos o posibles.

Dirigidos – Se indican los sentidos posibles.

No dirigido: tiene un par (V, A) donde:

V= {V1,…Vn} conjunto de vértices

A= {e1,…em} es una familia de pares no ordenados de vértices, que llamaremos aristas, cada ek ={Vi, Vj} con Vi, Vj pertenecientes a V.

Los vértices Vi, Vj son extremos de la arista ek .

Familia quiere decir que puede haber más de una arista uniendo el mismo par de vértices.

Ejemplo de grafo no dirigido:

Dirigido: Si las aristas tienen una dirección o sentido son grafos dirigidos.

V= {V1,…Vn} conjunto de vértices

A= {e1,…em} es una familia de pares ordenados de vértices, que llamaremos arcos, cada ek ={Vi, Vj} con Vi, Vj pertenecientes a V.

Los vértices Vi, Vj son extremos de la arista ek .

Ejemplo de grafo dirigido:

En este caso el orden de los vértices en los arcos no es indiferente, hay que poner primero el vértice saliente y después el entrante.

Los extremos de una arista pueden tener vértices incidentes, adyacentes o formando un bucle.

Los extremos de una arista (arco) son incidentes.

Los vértices conectados por una misma arista (arco) son adyacentes.

Un vértice unido consigo mismo es un bucle.

La próxima sesión más cosas….


Categories
General

Práctica sesión 7

Sesión correspondiente al mismo dia de teria (02/11/2010).

Hoy hemos seguido con el proyecto y Carlos no ha avanzado en la teoría. De esta manera la gente atrasada se puede poner al dia y preguntar dudas.

Hasta la próxima….

Categories
General

Teoria sesión 7

Entrada de la sesion correspondiente a (01/11/2010)

En esta sesión vimos lo siguiente:

  • Regla de resolución proposicional para descubrir si un razonamiento es o no correcto

Continuando con lo visto en la anterior sesión se explicará como se debe aplicar la regla de resolución proposicional para ver si un razonamiento es correcto o no.

Una vez se tenga la forma clausal de la fórmula  se debe buscar contradicciones de literales, es decir, una cláusla X y una cláusula Y que tengan “literal” y “¬literal” respectivamente. Una vez se sabe esto se procede a ir eliminando estos literales contradictorios de tal forma que al final se obtenga una cláusula resolvente, con esta cláusula se sabe si el razonamiento es correcto o si no lo es.

A continuación vimos una serie de ejemplos que los podemos encontrar en los apuntes de clase

  • Demostración por deducción natural

El objetivo es demostrar la validez de un razonamiento, es decir de comprobar que una conclusión “Q” se obtiene de un conjunto de premisas Pi mediante la aplicación de un conjunto de reglas de inferencia del sistema a dicho conjunto de premisas.

El objetivo de este tipo de deducción es el de obtener, de forma sistemática, todas las conclusiones que se deducen de un conjunto de premisas usando reglas de inferencia para determinar la validez del razonamiento.

– Subdeducciones

Uno de los aspectos cruciales de la deducción natural son las subdeducciones. En cualquier paso de nuestra deducción podemos introducir un supuesto provisional que debe ser cancelado en alguna línea posterior. Desde el supuesto hasta la cancelación tendremos una subdeducción. Para poder finalizar una demostración deberemos haber cancelado todos los supuestos que hayamos hecho.Los supuestos provisionales son una herramienta muy potente ya que nos permiten suponer lo que nosotros queramos. Pero para poder finalizar una demostración deberemos haber cancelado todos los supuestos que hayamos hecho. Por tanto, la cancelación de supuestos provisionales se convierte en una pieza clave de las deducciones naturales.

Cuando un supuesto es cancelado las fórmulas interiores son inaccesibles. La utilización de subdeducciones nos permite “modularizar” nuestras deducciones, planteándonos subobjetivos más sencillos que el objetivo final y que en su conjunto nos lleven a la conclusión que buscamos. Una vez realizada una subdeducción, esta podría considerarse como una regla derivada y utilizarse a partir de ese momento. Estas reglas derivadas permiten ir incrementando nuestro sistema de reglas.

Componentes de una deducción

En una deducción tenemos una secuencia finita de fórmulas tales que cada una de ellas puede ser:

1.- Supuesto inicial o premisa.

2.- Supuesto provisional

3.- Una fórmula que se deriva lógicamente de otra (s) por inferencia inmediata.

1.- Supuestos iniciales o premisas: son fórmulas que se consideran hipotéticamente dadas desde el principio de la deducción. Los argumentos pueden tener un número finito de premisas. También hay deducciones que están exentas de premisas como es el caso de las demostraciones.

2.- Subdeducciones: son líneas que se introducen provisionalmente en el transcurso de la prueba y deberán ser canceladas antes del establecimiento de la conclusión. Es importante que se entienda bien el proceso de cancelación para que pueda ser usado adecuadamente, ya que si no tenemos cuidado podemos demostrar conclusiones que no se siguen de las premisas dadas.

3.- Líneas que proceden de otra(s) anterior(es) por aplicación de una regla de inferencia: a estas líneas las llamamos consecuencias lógicas inmediatas de otra(s) anterior(es). Llamamos inferencia inmediata a la obtención de una fórmula a partir de otra(s) por la aplicación de una sola regla de inferencia.

Las reglas de inferencia son unas fórmulas ya definidas y las podéis encontrar aquí:

Hoja de las reglas de inferencia

Seguidamente a esto vimos numerosos ejemplos que los podemos encontrar en los apuntes de clase de cada uno.

Para terminar la sesion falta comentar:

Demostración por el método directo:

Se utiliza para demostrar la verdad de una fórmula condicional. Para ello se asume que es cierto el antecedente. El método se aplica cuando se quiere deducir una fórmula condicional X → Y. Proceso deductivo del método directo:

  1. Se añade a las líneas de deducción una premisa auxiliar que será la fórmula X.
  2. Esta premisa X abre una subdeducción dentro de la deducción en la que se encuentra.
  3. A partir de ella se construye una argumentación en la cual podemos utilizar fórmulas anteriores que aparezcan en la deducción y reglas de inferencia hasta obtener la fórmula Y.
  4. En este punto se concluye la prueba y queda establecida la validez de X → Y.

Demostración por el método de reducción al absurdo:

En una demostración aparece una contradicción cuando se deduce una fórmula y su negada. El método de reducción al absurdo se fundamenta en la estrategia que consiste en suponer explícitamente la negación de la proposición a demostrar, a partir de esta hipótesis, se trata de generar una contradicción. Si aparece dicha contradicción, es que la suposición es errónea.

Y hasta aqui poudo contar, la siguiente sesion más.

Categories
General

Práctica sesión 6

Sesión correspondiente al mismo dia de teoria 26/10/2010.

En la clase de hoy Carlos ha explicado diversos aspectos que voy a comentar a continuación:

  • Función random

La estructura de la función random es → random(X), donde X será el número hasta el cual podremos llegar sin incluirlo a él mismo, si ponemos 10 comenzará por el 0 y llegará hasta el 9.

Ejemplo visto en clase:

golpear(QUIEN):- F is random(10).

Como se puede observar no empleamos F = random(10) porque el operador igual realiza asignaciones tomando en este caso random(10) como un átomo. Para evitar esto usamos “is” que nos sirve para operaciones aritméticas.

Pero aún asi hay un problema, si tenemos:

vida(jugador, 25).

Si se desea que al golpear al jugador se reste el número generado por random a la vida actual del jugador, podriamos pensar que con lo siguiente resultará:

vida(QUIEN, X), Y is X-F.

Ante esto tenemos que aclarar diversas cuestiones:

-Ponemos Y porque no se puede usar X, no está permitido usar la misma variable a ambos lados.

-Aunque puede parecer que el problema esté resuelto, cuando restemos a X la F y mostremos Y (donde guardamos el resultado) nos aparecerá el resultado correcto, pero si golpeamos nuevamente, los 25 de vida (vida inicial del personaje) no habrán variado, no podemos modificar de esta forma un hecho mientras el programa esté en ejecución.

Para poder arreglar este problema existen los predicados dinámicos.

  • Predicados dinámicos

·Nos permite añadir o eliminar cláusulas en nuestra base de conocimientos durante la ejecución.

·Se pueden añadir y eliminar hechos o reglas de cualquier predicado que sea dinámico, aunque lo habitual es añadir o eliminar hechos sólamente.

Nos permitirán modificar los datos de nuestra base de conocimientos durante la ejecución de nuestros programas.

Existen distintos tipos de predicados dinámicos y cada uno de ellos nos permitirá modificar de una manera u otra nuestros programas en tiempo de ejecución:

1-dynamic – Nos permite crear predicados dinámicos. // :-dynamic predicado/aridad

2-assert – Nos permite introducir hechos de un predicado dinámico. //assert(predicado(Variable/s)).

3-listing – Nos lista todo el contenido de la base de conocimientos actualmente. Aunque nombre de forma distinta a las variables.

4-retract – Elimina hechos existentes de un predicado de la base de conocimientos. // retract(predicado(Variable/s).

Si tratamos de borrar un hecho inexistente en nuestra base de conocimientos nos dirá que “No”, pues no es posible eliminar un hecho inexistente.

Si ponemos ?-retract(predicado(_)) borrará el primero que encuentre.

5-retractall – Elimina todos los hechos existentes de un predicado de la base de conocimientos. //retractall(predicado(Variable/s).

6-abolish – Elimina todo absolutamente, tanto hechos como predicados dinámicos. //abolish predicado/aridad.

  • Operador “->”

-Se asocia a la estructura condicional IF…THEN…ELSE

“a → c” es igual a IF “a” THEN “c”

“a → c; e” es igual a IF “a” THEN “c” ELSE “e”

-Es similar a “(a, c); e”.

-Si alguna de las partes tuviera más de 1 objeto se deben usar paréntesis.

Ejemplo: (a, b) → (c, d);(e, f)

Como se puede observar ponemos “a” y “b” entre paréntesis, al igual que las variables de las otras dos partes.

-Si la estructura está contenida en el interior de una regla, para no afectar al resto introducimos toda la estructura entre ( ).

Ejemplo: b, (a → c; e), f

Esto es todo!!! que no es poco

Categories
General

Teoria sesión 6

Entrada de la toeria dada el dia 26/10/2010

Esta semana ha sido cargadita, al principio de la sesión hemos repasado los conceptos de tablas de verdad y contraejemplo mediante ejemplos y en la segunda parte de la sesión la profesora a puesto el turbo con más conceptos que intentaré explicar a continuación.

El siguiente punto pertenece todavia a “Fundamentos teóricos para validar semánticamente un razonamiento”

  • Fórmula y conjunto de fórmulas satisfacible e insatisfacible

-Una fórmula lógica es satisfacible (consistente) si existe alguna interpretación que la hace verdadera.

-Una fórmula lógica es insatisfacible si y sólo si es falsa para todas sus interpretaciones.

-Conjunto de fórmulas satisfacible: si existe una interpretación que es un modelo para todas las fórmlas del conjunto.

-Conjunto de fórmulas insatisfacible: si no existe ninguna interpretación que sea modelo (que haga verdadero el conjunto) para todas las fórmulas del conjunto .

Pasamos a ver ahora otro punto del tema:

  • Estudio de la validez de un razonamiento a partir del conjunto de fórmulas que lo conforman

Para demostrar la validez de un razonamiento nos basaremos en el siguiente resultado:

Teorema

Veremos cómo aplicamos los conocimientos aprendidos para ver si un conjunto de fórmulas es correcto o no según si es satisfacible o no.

Un razonamiento R: P1, P2, …Pn = Q es correcto si y sólo si, el conjunto de fórmulas C={P1, P2, …Pn, ¬Q} es insatisfacible

Todas las fórmulas juntas no pueden ser V al mismo tiempo si son premisas V y “Q” F, entonces decimos que es insatisfacible o una falacia.

Demostración:

Dem: P1, P2,… Pn ⇒ Q es correcto
⇒ Q es consecuencia lógica de P1, P2,… Pn
⇒ La fbf: P1 ∧ P2 ∧… ∧ Pn → Q es tautología
⇒ ¬ (P1 ∧ P2 ∧ Pn ∧ ¬Q) es tautología (por equivalencias)
⇒ (P1 ∧ P2 ∧ Pn ∧ ¬Q) es insatisfacible ⇔ C = {P1, P2… Pn, ¬Q } es insatisfacible.

Estudio del conjunto de fórmulas aplicando la regla de resolución

Tenemos que demostrar que C={P1, P2, …Pn, ¬Q} es insatisfacible. Para ello hacemos:

·Aplicamos la regla de resolución sobre “C” hasta obtener dos fórmulas contradictorias, esto significará que “C” es insatisfacible.

·La regla de resolución se aplica sólo a fórmulas escritas en forma clausal. Luego antes de su aplicación debemos obtener la forma clausal de las premisas y de la negación de la conclusión.

Forma clausal de una fórmula

Consiste en transformar fórmulas en otras fórmulas más simples de evaluar. Dichas fórmulas se caracterizan por la inexistencia del implicador. Una fórmula está escrita en forma clausal si dicha fórmula está representada por su conjunto de cláusulas.

-Cláusula: disyunción de literales.

-Literales: fórmula atómica afirmada o negada.

-Cláusula vacía: cláusula sin literales. Se representa por [] y su valor es siempre contradicción.

Proceso para obtener la forma clausal de una fórmula

Aplicar, si es el caso, cada uno de los siguientes pasos a una fórmula dada:

Paso 1– Eliminar implicadores y coimplicadores mediante la aplicación de la regla:

A → B = ¬A ∨ B

Paso 2– Normalizar negadores mediante la aplicación de reglas:

·Leyes de Morgan: ¬(A ∨ B) = ¬A ∧ ¬B; ¬(A ∧ B) = ¬A ∨ ¬B

·Ley del doble negador: ¬¬A = A

Paso 3- En fórmulas cuantificadas, renombrar variables, si es necesario, para que dos cuantificadores no coincidan en el nombre de variable que cuantifican.

Paso 4- Eliminar cuantificadores existenciales aplicando el criterio de Skolem.

Paso 5- Poner los cuantificadores universales a la cabeza de la fórmula y no volver a escribirlos en los pasos sucesivos, ya que llegados a este punto todas las variables de la fórmula están cuantificadas universalmente, por lo que no es necesario especificarlo.

Paso 6- Aplicar, si es necesario, la regla distributiva: A ∨ (B ∧ C) = (A ∨ B) ∧ (A ∨ C) para obtener una fórmula cuya conectiva principal sea la conjunción. Reducir y simplificar la fórmula aplicando reglas de equivalencia.

Paso 7- Extraer las cláusulas de la fórmula que serán cada una de las disyunciones de la fórmula obtenida en el paso anterior.

Paso 8- Las cláusulas no pueden coincidir en los nombres de argumentos variables, luego cambiar, si es necesario, los nombres de los argumentos variables coincidentes. Las constantes pueden coincidir.


  • Método de Resolución de Robinson

Con este método se comprueba si un conjunto de cláusulas es insatisfacible. Esta prueba es fundamental en los sistemas deductivos automáticos, como el sistema Prolog.

Regla de Resolución Proposicional

La regla de resolución para una fórmula proposicional obtiene para dos cláusulas C1 y C2, una nueva cláusula C3 llamada resolvente de C1 y C2 que resulta ser una consecuencia lógica de ellas. Para ello, debe suceder lo siguiente: C1 debe contener, al menos, un literal L y C2, al menos, un literal ¬L. La cláusula C3 será la disyunción de todos los literales de C1 y de C2 menos los literales L y ¬L.

El resolvente de dos cláusulas es una cláusula que es consecuencia lógica de ellas.

Ejemplos:

P y ¬P v Q   C3=Q

P v Q y ¬P v Q   C3=Q

P v Q y ¬P v ¬Q   C3=Q v ¬Q ; P v ¬P (dos posibilidades)

¬P y P   C3=nada

P v Q y ¬P v R   C3=Q v R

Con todo esto, a partir de un conjunto de cláusulas C, si la cláusula resolvente es la cláusula vacía, C es insatisfacible, por tanto el razonamiento es correcto. Si no se encuentran cláusulas resolventes, C no es insatisfacible.

Y si no me falla la memoria ya he terminado con la teoria de hoy que como vereis no es poca, ahora solo falta ponerla en práctica y ver las dudas que salen

Un beso corazones!!!!

Categories
General

Práctica Sesión 5

Sesión correspondiente al mismo dea de teoria osea (19/10/2010).

Hoy Carlos no ha avanzado en la teoria y ha dejado la clase para explicar posibles errores o avisos de compilador que nos pueden aparacer al realizar el programa en prolog.

También se han resuelto dudas que habia sobre la fase 3 del programa

Entre los mensajes que nos puede sacar prolog de error o aviso están los siguientes:

Correcciones:
-Si no escribamos correctamente una regla o predicado, prolog nos ayudará y nos muestrará la posible corrección, si entiende algo de lo que hemos puesto, dándonos la opción de no ejecutar la corrección o de ejecutarla, en cuyo caso ejecutará el predicado o regla que él crea correcto.
?- vcino(carles_logicus).
Correct to: “vecino(carles_logicus)”? yes

Menú de ayuda
-Aparece al pulsar Ctrl+C o una tecla sin funcionamiento definido.
Action (h for help) ? Options
a: abort b: break
c: continue e: exit
g: goals t: trace

Cláusulas separadas
-Este mensaje nos aparecerá al compilar pero no es un error, nos indica que no tenemos todas las sentencias de “X” predicado juntas. Quizá tengamos un “vecino” en la primera línea y después de otros predicados, el siguiente “vecino”.
Warning: Clauses of vecino/1 are not together in the
source-file

Procedimientos indefinidos
-Llamanda a una “función” con el número de argumentos incorrecto.
-Ejemplo
?- lindes_zona(‘Bajo B’, X, Y, Z).
ERROR: Undefined procedure: lindes_zona/4
ERROR: However, there are definitions for: lindes_zona/5

Hemos puesto 4 argumentos pero “lindes_zona” tiene 5.

Variables Singleton
-Se inicializan a algún valor y pero no se utilizan en ninguna operación. Es decir, el intérprete nos avisa de que esa variable no se utiliza en ninguna parte.

Ejemplo:

quien_grita :- ente(persona,P,H), ente(monstruo,M,H),
write(‘aaaahhh’).

P y M generarán el mensaje de “Singleton Variable”.

Categories
General

Teoria sesión 5

Hola a tod@s estra entrada corresponde a lo dado en la sesión 5 del (19-10-2010) en esta sesión la profesora a puesto el turbo pero intentaré resumirlo todo lo mejor que pueda.

Hemos comenzado terminando de ver los fundamentos teóricos para validar semánticamente un razonamiento mediante:

  • Interpretacion de los cuantificadores

Los cuantificadores se interpretan en el dominio de referencia D de la siguiente forma:

a) Una fórmula cuantificada universalmente respecto a “x” es “V” si para cualquier elemento del dominio asignado a “x”  la                       fórmula es “V”. “F” en otro caso.   (V= verdadera; F= falsa)

b)Una fórmula cuantificada existencialmente respecto de “x” es “V” si para algún elemento del dominio asignado a “x”                                  la fbf  es “V”. “F” si todos son falsos.

  • Tipos de interpretaciones

Con la ayuda de las interpretaciones vamos a descubrir si un razonamiento es verdadero o no. Existen dos posibles tipos de                 interpretaciones:

Interpretación modelo: una interpretación de una fórmula bien formada es modelo si bajo esta interpretación la fórmula se                    interpreta como verdadera.

Interpretación contramodelo o contraejemplo: una interpretación es contramodelo si bajo esta interpretación la fórmula se                 interpreta como falsa.

  • Número de interpretaciones de una fórmula

El número de interpretaciones que tiene una fórmula depende del número de subfórmulas atómicas distintas que aparezcan en            dicha fórmula.

Para fórmulas del lenguaje de proposiciones tenemos del orden de 2n interpretaciones para una fórmula de n variables.

Ejemplo: p ∧ q → r ∨ q

El número de interpretaciones es 23, ya que tiene n=3 variables proposicionales distintas.

  • Clasificación semántica de fórmulas lógicas atendiendo a sus interpretaciones

Clasificación semántica de una fórmula atómica: verdadera o falsa.

Clasificación semántica de una fórmula molecular: Se clasificará en función del conjunto de todas las interpretaciones de las que          dispone dicha fórmula. Una fórmula molecular “A” se podrá clasificar semánticamente como:

-Tautología o válida: cuando la fórmula “A” es verdadera para toda interpretación “I”(toda interpretación es modelo).

-Contradicción o no válida: cuando la fórmula “A” no es verdadera bajo ninguna interpretación (toda interpretación es                             contramodelo).

-Contingencia o Indeterminación: cuando existe al menos una interpretación que hace que la fórmula “A” se interprete como                verdadera y al menos otra interpretación que la haga falsa (algunas “I” son modelos y otras contramodelos).

  • Consecuencia lógica

Es la relación entre las premisas y la conclusión de un argumento deductivamente correcto. Se caracteriza porque es necesaria            y formal. Según la teoría semántica una conclusión es una consecuencia lógica de las premisas cuando no es posible que las                    premisas sean verdaderas y la conclusión falsa, o cuando todo modelo de las premisas es también un modelo de la conclusión.

A continuación hemos seguido la clase viendo los métodos de las tablas de verdad y el método del contraejemplo:

  • Métodos de las tablas de verdad

Una tabla de verdad es una tabla que muestra el valor semántico de una fbf molecular para cada combinación de valores de                   verdad que se pueda asignar a sus componentes (fbf atómicas y conectores).

Para hacer una tabla de verdad se crea un cuadro de doble entrada que tendrá tantas filas como interpretaciones disponga la                 fórmula. Se coloca una columna por cada variable que aparezca en la fbf.

Una vez sabemos esto, vamos rellenando cada columna de la siguiente forma:

1a variable: 2n/2 valores V seguidos de 2n/2 valores F; hasta 2n.

2a variable: 2n/22 valores V seguidos de 2n/22 valores F; hasta 2n.

nava variable: 1 valor V seguidos de 1 valor de F; hasta 2n.

  • Método del contraejemplo

Un contraejemplo es un ejemplo que prueba la falsedad de un enunciado. Un contraejemplo para un razonamiento es la existencia de una interpretación que asigne valores verdaderos a las premisas y falso a la conclusión.

Para comprobar la existencia de un contraejemplo en la resolución de un problema se supone la existencia de dicha interpretación en el problema y se estudia el comportamiento de cada una de las fórmulas del argumento, buscando posibles contradicciones.

Se parte del supuesto de que es  un razonamiento incorrecto y si no conseguimos demostrarlo entonces será correcto.

Por hoy he terminado, otro día más, pero no mejor, aqui en el blog de averiguar si estudir lógica es lógico.

Categories
General

Práctica Sesión 4

En la clase de hoy (05/10/2010.) hemos visto las reglas de Prolog y indicaciones para poder realizar la fase 3 del videojuego.

En esta practica interactuamos con el usuario pidiéndole datos, en función de lo que elija el programa hará una cosa u otra .

Para obtener informacíon del usuario por el teclado y poder guardarlo en una variable y después utilizarlo usaremos el predicado read().

Al colocar ?-.read(Y) el interprete del programa solicitará que escribamos el valor de Y, una vez introducido la Y valdrá el valor introducido

Ejemplo:

?-read(Y).
|:pepe.
Y= pepe

Con este predicado podremos pedir al usuario o jugador la accion a realizar en algún momento de la ejecucion del programa.

Otro concepto a destacar en lo aprendido hoy son las descripciones, el usuario del videojuego debe saber donde está para orientarse y con que personajes está, para esto tenemos que describir el entorno donde se encuentra y los personajes.

Para todo ello lo que tenemos que hacer es definir un predicado que muestre la descripción de cualquier ente (lugar o personaje) del videojuego. Para ello usaremos:
mostrarDescripcion(Tipo, Nombre): donde el ente del tipo “Tipo” con el nombre “Nombre”
Ejemplo:
?- mostrarDescripcion(vecino,’Chusita’).
‘Rubia explosiva…..’

Por hoy nada más ahora es tiempo de trabajar en Prolog y realizar todas las tareas pedidas que no son pocas

Hasta otra!!!!

Categories
General

Teoria Sesión 4

Hola un día mas, en la entrada de hoy voy a hablar de lo dado en la sesión del 5/10/2010

En esta sesión terminamos de dar lógica de predicados y más tarde, comenzamos a aprender como demostrar la verdad de un razonamiento.

Cuantificadores:

En esta sesión hemos aprendido que normalmente, cuando aparece un “todos los individuos” se coloca ∀, cuando aparece un “no todos lo individuos” se coloca ¬∀ , cuando hay un “algún individuo” empleamos la ∃ y cuando apreciamos un “nadie”  empleamos un ¬∃  al principio de la formalización.

  • Cuantificador universal  ∀ : quiere decir que todos los sujetos X si verifican la propiedad P entonces verifican la propiedad Q.  Las expresiones que van acompañadas del cuantificador universal siempre llevan el implicador →.
  • Cuantificador existencial ∃ : quiere decir que existe algún sujeto X que verifica el predicado P y que verifica el predicado Q. Las expresiones que van acompañadas del cuantificador existencial siempre llevan la conjunción ^.

La negación de ¬∀ significa no todos.

La negación de ¬∃ significa ninguno.

Cuando tenemos una fórmula con uno de los dos cuantificadores y queremos cambiar uno de ellos por el otro tenemos que tener en cuenta las Leyes de Equivalencia:

A→B Ξ ¬(AνB) Ξ ¬A→¬B Ξ ¬(A^¬B)

Enunciado cuantificadores:

¬x P(x)  no todos los x tienen la propiedad P

x¬P(x)  hay algún x que no tiene la propiedad P

∀x¬P(x)  todos los x no tienen la propiedad P

¬∃xP(x)  no existe ningún x que tenga la propiedad P

¬x¬P(x)  no hay ningún x que posea la propiedad no P

xP(x)  todos los x verifican P

¬∀ x¬P(x)  no todos los x carecen de la propiedad P

∃xP(x)  hay algún x que tiene la propiedad P

Demostración semántica de razonamientos:

Definiremos la semántica de la lógica de primer orden como la interpretación de elementos de fórmulas o los aspectos del significado, se podría decir que es la teoría que nos da reglas para hallar el valor de verdad de una fórmula, demostrar razonamientos y detectar falacias o razonamientos no correctos.

Para hallar el valor de verdad de una fórmula hay que tener presente el principio de bivalencia: una proposición es verdadera o falsa.

Para poder demostrar los razonamientos tenemos que interpretar                                                                      Interpretar: Dar significado a los componentes del problema y extraer conclusiones que serán verdadesras o falsas según la información que nos den

Cada conectiva genera una interpretación, para ver que hacer tendremos que elaborar las tablas de verdad:

P Q P ^ Q P v Q P Q
V V V V V V V V V V V V
V F F V F F V V F V F F
F V V F F V F V V F F V
F V F F F F F F F F V F