algorÍtmica ingeniería técnica en informática de gestión y de sistemas curso 2002-2003 teoría:...

21
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

Upload: david-paz-cardenas

Post on 03-Feb-2016

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 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

ALGORÍTMICAIngeniería Técnica en Informática de Gestión y de Sistemas

curso 2002-2003

Teoría: Domingo GiménezSeminario C: José María RodríguezPrácticas Gestión: Joaquín Cervera

Prácticas Sistemas: Domingo Giménez

Page 2: 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

TEMARIO

Valor en la puntuación final

Análisis de algoritmos 3Diseño de algoritmos:

Divide y vencerás 2Algoritmos voraces 1Programación Dinámica 1Backtracking 2Branch & Bound 1

Page 3: 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

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/˜domingoTambién: enlaces a otros cursos,

exámenes resueltos

Page 4: 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

PRÁCTICAS

• Seminario de C: octubre-noviembrelaboratorio 1.2lunes, jueves 11:30-13:30

• Prácticas: laboratorio 1.2,martes 8:30-10:30jueves 9:30-11:30

laboratorio 1.3,martes 16:30-18:30martes 18:30-20:30viernes 18:30-20:30

Page 5: 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

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ásprogramación dinámicabacktracking

• Se puede aprobar la teoría y la práctica por separado o quedar pendiente de prácticas (hasta septiembre de 2003).

Page 6: 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

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.

Page 7: 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

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, …)

Page 8: 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

Introducción: PROGRAMACIÓN

Problema real

Modelo matemáticoAlgoritmo en lenguaje natural

Tipo abstracto de datosPrograma en seudolenguaje

Estructura de datosPrograma ejecutable

modelizaciónEstructura de datos

algorítmica

programación

Page 9: 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

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

Page 10: 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

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 tm(n)Caso más desfavorable tM(n)Tiempo promedio tp(n)

Page 11: 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

Ej: Cálculo del factorial fact(n):

si n=1devolver 1

en otro casodevolver (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

Page 12: 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

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)

Page 13: 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

Ej: Torres de Hanoi

Número de movimientos:

t(1)=1t(n)=2t(n-1)+1, si n>1

Expandiendo la recurrencia:

t(n) = 2 t(n-1) +1 = 2 (2t(n-2)+1) +1 = 22 t(n-2) +1+2 = 22 (2t(n-3)+1) +1+2 = 23 t(n-3)+1+2+22

….

2n-1 t(1)+1+2+…+ 2n-2 = 2n-1

Page 14: 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

Tiempo promedio • tp(n) =

S(n) t() * p()

• Conteo de instrucciones afectadas por probabilidad:

Ej: búsqueda secuencial con centinela

i=0a[n+1]=xrepetir

i=i+1hasta a[i]=x

tp(n)=2+2*p/n+4*p/n+...+2*n*p/n+(2*n+2)*(1-p)=2n+4-p(n+1)

Page 15: 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

Ej: Algoritmo de Euclides Calcular m.c.d(m,n), con m>n

repetirr = resto(m/n)m = nn = r

hasta r =0mcd = m

t(m,n) = a , si m múltiplo de nt(m,n) = b+t(n,resto(m/n)) , si m no es múltiplo de n

Page 16: 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

Algoritmos - Estructuras

Grafo Matriz de adyacencia Listas de adyacencia

1 2 3 41 2 1 0 1 1 0 1 2 3 N

2 0 0 1 0 2 3 N4 3 3 0 0 0 0 3 N

4 1 0 1 0 4 1 3 N

Memoria n2 n+a

Inicialización n2 n+a

Grado salida n gs(nodo)

Grado entrada n n+a

Page 17: 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

Comparación de algoritmos

1.1 fin=false1.2 mientras no fin1.3 fin=true1.4 para i=1,2,…n-11.5 si xi>xi+1

1.6 cambiar1.7 fin=false

2.1 para i=1,2,…,n-12.2 para j=i+1,…,n2.3 si xi>xj

2.4 cambiar

Page 18: 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

1.1 fin=false1.2 mientras no fin1.3 fin=true1.4 para i=1,2,…n-11.5 si xi>xi+1

1.6 cambiar1.7 fin=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

Page 19: 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

2.1 para i=1,2,…,n-12.2 para j=i+1,…,n2.3 si xi>xj

2.4 cambiar

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 n2+n-1 instrucciones

Page 20: 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

1.1 fin=false1.2 mientras no fin1.3 fin=true1.4 para i=1,2,…n-11.5 si xi>xi+1

1.6 cambiar1.7 fin=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?

Page 21: 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

2.1 para i=1,2,…,n-12.2 para j=i+1,…,n2.3 si xi>xj

2.4 cambiar 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?