Descargar

Diseño de algoritmos para la solución de problemas

Enviado por Pablo Turmero


Partes: 1, 2

    edu.red

    Niveles de abstracción para la construcción de algoritmos La construcción de algoritmos se basa en la abstracción de las características del problema a través de un proceso de análisis, que permitirá seguir con el diseño de una solución basada en modelos, los cuales ven su representación tangible en el proceso de implementación del algoritmo.

    edu.red

    Niveles de abstracción para la construcción de algoritmos. Análisis .- Consiste en reconocer cada una de las características del problema, lo cual se logra señalando y modelando los procesos, fórmulas o efectos que lo rodean.

    Los procesos pueden identificarse como operaciones o formulas que se aplican a las variables del problema. Al analizar las actividades, procedimientos, funciones o métodos del problema, se deben relacionar con sus variables y sus relaciones entre éstos. El resultado esperado de esta fase de la construcción es un modelo que represente la problemática encontrada y permita encontrar sus características mas relevantes.

    edu.red

    Niveles de abstracción para la construcción de algoritmos. Diseño .- Una vez que se ha analizado las causas del problema y se ha identificado su proceso sobre el cual se debe actuar para llegar a una solución, comienza el modelado de una solución factible o diseño del algoritmo. En esta etapa se diseña el modelo apropiado que describe al problema y se realizan las pruebas correspondientes a este modelo.

    edu.red

    Niveles de abstracción para la construcción de algoritmos. Implementación .- La implementación es llevar el modelo y los resultados esperados surgidos en las pruebas a un código de lenguaje de programación para que éste sea implementado en una computadora y tengamos un resultado resuelto del sistema de información, automatizado de propósito general para la toma de decisiones.

    edu.red

    Estructuras de diseño básicas en un algoritmo.

    Ciclos Contadores Acumuladores Condicionales Interruptores Funciones (recursivas)

    edu.red

    Ciclos Se caracterizan por iterar o repetir instrucciones en función de una condición que debe cumplirse en un momento bien definido. Existen dos tipos de ciclos: while y do-while.

    while se caracteriza por realizar la verificación de la condición antes de ejecutar las instrucciones asociadas al ciclo.

    do-while evalúa la condición después de ejecutar las instrucciones una vez.

    En este tipo de ciclos el número de repeticiones que se realizarán es variable y depende del contexto de ejecución del algoritmo.

    mientras < condicion> hacer Instruccion1 Instruccion2 … Instrucción n fin mientras

    edu.red

    Contadores Se caracteriza por iterar o repetir instrucciones en función de una condición que debe cumplirse en un momento conocido y está representado por la instrucción para (for).

    Esta estructura se evalúa el valor de una variable a la que se asigna un valor conocido al inicio de las iteraciones; este valor sufre incrementos o decrementos en cada iteración y suspende la ejecución de las instrucciones asociadas una vez que se alcanza el valor esperado .

    Para < variable> = < valor inicial> hasta < valor tope> < Incremento>] hacer Instruccion1 Instruccion2 … Instrucción n Fin para < variable>

    edu.red

    Acumuladores o totalizadores Son variables que tienen por objeto almacenar valores incrementales o decrementales a lo largo de la ejecución del algoritmo. Este tipo de variables utiliza la asignación recursiva de valores para no perder su valor anterior.

    Son útiles para calcular totales en diferentes valores o cantidades

    La asignación recursiva de valor a este tipo de variables se ejemplifica a continuación:

    < variable> = < variable> + < incremento>

    total = total + cantidad;

    o tambien suma += valor [i];

    edu.red

    Condicionales (if.. else) Se utiliza para ejecutar selectivamente secciones de código de acuerdo con una condición definida. Sólo tiene dos posibilidades: si la condición se cumple, se ejecuta una sección de código; si no, se ejecuta otra sección, aunque esta parte puede omitirse. si < condicion> entonces Instruccion1 Instrucción n [si no Instrucción 3 Instrucción n] Fin si

    edu.red

    Interruptores Son variables globales del programa que se utilizan en combinación con las estructuras cíclicas y selectivas para habilitar o deshabilitar secciones de código.

    Un ejemplo de este tipo de variables son las banderas que, dependiendo del valor que almacenen, condicionan el comportamiento del programa.

    Ejemplo:

    Si flag = 1 entonces escribe el encabezado del reporte.

    O

    return 1;

    edu.red

    Técnicas de diseño de algoritmos Algunas técnicas de diseño de algoritmos son:

    Refinamiento progresivo Procesamiento regresivo Divide y vencerás Estrategia Greedy Programación dinámica Inducción

    edu.red

    Técnicas de diseño de algoritmos -Refinamiento progresivo

    Es una técnica de análisis y diseño de algoritmos que se basa en la división del problema principal en problemas más simples. Este tipo de procedimiento se conoce como Top-Down y también es aplicable a la optimización del desempeño y a la simplificación de un algoritmo.

    -Procesamiento regresivo

    Parte de la existencia de múltiples problemas y se enfoca en la asociación e identificación de características comunes entre ellos para diseñar un modelo que represente la solución para todos los casos de acuerdo con la parametrización de las entradas. Esta técnica también es conocida como Bottom-Up y puede aplicarse en la optimización y simplificación de algoritmos.

    -Divide y vencerás

    Dividir un problema en subproblemas del mismo tipo y aproximadamente todos ellos del mismo tamaño, resolver los subproblemas recursivamente y, finalmente, combinar la solución de los subproblemas para dar una solución al problema original. La recursión finaliza cuando el problema es pequeño y la solución es fácil de construir directamente.

    Partes: 1, 2
    Página siguiente