ejemalgoritmo

13
Ejemplos de algoritmos relevantes Ricardo Peña Marí Departamento de Sistemas Informáticos y Computación Universidad Complutense de Madrid Master en formación de profesorado de Secundaria – Informática curso 2009-2010 R. Peña (SIC-UCM) Ejemplos de algoritmos Master Secundaria 09-10 1 / 13

Upload: jordi-serra

Post on 20-Mar-2016

217 views

Category:

Documents


1 download

DESCRIPTION

Master en formación de profesorado de Secundaria – Informática curso 2009-2010 Ricardo Peña Marí Departamento de Sistemas Informáticos y Computación Universidad Complutense de Madrid R. Peña (SIC-UCM) Ejemplos de algoritmos Master Secundaria 09-10 1 / 13

TRANSCRIPT

Page 1: ejemAlgoritmo

Ejemplos de algoritmos relevantes

Ricardo Peña Marí

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Master en formación de profesorado de Secundaria – Informáticacurso 2009-2010

R. Peña (SIC-UCM) Ejemplos de algoritmos Master Secundaria 09-10 1 / 13

Page 2: ejemAlgoritmo

Lecturas recomendadas

• “De Euclides a Java: Historia de los algoritmos y de los lenguajes deprogramación”. Ricardo Peña. Cap. 5. Ed. Nivola (Colección Ciencia Abierta),2006.

• “Computer Algorithms”. E. Horowitz, S. Sahni, S. Rajasekaram. ComputerScience Press 1998.

• “Introduction to Algorithms”. T. H. Cormen, C. E. Leiserson, R. L. Rivest,C. Stein, Partes I, II, IV, VI y VII. MIT Press 2001.

R. Peña (SIC-UCM) Ejemplos de algoritmos Master Secundaria 09-10 2 / 13

Page 3: ejemAlgoritmo

La programación lineal

• Suponga que es usted el director de la cocina de un cuartel y que tiene queplanificar la dieta de los soldados, sujeta a las siguientes restricciones.

1 Ha de conseguir al menos un cierto número C de calorías diariassuficiente para que los soldados soporten el entrenamiento.

2 Ha de alcanzar un mínimo P de proteínas y V de vitaminas que cubransus necesidades diarias.

3 Ha de obtener el menor coste posible para el ejército.

• Puede confeccionar la dieta eligiendo entre n alimentos. Son conocidas lascantidades p1, . . . , pn de proteínas, v1, . . . , vn de vitaminas y c1, . . . , cn decalorías contenidas en un gramo de cada alimento, así como sus preciose1, . . . , en, en euros por gramo. Su problema se puede expresar así:

minimizar e1x1 + · · · + enxn sujeto ap1x1 + · · · + pnxn ≥ P

v1x1 + · · · + vnxn ≥ V

c1x1 + · · · + cnxn ≥ C

x1 ≥ 0, . . . , xn ≥ 0

R. Peña (SIC-UCM) Ejemplos de algoritmos Master Secundaria 09-10 3 / 13

Page 4: ejemAlgoritmo

La programación lineal (2)

• Este problema se le planteó al matemático George Dantzig (1914-2005)cuando, en 1946, aceptó un empleo como consultor del departamento deplanificación de las Fuerzas Aéreas de Estados Unidos.

• Su aportación a resolver este problema, y muchos otros expresables entérminos semejantes, fue el algoritmo llamado método del simplex (1947).

• Resolver un conjunto de inecuaciones lineales sujetas a maximizar ominimizar una función objetivo, también lineal, se conoce como un problemade programación lineal.

• En términos geométricos, un simplex es un poliedro convexo en un espacion-dimensional. Si n = 2, hablamos de un polígono convexo en el plano.

• El conjunto de inecuaciones determinan un simplex llamado región factible.

• La ecuación e1x1 + · · · + enxn = K , formada a partir de la función objetivo,determina un hiperplano para cada valor de K . El mayor valor de K (o elmenor, si se trata de un problema de minimización) se alcanza en el vérticedel poliedro más alejado en la dirección en que crece (o decrece) K .

R. Peña (SIC-UCM) Ejemplos de algoritmos Master Secundaria 09-10 4 / 13

Page 5: ejemAlgoritmo

La programación lineal (y 3)

• El método del simplex comienza con cualquier punto factible y luego sedesplaza a lo largo de las aristas del poliedro buscando que crezca la funciónobjetivo. Cuando esta no puede crecer más, se ha alcanzado el valor óptimo.

• El coste asintótico del método del simplex es exponencial en el caso peor.

• No obstante ese coste se manifiesta solo en casos patológicos. La mayor partede los problemas se resuelven con costes polinomiales.

• En 1979, el matemático soviético L. Khachiyan diseñó otro algoritmo cuyocaso peor era polinomial (O(n4L), para n variables y números con L dígitos).Sin embargo, el método del simplex en la práctica era más eficiente.

• Hubo que esperar hasta 1984 para encontrar un algoritmo polinomialO(n3,5L) que en la práctica compitiera con el de Dantzig. Se llama métodoproyectivo y se debe a N. Karmarcar. A diferencia del de Dantzig, no recorrelas aristas del poliedro sino sus puntos interiores.

• Una variante de la programación lineal consiste en exigir que las incógnitastengan valores enteros en lugar de reales. Se habla entonces de programaciónlineal entera.

• La programación lineal entera es sin embargo un problema NP-completo.

R. Peña (SIC-UCM) Ejemplos de algoritmos Master Secundaria 09-10 5 / 13

Page 6: ejemAlgoritmo

Compresión de ficheros

• Todo fichero —contenga un texto, un programa en código máquina, unaimagen, o una pieza musical— está constituido por unidades elementalesllamadas octetos.

• Las técnicas de compresión buscan disminuir el espacio ocupado a costa deemplear cierta cantidad de proceso para comprimirlo y descomprimirlo.

• En 1952, el estudiante de doctorado David A. Huffman, del MIT, recibió desu profesor como trabajo de fin de curso encontrar una codificación óptimapara el juego de caracteres utilizado por los computadores.

• Las codificaciones habituales emplean una cantidad fija de bits para cadacarácter. Por ejemplo, la codificación ASCII emplea 7 bits y la UNICODE 16bits. Sin embargo, hay caracteres que aparecen con más frecuencia que otros.

• Si se adopta una codificación de longitud variable en la que los caracteresmás frecuentes reciban códigos con un menor número de bits, y los menosfrecuentes códigos con un mayor número de bits, es posible que la longitudtotal del fichero disminuya.

• La codificación de Huffman está en la base de varios estándares decompresión como PKZIP (unix), JPEG (imágenes) y MP3 (sonido).

R. Peña (SIC-UCM) Ejemplos de algoritmos Master Secundaria 09-10 6 / 13

Page 7: ejemAlgoritmo

Compresión de ficheros (2)

• Para evitar ambigüedades en la descodificación, es imprescindible que ningúncódigo sea prefijo de otro. Por ejemplo, si ’a’ recibe el código ’110101’,ningún otro carácter ha de recibir los códigos ’11010’, ’1101’, ’110’, ’11’ y ’1’.

• Huffman encontró un algoritmo que, dado un fichero para el que se conocenlas frecuencias de aparición de cada carácter, proporciona una codificación delongitud variable que satisface la propiedad de prefijo y que hace mínima lalongitud del fichero codificado.

• La tabla muestra las frecuencias relativas para un fichero con seis caracteresdistintos y el código de Huffman asignado. Si la codificación de longitud fijaasignaba un octeto a cada carácter, el ahorro obtenido es del 72%. Esto es,cada 100 octetos del fichero original pasan a ser 28 en el comprimido.

Carácter Frec. Relativa Huffman

’x’ 41 % ’1’

’y’ 17 % ’010’

’z’ 14 % ’001’

’p’ 12 % ’000’

’q’ 10 % ’0111’

’r’ 6 % ’0110’

R. Peña (SIC-UCM) Ejemplos de algoritmos Master Secundaria 09-10 7 / 13

Page 8: ejemAlgoritmo

Compresión de ficheros (y 3)

El algoritmo toma una tabla de frecuencias para n caracteres y produce un árbolbinario, llamado árbol de Huffman, en el que cada hoja corresponde a un caráctery el camino que conduce a ella desde la raíz determina su código: bifurcar a laizquierda aporta un ‘0’ y bifurcar a la derecha aporta un ‘1’. Cuanto más alejadaesté la hoja de la raíz, tanto más largo será el código de Huffman asignado.

100

59

26

12, p 14, z

33

17, y 16

6, r 10, q

41, x

El algoritmo construye el árbol “de abajo hacia arriba” y supone que las frecuenciasse hallan en una cola de prioridad. El coste del mismo está en O(n log n).

R. Peña (SIC-UCM) Ejemplos de algoritmos Master Secundaria 09-10 8 / 13

Page 9: ejemAlgoritmo

El principio “divide y vencerás”

• A veces es útil inspirarse en otros algoritmos para diseñar uno nuevo. Estaestrategia ha conducido a identificar un conjunto de técnicas o métodosalgorítmicos que el programador puede ensayar cuando se enfrenta a unproblema nuevo.

• Uno de tales métodos responde al principio militar de divide y vencerás. Elesquema general del método puede resumirse como sigue:

1 Si el problema tiene un tamaño suficientemente pequeño, resolverlodirectamente.

2 Si no lo tiene, descomponerlo en un conjunto de subproblemasp1, . . . , pn, n ≥ 1, todos ellos del mismo tipo que el problema original,pero cuyo tamaño sea una fracción del tamaño inicial.

3 Resolver los n subproblemas, invocando recursivamente al propioalgoritmo que se está diseñando.

4 Combinar las soluciones s1, . . . , sn de los subproblemas para obtener lasolución del problema original.

Los algoritmos de ordenacion quicksort y mergesort responden a esteesquema.

R. Peña (SIC-UCM) Ejemplos de algoritmos Master Secundaria 09-10 9 / 13

Page 10: ejemAlgoritmo

Multiplicación de grandes enteros

Otro es el de los soviéticos A. A. Karatsuba y Y. Ofman en 1962 para multiplicardos números enteros. El que aprendemos en la escuela necesita multiplicar cadacifra del primer número por cada cifra del segundo. Si ambos tienen n cifras, sucoste está en O(n2). El principio “divide y vencerás” produce este otro algoritmo:

1 Si x e y son los dos números iniciales y n es par, descomponemos cada unoen dos números, tomando las n

2cifras más significativas y las n

2restantes.

Llamemos x1, x2, y1 e y2 a los cuatro números resultantes. Se cumple:

x y = (x110n2 + x2)(y110

n2 + y2) = x1y110n + (x1y2 + x2y1)10

n2 + x2y2

2 El término intermedio x1y2 + x2y1 puede obtenerse mediante la resta(x1 + x2)(y1 + y2) − x1y1 − x2y2.

3 En resumen, si ignoramos las sumas y restas necesarias, de coste muchomenor que el de un producto, el número de subproblemas generados detamaño 1

2es de tres: x1y1, x2y2 y (x1 + x2)(y1 + y2).

Se obtiene un coste asintótico en O(nlog2 3) = O(n1,59), mucho mejor que O(n2).

R. Peña (SIC-UCM) Ejemplos de algoritmos Master Secundaria 09-10 10 / 13

Page 11: ejemAlgoritmo

La transformada rápida de Fourier (FFT)

• El algoritmo “divide y vencerás” que más impacto ha tenido en nuestra vidacotidiana, aunque la mayoría de los humanos lo ignoren, es la llamadatransformada rápida de Fourier, de J. W. Cooley y J. W. Tukey en 1965.

• El matemático francés Jean-Baptiste Joseph Fourier (1768-1830) demostróque toda función continua podía expresarse como la suma de infinitasfunciones sinusoidales, cada una de una frecuencia diferente.

• Dicho análisis nos permite saber cuál es la frecuencia fundamental de unafunción periódica y en qué medida se hallan presentes otras frecuencias. Esde crucial importancia si las funciones representan señales de sonido. Si sedesea disminuir el ruido de la señal (normalmente asociado a la presencia defrecuencias muy altas), se pueden eliminar del análisis de Fourier lossumandos de mayor frecuencia y luego realizar la suma de los restantes.

• Para no trabajar con funciones continuas e infinitos sumandos, la señal sesuele expresar mediante un conjunto discreto de muestras en el tiempo. Elanálisis de Fourier se convierte entonces en lo que se llama la transformadadiscreta de Fourier.

R. Peña (SIC-UCM) Ejemplos de algoritmos Master Secundaria 09-10 11 / 13

Page 12: ejemAlgoritmo

La transformada rápida de Fourier (FFT) (2)

• La transformada discreta de Fourier (DFT) requiere O(n2) multiplicaciones.

• En términos mátemáticos, dados n valores complejos x0, . . . , xn−1 se calculanlos n siguientes valores complejos:

fj =

n−1∑

k=0

xke−2πijk

n j ∈ {0, . . . , n − 1}, i2 = −1

• Las constantes e−2πijk

n , llamadas raíces n-ésimas de la unidad, se tienenprecalculadas en una matriz n × n.

• El algoritmo FFT consigue hacerlo en O(n log n) multiplicaciones:

• Si n = 1, la transformada de x0 es el propio x0.• Si n > 1 y par, se descompone el problema en dos transformadas de n

2

coeficientes, llevando los coeficientes pares a un lado y los impares aotro. Se resuelven recursivamente los dos subproblemas.

• Se combinan los resultados de cada subproblema —dos conjuntos de n2

valores cada uno— de forma que cada valor del resultado final es lasuma de un resultado del primer problema y del producto de una raízn-ésima de la unidad por un resultado del segundo problema.

R. Peña (SIC-UCM) Ejemplos de algoritmos Master Secundaria 09-10 12 / 13

Page 13: ejemAlgoritmo

La transformada rápida de Fourier (FFT) (y 3)

• El algoritmo causó una verdadera revolución, permitiendo resolver problemashasta entonces inabordables.

• La primera prueba a que se sometió fué el análisis de un temblor de tierra quetuvo lugar en Alaska en 1964. El algoritmo cuadrático necesitó 26 minutosmientras que el de Cooley y Tukey realizó la misma tarea en 6 segundos.

• Las aplicaciones de la FFT son, además del procesamiento de señales, lamultiplicación eficiente de polinomios y la resolución de ecuacionesdiferenciales en derivadas parciales.

• Se puede extender fácilmente a varias dimensiones lo que permite, porejemplo, su aplicación al tratamiento computerizado de imágenes.

• Actualmente la FFT se halla implementada en circuitos especializados queprocesan en tiempo real señales de audio o de vídeo en aplicaciones talescomo la compresión de datos, el reconocimiento de voz, el filtrado de lasseñales, la ecualización del sonido, la transmisión digital y muchas otras.

• Podemos afirmar sin temor a equivocarnos que las comunicaciones no habríanalcanzado el grado de desarrollo actual sin la ayuda de este algoritmo.

R. Peña (SIC-UCM) Ejemplos de algoritmos Master Secundaria 09-10 13 / 13