Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porDavid Paz Cárdenas Modificado hace 10 años
1
ALGORÍTMICA Ingeniería Técnica en Informática de Gestión y de Sistemas curso 2002-2003 Teoría: Domingo Giménez Seminario C: José María Rodríguez Prácticas Gestión: Joaquín Cervera Prácticas Sistemas: Domingo Giménez
2
TEMARIO Valor en la puntuación final Análisis de algoritmos3 Diseño de algoritmos: Divide y vencerás2 Algoritmos voraces1 Programación Dinámica1 Backtracking2 Branch & Bound1
3
BIBLIOGRAFÍA Brassard, Bratley: Fundamentos de algoritmos. (estudio por paradigmas) Cormen, Leiserson, Rivest: Introduction to Algorithms. The MIT Press. 1990. (estudio por problemas) Apuntes de la asignatura (estudio por paradigmas) en: servinf.dif.um.es/˜domingo También: enlaces a otros cursos, exámenes resueltos
4
PRÁCTICAS Seminario de C: octubre-noviembre laboratorio 1.2 lunes, jueves 11:30-13:30 Prácticas:laboratorio 1.2, martes 8:30-10:30 jueves 9:30-11:30 laboratorio 1.3, martes 16:30-18:30 martes 18:30-20:30 viernes 18:30-20:30
5
EVALUACIÓN Examen de teoría 7.5 (mínimo de 2.5 / 7.5) Prácticas 2.5 (mínimo de 1.25 / 2.5) En convocatoria de febrero se puede optar por: examen de teoría 5 (mínimo 1.75 / 5) prácticas 5 (mínimo 2.5 / 5) entregando las prácticas en los plazos establecidos, revisándolas y obteniendo evaluación positiva, no habría que examinarse de las partes correspondientes: divide y vencerás programación dinámica backtracking Se puede aprobar la teoría y la práctica por separado o quedar pendiente de prácticas (hasta septiembre de 2003).
6
Introducción: ALGORÍTMICA Estudia: ›Diseño de algoritmos: esquemas para resolver problemas. Divide y vencerás, avance rápido, programación dinámica, Backtracking, Branch & Bound ›Análisis de algoritmos: recursos necesarios para resolver el problema con el algoritmo elegido. Ocupación de memoria, tiempo de ejecución. De manera que se pueda decidir qué algoritmo es mejor para nuestro problema y entrada.
7
Introducción: ALGORITMO Conjunto de reglas para resolver un problema. Debe ser: ›Definible. En seudocódigo, pero pueda dar lugar a un programa. ›De un conjunto de datos de entrada producir unos datos de salida, en un número finito de pasos (tiempo de ejecución finito). Además debemos diseñar algoritmos eficientes: que el tiempo para acabar sea “razonable”. › Determinista si para la misma entrada produce siempre la misma salida. No determinista en caso contrario (redondeos, probabilistas, paralelos, …)
8
Introducción: PROGRAMACIÓN Problema real Modelo matemático Algoritmo en lenguaje natural Tipo abstracto de datos Programa en seudolenguaje Estructura de datos Programa ejecutable modelización Estructura de datos algorítmica programación
9
Estudio de algoritmos Se trata de diseñar algoritmos eficientes: que usan pocos recursos: ›memoria ›tiempo › otros (memoria secundaria, tiempo de programación, …) Para decidir: ›qué algoritmo programar ›qué algoritmo utilizar en resolver un problema para una cierta entrada › detectar fallo en programa que no funciona bien
10
Tiempo de ejecución Se intenta obtener el tiempo de ejecución para un cierto tamaño de entrada, t(n) Influyen factores externos al algoritmo: compilador, máquina, programador, …; por lo que normalmente se estudia la forma en que crece t(n), y se utilizan notaciones asintóticas: , O, , o Se cuenta el número de operaciones, o las de un cierto tipo, o cada operación afectada de un coste diferente Se estudian: Caso más favorable t m (n) Caso más desfavorable t M (n) Tiempo promedio t p (n)
11
Ej: Cálculo del factorial fact(n): si n=1 devolver 1 en otro caso devolver (fact(n-1)*n) tiempo: t(n)=t(n-1)+a=t(n-2)+2*a=... =t(1)+(n-1)*c memoria: m(n)=m(n-1)+c=m(n-2)+2*c=... =m(1)+(n-1)*c
12
Ej: Torres de Hanoi Hanoi(origen,destino,pivote,discos): si discos=1 moveruno(origen,destino) en otro caso Hanoi(origen,pivote,destino,discos-1) moveruno(origen,destino) Hanoi(pivote,destino,origen,discos-1)
13
Ej: Torres de Hanoi Número de movimientos: t(1)=1 t(n)=2t(n-1)+1, si n>1 Expandiendo la recurrencia: t(n) = 2 t(n-1) +1 = 2 (2t(n-2)+1) +1 = 2 2 t(n-2) +1+2 = 2 2 (2t(n-3)+1) +1+2 = 2 3 t(n-3)+1+2+2 2 …. 2 n-1 t(1)+1+2+…+ 2 n-2 = 2 n -1
14
Tiempo promedio t p (n) = S(n) t( ) * p( ) Conteo de instrucciones afectadas por probabilidad: Ej: búsqueda secuencial con centinela i=0 a[n+1]=x repetir i=i+1 hasta a[i]=x t p (n)=2+2*p/n+4*p/n+...+2*n*p/n+(2*n+2)*(1-p)= 2n+4-p(n+1)
15
Ej: Algoritmo de Euclides Calcular m.c.d(m,n), con m>n repetir r = resto(m/n) m = n n = r hasta r =0 mcd = m t(m,n) = a,si m múltiplo de n t(m,n) = b+t(n,resto(m/n)), si m no es múltiplo de n
16
Algoritmos - Estructuras GrafoMatriz de adyacenciaListas de adyacencia 1 2 3 4 1 21 0 1 1 01 2 3 N 2 0 0 1 02 3 N 4 33 0 0 0 03 N 4 1 0 1 04 1 3 N Memorian 2 n+a Inicializaciónn 2 n+a Grado salidangs(nodo) Grado entradann+a
17
Comparación de algoritmos 1.1fin=false 1.2mientras no fin 1.3fin=true 1.4para i=1,2,…n-1 1.5si x i >x i+1 1.6cambiar 1.7fin=false 2.1para i=1,2,…,n-1 2.2para j=i+1,…,n 2.3si x i >x j 2.4cambiar
18
1.1fin=false 1.2mientras no fin 1.3fin=true 1.4para i=1,2,…n-1 1.5si x i >x i+1 1.6cambiar 1.7fin=false Caso más favorable: Entrada 1,2,3,4: 1.1, 1.2, 1.3, 1.4 (i=1), 1.5 1.4 (i=2), 1.5 1.4 (i=3), 1.5 1.4 (sale) 1.2 (sale) Total 11 instrucciones Entrada 1,2,…,n: 1.1, 1.2, 1.3, 1.4 (i=1), 1.5 1.4 (i=2), 1.5 … 1.4 (i=n-1), 1.5 1.4 (sale) 1.2 (sale) Total 2n+3 instrucciones
19
2.1para i=1,2,…,n-1 2.2para j=i+1,…,n 2.3si x i >x j 2.4cambiar Caso más favorable: Entrada 1,2,3,4: 2.1 (i=1), 2.2 (j=2), 2.3 2.2 (j=3), 2.3 2.2 (j=4), 2.3 2.2 (sale) 2.1 (i=2), 2.2 (j=3), 2.3 2.2 (j=4), 2.3 2.2 (sale) 2.1 (i=3), 2.2 (j=4), 2.3 2.2 (sale) 2.1 (sale) Total 19 instrucciones Entrada 1,2,…,n: 2.1 (i=1), 2.2 (j=2), 2.3 … 2.2 (j=n), 2.3 2.2 (sale) 2.1 (i=2), 2.2 (j=3), 2.3 … 2.2 (j=n), 2.3 2.2 (sale) … 2.1 (i=n-1), 2.2 (j=n), 2.3 2.2 (sale) 2.1 (sale) Total n 2 +n-1 instrucciones
20
1.1fin=false 1.2mientras no fin 1.3fin=true 1.4para i=1,2,…n-1 1.5si x i >x i+1 1.6cambiar 1.7fin=false Caso más desfavorable: Entrada 4,3,2,1: 1.1, 1.2, 1.3, 1.4 (i=1), 1.5, 1.6 (3421), 1.7 1.4 (i=2), 1.5, 1.6 (3241), 1.7 1.4 (i=3), 1.5, 1.6 (3214), 1.7 1.4 (sale) 1.2, 1.3, 1.4 (i=1), 1.5, 1.6 (2314), 1.7 1.4 (i=2), 1.5, 1.6 (2134), 1.7 1.4 (i=3), 1.5 1.4 (sale) … ¿instrucciones?
21
2.1para i=1,2,…,n-1 2.2para j=i+1,…,n 2.3si x i >x j 2.4cambiar Caso más desfavorable: Entrada 4,3,2,1: 2.1 (i=1), 2.2 (j=2), 2.3, 2.4 (3421) 2.2 (j=3), 2.3, 2.4 (2431) 2.2 (j=4), 2.3, 2.4 (1432) 2.2 (sale) 2.1 (i=2), 2.2 (j=3), 2.3, 2.4 (1342) 2.2 (j=4), 2.3, 2.4 (1243) 2.2 (sale) 2.1 (i=3), 2.2 (j=4), 2.3, 2.4 (1234) 2.2 (sale) 2.1 (sale) ¿instrucciones?
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.