UNIVERSIDAD DE LAS AMERICAS ESCUELA DE REDES Y TELECOMUNICACIONES Nombre: Byron Churta Tema: Veinte Algoritmos Matemáticos Fecha: 19 de agosto del 2010 A L G O R I T M O S MATEMÁTICOS
1.- Método Simplex En la teoría de optimización, optimización, el algoritmo símplex , descubierto por el matemático norteamericano George Bernard Dantzig en 1947, es una técnica popular para dar soluciones numéricas del problema de la programación lineal. lineal. Un método sin relación, pero llamado de manera similar, es el método Nelder-Mead o método símplex cuesta abajo, debido a Nelder y Mead (1965), que es un método numérico para optimización de problemas libres multidimensionales, multidimensionales, perteneciente a la clase más general de algoritm algoritmos os de búsqueda búsqueda.. El que permite encontrar una solución óptima en un problema de maximización o minimización, buscando en los vértices del polígono. polígono. En ambos casos, el método usa el concepto de un símplex, símplex, que es un politopo de N + 1 vértices en N dimensiones: un segmento de línea sobre una línea, un triá triáng ngul ulo o sobr sobre e un plan plano, o, un tetraedro en un espaci acio de tres dimensiones y así sucesivamente
2.- Compilador Fortran En 1957 IBM presenta presenta el Compilador Compilador Fortran. Fortran. Un compilador compilador es un programainformático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de máquina, máquina, pero también puede ser simplemente texto. Este proceso de traducción se conoce como compilación. compilación. Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, nivel, a otro lenguaje de nivel inferior inferior (típicam (típicamente ente lengua lenguaje je de máqui máquina na). ). De esta esta man manera era un programador puede diseñar un programa en un lenguaje mucho más
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
cercano cercano a como piensa piensa un ser humano, para luego compilarlo compilarlo a un programa más manejable por una computadora. El lenguaje fue diseñado teniendo en cuenta que los programas serían escritos en tarjetas perforadas de 80 columnas. Así por ejemplo, las líneas debían ser numeradas y la única alteración posible en el orden de ejecución era producida con la instrucción goto. Estas características han evolucionado de versión en versión. Las actuales con contien tienen en subpr ubpro ogram gramas as,, recu ecursió sión y una vari ariada ada gam gama de estructuras de control. control.
3.- El algoritmo QR EN 1959 El algoritmo algoritmo QR permite obtener obtener los eigenvalores eigenvalores o valores propios de una matriz de forma realmente sencilla. El algoritmo QMR fue creado para resolver el sistema lineal Ax = b donde A es una matriz cuadrada que no requiere ser simétrica. El algoritmo QMR Quasi-Minimal Residual Residual se debe a Roland W. Freund y Noël M. Nachtigal los cuales en 1991 publicaron este algoritmo el cual se basa en la biortogonalización de Lanczos.
4.- Ordenamiento de Vectores o Listas En 1962 QuickSort famoso algoritmo de ordenamiento de vectores o listas, donde se aplica la frase de "divide y vencerás". El algoritmo fundamental es el siguiente: •
•
•
•
Elegir un elemento de la lista de elementos a ordenar, al que llamaremos pivote. Resituar los demás elementos de la lista a cada lado del pivote, de manera que a un lado queden todos los menores que él, y al otro los mayores. Los elementos iguales al pivote pueden ser colocados tanto a su derecha como a su izquierda, dependiendo de la implem implement entaci ación ón desead deseada. a. En este este moment momento, o, el pivote pivote ocupa exactamente el lugar que le corresponderá en la lista ordenada. La lista queda separada en dos sublistas, una formada por los elementos a la izquierda del pivote, y otra por los elementos a su derecha. Repeti Repetirr este este proces proceso o de forma forma recurs recursiva iva para para cada cada subli sublista sta mien mientr tras as ésta éstas s cont conten enga gan n más más de un elem elemen ento to.. Un Una a vez vez terminado este proceso todos los elementos estarán ordenados.
Como se puede suponer, la eficiencia del algoritmo depende de la
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
•
•
En el mejor caso, el pivote termina en el centro de la lista, dividién dividiéndola dola en dos sublistas sublistas de igual tamaño. tamaño. En este caso, el orden de complejidad del algoritmo es O(n·log n). En el peor caso, el pivote termina en un extremo de la lista. El orden orden de compl compleji ejidad dad del algori algoritmo tmo es entonc entonces es de O(n²). O(n²). El peor peor caso caso depe depend nder erá á de la impl implem emen enta taci ción ón del del algo algori ritm tmo, o, aunq aunque ue habi habitu tual alme ment nte e ocur ocurre re en list listas as que que se encu encuen entr tran an ordenadas, o casi ordenadas. Pero principalmente depende del pivote, si por ejemplo el algoritmo implementado toma como pivote siempre el primer elemento del array, array, y el array que le pasamos está ordenado, siempre va a generar a su izquierda un array vacío, lo que es ineficiente.
En conc conclu lusi sión ón,, el núme número ro tota totall de comp compar arac acio ione nes s que que hace hace el algoritmo es: n + n + n + ..... + n = kn, donde k = log2(n), por tanto el tiempo de ejecución del algoritmo en el mejor caso es O(n.log2n)
5.- Transformada Rápida de Fourier (FFT) En 1965 Transformada Rápida de Fourier (FFT) revolucionó el mundo de las telecomunicaciones. telecomunicaciones. FFT es la abreviatura usual (del inglés Fast Fourier Transform) de un eficiente algoritmo que permite calcular la transformada de Fourier discreta (DFT) y su inversa. La FFT es de gran importancia en una ampli amplia a varied variedad ad de aplica aplicacio ciones nes,, desde desde el tratamien tratamiento to digital digital de señales y filtrado digital en general a la resolución de ecuaciones diferenciales parciales o los algoritmos de multiplicación rápida de grandes enteros. El algoritmo pone algunas limitaciones en la señal y en el espectro resultante. Por ejemplo: la señal de la que se tomaron muestras y que se va a transformar debe consistir de un número de muestras igual a una potencia de dos. La mayoría de los analizadores TRF permiten la transformación de 512, 1024, 2048 o 4096 muestras. El rango de frecuencias cubierto por el análisis TRF depende de la cantidad de muestras recogidas y de la proporción de muestreo.
6.- Algoritmo de diezmado en el tiempo Es el algoritmo más famoso para el cálculo de una FFT, diseñado por J.W. Cooley y John Tukey en 1965. Tomando como entrada una señal discreta x[n] con N muestras, se basa en dividir la señal de entrada en otras dos señales de N/2 muestras (por un lado los coeficientes pare pares s y por por otro otro los los impa impare res) s) y se enví envían an cada cada una una de esta estas s
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
a las muestras pares. A su vez, las FFT de N/2 puntos se pueden resolver de esta misma manera, realizando esta operación de manera recursiva hasta obtener una FFT de una señal de tamaño 2, cuyo resultado es: X[0] = x[0] + x[1] X[1] = x[0] − x[1]
Aplicaciones: • • • • •
Tratamiento de imagen (PNG (PNG)) y audio (MP3 (MP3)) Reducción de ruido en señales, como el ruido blanco Análisis en frecuencia de cualquier señal discreta Análisis de materiales y estadística Síntesis, Síntesis, mediante la transformada inversa IFFT
7.- Método MonteCarlo En 1946 John von Newman entre otros diseñaron este método, para apr aproxi oximar mar fun funcio ciones. nes. Bajo ajo el nombr ombre e de Méto Método do Mont Monte e Carl arlo o Simulación Monte Carlo se agrupan una serie de procedimientos que analizan distribuciones de variables aleatorias usando simulación de números aleatorios. El Méto Método do de Mont Monte e Carlo arlo da solu soluci ción ón a una una gran gran vari varied edad ad de prob proble lema mas s mate matemá máti tico cos s haci hacien endo do expe experi rime ment ntos os con con mues muestr treo eos s estadísticos en una computadora. El método es aplicable a cualquier tipo de problema, ya sea estocástico o determinístico. Genera Generalme lmente nte en estadí estadísti stica ca los modelo modelos s aleato aleatori rios os se usan usan para para simular fenómenos que poseen algún componente aleatorio.
8.- Algoritmo de ordenamiento ordenamiento En computación y matemáticas un algo algori ritm tmo o de orde ordena nami mien ento to recursivo recursivo es un algoritmo que pone elementos de una lista o un vector en una secuencia dada por una relación de orden, orden, es decir, el resultado de salida ha de ser una permutación o reordenamiento de la entrada que satisfaga la relación de orden dada. Las relaciones de orden más usadas son el orden numérico y el orden lexicográfico. lexicográfico. Ordenamientos eficientes son importantes para optimizar el uso de otros algoritmos (como los de búsqueda y fusión) que requieren listas ordenadas para una ejecución rápida. También es útil para poner dato datos s en form forma a canó canóni nica ca y para para gene genera rarr resu result ltad ados os legi legibl bles es por por humanos.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
anali analizad zado o desde desde 1956. 1956.1 Aunque Aunque muchos muchos puedan puedan consid considera erarlo rlo un problema resuelto, nuevos y útiles algoritmos de ordenamiento se siguen inventado hasta el día de hoy (por ejemplo, el ordenamiento de biblioteca se publicó por primera vez en el 2004). Los algoritmos de orde ordena nami mien ento to son son comu comune nes s en las las clas clases es intr introd oduc ucto tori rias as a la computación, donde la abundancia de algoritmos para el problema proporciona una gentil introducción introducción a la variedad de conceptos núcleo de los algoritmos, como notación de O mayúscula, mayúscula, algoritmos divide y vencerás, vencerás, estructuras de datos, datos, análisis de los casos peor, mejor, y promedio, promedio, y límites inferiores.
9.- Búsqueda en anchura Formalmente, BFS es un algoritmo de búsqueda sin información, que expande y examina todos los nodos de un árbol sistemáticamente para para buscar buscar una soluc solució ión. n. El algori algoritmo tmo no usa ningun ninguna a estrat estrategi egia a heurística. heurística. Si las arist aristas as tienen tienen pesos pesos negati negativos vos aplica aplicarem remos os el algoritm algoritmo o de Bellman-Ford en alguna de sus dos versiones. Procedimiento •
•
•
•
•
Dado un vértice fuente s, Breadth-first search sistemáticamente explora los vértices de G para “descubrir” todos los vértices alcanzables desde s. Calcula la distancia (menor número de vértices) desde s a todos los vértices alcanzables. Después produce un árbol BF con raíz en s y que contie contiene ne a todos los vértices alcanzables. El camino desde s a cada vértice en este recorrido contiene el mínimo número de vértices. vértices. Es el camino más corto medido en número de vértices. Su nombre se debe a que expande uniformemente la frontera entre lo descubierto y lo no descubierto. Llega a los nodos de distancia k, sólo tras haber llegado a todos los nodos a distancia k-1.
10.- Búsqueda en profundidad Una Búsqueda en profundidad (en inglés DFS o Depth First Search) es algoritmo que permite recorrer todos los nodos de grafo árbol
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
camino, regresa (Backtracking (Backtracking), ), de modo que repite el mismo proceso con cada uno de los hermanos del nodo ya procesado.
11.- Algoritmo de búsqueda A* El algoritmo algoritmo de búsqueda A* (A Asterisco) Asterisco) se clasific clasifica a dentro dentro de los algoritmos de búsqueda en grafos. grafos. Presentado por primera vez en 1968 por Peter E. Hart, Hart, Nils J. Nilsson y Bertram Raphael, Raphael, el algoritmo encu encuen entr tra, a, siem siempr pre e y cuan cuando do se cump cumpla lan n unas unas dete determ rmin inad adas as condiciones, el camino de menor coste entre un nodo origen y uno objetivo. Como todo algoritmo de búsqueda en anchura, A* es un algoritmo completo: en caso de existir una solución, siempre dará con ella.
12.- Ordenación topológica Una ordenación ordenación topológi topológica ca de un grafo acíclico G dirigido es una ordenación lineal de todos los nodos de G que conserva la unión entre vértices vértices del grafo G original. La condición que el grafo no contenga cicl ciclos os es impo import rtan ante te,, ya que que no se pued puede e obte obtene nerr orde ordena naci ción ón topológica de grafos que contengan ciclos. ciclos. Usualmente, para clarificar el concepto se suelen identificar los nodos con tareas a realizar en la que hay una precedencia a la hora de ejecutar dichas tareas. tareas. La ordenación topológica por tanto es una lista en orden lineal en que deben realizarse las tareas. Para poder encontrar la ordenación topológica del grafo G deberemos aplicar una modificación del algoritmo de búsqueda en profundidad (DFS). (DFS). Los algoritmos usuales para el ordenamiento topológico tienen un tiempo de ejecución de la cantidad de nodos más la cantidad de aristas (O (O(|V|+|E|)). Uno de los los algor algoritm itmos, os, primer primero o descri descrito to por Kahn (1962), (1962), traba trabaja ja elig eligie iend ndo o los los vért vértic ices es del del mism mismo o orde orden n como como un even eventu tual al orde orden n topol topológi ógico. co. Primer Primero, o, busca busca la lista lista de los los "nodos "nodos inici iniciale ales" s" que no tienen arcos entrantes y los inserta en un conjunto S; donde al menos uno de esos nodos existe si el grafo es acíclico.
13.- Componente fuertemente conexo En la Teoría de los grafos, grafos, un grafo dirigido es llamado llamado fuertement fuertemente e conexo si para cada par de vértices u y v existe un camino de u hacia
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Un subgrafo fuertemente conexo es máximo si contiene todos los vértices del grafo o si al agregarle un vértice cualquiera deja de ser fuertemente conexo. El cálculo de los componentes fuertemente conexos de un grafo es uno de los problemas fundamentales de la Teoría de los grafos. grafos. El primer primer algori algoritmo tmo que trabaj trabaja a en tiempo tiempo lineal lineal para para resol resolver ver este este 1 problema fue propuesto por Robert Tarjan en 1970 a base de una búsque búsqueda da en profun profundid didad ad (depth (depth-fi -first rst search search). ). Otros Otros algor algoritm itmos os aparecen en los principales textos sobre algorítmica. algorítmica .
14.- Algoritmo de Dijkstra El algo algori ritm tmo o de Dijk Dijkst stra ra,, tamb tambié ién n llam llamad ado o algo algori ritm tmo o de cami camino nos s mínimos, es un algoritmo para la determinación del camino más corto dado un vértice origen al resto de vértices en un grafo dirigido y con pesos en cada arista. arista . Su nombre se refiere a Edsger Dijkstra, Dijkstra, quien lo describió por primera vez en 1959. La idea subyacente en este algoritmo consiste en ir explorando todos los caminos más cortos que parten del vértice origen y que llevan a todos los demás vértices; cuando se obtiene el camino más corto desde el vértice origen, al resto de vértices que componen el grafo, el algo algori ritm tmo o se deti detien ene. e. El algo algori ritm tmo o es una una espe especi cial aliz izac ació ión n de la búsqueda de costo uniforme, y como tal, no funciona en grafos con aristas de costo negativo (al elegir siempre el nodo con distancia meno menor, r, pued pueden en qued quedar ar excl exclui uido dos s de la búsq búsque ueda da nodo nodos s que que en próximas iteraciones bajarían el costo general del camino al pasar por una arista con costo negativo).
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
reducción a problemas de caminos más cortos”, cortos”, y son un ejemplo de una reducción del proble problema ma del camino hamiltoniano que es NPcompleto hast hasta a el prob proble lema ma de cami camino nos s más más cort cortos os con con peso pesos s gene genera rale les. s. Si un graf grafo o cont contie iene ne un cicl ciclo o de cost coste e tota totall nega negati tivo vo ento entonc nces es este este graf grafo o no tien tiene e solu soluci ción ón.. El algo algori ritm tmo o es capa capaz z de detectar este caso. Si el graf grafo o cont contie iene ne un cicl ciclo o de cost coste e nega negati tivo vo,, el algo algori ritm tmo o lo detectará, pero no encontrará el camino más corto que no repite ningún vértice. La complejidad de este problema es al menos la del problema del camino más largo de complejidad NP-Completo. NP-Completo. Algoritmo
El Algo Algori ritm tmo o de Bell Bellma mann-Fo Ford rd es, es, en su estr estruc uctu tura ra bási básica ca,, muy muy pare pareci cido do al algo algori ritm tmo o de Dijk Dijkst stra ra,, pero pero en vez vez de sele selecc ccio iona narr vorazmente el nodo de peso mínimo aun sin procesar para relajarlo, simplemente relaja todas las aristas, y lo hace |V|-1 veces, siendo |V| el número de vértices en el grafo. Las repeticiones permiten a las distancias mínimas recorrer el árbol, ya que en la ausencia de ciclos negativos, el camino más corto solo visita cada vértice una vez. A diferencia de la solución voraz, la cual depende de la suposición de que los pesos sean positivos, esta solución se aproxima más al caso general.
16.- Algoritmo de Prim El algoritmo de Prim es un algoritmo perteneciente a la teoría de los grafos para encontrar un árbol recubridor mínimo en un grafo conexo, conexo, no dirigido y cuyas aristas están etiquetadas. En otras palabras, el algoritmo encuentra un subconjunto de aristas que forman un árbol con todos los vértices, vértices, donde el peso total de todas las aristas en el árbol es el mínimo posible. Si el grafo no es conexo, entonces el algoritm algoritmo o encontrar encontrará á el árbol árbol recubrido recubridorr mínimo mínimo para uno de los componentes conexos que forman dicho grafo no conexo. El algoritmo fue diseñado en 1930 por el matemático Vojtech Jarnik
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
destino. Su nombre viene dado por sus creadores, L. R. Ford, Jr. y D. R. Fulkerson. Fulkerson. Ejm: Sea (V,A,w) (V,A,w) con V vértices, vértices, A aristas y w peso de las aristas, una red con una única fuente s y un único sumidero t; w(α) es la capacidad de α perteneciente a la arista A. Un flujo f es viable si f(α) <= w(α) para todo α perteneciente a la arista A. Se trata de hallar un flujo viable con el valor máximo posible. En un red con fuente s y sumidero t único el valor máximo que puede tomar un flujo variable es igual a la capacidad mínima que puede tomar un corte.
18.- Algoritmo de Kruskal El algoritmo algoritmo de Kruskal Kruskal es un algoritmo de la teoría de grafos para encont encontrar rar un árbol árbol recubr recubrid idor or mínimo mínimo en un grafo conexo y ponderado. Es decir, busca un subconjunto de aristas que, formando un árbol, incluyen todos los vértices y donde el valor total de todas las aristas del árbol es el mínimo. Si el grafo no es conexo, entonces busca un bosque expandido mínimo (un árbol expandido mínimo para cada componente conexa). conexa). El algoritmo de Kruskal es un ejemplo de algoritmo voraz. voraz. Un ejemplo de árbol expandido mínimo. Cada punto representa un vértice, el cual puede ser un árbol por sí mismo. Se usa el Algoritmo para buscar las distancias más cortas (árbol expandido) que conectan todos los puntos o vértices. Funciona de la siguiente manera: •
• •
se crea crea un bosq bosque ue B (un (un conj conjun unto to de árbo árbole les) s),, dond donde e cada cada vértice del grafo es un árbol separado se crea un conjunto C que contenga a todas las aristas del grafo mientras C es no vacío eliminar una arista de peso mínimo de C
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
encuentra el camino entre todos los pares de vértices en una única ejec ejecu ución ción.. El algo algorritmo tmo de Floyd-W yd-War ars shal hall es un ejem ejemp plo de programación dinámica. dinámica. Algoritmo
El algoritmo de Floyd-Warshall compara todos los posibles caminos a través del grafo entre cada par de vértices. El algoritmo es capaz de hacer esto con sólo V3 comparaciones (esto es notable considerando que puede haber hasta V2 aristas en el grafo, grafo, y que cada combinación de aristas se prueba). Lo hace mejorando paulatinamente una estimación del camino más corto entre dos vértices, hasta que se sabe que la estimación es óptima.
20.- Algoritmo de Euclides El algoritmo de Euclides es un método antiguo y eficaz para calcular el máximo máximo común común diviso divisorr (MCD) (MCD).. Fue origi original nalmen mente te descri descrito to por Euclides en su obra Elementos. Elementos. El algoritmo de Euclides extendido es una liger ligera a modifi modificac cación ión que permit permite e además además expre expresar sar al máximo máximo común común divis divisor or como como una combinació combinación n lineal lineal.. Este Este algori algoritmo tmo tiene tiene aplicaciones en diversas áreas como álgebra, álgebra, teoría de números y cien cienci cia as de la com computa putaci ción ón entre otras. Con unas ligeras modifi modificac cacio iones nes suele suele ser utili utilizad zado o en comput computado adoras ras electr electróni ónicas cas debido a su gran eficiencia. Definición
El algoritmo de Euclides es un método eficaz para calcular el máximo común divisor (mcd) de dos números enteros. enteros. El algoritmo consiste en varias divisiones euclídeas sucesivas. En la primera división, se toma como dividendo el mayor de los números y como divisor el otro (se ahorra así un paso). Luego, el divisor y el resto sirven respectivamente de dividendo y divisor de la siguiente división. El proceso se para cuando se obtiene un resto nulo. El mcd es entonces el penúltimo
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
http://tprc.blogspot.com/2007/05/ela-lgoritmos-mas-importante-de-la.html http://www.ual.es/~andrei/Practicas/practica14b.pdf http://enciclopedia.us.es/index.php/Algoritmo_de_Euclides