Extracción dinámica de Invariantes Edgar Miranda Rafael Corchuelo Departamento de lenguajes y sistemas informáticos.

Slides:



Advertisements
Presentaciones similares
Introducción a Límites de Funciones
Advertisements

Números reales/El valor absoluto.
La regla de L´Hôpital Aplicaciones de la derivada al cálculo de límites.
Integral Indefinida Integrales indefinidas
CARRERA: INGENIERIA CIVIL UNI-RUACS
Marcas de agua con FHT Fernando Pomares Reyes
UNIDAD II: ALGORITMOS Y LENGUAJES
MÓDULO DE BÚSQUEDA DE PERSONAS DENTRO DE UNA BASE DE DATOS DE ROSTROS
Punteros Universidad Nacional Mayor de San Marcos
FUNCIONES EN C.
INFORMATICA I Funciones CLASE 13.
UNIVERSIDAD LATINA (UNILA) II.- ANALISIS DE ALGORITMOS
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERIA DIVISIÓN DE INGENIERÍA ELÉCTRICA COMPUTACIÓN PARA INGENIEROS NOTA IMPORTANTE: Para complementar.
Preguntas tipo test (I)
Preguntas tipo test (Tema I)
Cuantificadores En esta clase trataremos: Proposiciones abiertas
¿Qué es un algoritmo? “(del árabe al-Khowârizmî, sobrenombre del célebre matemático árabe Mohámed ben Musa). Conjunto ordenado y finito de operaciones.
Arreglos: Vectores en JAVA
MÓDULO DE PROCEDIMIENTOS Los módulos también pueden contener subrutinas y funciones → MÓDULO DE PROCEDIMIENTOS  PROCEDIMIENTOS → son compilados como parte.
Funciones y procedimientos
Medición y rendimientos de Algoritmos
Juan José Cortés Orozco. Antonio Muñoz Torres.
INTRODUCCIÓN A LA COMPUTACIÓN 12va Semana – 19va Sesión Miércoles 18 de Mayo del 2005 Juan José Montero Román
Semana 5 Subprogramas..
Academia de Informática
Diferenciación/Introducción a la derivada

Programación con Assertions
Algoritmos para Ordenar datos
Introducción al análisis de algoritmos
Estructura de Datos y Algoritmos
Fundamentos de Programación
Fundamentos de programación Organización de una computadora.
Análisis de algoritmos
Unidad V: Estimación de
Ecuaciones diferenciales 1. Ecuaciones diferenciales de primer orden
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
Definición de Objetivos de Investigación. Análisis de Datos I Semestre Otoño 2009.
CONCEPTOS BÁSICOS FUNDACIÓN UNIVERSITARIA LOS LIBERTADORES Fredys Alberto Simanca Herrera Programación Estructurada Semana Bogotá, D.C
Metodología para solución de problemas
TEOREMA FUNDAMENTAL DEL
Problema de inclusión en una Curva Digital Por Orellana Muñoz, Alfonso Paz Vicente, Rafael Pérez Medina, Gerardo Rodríguez Naranjo.
CARPLATE Reconocimiento del marco de la matrícula de un coche
Experiencias en la implantación de la asignatura de Tecnología de Programación al EEES Elena M. Hernández Pereira Óscar Fontenla Romero Departamento de.
Sentencias de repetición
Capítulo 6. ANÁLISIS DE ALGORITMOS
LA INTEGRAL DEFINIDA Autora: Mª Soledad Vega Fernández
Oscar F. Bedoya L. Fundamentos de análisis y diseño de algoritmos.
Estructuras de Datos y Algoritmos Introducción. Texto Requerido: Carrano & Prichard: Data Abstraction and Problem Solving with Java; Walls and Mirrors,
Un algoritmo es un método en el que se define paso a paso la solución de un problema que termina en un número infinito de pasos. Un algoritmo es otro tipo.
INECUACIONES LINEALES
METODOS DE ESTUDIO WENDY FLORES GALLEGOS Ing. COMERCIAL Y FINANCIERA.
LENGUAJE “C” Programación.
Capítulo 2 “Subprogramas/Funciones - Arreglos”
RELACION Y OPERACIÓN ENTRE CONJUNTOS
Diagrama de Flujo Diagrama de flujo sencillo con los pasos a seguir si una lámpara no funciona. El diagrama de flujo o diagrama de actividades es la representación.
Método REgula Falsi.
Ingeniería en Software Facultad de Ingeniería 2014
Desarrollo de lógica algorítmica.
Estadística para la gestión educativa Conceptos básicos Mtra. Ing. Rosa María Lamadrid Velazco T.
PROGRAMACIÓN IV INTRODUCCIÓN.
Análisis cinemático: ACELERACION
Integración por partes
UNIDAD I DESPEJES.
ALGORITMO QUE SUME 2 VALORES E IMPRIMA EL RESULTADO 1. Inicio 2. Inicializar variables A=0,B=0,C=0 3. Asignar valores a las variables A=20,B=50.
QUE ES PNL. CONCEPTO La programación neurolingüística es un proceso mental, mediante el cual utilizamos los sentidos con los cuales percibimos el mundo,
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
ACTIVIDADES DE APRENDIZAJE. ABCFHOEPRIAUDTCDAFDAHOELBADTAQTU PERYUIAETNEDNECSEDAUFHVCMNXAOSOS RSZXVGSDACAAERYFNIAEFGFGSAROPARA OQANALSISZAPATERASECUENCIATRTAXZ.
Paso de parámetros Diseño de programas iterativos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 7 Versión.
Transcripción de la presentación:

Extracción dinámica de Invariantes Edgar Miranda Rafael Corchuelo Departamento de lenguajes y sistemas informáticos

Índice de contenidos Introducción Algoritmo Daikon Aplicación Conclusiones

Índice de contenidos Introducción Algoritmo Daikon Aplicación Conclusiones

Introducción  Invariante – RAE: Magnitud o expresión matemática que no cambia de valor al sufrir determinadas transformaciones. – En el documento, tomamos las precondiciones y poscondiciones como invariantes – Podemos definir invariantes en otros puntos del programa -> invariantes de bucle

Introducción Un ejemplo: Precondiciones: N>=0 Poscondiciones: S= (∑j: 0 <= j < B[j] : B[j]) Invariantes de bucle: 0<=I<=N AND S=(∑j: 0<=j<I : B[j]) void sumaBucle(int B[], int N){ int S; for(int I=0; I<n; I++) S+= B[I]; return S; }

Introducción ¡Invariantes declaradas implícitamente!

Índice de contenidos Introducción Algoritmo Daikon Detalles concretos Aplicación Conclusiones

Algoritmo Daikon Estructura del algoritmo

Algoritmo Daikon Posible solución al programa void sumaBucle(int B[], int N){ int S; for(int I=0; I<n; I++) S+= B[I]; return S; }

Algoritmo Daikon Tipos de invariantes Tipo de InvarianteEjemplo Una variable numéricaX=a Dos variables numéricasX=a*Y Tres variables numéricasX=a*Y+b*Z+c Una variable cualquieraX Є {a,b,c} Una secuenciaSeq in [a..b] Dos secuenciasSeq1 reverse Seq2

Algoritmo Daikon ¿Cómo funicona Daikon? Instrumentación del programa original void sumaBucle(int B[], int N){ int S; for(int I=0; I<n; I++) S+= B[I]; return S; } void sumaBucle(int B[], int N){ int S; for(int I=0; I<n; I++) S+= B[I]; write(N); write(B); write(S); return S; }

Algoritmo Daikon ¿Cómo funciona Daikon? Extracción de las invariantes – Conjunto de entrenamiento Orig(N)Orig(B)Orig(S)NBS 4{1,2,3,1}04 7 4{1,2,3,4} {2,4,5}03 11

Algoritmo Daikon ¿Cómo funciona Daikon? Extracción de las invariantes Orig(N)Orig(B)Orig(S)NBS 4{1,2,3,1}04 7 4{1,2,3,4} {2,4,5}03 11 Conjunto de Invariantes Orig(N)=N Orig(B)=B N=4 B in [1..3] ….

Algoritmo Daikon ¿Cómo funciona Daikon? Extracción de las invariantes Conjunto de Invariantes Orig(N)=N -> correcta Orig(B)=B -> correcta N=4 -> correcta B in [1..3] -> fallo …. Orig(N)Orig(B)Orig(S)NBS 4{1,2,3,1}04 7 4{1,2,3,4} {2,4,5}03 11

Algoritmo Daikon ¿Cómo funciona Daikon? Extracción de las invariantes Conjunto de Invariantes Orig(N)=N -> correcta Orig(B)=B -> correcta N=4 -> fallo …. Orig(N)Orig(B)Orig(S)NBS 4{1,2,3,1}04 7 4{1,2,3,4} {2,4,5}03 11

Algoritmo Daikon ¿Cómo funciona Daikon? Conjunto de invariantes obtenidas Conjunto de Invariantes Orig(N)=N -> correcta Orig(B)=B -> correcta ….

Algoritmo Daikon ¿Cómo de fiable es Daikon? Fiabilidad de las invariantes Orig(N)Orig(B)Orig(S)NBS 4{1,2,3,1}04 7 4{1,2,3,4} {2,4,5,1}04 12 Problema!! Con este conjunto de entrenamiento obtenemos la invariante N=4

Algoritmo Daikon ¿Cómo de fiable es Daikon? Solución propuesta – Para cada una de las invariantes, calculamos la probabilidad de que sea errónea y la comparamos con una variable de fiabilidad Invariantes: N in [a..b] -> correcta N!=0 -> ¿es correcta? Calculamos probabilidad N!=0 probabilidad N=0 -> 1/(b-a+1) probabilidad N!=0 -> 1- 1/(b-a+1) probabilidad N!=0 en k casos -> P=(1-1/(b-a+1))^k Tenemos que si P<ф entonces la invariante es correcta

Algoritmo Daikon Eficiencia de Daikon Elementos positivos – El coste computaciones es proporcional al número de invariantes y este va decreciendo – En cada punto de controlo sólo tenemos en cuenta las variables visibles Elementos negativos – Se derivan invariantes innecesarias. Por ejemplo N!=B[0]

Índice de contenidos Introducción Algoritmo Daikon Aplicación Conclusiones

Aplicación ¡¿Cómo encaja todo esto en el problema de la extracción de información?!

Aplicación Introducción No es necesario realizar el proceso de instrumentación

Aplicación Funcionamiento aplicado CONJUNTO DE ENTRENAMIENTO Detección de datos incorrectos

Aplicación Problema en la web Daikon supone que los datos son correctos – En la web los datos pueden contener ruido

Aplicación Problema en la web Dos tipos de invariantes – Intrínsecas – Accidentales Conjunto de entrenamiento Dividimos el conjunto de entrenamiento en suconjuntos

Índice de contenidos Introducción Algoritmo Daikon Aplicación Conclusiones

Daikon proporciona método efectivo para extracción de invariantes – Podemos aplicarlo en el proceso de verificación de información Problemas con la eficiencia – Se proponen mejoras Problemas con la fiabilidad – Se proponen mejoras

¿Preguntas?