1 / 17

Definición y propiedades.

Definición y propiedades. Algoritmo: Conjunto de reglas para resolver un problema. Propiedades Definibilidad: El conjunto debe estar bien definido, sin dejar dudas en su interpretación. Finitud: Debe tener un número finito de pasos que se ejecuten en un tiempo finito. ALGORITMO.

Download Presentation

Definición y propiedades.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Definición y propiedades. • Algoritmo: Conjunto de reglas para resolver un problema. • Propiedades • Definibilidad: El conjunto debe estar bien definido, sin dejar dudas en su interpretación. • Finitud: Debe tener un número finito de pasos que se ejecuten en un tiempo finito. ALGORITMO 0 ó más entradas 1 ó más salidas

  2. Definición y propiedades. • Algoritmos deterministas: Para los mismos datos de entrada se producen los mismos datos de salida. • Algoritmos no deterministas: Para los mismos datos de entrada pueden producirse diferentes de salida. • Objetivo: Dado un problema concreto encontrar la mejor forma de resolverlo.

  3. Definición y propiedades. Ser capaz de analizar, comprender y resolver una amplia variedad de problemas de programación, diseñando soluciones eficientes y de calidad. Pero ojo, los algoritmos no son el único componente en la resolución de un problema de programación.

  4. Definición y propiedades. Algoritmos+ Algoritmos + Estructuras de Datos = Programas • Estructura de datos: Parte estática, almacenada. • Algoritmo: Parte dinámica, manipulador. PROBLEMA PROGRAMA Estructuras de Datos

  5. Definición y propiedades. Método científicoTecnologías de Información • Observación. • Hipótesis. • Experimentación. • Verificación. 1. Análisis del problema 2. Diseño del programa (alg. y estr.) 3. Implementación (programación) 4. Verificación y pruebas

  6. Definición y propiedades. Otras ideas... • Refinamiento por pasos sucesivos. • Escribir la estructura de la solución en pseudocódigo, de manera muy genérica. • Especificar los pasos de forma cada vez más detallada, y precisa. • Repetimos el refinamiento hasta llegar a una implementación.

  7. Definición y propiedades. • Proceso de resolución propuesto por Alfred Aho Modelo matemático Algoritmo informal Tipos de Datos Abstractos(TDA) Programa en pseudocódigo Estructuras de Datos Programa en C++

  8. Análisis de algoritmos. • Análisis de algoritmos: Estudio de los recursos que necesita la ejecución de un algoritmo. • No confundir con análisis de un problema. • Diseño de algoritmos: Técnicas generales para la construcción de algoritmos. • Por ejemplo, divide y vencerás: dado un problema, divídelo, resuelve los subproblemas y luego junta las soluciones.

  9. Diseño de algoritmos. • Diseño de Algoritmos. Técnicas generales, aplicables a muchas situaciones. • Esquemas algorítmicos. • Ejercicio 1, para entregar en la clase. • Escribir en pseudocódigo un algoritmo para calcular el octavo número de la serie de Fibonacci, recordando lo siguiente: Los números de Fibonacci están definidos como: f(0) = 0, f(1) = 1, f(n) = f(n-1) + f(n-2) para n = 2, 3, 4, 5,....

  10. Diseño de algoritmos. • Técnicas de diseño de algoritmos: 1. Divide y vencerás. 2. Algoritmos voraces. 3. Programación dinámica. 4. Backtracking. 5. Ramificación y Acotación. • Dado un problema: seleccionar la técnica, seguir el proceso/esquema algorítmico, obtener el algoritmo y comprobarlo. • Recordar: ! No empezar tecleando código como locos ¡

  11. Divide y Vencerás • En las tecnologías de la información, el término divide y vencerás hace referencia a uno de los más importantes paradigmas de diseño algorítmico. El método está basado en la resolución recursiva de un problema dividiéndolo en dos o más subproblemas de igual tipo o similar. El proceso continúa hasta que éstos llegan a ser lo suficientemente sencillos como para que se resuelvan directamente. Al final, las soluciones a cada uno de los subproblemas se combinan para dar una solución al problema original.

  12. Recursivo • Es la forma en la cual se especifica un proceso basado en su propia definición.

  13. Algoritmo voraz • Un algoritmo voraz (también conocido como ávido, devorador o goloso) es aquel que, para resolver un determinado problema, sigue una heurística consistente en elegir la opción óptima en cada paso local con la esperanza de llegar a una solución general óptima. Este esquema algorítmico es el que menos dificultades plantea a la hora de diseñar y comprobar su funcionamiento. Normalmente se aplica a los problemas de optimización.

  14. Real Academia Española • heurístico, ca. • (Del gr. εὑρίσκειν, hallar, inventar, y ‒́tico). • 1. adj. Perteneciente o relativo a la heurística. • 2. f. Técnica de la indagación y del descubrimiento. • 3. f. Busca o investigación de documentos o fuentes históricas. • 4. f. En algunas ciencias, manera de buscar la solución de un problema mediante métodos no rigurosos, como por tanteo, reglas empíricas, etc.

  15. Programación dinámica • En Tecnologías de la información, la programación dinámica es un método para reducir el tiempo de ejecución de un algoritmo mediante la utilización de subproblemas superpuestos y subestructuras óptimas.

  16. Backtracking • El backtracking es una estrategia usada para encontrar soluciones a problemas que tienen una solución completa, en los que el orden de los elementos no importa, y en los que existen una serie de variables a cada una de las cuales debemos asignarle un valor teniendo en cuenta unas restricciones dadas.

  17. Ramificación y Acotación • El método de diseño de algoritmos Ramificación y poda (también llamado Ramificación y Acotación) es una variante del Backtracking mejorado sustancialmente. El término (del inglés, Branch and Bound) se aplica mayoritariamente para resolver cuestiones o problemas de optimización. La técnica de Ramificación y poda se suele interpretar como un árbol de soluciones, donde cada rama nos lleva a una posible solución posterior a la actual.

More Related