Monografias.com > Computación > Programación
Descargar Imprimir Comentar Ver trabajos relacionados

Diseño y análisis de algoritmos: casos de estudio




Enviado por Pablo Turmero



Partes: 1, 2

    Monografias.com

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

    Monografias.com

    2
    Subsecuencia de suma máxima
    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

    Monografias.com

    3
    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

    Monografias.com

    4
    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;
    }
    }

    Monografias.com

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

    Monografias.com

    6
    Subsecuencia de suma máxima
    Segunda solución (mejora fuerza bruta)
    Notar que

    Por lo tanto, el tercer ciclo for se puede eliminar

    Monografias.com

    7
    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;
    }
    }

    Monografias.com

    8
    Subsecuencia de suma máxima
    Tiempo: O(n2)
    Solución 3: Usando "dividir para reinar"
    Idea: dividir el problema en dos subproblemas del mismo tamaño
    Resolver recursivamente
    Mezclar las soluciones
    Obtener solución final

    Monografias.com

    9
    Subsecuencia de suma máxima
    Dividiendo el problema
    Subsecuencia de suma máxima puede estar en tres partes:
    Primera mitad
    Segunda mitad
    Cruza por el medio ambas mitades

    Monografias.com

    10
    Subsecuencia de suma máxima
    Dividiendo el problema
    Ejemplo:

    Monografias.com

    11
    Subsecuencia de suma máxima
    Dividiendo el problema
    Ejemplo:

    Suma máxima primera mitad: 6

    Monografias.com

    12
    Subsecuencia de suma máxima
    Dividiendo el problema
    Ejemplo:

    Suma máxima segunda mitad: 8

    Partes: 1, 2

    Página siguiente 

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter