martes, 28 de agosto de 2012

Aplicación de la lógica proposicional - Juegos

Una de las aplicaciones mas comunes de la lógica proposicional es la que se usa en los juegos, ya sean de azar o estrategia, su aplicación en este campo ha sido aplicado y estudiado durante muchos años, por muchos científicos y matemáticos que por medio de la lógica buscan obtener los mejores resultados en los juegos.

"La lógica proposicional es la parte de la lógica que estudia la formación de proposiciones complejas a partir de proposiciones simples, y la inferencia de proposiciones a partir de proposiciones, pero sin tener en cuenta la estructura interna de las proposiciones más simples" [1]

 Los jugadores plantean estrategias para ganar en estos juegos, pero estas estrategias solo forman parte de lo que es la lógica proposicional. Los jugadores que conocen mas estas estrategias en la lógica del juego son los que cuentan con mas probabilidades de éxito contra uno que solo juega por instinto, ellos lo llaman "estrategia ganadora".

Veamos un ejemplo pero primero una recordada de lo que es la lógica proposicional y sus conectivas.

Imagen de wikipedia

Juego del gato

Con esto veamos este pequeño ejemplo clásico el juego del "gato" donde hay 2 jugadores y el objetivo es obtener 3 de las mismas figuras en la misma dirección el primero que lo logre gana.
(Este es un ejemplo que hice basado en el ejemplo de la bibliografía [2])

De acuerdo al escenario planteado, vemos las posibilidades de cada uno de los dos jugadores gracias a un árbol y obtenemos quien tiene mas probabilidad de éxito.

Como se puede observar de acuerdo a la opción inicial fueron desenvolviéndose las opciones de cada escenario posible para asi concluir quien tiene mas probabilidades de éxito y como ganar al juego, si cada jugador conociera y estas posibilidades podría ir siguiendo las reglas de la lógica proposicional y asi conocer que movimiento hacer.
Este ejemplo se resuelve por el algoritmo de Zermelo. [2]

Esto aplicaría para la infinidad de juegos que existen para dos jugadores.
Otros ejemplos de juegos que se pueden resolver con la lógica proposicional pero aun más complejos que estos, son ajedrez, damas, sudoku, muchos juegos de cartas, solo por mencionar algunos.

Bibliofilia:
[1] http://www.iep.utm.edu/prop-log/
[2]http://www.logicinaction.org/docs/ch7.pdf

jueves, 23 de agosto de 2012

Ecuación diferencial de primer orden


Una ecuación diferencial es una ecuación cuya incógnita es una función y en la que aparecen algunas derivadas de esa función. Si la función que interviene tiene sólo una variable independiente, la ecuación se llama ecuación diferencial ordinaria (E.D.O.).

Si la función tiene varias variables independientes, se dice que es una ecuación diferencial en derivadas parciales (E.D.P.). En este tema restringimos nuestra atención a las ecuaciones diferenciales ordinarias.

El orden de una ecuación diferencial viene determinado por la derivada de orden más alto que aparece en dicha ecuación. En su forma más general una ecuación diferencial de orden n se puede escribir como:      

    Se presentan a continuación algunos ejemplos:

Una función y = f(x) se dice que es una solución de una ecuación diferencial si la ecuación se satisface al sustituir, en ella, y y sus derivadas por f(x) y sus derivadas respectivas.

Ecuaciones de variables separables (Explicación)
En primer lugar, observemos que una E.D.O. de primer orden que es fácil resolver es 

Ec. 1
donde f es una función integrable. Para resolverla basta integrar ambos miembros con respecto a x y así se obtiene
Ec. 2
De modo que su solución general viene dada por ec. 2, y en ella se recogen todas las soluciones de la
ecuación ec 1.
Más generalmente, toda ecuación de primer orden y'= f(x, y) en la que y'
pueda expresarse como
producto de dos funciones, una que depende sólo de la variable x, y otra que depende sólo de la variable
y, esto es, de la forma
Ec. 3
se llama ecuación de variables separables.

Para resolver ec. 3 se multiplican ambos miembros por h (y) para obtener
Ec. 4

Ahora se observa que si y = f(x) es una solución de ec. 4, al tener que verificar dicha ecuación, entonces
cumple

por lo que al integrar se obtendrá
Ec. 5

Pero como dy = f'(x)dx, entonces ec. 5 se puede escribir así:
Ec. 6


De modo que ec. 6 constituye una familia uniparamétrica de soluciones, que generalmente vienen expresadas
de forma implícita.

El razonamiento anterior nos sugiere un método para resolver la ecuación 3.
De la ecuación 3 pasamos a h(y)dy = g(x)dx y finalmente integraremos ambos miembros para obtener
la solución general de la ecuación dada.

Ecuaciones de variables separables (Ejemplo)


Para este ejemplo resolveremos la siguiente ecuación por el método de ecuaciones de variables separables.

y'= y2− 4

Escribimos la ecuación en la forma 





A continuación integramos ambos miembros, para lo cual utilizaremos
Así se obtendrá

Por ultimo, nadamas despejamos:


También existen otros  métodos de resolución para este tipo de problemas uno de ellos es Ecuaciones diferenciales homogéneas, de esos podríamos hablar en otra entrada posterior.


sábado, 18 de agosto de 2012

Tarea 2 - Tautología

Para la tarea 2 se tenía que elaborar una expresión que fuera Tautología. Aquí una pequeña definición de que es la Tautología: es una fórmula bien formada de un sistema de lógica proposicional que resulta verdadera para cualquier interpretación; es decir, para cualquier asignación de valores de verdad que se haga a sus fórmulas atómicas. La construcción de una tabla de verdad es un método efectivo para determinar si una fórmula cualquiera es una tautología o no.

Todas las conectivas lógicas que ocupan a la lógica proposicional son estas y la forma en resolver cualquier expresión.


Bueno, esta es la expresión que yo construí:

P = (p  ^  q)  v  (r  v p)  v  ¬ r


Empecé poco a poco haciendo prueba y error con ayuda de una tabla de la verdad y aquí está la tabla que se construyó al final.


Como se puede observar todos los resultados finales resultaron 1, que es igual a verdadero el objetivo principal de la Tautología. Cuenta con 3 variables (p, q, r), tiene al menos 4 ocurrencias conectivas (conjunción: ^) (Disyunción: v) y una Negación (¬).

Por último, un pequeño árbol con sus respectivas subdivisiones de la expresión que formule.



martes, 14 de agosto de 2012

Tarea 1 - Conceptos y Ejemplos

 ¿Qué es la validación de software?
La validez de la información de la medición es de interés para todos aquellos que la utilizan o son afectados por ésta. Las mediciones, particularmente las realizadas en el ensayo y la calibración, a menudo involucran procesos complejos, utilizan una gran variedad de software, hardware, personas y formatos de datos.
El uso de software apropiado le facilita a la organización disminuir los errores y bajar los costos, compartir los datos, utilizar conjuntamente diferentes componentes, guías y prácticas para proveer procesos eficaces y eficientes. El principio de mejora continua debe ser aplicado también al software.
Las pruebas de validación en la ingeniería de software son el proceso de revisión que el sistema de software producido cumple con las especificaciones y que cumple su cometido. Es normalmente una parte del proceso de pruebas de software de un proyecto, que también utiliza técnicas tales como evaluaciones, inspecciones, y tutoriales. La validación es el proceso de comprobar lo que se ha especificado es lo que el usuario realmente quería.

¿Para qué sirve?
La validación del software es necesaria ya que proporciona un alto grado de confianza y seguridad en el software y en los resultados que se obtienen al aplicarlo.
Comprobar que se satisfacen los requisitos:
·         Se usan la mismas técnicas, pero con otro objetivo.
·         No hay programas de prueba, sino sólo el código final de la aplicación.
·         Se prueba el programa completo.
·         Uno o varios casos de prueba por cada requisito o caso de uso especificado.
·         Se prueba también rendimiento, capacidad, etc. (y no sólo resultados correctos).
·         Pruebas alfa (desarrolladores) y beta (usuarios).

¿Cómo se valida?
Para los laboratorios de ensayo y calibración que se encuentran acreditados o en proceso de acreditación, según los requisitos establecidos en la Norma ISO/ IEC 17025 (NVC 2534: 2000) “Requisitos generales para la competencia de los laboratorios de ensayo y calibración”, la validación del software desarrollado por el usuario es un requisito técnico que debe ser cumplido con el mismo rigor que el resto de los requisitos. La calificación de “adecuado para el uso”, aplicada a un software relacionado con los procesos de ensayo o calibración, es una garantía de que la influencia del software sobre el resultado de la medición está bajo control, al realizar el análisis del proceso de medición como sistema, único enfoque que evalúa integralmente el proceso de medición.

Ciclo de vida de una validación
No es recomendable el uso de un modelo específico del ciclo de vida del software.
Los diseñadores del software deben establecer un modelo del ciclo de vida del software que sea apropiado a su producto y organización. El modelo del ciclo de vida que se seleccione debe cubrir desde la creación del software hasta el retiro del uso (desinstalación) del mismo.
·         Planificación de la calidad.
·         Definición de los requisitos del sistema.
·         Especificación detallada de los requisitos del software.
·         Especificación del diseño del software.
·         Implementación (construcción o codificación) .
·         Prueba.
·         Instalación.
·         Operación y apoyo.
·         Mantenimiento.
·         Desinstalación.
Empresa que realiza este tipo de validación
Software Quality Sistem S.A.
Los servicios de Validación y Verificación independiente de SQS permiten incorporar a lo largo de sus procesos de desarrollo actividades de calidad de software. Esto permitirá mejorar y asegurar la calidad del desarrollo durante todo el proceso. Las ventajas son claras, un mayor control sobre el proceso, una identificación temprana de errores y problemas y una reducción drástica de los costes para subsanar estos errores. Una parte importante de los proyectos de Validación y Verificación que lleva a cabo SQS, se deben a la necesidad en el cumplimiento de normativas específicas de sectores como el ferrocarril, la industria farmacéutica o la aeronáutica entre otros.

Que pruebas y test realiza la empresa
Como parte de estrategia completa de Validación y Verificación, es necesario identificar las actividades que se incorporarán a lo largo del proceso de desarrollo. El equipo de consultoría de SQS es experto en las siguientes actividades:
·        Diseño e Implantación de Entornos de Pruebas.
·        Coordinación de procesos de prueba. Definición de las tareas de test.
·        Revisiones Formales de Documentación.
·        Revisiones de Código.
·        Pruebas Unitarias y de Integración.
·        Pruebas Funcionales y de Aceptación.
·        Métodos Estáticos y Dinámicos.
·        Implementación de Estándares de Calidad y Seguridad.
·       Formación del personal cliente.
Los principios de actuación de SQS en los procesos de Verificación y Validación son:
·       Independencia entre equipos de desarrollo/ ingeniería y pruebas.
·        Enfoque formal del proceso de test.
·       Automatización del proceso de test (Hardware y Software). Repetitividad de los ciclos de prueba.
·       Certificación de operación acorde con requerimientos del sistema y de su entorno.
·       Compromiso con Resultados. Establecimiento de Principio y Fin medibles

Problemas de software de la historia

Error de división de Intel Pentium
El 30 de octubre de 1994 el profesor Thomas Nicely de la Universidad de Lynchburg descubrió un error en la unidad de coma flotante del Intel Pentium. Nicely observó que algunas operaciones de división devolvían siempre un valor erróneo por exceso. Otras personas confirmaron rápidamente estos errores en las divisiones. Este fallo de diseño se hizo notorio muy rápidamente y se le dio el nombre de error FDIV del Pentium (FDIV es la instrucción de división en coma flotante de los microprocesadores x86). 

Consecuencias
Intel negó inicialmente la existencia del problema. Más tarde, Intel remarcó la insignificancia de los defectos de sus microprocesadores, queriendo tranquilizar a los usuarios. Intel se negó a sustituir sistemáticamente los microprocesadores defectuosos; sin embargo, si una persona podía demostrar que había sido afectada por el error, entonces Intel procedería a cambiar su procesador. Aunque evaluaciones efectuadas por organismos independientes mostraron la poca importancia de las consecuencias de error y que el efecto era desdeñable en la mayoría de las ocasiones, se provocó una situación en la que los usuarios de Intel Pentium demandaban el reemplazo de los procesadores defectuosos. Empresas como IBM se unieron a la denuncia. Al final, Intel se vio forzada a aceptar sustituir todos los microprocesadores defectuosos, lo que le representó un coste enorme.
El fallo estaba presente tan sólo en algunos modelos del procesador Pentium. Todos los modelos de procesador de familia Pentium que funcionan a una frecuencia de reloj de por lo menos 120 MHz tienen el error corregido.

Realizando esta operación en la calculadora de Windows se podía comprobar el error.
§  4195835.0/3145727.0 = 1.333 820 449 136 241 002 (Resultado correcto)
§  4195835.0/3145727.0 = 1.333 739 068 902 037 589 (Pentium con error)

Problema de frenos Toyota

A finales del 2009 y todo el 2010 se presentaron muchas quejas de automovilistas por el auto Prius de 3era generación.
Los países que presentaron quejas en estos modelos fueron EEUU y Japón.
Al principio se creía que todo era problema de unas alfombrillas entrometidas que estaban estorbando al momento del frenado, esto provoco más investigación por parte de las organizaciones correspondientes.

Tiempo despues se determino que todo era problema del software que se habia instalado para el control de los frenos de ese marca, Toyota admitio su error y comenzo a hacer una actualizacion con un parche en el software para los modelos posteriores, pero a los que ya estaban en circulación tuvo que convocar a los clientes a que llevaron su auto a revision para despues instalarles la actualización en los autos hibridos.
Toyota explico que el error solo era cuando el auto estaba acelerando poco y despues intentaba frenar, surgia el error. A altas velocidades el software funcionaba todo bien.
Todo esto le costo a la empresa millones de dolares y perdida de muchos clientes y demandas por los clientes que se habian visto afectados por este imperfecto de software.
Bibliografía.

Presentación Inicial


Siguiendo con la idea del proyecto integrador 1 se plantea la implementación de un lector de huellas digitales para la identificación de una persona para múltiples usos, en este caso se planea hacerlo para una votación.
Podríamos decir que los seres humanos tienen tarjetas de identificación integradas, muy fácilmente accesibles: sus huellas digitales, las cuales son diseños virtualmente únicos.

Una de las características de las huellas digitales son las crestas y valles, la estructura de crestas y valles de un individuo, aunque puede variar, lo hace dentro de unos límites tan reducidos, que hacen posible una clasificación sistemática


Típicamente, los investigadores humanos y computadoras se concentran en puntos donde las líneas de las crestas terminan o donde se separan en dos (bifurcaciones). Colectivamente estos y otros rasgos distintivos se llaman typica.

El software del sistema del lector utiliza algoritmos altamente complejos para reconocer y analizar estas minutiae. La idea básica es medir las posiciones relativas de la minutiae. Una manera simple de pensar en esto es considerar las figuras que varios minutia forman cuando dibuja líneas rectas entre ellas. Si dos imágenes tienen tres terminaciones de crestas y dos bifurcaciones formando la misma figura dentro de la misma dimensión, hay una gran probabilidad de que sean de la misma persona.

Para obtener una coincidencia, el sistema del lector no necesita encontrar el patrón entero de minutiae en la muestra y en la imagen almacenada, simplemente debe encontrar un número suficiente de patrones de minutiae que ambas imágenes tengan en común.

Existen software de desarrollo para la implementación de esta tecnología.Por ejemplo.

Griaule, este es un sistema que incluye el SDK para entorno de desarrollo para la identificación de huellas digitales.

Y del fabricante de este producto te proporciona desde su página acceso al SDK para el desarrollo del hardware. Se llama DigitalPersona. Y se podría hacer uso de estas dos herramientas para la elaboración de la red neuronal.




Bibliografía: