Paralelismo en la ordenación por mezcla
|
|
- Manuela Ayala Río
- hace 5 años
- Vistas:
Transcripción
1 Paralelismo en la ordenación por mezcla
2 Índice MergeSort secuencial. MergeSort paralelo : descomposición en tareas. Descomposición funcional. Descomposición recursiva. Descomposición de dominio. Grafo de dependencias y asignación de tareas. Pseudoalgoritmo. Pensando en la implementación.
3 MergeSort secuencial Entrada : una secuencia de n números desordenada. Salida : secuencia de n números ordenada. La ordenación por mergesort, se basa en obtener un vector ordenado de n números a partir de uno desordenado; ello lo consigue aplicando el esquema algorítmico divide y vencerás, mediante el cual descompone un vector de tamaño n en dos subvectores de tamaño n/ 2 sucesivamente, hasta que el tamaño del vector obtenido sea lo suficientemente pequeño como para considerar que está ordenado (tamaño 1); una vez obtenido este vector mínimo, recuperaremos el vector original mezclando los resultados, los cuales se volverán a mezclar recursivamente hasta obtener un vector de tamaño n ordenado.
4 MergeSort paralelo : descomposición en tareas Para poder resolver de forma paralela el problema de la ordenación por mezcla es necesario descomponer de alguna forma el algoritmo en una serie de subtareas. A continuación presento una serie de posibles descomposiciones acompañadas con un pequeño estudio y conclusiones: Descomposición funcional : la cual se realizará mediante la versión pipeline. Descomposición recursiva : utilizando el esquema algorítmico del mergesort secuencial. Descomposición de dominio, centrada en los datos de entrada : aprovecharemos la independencia de los datos de entrada para dividirlos directamente entre los procesos.
5 Descomposición funcional Leer Ordenar Mezclar La idea de esta descomposición, es descomponer el algoritmo en una serie de módulos, de modo que la ejecución de los mismos se solape de un paso al siguiente. Vamos a ver cuánto tardaría esta descomposición en resolver un problema de tamaño n; para simplificar los cálculos consideraremos el tiempo en el peor caso: T (Leer ) = n, T (Ordenar ) = n/b * log ( n/b ), T(Mezclar ) = k * n/b + n/b Donde b = número de bloques y k = paso del algoritmo. El siguiente paso es inferir el coste del algoritmo a partir de observar el comportamiento en unos pocos pasos. Supongamos que el número de bloques b es igual a 3, el funcionamiento sería el siguiente: T (Mezcla 1 ) = T (leer) + T (Ordenar, b) + T(Mezclar,1,b) = n/b + n/b * log (n/b) + n/b T (Mezcla 2 ) = T (leer) + T (Ordenar, b) + T(Mezclar,2,b) = n/b + n/b * log (n/b) + 2*n/b T (Mezcla 2 ) = T (leer) + T (Ordenar, b) + T(Mezclar,3,b) = n/b + n/b * log (n/b) + 3*n/b Dado que la ejecución de los módulos se solapa de un paso al siguiente, sólo es necesario quedarnos con los pasos más costosos, quedando la siguiente solución: 4n/b + 2 n/b * log (n/b) + (n/b log n/b ó 2 n/b ) -- En función de si log n/b es mayor o no que 2. Supongamos por simplicidad que log n/b es siempre mayor que el número de paso, en ese caso, para un algoritmo de b pasos tardaríamos: (b+1) * n/b + b * n/b log ( n/b) Que si nos quedamos con el mayor término sería t(b) = n * log ( n / b )
6 Consideraciones sobre la anterior descomposición La versión anterior es bastante mala, como se puede observar en el cálculo del speed-up cuando n tiende a infinito: Lim Speedup = n* log n / ( n * log (n/b) ) = log n / ( log n log b ) = 1 Haciendo aproximaciones podemos observar cómo, en el mejor de los casos, no tenemos ninguna mejora significativa respecto del algoritmo secuencial, y eso que no hemos considerado el coste de las comunicaciones... Esta mala eficiencia del algoritmo se debe a los siguientes factores: No aparece por ningún lado el factor número de procesadores (p), el cual se supone que tiene que ser 3 (un mayor número no mejoraría el tiempo de ejecución). No está balanceado el tiempo de cada operación, claramente el tiempo que el algoritmo tardará en leer va a ser mucho menor que el tiempo que tarda en ordenar e incluso el tiempo que tarda en mezclar. Granularidad muy elevada : los bloques en que hemos descompuesto el algoritmo, siguen siendo muy grandes, con lo que no aprovecharemos las ventajas de la computación paralela, aunque al menos, el coste de las comunicaciones que no hemos considerado, no será muy elevado.
7 Descomposición recursiva : :... Siguiendo la lógica de la versión secuencial de la ordenación por mezcla, podemos idear una versión palalela donde cada subtarea puede ser ejecutada por un procesador. El nodo raíz leerá los datos y los repartirá equitativamente entre sus dos hijos, los cuales repartirán sus datos entre sus respectivos dos hijos... hasta llegar a un tamaño de los datos a partir del cual no nos interese descomponer más; llegados a este punto, los nodos receptores de la fracción mínima de datos, los ordenarán y los enviarán a uno de sus vecinos (determinado por el paso de la mezcla) para que procedan a mezclar los datos ordenados. El tamaño mínimo de datos determina la granularidad de la descomposición, la cual va a depender directamente del número de procesadores de los que dispongamos; tendremos por tanto, un tamaño mínimo de los datos de n/p antes de empezar a ordenar. Para el estudio de la eficiencia de esta versión sí que vamos a tener en cuenta las comunicaciones, así que distinguimos los siguientes tipos de tiempo: T(Leer) = n T(Dividir) = constante T(Ordenar) = ( n / p ) * log ( n / p ) T(Envío ) = variable y dependiente de n/p T(Mezcla ) = variable y dependiente de n/p
8 Estudio de la descomposición recursiva Al igual que antes, vamos a partir de un problema, sencillo y a partir del mismo inferiremos el coste para problemas más complejos. Supongamos una lista de tamaño n y un número de procesadores = 4. El límite de datos a descomponer es por tanto n/4, lo que implica que solo descompondremos los datos 2 veces (logaritmo en base 2 de p ). T(Raíz) = T ( Leer ) + T (Dividir) + T (Enviar,n/2) = n + (despreciable) + 2* (ts + tw * n/2 ) (dos envíos de la mitad de la lista de valores) = n + 2 ts + 2 tw * n/2 = n + 2ts + tw * n T(Repartir nivel 1 ) = T(Dividir) + T(Enviar, n/4 ) = 2 * ( ts + tw * n/4) (Los nodos hermanos de un nivel son capaces de ejecutar sus tareas en paralelo, de modo que el tiempo de las mismas en cada uno de ellos se solapa y podemos simplificar el cálculo a las tareas llevadas a cabo por solo uno de ellos). T(Repartir nivel 2) = T(Ordenar) = (n/p) * log (n/p) (Igual que antes, esta tarea también se solapa en los hermanos). T(Mezcla paso 1) = T (Enviar, n/4) + T (Mezclar, n / 4 ) = ts + tw * n/4 + 2 * n/4 T(Mezcla paso 2) = T(Enviar, n/2) + T(Mezclar, n/2 ) = ts + tw * n/2 + 2 * n/2 Y finalmente tendremos nuestro vector ordenado. Podemos generalizar el tiempo de la siguiente forma: T(n,p ) = T Leer T Raíz T hijo nivel i T Mezcla paso i T Ordenar Lo cual, tras eliminar expresiones que no dependen de n y haciendo unos pocos redondeos que no afectarán prácticamente nada para tamaños de n muy grandes, nos queda en : 2 n 1/2 2/log p tw n 1/2 2/log p n/ p log n/ p Donde se puede observar que el término de mayor orden es n/p * log (n/p).
9 Consideraciones sobre la descomposición recursiva Este método parece bueno, vamos a observar el speed-up cuando n tiene a infinito para confirmarlo. Para este cálculo solo vamos a considerar del tiempo obtenido anteriormente, el factor de mayor orden. n n lim t n /t n/ p =lim n log n / n / p log n / p = p El resultado es p, lo cual significa que con tamaños de n MUY grandes, conseguiremos un speed-up de p (número de procesadores), lo cual es bastante prometedor. A grandes rasgos, la descomposición es bastante buena, sin embargo, presenta algunos problemas que deben ser comentados: Este algoritmo realiza una gran cantidad de comunicaciones y en el estudio hemos asumido que todos los mensajes se envían correctamente a la primera. Qué hace el procesador que envía sus datos ordenados al que realiza la mezcla? En principio, no hace nada, y es trabajo que estamos desperdiciando.
10 Descomposición de dominio... El esquema es bastante parecido a la descomposición recursiva, únicamente cambiamos el procedimiento de división de los datos, siendo los procedimientos de mezcla y ordenación los mismos que en el anterior esquema. El árbol generado en este caso tiene solamente profundidad 1 y el número de hijos generados, en vez de 2, es n/p; la idea de esta nueva versión es que, si conocemos de antemano el número de datos, el número de procesadores, y, por tanto, el número de divisiones que tenemos que hacer.. por qué no las hacemos directamente? Aunque esta idea puede parecer buena, en realidad, a priori es peor que la descomposición recursiva, debido a que aunque reduzcamos ligeramente el número de comunicaciones necesarias, ahora no se solaparán durante la división de los datos. Así pues, como sabemos que el coste de las comunicaciones va a incrementar, vamos a calcularlo para ver si nos tiene que preocupar: T (Envíar datos ) = p * (ts +tw * n/p) = p * ts + tw * n El término de mayor orden es de orden n,el cual es menor que en la ordenación,que es n/p*log(n/p) Por tanto, para tamaños de n muy grandes, el coste será aproximadamente el mismo. Este tipo de descomposición hereda los problemas de la descomposición recursiva, pero hay 2 puntos positivos: Dado que es el servidor el que centraliza el envío de los datos, podría existir una función que haga mas eficiente el envío de los mismos. El coste de programación de esta solución es menor.
11 Grafo de dependencias y asignación de tareas La solución que voy a implementar es la basada en al descomposición del dominio, a continuación presento el grafo de flujo de un mergesort para p=4 para mostrar la asignación de tareas que voy a utilizar: Leer Coste = n Procesador 1 Ordenar Coste = n/p * log (n/p) Dividir Coste = cte Coste = ts + tw * (n/p) Procesador 2 Coste = ts + tw* (n/p) Procesador 3 Camino crítico Ordenar Ordenar Ordenar Mezclar Coste=2*n/p Coste = ts + tw * ( 2 n/p) Mezclar Procesador 4 Mezclar Coste = 2 * 2 * n/p L = n + cte + ts + tw *(n/p) + + (n/p)*log(n/p) + ts + tw * (n/p)+2*n/p + + ts + tw * (2*n/p) + 2*2*n/p CosteTotal = n+cte+p*(ts+tw(n/p))+ +p*n/p log(n/p) + + 2*ts+ tw*(n/p)+2*2*2n/p+ +ts + tw*(2*n/p) +2*2*n/p M = (despreciando constantes y coste de las comunicaciones ) = = log (n/4) / ( ¼ * log ( n/4)) = 4 Lo cual significa que para n muy grande y comunicaciones despreciables, tendremos aproximadamente 4 tareas ejecutándose en paralelo.
12 Pseudoalgoritmo Tras las consideraciones anteriores, presento una versión muy general del algoritmo que resolverá el problema de ordenación por mezcla paralelo con un número de procesadores potencia de 2: Si ( procesador == 1 ) vectorelementos = Leer Datos miparte = trocear(vectorelementos,0,vectorelementos.tamaño/numprocesadores) Para i = 2 hasta numprocesadores Hacer posini = (i 1 ) * vectorelementos.tamaño/numprocesadores; posfin = i * vectorelementos.tamaño/numprocesadores; enviar(trocear(vectorelementos,posini,posfin),i) FinPara Sino recibir (miparte,1); FinSi ordenar(miparte); numpaso = 2 Mientras ( numpaso <= numprocesadores ) Hacer Si ( procesador % numpaso == 0) recibir(partedeotro, ((procesador-numpaso/2)%numprocesadores)) miparte=mezclar(miparte,partedeotro) Sino Si (procesador % numpaso == numpaso/2) enviar(miparte, (procesador+numpaso/2) % numprocesadores) FinSi numpaso = numpaso*2 FinMientras Si ( procesador == numpaso) devolver miparte FinSi
13 Pensando en la implementación El último paso de la práctica es implementarla, con las limitaciones que ello conlleva. La implementación se realizará haciendo uso del modelo de paso de mensajes (MPI) y el modelo de memoria compartida (OpenMP). Consideraciones con MPI: Las funciones de comunicación MPI_Send y MPI_Receive son bloqueantes, así que en este modelo a priori no tenemos ningún problema de sincronización. Para hacer mas eficiente el reparto de los datos de la raíz a todos los subprocesos, se puede utilizar la función MPI_Scatter. Consideraciones con OpenMP: Una vez leídos los datos,los procesadores pueden trabajar independientemente hasta el procedimiento de mezcla; necesitaremos colocar barreras justo antes del comienzo de esta etapa para asegurarnos de que los vectores que mezclamos están ordenados. Un proceso no utilizará datos de la porción asignada a otro proceso, hasta el proceso de mezcla; afortunadamente, gracias a la barrera anterior, evitaremos además problemas relacionados con lectura/escritura de un mismo bloque de memoria por parte de varios procesos. Por este motivo, y considerando la anterior barrera, ya que por el diseño del algoritmo no presentaremos conflictos de memoria, no será necesario hacer ninguna copia del vector principal de elementos y todos los procesos podrán leer y escribir en él sin problemas.
Algoritmos en Árbol y Grafo Computación Pipeline
Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos: Algoritmos en Árbol y Grafo Computación Pipeline Domingo Giménez (Universidad
Más detallesParalelización de problemas de recorrido de árboles Trabajadores replicados y esquema maestro esclavo
Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos: Paralelización de problemas de recorrido de árboles Trabajadores replicados
Más detallesDivide y Vencerás Programación Dinámica
Metodología de la Programación Paralela Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos: Divide y Vencerás Programación Dinámica Domingo Giménez (Universidad de Murcia) 1 /
Más detallesRelación de Ejercicios. Programación Paralela 4º de Grado en Ingeniería Informática.
1. Por qué el modelo de programación que se sigue al programar con MPI es independiente de la asignación? 2. Describir gráficamente una solución eficiente para realizar una operación de reducción global
Más detallesAlgoritmos y Estructuras de Datos Curso 06/07. Ejercicios
6.1.(Clase) Un programa que utiliza la técnica divide y vencerás, divide un problema de tamaño n en a subproblemas de tamaño n/b. El tiempo g(n) de la resolución directa (caso base) se considerará constante.
Más detallesUNIDAD II Metodología de programación paralela. Lic. Jesús Germán Andrés PAUTSCH - FCEQyN - UNaM
UNIDAD II Metodología de programación paralela UNIDAD II: Metodología de programación paralela Metodología de programación paralela Algunos conceptos que nos ayudarán a entender mejor el tema. Modelos
Más detallesPrograma de teoría. Algoritmos y Estructuras de Datos II. 2. Divide y vencerás. 1. Análisis de algoritmos
Programa de teoría Algoritmos y Estructuras de Datos II 1. Análisis de algoritmos 2. Divide y vencerás 3. Algoritmos voraces 4. Programación dinámica 5. Backtracking 6. Ramificación y poda A.E.D. II 1
Más detallesTema 2. Divide y vencerás.
Programa de teoría Parte I. Estructuras de Datos. 1. Abstracciones especificaciones. 2. Conjuntos diccionarios. 3. Representación de conjuntos mediante árboles. 4. Grafos. Parte II. Algorítmica. 1. Análisis
Más detalles3. DISEÑO DE ALGORITMOS PARALELOS Y DISTRIBUIDOS
3. DISEÑO DE ALGORITMOS PARALELOS Y DISTRIBUIDOS Uno de los ingredientes más importantes para el procesamiento paralelo son sin duda los algoritmos paralelos que tienen un considerable interés en su desarrollo.
Más detallesDiseño de algoritmos paralelos
Diseño de algoritmos paralelos Curso 2011-2012 Esquema del capítulo Visión general de algunos algoritmos serie. Algoritmo paralelo vs. Formulación paralela Elementos de un Algoritmo paralelo Métodos de
Más detallesTema 9. Recursividad
Tema 9. Recursividad http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz@icc.uji.es Estructuras de datos y de la información Universitat
Más detallesEsquema de Dividir y Vencer
Esquema de Dividir y Vencer Amalia Duch Barcelona, marzo de 2006 Índice 1. Esquema general 1 2. Búsqueda binaria (binary search) 2 3. Ordenación por fusión (merge sort) 2 4. Ordenación rápida (quick sort)
Más detallesParte de Algoritmos de la asignatura de Programación Master de Bioinformática. Divide y vencerás
Parte de Algoritmos de la asignatura de Programación Master de Bioinformática Divide y vencerás Web asignatura: http://dis.um.es/~domingo/algbio.html E-mail profesor: domingo@um.es Transparencias preparadas
Más detallesAnálisis de algoritmos
Tema 08: Divide y vencerás (DyV) M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido Introducción Divide y vencerás Observaciones
Más detallesPARTE II: ALGORÍTMICA
Programa de teoría Parte I. Estructuras de Datos.. Abstracciones y especificaciones.. Conjuntos y diccionarios.. Representación de conjuntos mediante árboles. 4. Grafos. Parte II. Algorítmica.. Análisis
Más detallesParalelismo Relajado Paralelismo Síncrono
Metodología de la Programación Paralela Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos: Paralelismo Relajado Paralelismo Síncrono Domingo Giménez (Universidad de Murcia) 1
Más detallesAnálisis y Diseño de Algoritmos
Análisis y Diseño de Algoritmos Introducción: El Rol de los Algoritmos en Computación DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Temario 2 1. Introducción 2. Notación Asintótica 3. Recurrencias
Más detallesEsquemas algorítmicos paralelos - Particionado y Paralelismo de Datos
Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos Domingo Giménez (Universidad de Murcia)
Más detallesDiseño de Algoritmos Paralelos Prof. Gilberto Díaz
Universisdad de Los Andes Facultad de Ingeniería Escuela de Sistemas Diseño de Algoritmos Paralelos Prof. Gilberto Díaz gilberto@ula.ve Departamento de Computación, Escuela de Sistemas, Facultad de Ingeniería
Más detallesPrograma de teoría. Algoritmos y Estructuras de Datos II. 3. Algoritmos voraces. 1. Análisis de algoritmos 2. Divide y vencerás
Programa de teoría Algoritmos y Estructuras de Datos II 1. Análisis de algoritmos 2. Divide y vencerás 3. Algoritmos voraces 4. Programación dinámica 5. Backtracking 6. Ramificación y poda A.E.D. II 1
Más detallesModelado y autooptimización en esquemas paralelos de backtracking
Modelado y autooptimización en esquemas paralelos de backtracking Manuel Quesada y Domingo Giménez Universidad de Murcia XX Jornadas de Paralelismo A Coruña, 18 Sept 2009 Índice 1 Introducción 2 Técnica
Más detallesTEMA 1. INTRODUCCIÓN A LA PROGR. DISTRIBUIDA Y PARALELA
Relación de Ejercicios Programación Distribuida y Paralela. 4 o de Ingeniería Superior en Informática. Departamento de Lenguajes y Sistemas Informáticos TEMA 1. INTRODUCCIÓN A LA PROGR. DISTRIBUIDA Y PARALELA
Más detalles1. Planteamiento general
Algoritmos de tipo Divide y Vencerás 1. Planteamiento general 2. Determinación del caso base 3.1. Búsqueda binaria 3.3. Problema de la selección 3.4. Multiplicación de matrices de Strassen 1. Planteamiento
Más detallesProblema de las N Reinas. Resolución paralela
Problema de las N Reinas Resolución paralela Indice Introducción al problema Representación y Soluciones Resolución secuencial Resolución paralela Conclusiones Bibliografía 2 3 Introducción Introducción
Más detallesAnálisis y Complejidad de Algoritmos. Arboles Binarios. Arturo Díaz Pérez
Análisis y Complejidad de Algoritmos Arboles Binarios Arturo Díaz Pérez Arboles Definiciones Recorridos Arboles Binarios Profundidad y Número de Nodos Arboles-1 Arbol Un árbol es una colección de elementos,
Más detallesAnálisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera
Análisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera RECURSIÓN La recursión es una técnica fundamental en el diseño de algoritmos, que está basada en la solución de versiones más pequeñas del
Más detallesAlgoritmos sobre Listas
TEMA 6 Algoritmos sobre Listas V1.1 Manuel Pereira González Agenda Introducción Algoritmos de Búsqueda Búsqueda Secuencial Búsqueda Binaria Análisis de Eficiencia Algoritmos de Inserción Algoritmos de
Más detallesPROGRAMACIÓN PARALELA. Modelos de programación paralela Paradigmas de programación paralela
PROGRAMACIÓN PARALELA Modelos de programación paralela Paradigmas de programación paralela Tipos de paralelismo Paso de mensajes Paralelismo de datos Memoria compartida Paradigmas de programación paralela
Más detalles5. ESTRUCTURAS DE REPETICIÓN
5. ESTRUCTURAS DE REPETICIÓN Las estructuras de repetición, permiten la ejecución de una lista o secuencia de instrucciones () en varias ocasiones. El número de veces que el bloque
Más detallesConceptos. Generales ALGORITMOS
Conceptos 1 Generales ALGORITMOS Que es un Algoritmo? 2 Es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos
Más detallesGranularidad y latencia
Niveles de paralelismo y latencias de comunicación Niveles de paralelismo. Granularidad o tamaño de grano. Latencia de comunicación. Particionado de los programas. Empaquetado de granos. Planificación
Más detallesLenguaje de Diseño. Primera Parte. Resolución de Problemas y Algoritmos. Primer Cuatrimestre Ing. En Informática e Ing.
Primera Parte Resolución de Problemas y Algoritmos Ing. En Informática e Ing. En Computación Primer Cuatrimestre 2017 1 Lenguajes Algorítmicos Los algoritmos pueden describirse, en mayor o menor detalle,
Más detallesORGANIZACIÓN DE COMPUTADORAS DRA. LETICIA FLORES PULIDO
ORGANIZACIÓN DE COMPUTADORAS DRA. LETICIA FLORES PULIDO FACTOR DE VELOCIDAD Sabemos que p se identifica como el número de procesadores o procesos Multiprocesador será entonces el término que se puede utilizar
Más detalles168 Capítulo 4. Representación de conjuntos mediante árboles
16 Capítulo. Representación de conjuntos mediante árboles En cuanto al tiempo de ejecución, básicamente podemos aplicar el mismo análisis que en la inserción. El tiempo total para una supresión será proporcional
Más detallesUniversidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero
Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 4: Ordenación Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Elección de un método Métodos directos
Más detallesDivide-y-vencerás, backtracking y programación dinámica
Divide-y-vencerás, backtracking y programación dinámica Diseño y Análisis de Algoritmos Cátedra de Programación Carrera de Ingeniería de Sistemas Prof. Isabel Besembel Carrera Noviembre, 2012 Prof. Isabel
Más detallesMétodos de Ordenamiento. Unidad VI: Estructura de datos
Métodos de Ordenamiento Unidad VI: Estructura de datos Concepto de ordenación La ordenación de los datos consiste en disponer o clasificar un conjunto de datos (o una estructura) en algún determinado orden
Más detallesEsquemas algorítmicos paralelos - Particionado y Paralelismo de Datos
Metodología de la Programación Paralela Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos Domingo Giménez (Universidad de Murcia) 1 / 31
Más detallesArchivos Indice. Indexación y. Asociación. Conceptos Básicos Indices Ordenados Arboles. Asociación. Docente: Albert A.
Docente: Albert A. Osiris Sofía 1º Cuatrimestre 2002 Conceptos Básicos Indices Ordenados Arboles Asociación Indexación y Asociación Archivos Indice 1 2 3 1 Archivos Indice Ordenados Asociativos Primario
Más detallesPARADIGMA y LENGUAJES DE PROGRAMACIÓN
CATEDRA CARRERA: PARADIGMA y LENGUAJES DE PROGRAMACIÓN LICENCIATURA EN SISTEMAS DE INFORMACION FACULTAD DE CIENCIAS EXACTAS QUIMICAS Y NATURALES UNIVERSIDAD NACIONAL DE MISIONES Año 2017 2do Cuatrimestre
Más detallesDefinición recursiva de los árboles
Árboles Un árbol es una estructura de datos jerarquizada ada dato reside en un nodo, y existen relaciones de parentesco entre nodos: padre, hijo, hermano, ascendiente, descendiente, etc. Ejemplo: apítulos
Más detallesRecursión como herramienta en resolución de problemas computacionales
Recursión como herramienta en resolución de problemas computacionales Modularidad! Es común dividir los algoritmos en módulos! Cada módulo lleva a cabo cierta funcionalidad! Muchas veces los módulos sirven
Más detallesTema 2 Fundamentos de Complejidad Algorítmica
Tema 2 Fundamentos de Complejidad Algorítmica Pablo Sánchez Dpto. Matemáticas, Estadística y Computación Universidad de Cantabria Santander (Cantabria, España) p.sanchez@unican.es Pablo Sánchez (MATESCO)
Más detallesUn árbol binario T se define como un conjunto finito de elementos, llamados nodos, de forma que:
Instituto Universitario de Tecnología Industrial Rodolfo Loero Arismendi I.U.T.I.R.L.A. ÁRBOLES Sección 3DA Asignatura: Estructura de Datos Lenguaje (C). Ciudad Bolívar _ abril_ 2006. Introducción El siguiente
Más detallesJosé Matías Cutillas Lozano PROGRAMACIÓN PARALELA Y COMPUTACIÓN DE ALTAS PRESTACIONES
José Matías Cutillas Lozano PROGRAMACIÓN PARALELA Y COMPUTACIÓN DE ALTAS PRESTACIONES MÁSTER EN NUEVAS TECNOLOGÍAS EN INFORMÁTICA Diciembre 2010 Introducción Por qué utilizar Matlab paralelo? MATLAB es
Más detallesTema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas
Tema 9 Algoritmos sobre listas Programación 2015-2016 Programación - Tema 9: Algoritmos sobre listas 1 Tema 9. Algoritmos sobre listas Algoritmos sobre Arrays. Búsqueda. Inserción. Ordenación. Programación
Más detallesLenguaje de Diseño. Primera Parte. Segundo Cuatrimestre 2017
Primera Parte Fund. de la Informática Int. a la Programación Int. a la Computación Resolución de Problemas y Algoritmos Segundo Cuatrimestre 2017 1 Etapas en el proceso de resolver un problema: 1- Comprender
Más detallesUnidad I: Introducción a las estructuras de datos
Unidad I: Introducción a las estructuras de datos 1.1 Tipos de datos abstractos (TDA) Los tipos de datos abstractos (TDA) encapsulan datos y funciones que trabajan con estos datos. Los datos no son visibles
Más detallesAlgorítmica y Lenguajes de Programación. Eficiencia y notación asintótica (i)
Algorítmica y Lenguajes de Programación Eficiencia y notación asintótica (i) Eficiencia y notación asintótica. Introducción Para resolver un problema pueden existir varios algoritmos. Por tanto, es lógico
Más detallesEVALUACIÓN DE MÉTODOS DE ORDENACIÓN: QuickSort vs. QuickSort con pseudomediana
EVALUACIÓN DE MÉTODOS DE ORDENACIÓN: QuickSort vs. QuickSort con pseudomediana Enero 1998 Pedro Pablo Gómez Martín Marco Antonio Gómez Martín GENERALIDADES El programa MEDICION, que se ejecuta con MEDICION,
Más detallesTema 2 Conceptos básicos de programación. Fundamentos de Informática
Tema 2 Conceptos básicos de programación Fundamentos de Informática Índice Metodología de la programación Programación estructurada 2 Pasos a seguir para el desarrollo de un programa (fases): Análisis
Más detallesLógica de programación
Universidad Nacional Autónoma de Nicaragua - León Facultad de Ciencias y Tecnología Departamento de Computación Lógica de programación Elaborado por: Lic. Luis Ernesto Díaz Beteta La característica fundamental
Más detallesAnálisis de algoritmos
Tema 02: Complejidad de los algoritmos M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido Algoritmo Algoritmo vs. Proceso Computacional
Más detallesCapítulo 6: EVALUACIÓN Y COMPARACIÓN DE MÉTODOS
Capítulo 6: EVALUACIÓN Y COMPARACIÓN DE MÉTODOS En este capítulo, se realiza la evaluación y comparación de los métodos de paralelización de recurrencias descritos y propuestos en este trabajo. Los resultados
Más detallesProcesamiento Paralelo
Procesamiento Paralelo Modelado analítico de programas paralelos Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de Abril 461, Bahía Blanca, Argentina jiparraguirre@frbb.utn.edu.ar
Más detallesSistemas Operativos Distribuidos
Contenidos del Tema Gestión de procesos Modelos de sistema Asignación de procesadores Estrategias dinámicas Estrategias estáticas Ejecución remota de procesos Modelos de sistema Organización de los procesadores
Más detallesRECORDAR TIPOS DE DATOS
RECORDAR TIPOS DE DATOS VARIABLES: OBJETO CUYO valor cambia: A510 nombres NOTAS Int A=0; float B=1; CONSTANTES: OBJETO cuyo valor no cambia PI= 3.14159 LAS COMAS NO SE PERMITEN Int PI=3.1415 EXPRESIONES:
Más detalles5 Métodos de Ordenamiento. 5.1 Métodos de Ordenamiento Internos Burbuja Quicksort Heapsort Inserción Simple 5.1.
5 Métodos de Ordenamiento 5.1 Métodos de Ordenamiento Internos 5.1.1 Burbuja 5.1.2 Quicksort 5.1.3 Heapsort 5.1.4 Inserción Simple 5.1.5 Shellsort 5 Métodos de Ordenamiento 5.1 Ordenamiento Interno 5.1
Más detallesProgramación Concurrente y Paralela. Unidad 1 Introducción
Programación Concurrente y Paralela Unidad 1 Introducción Contenido 1.1 Concepto de Concurrencia 1.2 Exclusión Mutua y Sincronización 1.3 Corrección en Sistemas Concurrentes 1.4 Consideraciones sobre el
Más detallesTema 07: Backtraking. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom
Tema 07: Backtraking M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Backtraking Búsqueda en profundidad
Más detallesTema 2. Fundamentos Teóricos de la. programación dinámica Teorema de Optimalidad de Mitten
Tema 2 Fundamentos Teóricos de la Programación Dinámica 2.1. Teorema de Optimalidad de Mitten El objetivo básico en la programación dinámica consiste en descomponer un problema de optimización en k variables
Más detalles1. Introducción al análisis de algoritmos
1. Introducción al análisis de algoritmos 1. Introducción al concepto de algoritmia 2. Eficiencia de un algoritmo 3. Notación asintótica 4. Reglas generales Bibliografía Brassard y Bratley, 97; capítulos
Más detalles1. 1. Introducción al concepto de algoritmia
1. Introducción al análisis de algoritmos 1. Introducción al concepto de algoritmia 2. Eficiencia de un algoritmo 3. Notación asintótica 4. Reglas generales Bibliografía Básica: Aho, Hopcroft y Ullman,
Más detallesTEMA 1: Algoritmos y programas
TEMA 1: Algoritmos y programas 1.1.-Introducción La razón principal para utilizar un ordenador es para resolver problemas (en el sentido más general de la palabra), o en otras palabras, procesar información
Más detallesCIENCIA DE LA COMPUTACION
CIENCIA DE LA COMPUTACION Docentes Profesor: Alejandro Rozenfeld Jefe de trabajos prácticos: Andrea L. Riera Sebastián Villar Ayudantes diplomados: Fabio Bucciarelli Marcelo Marchioni Ayudante Alumno:
Más detallesTaller de Programación Paralela
Taller de Programación Paralela Departamento de Ingeniería Informática Universidad de Santiago de Chile April 17, 2008 Motivación Programar aplicaciones paralelas no es una tarea trivial. Paralelismo
Más detallesCOMPARACIÓN DE MODELOS DE SINCRONIZACIÓN EN PROGRAMACIÓN PARALELA SOBRE CLUSTER DE MULTICORES
COMPARACIÓN DE MODELOS DE SINCRONIZACIÓN EN PROGRAMACIÓN PARALELA SOBRE CLUSTER DE MULTICORES Autor: A.P.U. Enzo Rucci Director: Ing. Armando E. De Giusti Co-Director: Lic. Franco Chichizola Tesina de
Más detallesCOMPUTACIÓN DE ALTA PERFORMANCE 2013
COMPUTACIÓN DE ALTA PERFORMANCE Curso 2013 Sergio Nesmachnow (sergion@fing.edu.uy) Santiago Iturriaga (siturria@fing.edu.uy) Grupo de Procesamiento Paralelo Aplicado Centro de Cálculo TEMA 3 PROGRAMACIÓN
Más detallesResolución de problemas en paralelo
Resolución de problemas en paralelo Algoritmos Paralelos Tema 1. Introducción a la computación paralela (segunda parte) Vicente Cerverón Universitat de València Resolución de problemas en paralelo Descomposición
Más detallesEstructuras de Datos y Algoritmos
Estructuras de Datos y Algoritmos Costos de Búsqueda en Árboles Binarios de Búsqueda Año 08 Introducción Ya hemos definido recursivamente un árbol binario de búsqueda y hemos planteado una manera de deducir
Más detallesParadigma de paso de mensajes
Paradigma de paso de mensajes Curso 2011-2012 Índice Visión lógica del paradigma de paso de mensajes. Operaciones básicas en paso de mensajes. Operaciones bloqueantes. Operaciones no bloqueantes. MPI:
Más detallesLógica de programación 1
Lógica de programación 1 Universidad Nacional Autónoma de Nicaragua - León Facultad de Ciencias y Tecnología Departamento de Computación Lógica de programación Elaborado por: Lic. Luis Ernesto Díaz Beteta
Más detallesAnálisis y Diseño de Algoritmos
Análisis y Diseño de Algoritmos Recurrencias DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Introducción 2 Cuando un algoritmo se llama a sí mismo Su tiempo de ejecución se puede describir
Más detallesINSTITUTO NACIONAL SUPERIOR DEL PROFESORADO TÉCNICO - TÉCNICO SUPERIOR EN INFORMÁTICA APLICADA - PROGRAMACIÓN I
RESOLUCIÓN DE PROBLEMAS Y ALGORITMOS La principal razón para que las personas aprendan lenguajes de programación es utilizar una computadora como una herramienta para la resolución de problemas. Cinco
Más detallesParalelismo. MPI Paso de mensajes. Francisco García Sánchez Departamento de Informática y Sistemas
Paralelismo MPI Paso de mensajes Francisco García Sánchez Departamento de Informática y Sistemas Contenido Introducción 1) Uso de MPI 2) Multiplicación de matrices 3) Ordenación por mezcla 4) Programación
Más detallesEl Pseudo-código de PsInt
El Pseudo-código de PsInt Las características de este pseudolenguaje fueron propuestas en 2001 por el responsable de la asignatura Fundamentos de Programación de la carrera de Ingeniería Informática de
Más detallesDivide & Conquer. Herman Schinca. Clase de Junio de 2011
Divide & Conquer Herman Schinca Clase 20 7 de Junio de 2011 Divide y vencerás Idea aplicable a muchas situaciones de la vida. Origen histórico atribuído a Julio César en relación a sus estrategias militares.
Más detallesMétodos de ordenamiento y búsqueda en vectores
Métodos de ordenamiento y búsqueda en vectores Ordenación (clasificación) Es la operación de organizar un conjunto de datos en algún orden o secuencia específica, tal como creciente o decreciente para
Más detallesFICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 3. Estructuras de Almacenamiento. Básicas. Definición y Manejo.
FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA Tema 3. Estructuras de Almacenamiento Básicas. Definición y Manejo. 1.- Búsqueda de Información. Definición de Clave. 2.- Definición y Manejo
Más detallesUniversidad Autónoma del Estado de México Facultad de Medicina
Universidad Autónoma del Estado de México Facultad de Medicina Licenciatura en Bioingeniería Médica Unidad de Aprendizaje: Algoritmos y programación básica Unidad 3: Estructuras de control de flujo en
Más detallesProgramación II Recursividad Dr. Mario Rossainz López
5. RECURSIVIDAD 5.1. Introducción La recursividad es una técnica en la que una función o método se hace llamadas a sí misma en el proceso de la realización de sus tareas. La recursividad da al programador
Más detallesEstructura de datos y de la información Boletín de problemas - Tema 10
Estructura de datos y de la información Boletín de problemas - Tema 10 1. En el caso de que sea posible, dar un ejemplo de los siguientes puntos. Si no, explicar por qué no lo es. Considerar un valor genérico
Más detallesCapítulo 3. Clasificación en Memoria Secundaria
Capítulo 3. Clasificación en Memoria Secundaria INTRODUCCIÓN Las memorias secundarias (cintas magnéticas, discos duros, ) se caracterizan en general porque el acceso es secuencial. Es decir, en un instante
Más detallesIntroducción Supongamos un subconjunto de n elementos X = {e 1,,e n de un conjunto referencial Y, X Y. Dentro de Y se define una relación de orden tot
Algoritmos de ordenación Análisis y Diseño de Algoritmos Algoritmos de ordenación Algoritmos básicos: Θ(n 2 ) Ordenación por inserción Ordenación por selección Ordenación por intercambio directo (burbuja)
Más detallesEstructura de Datos Árboles Árboles 2-3
Estructura de Datos Árboles 1-2-3 Árboles 2-3 Prof.: Mauricio Solar Prof.: Lorna Figueroa Primer Semestre, 2010 1 Arboles 1-2-3 Árbol n-ario ordenado de orden 3 Cada nodo tiene 1 ó 2 elementos 75 Nodo
Más detallesTeoría Tema 4 Ampliación - Infinitésimos
página 1/8 Teoría Tema 4 Ampliación - Infinitésimos Índice de contenido Qué son los infinitésimos?...2 Infinitésimo de la exponencial y el logaritmo para x 0...4 Infinitésimo de las funciones seno, coseno
Más detallesComputación de Altas Prestaciones Sistemas computacionales
Computación de Altas Prestaciones Sistemas computacionales Domingo Giménez Departamento de Informática y Sistemas Universidad de Murcia, Spain dis.um.es/~domingo Universidad de Murcia 1 Motivación Problemas
Más detalles1. Algoritmo, programa y pseudocódigo. Introducción al estudio de algoritmos. Ejemplos
Introducción al estudio de algoritmos 1. Algoritmo, programa y pseudocódigo 2. Eficiencia y el principio de invarianza 3. Operaciones elementales 4. Casos mejor, peor y medio 5. Notación asintótica 6.
Más detallesEstructura de Datos. Temario Unidad VI. Árboles Árboles Binarios
Estructura de Datos Árboles Árboles Binarios Temario Unidad VI 6.1 Definición y operaciones 6.2 Implementación 6.3 Recorrido en Árboles Binarios 6.4 Árboles AVL y su implementación 6.5 Árboles n-arios
Más detallesANÁLISIS Y DISEÑO DE ALGORITMOS
ANÁLISIS Y DISEÑO DE ALGORITMOS CURSO 2005/2006 BOLETÍN DE PROBLEMAS: DIVIDE Y VENCERÁS Ejercicio 1 Dado un vector ordenado y rotado k veces: diseñar un algoritmo O(log n) que encuentre el elemento mayor
Más detallesAlgoritmo. Programa. Lenguaje algorítmico
ESCUELA DE EDUCACION SECUNDARIA TECNICA N 3 LENGUAJE ELECTRONICO PROFESOR: PAOLO, MARCOS GERMAN TEMA: ALGORITMOS Algoritmo Es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y
Más detallesLógica de programación
Universidad Nacional Autónoma de Nicaragua - León Facultad de Ciencias y Tecnología Departamento de Computación Lógica de programación Elaborado por: Lic. Luis Ernesto Díaz Beteta Sentencias Repetitivas
Más detalles