Esquemas algorítmicos: Introducción

Documentos relacionados
Conceptos de Algoritmos, Datos y Programas

Planificaciones Algoritmos y Programación II. Docente responsable: CALVO PATRICIA MABEL. 1 de 6

UNIVERSIDAD AUTÓNOMA DE YUCATÁN FACULTAD DE MATEMÁTICAS

1. Conceptos básicos sobre el problema en cuestión y cuestiones afines. 2. Formulación de los correspondientes algoritmos y su pseudocódigo.

Carrera: Licenciatura en Sistemas. Materia: Programación de computadoras. Profesor Asociado: Cdor. Héctor A. Carballo

DATOS DE IDENTIFICACIÓN DEL CURSO

Estructuras de datos: Conjuntos disjuntos

Estudio sobre la Visualización de las Técnicas de Diseño de Algoritmos

Nº DISPOSICIÓN:... DEPARTAMENTO DE: Ciencias Básicas CARRERA/S: Licenciatura en Sistemas de Información

DISTRIBUCIÓN HORARIA DE LA ASIGNATURA SEGÚN NORMATIVA

Tema 2: Representación de problemas como espacios de estados

Ingeniero Técnico en Informática de Sistemas &DUiFWHU Troncal

Introducción a la Computación (para Matemática) Primer Cuatrimestre de 2015

Introducción a los Computadores (CNM-130) Estructuras selectivas en Matlab

PROYECTO DOCENTE ASIGNATURA: "Análisis y Diseño de Algoritmos"

Nombre de la asignatura: Diseño Estructurado de Algoritmos. Carrera: Ingeniería en Sistemas Computacionales. Clave de la asignatura: SCB-9316

ESCUELA SUPERIOR POLITECNICA DEL LITORAL PROGRAMA DE ESTUDIOS

Planificaciones Algoritmos y Programación I. Docente responsable: AZCURRA DIEGO ANDRES. 1 de 5

C a l ses P P y y NP C a l se P C a l se N P N P [No N n o -De D te t rmin i i n s i ti t c i Polynomial-tim i e]

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

Bachillerato en Ingeniería del software

UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA DIRECCION GENERAL DE ASUNTOS ACADEMICOS PROGRAMA DE ASIGNATURA

Complejidad computacional (Análisis de Algoritmos)

ASIGNATURA: INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL.

UNIVERSIDAD DEL CARIBE UNICARIBE. Escuela de Informática. Programa de Asignatura

I. Complejidad de Problemas

Presentación. Estructuras de Datos y Algoritmos (EDA) Profesorado. Profesorado. Grado en Ingeniería Informática. Profesorado (Dpto.

TEMA 8: ECUACIONES EN DIFERENCIAS

UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA VICERRECTORADO ACADÉMICO COORDINACION DE PRE-GRADO PROYECTO DE CARRERA DE INGENIERIA INDUSTRIAL

Asignaturas: Estructura de Datos y Algoritmos/Algoritmos I Códigos: 3325/3301. Algebra (Algoritmos I)

Reconocimiento de Caracteres: Un abordaje invariante a translación, rotación y escala

TABLA DE CONTENIDOS MATEMÁTICAS QUINTO GRADO EDUCACIÓN PRIMARIA

ÁREA: MATEMÁTICAS UNIDAD : 1 TEMPORALIZACIÓN: OCTUBRE 1ª QUINCENA OBJETIVOS CONTENIDOS CRITERIOS DE EVALUACIÓN

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA SUR. Ingeniería Aplicada TEÓRICA SERIACIÓN 100% DE OPTATIVAS DISCIPLINARIAS

UNIDAD 1: NÚMEROS NATURALES OBJETIVOS

Algoritmos y Programas

Secuencia de actividades para trabajar con sustracción y división 5º año Posibles resoluciones. Actividad 1

INF - Informática

Modelos de Computación I

Máster Universitario en Tecnologías de la Información y las Comunicaciones Universidad de Alcalá Curso Académico 2013/14

Tema 3: El Método Simplex. Algoritmo de las Dos Fases.

Guía docente de la asignatura

Operación que hiciste en la calculadora

1. Computadores y programación

Introducción a los Computadores (CNM-130) Estructuras algorítmicas selectivas

Programación Dinámica 1

CONCRECIÓN DE LOS CRITERIOS DE EVALUACIÓN Curso: PRIMERO de BACHILLERATO CIENCIAS Asignatura: MATEMÁTICAS I Profesor: ALFONSO BdV

Carrera: ACM Participantes. Academia Eléctrica y Electrónica del Instituto Tecnológico Superior de Coatzacoalcos

Ficha de Aprendizaje N 13

La eficiencia de los programas

ANEXO 1. DEPARTAMENTO DE: Química. ASIGNATURA: Química Tecnológica. CARRERAS - PLAN: Licenciatura en Química - Plan 1997.

FICHAS REPASO 3º ESO. Para restar números enteros, se suma al minuendo el opuesto del sustraendo y después se aplican las reglas de la suma.

Estima productos (páginas )

Fundamentos de programación

CONTENIDOS Y CRITERIOS DE EVALUACIÓN MATEMÁTICAS 5º ED. PRIMARIA

TEORÍA DE GRAFOS Ingeniería de Sistemas

Objetivos formativos de Álgebra

Programa Oficial de Asignatura. Ficha Técnica. Presentación. Competencias y/o resultados del aprendizaje. Contenidos Didácticos

Teoría de Grafos PLANIFICACIONES Actualización: 1ºC/2014. Planificaciones Teoría de Grafos. Docente responsable: A DESIGNAR.

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Carrera: SCM Participantes. Representantes de la academia de sistemas y computación de los Institutos Tecnológicos.

Curso de Introducción a R Módulo 4: simulaciones estocásticas

RECONOCER EL GRADO, EL TÉRMINO Y LOS COEFICIENTES DE UN POLINOMIO

Introducción al tipo Vector Cómo guardar una colección de datos conceptualmente relacionados? - almacenar los 100 primeros números primos, - al

Carrera: DCH PARTICIPANTES. Representantes de las academias de Ingeniería en desarrollo comunitario de los Institutos Tecnológicos

ALGORITMOS GENÉTICOS

Introducción al Álgebra

6 10 3,5 2,0 4,5. PROGRAMA DE CURSO Código Nombre EL Señales y Sistemas I Nombre en Inglés Signals and Systems I SCT

Revisora: María Molero

Estructura de datos. Carrera: SCC Participantes

PE - Probabilidad y Estadística

Nombre de la asignatura : Administración de Archivos. Carrera : Ingeniería en Sistemas Computacionales. Clave de la asignatura : SCB-9323

NÚMEROS DECIMALES. 1 LECTURA Y ORDENACIÓN DE NÚMEROS DECIMALES Todo número decimal se compone de una parte entera, la coma y la parte decimal.

greedy (adj): avaricioso, voraz, ávido, codicioso, glotón

NÚMEROS DECIMALES. 1 LECTURA Y ORDENACIÓN DE NÚMEROS DECIMALES Todo número decimal se compone de una parte entera, la coma y la parte decimal.

f: D IR IR x f(x) v. indep. v. dependiente, imagen de x mediante f, y = f(x). A x se le llama antiimagen de y por f, y se denota por x = f -1 (y).

Las operaciones con números irracionales

CRITERIOS EVALUACIÓN MATEMÁTICAS

BLOQUE 5. SUCESIONES Y SERIES DE NÚMEROS REALES

UNIDAD 1: NÚMEROS RACIONALES OBJETIVOS

3. Técnicas de diseño de algoritmos

Algoritmos y Programación

Tema 13: Aplicaciones de programación funcional

CAPITULO ALGORITMOS Y PROGRAMAS CONTENIDO

Al finalizar el curso el estudiante será capaz de:

GUÍA DOCENTE. Ingeniería Informática en Sistemas de Información Doble Grado:

RAMÓN GALÁN GONZÁLEZ

6.1.- Introducción a las estructuras de datos Tipos de datos Arrays unidimensionales: los vectores Operaciones con vectores.

UNIVERSIDAD DEL VALLE DE MÉXICO PROGRAMA DE ESTUDIO DE LICENCIATURA PRAXIS MES XXI

Contenidos. Capítulo 1 Grimaldi. Introducción Reglas. Combinación. Coeficiente. Permutación. Ejercicios 20/05/2014. sin repeticiones con repeticiones

PROGRAMACIÓN UNIDADES

Departamento de Informática Universidad Técnica Federico Santa María. Tema 1: Algoritmos

El curso está dividido en tres evaluaciones, de acuerdo con la programación general del Colegio, temporalizados así:

MANUAL DE PRÁCTICAS DEL TALLER DE PROGRAMACIÒN PRACTICA NO.6

UNIVERSIDAD NACIONAL DE TRUJILLO Facultad de Ciencias Físicas y Matemáticas Escuela Académico Profesional de Informática

INSTITUTO TECNOLOGICO DE LAS AMERICAS CARRERA DE TECNOLOGO EN DESARROLLO DE SOFTWARE PRECALCULO

UNIDAD 8: SUCESIONES Y SERIES

CANGURO MATEMÁTICO Nivel Estudiante (6to. Curso)

PROGRAMA DE CURSO. Metodologías de Diseño y Programación. Nombre en Inglés. Design and Programming Methodologies.

CREATIVIDAD E INNOVACION.

Transcripción:

Algoritmia Algoritmia = = tratamiento sistemático de técnicas fundamentales para el diseño y análisis de algoritmos eficientes J. Campos - C.P.S. Esquemas algorítmicos - Pág. 1

Computadores cada vez más rápidos y a más bajo precio: Se resuelven problemas de cálculo antes impensables. Inconscientemente se tiende a restar importancia al concepto de eficiencia. Existen problemas que seguirán siendo intratables si se aplican ciertos algoritmos por mucho que se aceleren los computadores importancia de nuevas soluciones eficientes J. Campos - C.P.S. Esquemas algorítmicos - Pág. 2

Ejemplo: En Agosto de 1977, Scientific American proponía a sus lectores el reto consistente en descifrar un mensaje secreto, para así ganar cien dólares. Parecía algo seguro: se estimaba en aquel momento que el ordenador más rápido existente, empleando el algoritmo más eficiente de los conocidos, no podría ganar la apuesta salvo funcionando sin interrupción durante un tiempo equivalente a millones de veces la edad del Universo. Sin embargo, ocho meses de cálculo que comenzaron dieciséis años después bastaron para la tarea. Qué había pasado? G. Brassard y P. Bratley Fundamentos de Algoritmia (Prólogo) J. Campos - C.P.S. Esquemas algorítmicos - Pág. 3

Un curso de algoritmia (o esquemas algorítmicos ) NO ES ni un curso de programación (ya debéis saber programar) ni un curso de estructuras de datos (ya debéis conocer las fundamentales) TAMPOCO ES una colección de recetas o algoritmos listos para ser introducidos en el computador para resolver problemas específicos Si tu problema es ordenar un fichero secuencial de enteros entonces ejecuta el algoritmo A026. J. Campos - C.P.S. Esquemas algorítmicos - Pág. 4

Un curso de algoritmia tiene como objetivo principal: dar más herramientas fundamentales para facilitar el desarrollo de programas qué herramientas?: técnicas o esquemas de diseño de algoritmos eficientes J. Campos - C.P.S. Esquemas algorítmicos - Pág. 5

Un medio para alcanzar ese objetivo es: presentar cada esquema de forma genérica, incidiendo en los principios que conducen a él, e ilustrar el esquema mediante ejemplos concretos de algoritmos tomados de varios dominios de aplicación J. Campos - C.P.S. Esquemas algorítmicos - Pág. 6

Un ejemplo muy sencillo: Multiplicación de dos enteros positivos con lápiz y papel. En España: 981 1234 3924 2943 1962 981 1210554 En Inglaterra: 981 1234 981 1962 2943 3924 1210554 Ambos métodos son muy similares, los llamaremos algoritmo clásico de multiplicación. J. Campos - C.P.S. Esquemas algorítmicos - Pág. 7

Algoritmo de multiplicación a la rusa : 981 1234 1234 490 2468 245 4936 4936 122 9872 61 19744 19744 30 39488 15 78976 78976 7 157952 157952 3 315904 315904 1 631808 631808 1210554 Ventaja: no hay que almacenar los productos parciales. Sólo hay que saber sumar y dividir por 2. J. Campos - C.P.S. Esquemas algorítmicos - Pág. 8

Todavía otro algoritmo: De momento, exigimos que ambos números tengan igual nº de cifras y que éste sea potencia de 2. Por ejemplo: 0981 y 1234. En primer lugar, partimos ambos números por la mitad y hacemos cuatro productos: multiplicar desplazar resultado 1) 09 12 4 108 2) 09 34 2 306 3) 81 12 2 972 4) 81 34 0 2754 1210554 doble del nº de cifras nº de cifras Es decir, hemos reducido un producto de n os de 4 cifras en cuatro productos de n os de 2 cifras, varios desplazamientos y una suma. J. Campos - C.P.S. Esquemas algorítmicos - Pág. 9

Los productos de números de 2 cifras pueden hacerse con la misma técnica. Por ejemplo, 09 y 12: multiplicar desplazar resultado 1) 0 1 2 0 2) 0 2 1 0 3) 9 1 1 9 4) 9 2 0 18 108 Es un ejemplo de algoritmo que utiliza la técnica de divide y vencerás. Tal y como lo hemos presentado NO mejora en eficiencia al algoritmo clásico. Pero, puede mejorarse: Es posible reducir un producto de dos números de muchas cifras a 3 (en vez de 4) productos de números de la mitad de cifras, y éste SI que mejora al algoritmo clásico. Y aún se conocen métodos más rápidos para multiplicar números muy grandes. J. Campos - C.P.S. Esquemas algorítmicos - Pág. 10

Ideas clave: Incluso para un problema tan básico pueden construirse MUCHAS soluciones. El método clásico lo usamos con lápiz y papel porque nos resulta muy familiar (lo que se aprende en la infancia ). El método a la rusa se implementa en hardware en los computadores por la naturaleza elemental de los cálculos intermedios. El método de divide y vencerás es más rápido si se quiere multiplicar números grandes. La algoritmia estudia las propiedades de los algoritmos y nos ayuda a elegir la solución más adecuada en cada situación. En muchos casos, una buena elección ahorra tiempo y dinero. En algunos casos, una buena elección marca la diferencia entre poder resolver un problema y no poder hacerlo. J. Campos - C.P.S. Esquemas algorítmicos - Pág. 11

A quién puede interesar este curso? A todo aquél a quien: le guste diseñar algoritmos para resolver nuevos problemas o algoritmos mejores a los triviales para resolver viejos problemas, y O(n 2 ) O(nlog n)? tenga dificultades en resolver, por ejemplo, los siguientes problemas: J. Campos - C.P.S. Esquemas algorítmicos - Pág. 12

Diseñar un algoritmo de coste O( V 3 ) para determinar si un grafo no dirigido G = (V,A) contiene un cuadrado (i.e., un circuito de longitud 4) como subgrafo. Mejorar el algoritmo hasta conseguir que sea de coste O( V A ). Dada una secuencia de datos, S = x 1, x 2,,x n, la multiplicidad de x en S es el número de veces que x aparece en S. Un dato x es mayoritario en S si su multiplicidad es mayor que n/2. Se trata de diseñar un algoritmo de coste promedio lineal que, dada un secuencia de datos, determine si existe un dato mayoritario y, en caso afirmativo, cuál es éste. J. Campos - C.P.S. Esquemas algorítmicos - Pág. 13

Sobre el río Tajo hay n estafetas de correos. En cada estafeta se puede alquilar un bote que permite ir a cualquier otra estafeta río abajo (es casi imposible remontar la corriente). La tarifa indica el coste del viaje de i a j para cualquier punto de partida i y cualquier punto de llegada j más abajo en el río. Puede suceder que un viaje de i a j sea más caro que una sucesión de viajes más cortos, en cuyo caso se tomaría un primer bote hasta una estafeta k y un segundo bote para continuar a partir de k. No hay coste adicional por cambiar de bote. Diseñar un algoritmo eficiente que determine el coste mínimo para ir de i a j. Dadas dos cadenas de caracteres, A = a 1 a 2 a n y B = b 1 b 2 b n, diseñar un algoritmo de coste O(n) para determinar si B es una permutación cíclica de A (i.e., responder a la pregunta k, 1 k n, tal que a i = b (k+i) mod n, i: 1 i n?). Diseñar un algoritmo eficiente para decidir con un porcentaje bajo de error si un número dado muy grande (de varios cientos de cifras) es primo o no. J. Campos - C.P.S. Esquemas algorítmicos - Pág. 14

Contenidos de la asignatura a los esquemas algorítmicos Algoritmos voraces Divide y vencerás Programación dinámica Búsqueda con retroceso Ramificación y acotación Precondicionamiento y reconocimiento de patrones Algoritmos probabilistas Algoritmos genéticos Lectura complementaria: Recorridos de grafos J. Campos - C.P.S. Esquemas algorítmicos - Pág. 15

Bibliografía básica [BB96] G. Brassard y P. Bratley. Fundamentos de Algorítmia. Prentice Hall, 1997. [Cam98] J. Campos. Esquemas Algorítmicos. Transparencias de la asignatura, 1998. J. Campos - C.P.S. Esquemas algorítmicos - Pág. 16

Bibliografía complementaria [AHU88] [BB90] [CLR90] [Fra94] [GBY91] [GC97] A.V. Aho, J.E. Hopcroft y J.D Ullman. Estructuras de datos y algoritmos. Addison-Wesley Iberoamericana, S.A., 1988. G. Brassard y P. Bratley. Algorítmica. Concepción y análisis. Masson, S.A., 1990. T.H. Cormen, C.E. Leiserson y R.L. Rivest. Introduction to Algorithms. The MIT Press, 1990. X. Franch Gutiérrez. Estructuras de datos. Especificación, diseño e implementación. Edicions UPC, 1994. G.H. Gonnet y R. Baeza-Yates. Handbook of Algorithms and Data Structures. In Pascal and C. Addison-Wesley, 1991. M. Gen y R. Cheng. Genetic Algorithms & Engineering Design. John Wiley and Sons, 1997. [GGSV93] J. Galve, J.C. González, A. Sánchez y J.A. Velázquez. Algorítmica. Diseño y análisis de algoritmos funcionales e imperativos. RA-MA Ed., 1993. J. Campos - C.P.S. Esquemas algorítmicos - Pág. 17

Bibliografía complementaria [HS78] [Knu87] [Koz92] [Man89] [MS91] [Pea84] [Wei95] E. Horowitz y S. Sahni. Fundamentals of Computer Algorithms. Computer Science Press Inc., 1978. D.E. Knuth. El arte de programar ordenadores. Volumen III: Clasificación y búsqueda. Editorial Reverté, 1987. D.C. Kozen. The Design and Analysis of Algorithms. Springer-Verlag, 1992. U. Manber. Introduction to Algorithms. A Creative Approach. Addison-Wesley, 1989. B.M.E. Moret y H.D. Shapiro. Algorithms: From P to NP. Volume I: Design & Efficiency. The Benjamin/Cummings Pub. Co., 1991. J. Pearl. Heuristics. Intelligent Search Strategies for Computer Problem Solving. Addison-Wesley, 1984. M.A. Weiss. Estructuras de datos y algoritmos. Addison-Wesley Iberoamericana, S.A., 1995. J. Campos - C.P.S. Esquemas algorítmicos - Pág. 18