Casos de estudio Estudiaremos tres problemas

Slides:



Advertisements
Presentaciones similares
Capítulo 2 Algoritmos.
Advertisements

ALUMNO: LEONODAS TEJADA BALDARRAGO GRADO: TERCERO
1.5 Algoritmos, Pseudocódigo y Diagramas de Flujo
1.5 Algoritmos, Pseudocódigo y Diagramas de Flujo
INFORMATICA I Funciones CLASE 13.
III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS.
Introducción a la Programación “Ejercicios” Semestre de Otoño 2006 Manuel Crisosto M., Claudio Gutiérrez S., Christian Vidal C.
Casos de estudio Estudiaremos tres problemas
Algoritmos para Ordenar datos
CC3001 Algoritmos y Estructuras de Datos
Análisis de algoritmos
Pregunta: Solución: Pregunta: Solución: Pregunta: Solución:
1. Desarrollo de Programas iterativos usando invariante
Estructuras de control Resolución de problemas y algoritmos.
Introducción a la Programación “Vectores y Matrices” Semestre de Otoño 2006 Manuel Crisosto M., Claudio Gutiérrez S., Christian Vidal C.
Oscar F. Bedoya L. Fundamentos de análisis y diseño de algoritmos.
Ingeniería en Software Facultad de Ingeniería 2014
2. Arreglos e invariantes. Arreglos Un arreglo es una coleccion ordenada de elementos del mismo tipo – Tipos de datos primitivos (int, …) – Referencias.
Diapositiva resumen  Sistema TROQUEL 3D Dr. Rolando Simeón Monet Dr. José Arzola Ruiz
2 5 OM THALES SEÑALES CLAVES EN LA CARRETERA. 2 5 OM THALES Solución Problema 4: SEÑALES CLAVE EN LA CARRETERA En la autovía Sevilla–Córdoba nos encontramos.
Algoritmos y Estructura de Datos Exposiciones. Clases de Noviembre 4 Nov – Exposición equipos 1, 2 y 3 11 Nov – Exposición equipos 5,6 y 7 18 Nov – Exposición.
LOGICA Y MATEMATICA COMPUTACIONAL Profesora Responsable: Esp. Prof. Liliana Caputo.
 Para poder resolver una ecuación como ésta: x² = -4 No hay ningún número real que elevado al cuadrado nos pueda dar un resultado negativo. Ahora bien,
1 EXPRESIONES ALGEBRAICAS Por ejemplo: ¿Qué es una Expresión Algebraica? Es una combinación de letras y números ligada por los signos de las operaciones:
1 Ordenación, Clasificación Introducción Algoritmos Complejidad.
Introducción a la Programación Multimedial
3. Recursividad y Backtracking
Estructuras Repetitivas Estructuras Repetitivas
CONJUNTO DE NÚMEROS ENTEROS
Apuntes Matemáticas 2º ESO
2.  Diagramas de Estado.
Olimpiadas Chilenas de Informática - Formación
2. Arreglos e invariantes
PARTE II: ALGORÍTMICA Tema 5. Programación dinámica.
6º PRIMARIA La Divisivilidad.
Fundamentos de programación
Guía de Ejercicios 3: D&AA Universidad Viña del Mar 30/9/2002
1. Desarrollo de Programas iterativos usando invariante
Estructuras de Datos Recursividad.
Tema 08: Programación dinámica
Leccion 5: Escogiendo un Tipo de Variable
TALLER Nº2: Modelo de Distribución de Viajes
LENGUAJE DE PROGRAMACION III Estructuras Estáticas de Datos
Tele clase 12 Integración numérica, métodos de Gauss y de Romberg.
ALGORITMOS es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos.
Metodología de la programación
Universidad de las Ciencias Informáticas
PROGRESIÓN ES TODA SECUENCIA ORDENADA DE NÚMEROS
Estructuras de control Resolución de problemas y algoritmos
Fundamentos de programación
Sistemas Numéricos 1. Introducción 2. Sistema de Numeración Decimal
Fórmulas Recursivas y Aproximaciones
Profesor: Nelson Torres Bermont I
DESIGUALDADES Danny Perich C..
Saturación de fuerzas nucleares
Fundamentos de Informática Especialidad de Electrónica –
GUIA DE ESTUDIO MATEMÁTICAS
proPar Curso 18/ , 3, 2 2, 4 3 Computadores Paralelos
SUMA Y RESTA DE ENTEROS.
MC Beatriz Beltrán Martínez Verano 2018
Diego Hernández R Algoritmos Diego Hernández R
Diego Hernández R Algoritmos Diego Hernández R
Algoritmos de caminos más cortos
2.  Diagramas de Estado.
Recursividad 1 Análisis de algoritmos. Matrushka La Matrushka es una artesanía tradicional rusa. Es una muñeca de madera que contiene otra muñeca más.
NÚMEROS ENTEROS. NÚMEROS ENTEROS 1.- Definición Estos son: Un numero entero es cualquier elemento del conjunto formado por los números naturales, sus.
PROPIEDADES DE LA MULTIPLICACIÓN.
Potencia de números enteros
ProcesadorNumero PROBLEMA 1 (Laboratorio N°1)
KJ.
Transcripción de la presentación:

Casos de estudio Estudiaremos tres problemas Subsecuencia de suma máxima Subsecuencia común más larga Multiplicación de matrices

Subsecuencia de suma máxima Dados enteros A1, …, An (posiblemente negativos), encontrar el maximo valor de Si todos los números son negativos, la subsecuencia de suma máxima es 0

Subsecuencia de suma máxima Ejemplo: Secuencia: -2,11,-4,13,-5,-2 Respuesta: 20 Veremos cuatro soluciones distintas para este problema Primera solución (fuerza bruta): Calcular la suma de todas las subsecuencias Quedarse con la suma mayor

Subsecuencia de suma máxima Solución 1: Fuerza bruta int maxSum = 0; for( i=0; i<a.length; i++) { for( j=i; j<a.length; j++) int thisSum = 0; for (k=i; k<=j; k++) thisSum += a[k]; if (thisSum > maxSum) maxSum = thisSum; }

Subsecuencia de suma máxima Tiempo: O(n3)

Subsecuencia de suma máxima Segunda solución (mejora fuerza bruta) Notar que Por lo tanto, el tercer ciclo for se puede eliminar

Subsecuencia de suma máxima Solución 2: Mejora a fuerza bruta int maxSum = 0; for( i=0; i<a.length; i++) { int thisSum = 0; for (j=i; j<=a.length; j++) thisSum += a[j]; if (thisSum > maxSum) maxSum = thisSum; }

Subsecuencia de suma máxima Tiempo: O(n2) Solución 3: Algoritmo eficiente Observaciones: No es necesario conocer donde esta la mejor subsecuencia La mejor subsecuencia no puede comenzar en un número negativo Cualquier subsecuencia negativa no puede ser prefijo de la subsecuencia óptima

Subsecuencia de suma máxima Solución 4: Algoritmo eficiente Inducción (reforzada) Se conoce la mejor subsecuencia entre 1 y j Se conoce la mejor subsecuencia que termina en j Algoritmo Se almacenan ambos valores (inicialmente 0) Se incrementa j en 1 Se actualiza mejor subsecuencia si es necesario Si subsecuencia que termina en j es < 0 se puede descartar, volver su valor a 0

Subsecuencia de suma máxima Seudocódigo int maxSum = 0, thisSum = 0; for( j=0; j<a.length; j++) { thisSum += a[j]; if (thisSum > maxSum) maxSum = thisSum; else if (thisSum < 0) thisSum = 0; }

Subsecuencia de suma máxima Tiempo de la solución eficiente: O(n)