Slides:



Advertisements
Presentaciones similares
Diseño y análisis de algoritmos
Advertisements

Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
ANÁLISIS DE REQUERIMIENTOS
CARRERA: INGENIERIA CIVIL UNI-RUACS
¿Cómo hacer para que una máquina comprenda el LN?
¿ Que es la complejidad de un algoritmo ?
Resolución de Problemas Algoritmos y Programación
Razonamiento Explícito y Experimentación en la Algoritmia
Tema 1: Programación dinámica
Son problemas secuenciales: El problema se puede dividir en etapas. Definición: Método que permite determinar de manera eficiente las decisiones que optimizan.
UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Teoría de lenguajes y compiladores
Introducción a Funciones de una variable
INTRODUCCIÓN A DINÁMICA DE SISTEMAS. QUE ES DINÁMICA DE SISTEMAS ? Es una metodología para el estudio y manejo de sistemas complejos, tal como los que.
Tema 2: Métodos de ajuste
TRADUCTOR DE UN PROGRAMA
Temas importantes para el desarrollo de la segunda parte del TPE
EL PODER DE SOLVER.
Fundamentos de programación

Introducción al análisis de algoritmos
Algoritmos.
Estructura de Datos y Algoritmos
Algoritmos de búsqueda
DISEÑO DE SOFTWARE 1ª. Parte
Programación I Universidad Nacional de Luján
 Fue en el año 1945 cuando el matemático Jhon Von Neumann, fascinado por las posibilidades del ENIAC, demostró que una computadora podía tener una estructura.
COMPUTACION EVOLUTIVA Introducción. Computación Evolutiva: Computación Evolutiva: Enfoque alternativo para abordar problemas complejos de: Enfoque alternativo.
PROGRAMACIÓN PROCEDIMENTAL
Análisis de algoritmos
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
UNIDAD 2. ALGORITMOS Y ESTRUCTURAS DE DATOS.
Técnicas de Programación
Parte II. Algorítmica. 5. Backtracking. 1. Análisis de algoritmos.
Parte II. Algorítmica. 4. Programación dinámica.
FUNDAMENTOS DE PROGRAMACION
Parte I. Estructuras de Datos.
Análisis y Diseño de Algoritmos
SIG. LAURA VELAZQUEZ MORELOS. Hace referencia a un refrán que implica resolver un problema difícil, dividiéndolo en partes más simples tantas veces como.
Parte I. Estructuras de Datos.
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
Metodología de la programación
TIPOS DE INVESTIGACIÓN CUANTITATIVA Y CUALITATIVA
ALGORITMOS GENETICOS.
Escuela de Ciencias Basicas, Tecnología e Ingeniería
DISEÑAR Y ELABORAR ALGORITMOS Nombre: anayeli hernandez peralta Grado y grupo: 1 “3” Materia: Informática y computación Maestro: Ángel Buendía Turno: Vespertino.
Conalep Coacalco Algoritmos Recursivos
“CURSO PROPEDÉUTICO PARA EL MEJORAMIENTO DEL PENSAMIENTO MATEMÁTICO”
Unidad TemáticaI. Conceptos Básicos Horas Prácticas10 Horas Teóricas8 Horas Totales18 Objetivo El alumno determinará las entradas, procesos y salidas.
Introducción a los TADs
Bases Metodológicas de la Programación
* Cuando nos permite desarrollar un programa que necesitamos para tomar un conjunto de buenas prácticas para hacer eso. Esto se debe a que podemos ahorrar.

75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
Algoritmos.
Proceso de desarrollo de Software
Marco de Trabajo para Indexación, Clasificación y Recopilación Automática de Documentos Digitales Javier Caicedo Espinoza Gonzalo Parra Chico.
Fundamentos de Computación
Hernández Camacho Víctor Jesus Islas Sánchez Karla Vanessa
Modelo de procesos de software
Programación I Prof. Carolina Cols. Algoritmo es una lista bien definida, ordenada y finita de operaciones que permite hallar la solución a un problema.
Algoritmos Computacionales
TÉCNICAS DE PRUEBA DEL SOFTWARE
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible.
Prof. Jonathan Silva Ingeniería Civil – Informática I Ingeniería Civil Informática I Clase 3 – Diseño de Programas.
Algoritmo Genético para la solución del problema SAT René Clemente Juárez Angel Felipe Lara Valladares Junio 2012.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Transcripción de la presentación:

Técnicas de diseño de algoritmos Algoritmos voraces: Algoritmos paralelos: Algoritmos probabilísticos: Algoritmos determinísticos: Algoritmos no determinísticos Divide y vencerás: Metaheurísticas: Programación dinámica: Ramificación y acotación: Vuelta Atrás:

Representación de Algoritmos:   Sintaxis y Semántica: El termino sintaxis se refiere a la representación, en tanto que semántica se refiere al concepto que se representa. Primitivas:  Una primitiva, viene a ser una estructura semántica bien definida junto con una sintaxis no ambigua para representarla. Pseudocódigo:  Es un sistema de notación en el que podemos expresar información ideas durante el proceso de creación de algoritmos. Diseño Modular: Hasta aquí, hemos estado analizado el papel de las interrelaciones sintáctico- semánticas en referencia al objetivo de producir programas no ambiguos.

Descubrimiento del Algoritmo   Descubrimiento del Algoritmo El descubrimiento de algoritmos suele ser el paso mas difícil en el proceso de creación de software; es decir descubrir un algoritmo es equivalente a encontrar un método para resolver el problema. Teoría de la resolución de problemas Las técnicas de resolución de problemas no son solo de los ciencia de la computación , sino de cualquier otro campo. La capacidad de resolver problemas sigue siendo mas una aptitud artística que debe desarrollarse.   Las fases para resolver problema son: Fase1. Entender el problema. Fase2. Idear un plan para resolver el problema. Fase3. Llevar a cabo el plan. Fase4. Evaluar la solución en cuanto a su exactitud y a su potencial como herramienta para resolver otros problemas. Traducidas al contexto de creación de programa. Esa fase se convierten en: Fase2. Pensar cómo un procedimiento algoritmo podría resolver el problema. Fase3. Formular el algoritmo y representarlo en forma de programa. Fase4. Evaluar el programa en cuanto a su exactitud y a su potencial como herramienta para resolver otros problemas. Cómo dar el primer paso desglosar el problema original en subproblemas, podemos acercarnos a la solución global paso a paso, cada uno de los cuales es mas fácil de resolver que el problema original.

Estructuras iterativas Presentaremos varios algoritmos muy utilizados para buscar y ordenar (la búsqueda secuencial y binaria , y las ordenaciones por inserción y rápida). Las estructuras iterativas permiten la repetición de una serie de sentencias n veces, determinándose n. El algoritmo de búsqueda secuencial Al algoritmo de ordenación por inserción Estructuras Recursivas Las estructuras recursivas son una alternativa al paradigma cíclico en las estructuras repetitivas.Como introducción a la técnica, consideremos el algoritmo de búsqueda binaria que aplica una metodología de “divide y vencerás” al proceso de búsqueda.   El algoritmo de búsqueda binaria Control Recursivo El algoritmo de ordenación rápida

Eficiencia y Corrección   Eficiencia y Corrección Eficiencia de Algoritmos El problema de la eficiencia es bastante importante. De hecho , la búsqueda de soluciones eficientes a los problemas y de técnicas para medir la eficiencia es un tema primario del área de la teoría de la complejidad. Verificación del Software En la actualidad la comunidad de quienes se ocupan de procesos de datos se apoya entre otros enfoques de verificación de programas .  

Clasificación de los algoritmos Como se mencionó antes, la mayoría de los algoritmos tienen un parámetro primario N, normalmente el número de datos a procesar, que afecta muy significativamente al tiempo de ejecución. El parámetro N podría el grado de un polinomio, el tamaño de un archivo a ordenar o en el que se va a realizar una búsqueda, el número de nodos en un grafo, etc.   LogN: Tiempo de ejecución de un programa es logarítmico, este será ligeramente más lento a medida que crezca N. NlogN: Tiempo de ejecución es el de los algoritmos, que resuelven un problema dividiéndolo en pequeños subproblemas, resolviéndolos independientemente, y combinando después las soluciones. N2 : Tiempo de ejecución de un algoritmo es cuadrático, solo es practico para problemas relativamente pequeño. N3 : Un algoritmo que procesa tríos de elementos de datos tiene un tiempo de ejecución cúbico y no es útil mas que en problemas pequeños. 2N : Pocos algoritmos con un tiempo de ejecución exponencial son susceptibles de poder ser útiles en la practica, aunque aparecen de forma natural al aplicar el método de la fuerza bruta en la resolución de problemas.

Implementación de algoritmos La implementación de un algoritmo es desarrollar una versión inicial en su forma más simple.   Selección de un Algoritmo La primera regla es que se debe implementar primero el algoritmo más simple que resuelva un problema dado. Si el problema particular con el que se tropieza se resuelve fácilmente, entonces el algoritmo sencillo podría resolver el problema y no seria necesario hacer nada mas Análisis Empírico El principal peligro que se corre al comparar empíricamente programas es que una implementación puede ser más optimizada que otra. Optimización de un Programa La mejor forma de perfeccionar el rendimiento de un algoritmo es mediante un proceso gradual de transformación en mejores programas y mejores implementaciones. Algoritmos y Sistemas La mejora del rendimiento de un algoritmo en particular y también se aplican para mejorar el rendimiento de un sistema grande. Al construir sistemas realas está justificado un estilo de programación más «defensivo»: los programas deben implementarse de modo que puedan modificarse fácilmente, leerse con rapidez y, entenderse por otros programadores, y que además realicen una buena interfaz con otras partes del sistema.