Código Bloque II: GENERACIÓN DE LA Matriz DE RIGIDEZ A
|
|
- Marcos Bustamante Molina
- hace 5 años
- Vistas:
Transcripción
1 VIII. Código Bloque II: GENERACIÓN DE LA Matriz DE RIGIDEZ A Este bloque se encarga de la generación de las matrices locales para cada triángulo, su ensamblado en una matriz única de rigidez y la simplificación de ésta, eliminando de ella, mediante sumas, las multiplicidades de los términos compartidos. Esta matriz será almacenada en formato COO para poder convertirla en un archivo MATRIX MARKET de manera sencilla y poder manejarla en otros puntos del problema. 1. PUNTO DE PARTIDA: En Matlab y mediante la herramienta de mallado se generó una trama, definiendo el dominio, las condiciones de contorno y el grado de mallado. Este sistema se exportó a archivos mediante el código tratamalla que genera los archivos triangulos.dat, coordenadas.dat, dirichlet.dat y neumann.dat. A partir de ahí el objetivo consiste en: 1- Lectura de los archivos que describen el mallado. 2- Cálculo de las matrices locales para cada uno de los elementos del mallado. (Matrices 3x3). 3- El ensamblado de dichas matrices en una matriz dispersa de tamaño Num_nodosxNum_nodos, eliminando duplicidades y valores nulos. 4- El almacenamiento de la matriz generada en formato COO que podría ser volcada en un archivo en formato Matrix Market que sería la entrada del solver. METODOLOGÍA La idea en la que se basaría la solución sería desarrollar un código usando exclusivamente lenguaje C con las extensiones CUDA. Sin usar bibliotecas ni códigos previamente desarrollados. La ventaja de este desarrollo es que el código es una solución optimizada y a medida del problema que nos ocupa. Se optó por dividir el problema en dos partes: 1- Generador de matrices que depende de los triángulos. 2- Simplificador de la Matriz a formato COO que depende de los nodos. Se ha usado la CUDA API C Runtime para CUDA. Se han usado como lenguajes de programación C y C++. No se han usado bibliotecas estándar ni "tamplates": CUBLAS, CUSP, THRUST. 146
2 En la figura 1 se ilustra la estrategia usada en este bloque. BLOQUE DE PARTIDA EN CPU Generación de la Matriz de Rigidez Lectura de archivos tiengulos.dat y coordenadas.dat Traslado de la información a GPU. Generación de las Matrices Locales y su ensamblado, en GPU. Eliminación de Redundancias y Ceros en la matriz ensamblada, en GPU Volcado a archivo MM de la matriz de Rigidez. ADAPTACIÓN CUDA Fig 1: Diagrama de flujo de la adaptación objeto de este bloque. 2. MODELO MATEMÁTICO Y SIMPLIFICACIONES Uno de los elementos fundamentales para la optimización de código es realizar simplificaciones previas a la codificación. Esto se vuelve especialmente importante en CUDA cuando tenemos en cuenta que si la simplificación conlleva la disminución en el número de variables y operaciones, esto se traduce en una disminución de registros necesarios para la ejecución y por tanto una mayor velocidad potencial de la aplicación. Además un análisis previo del problema algebraico nos permite deducir características de la matriz final y de las matrices intermedias que simplificarán los cálculos, disminuyendo como veremos las operaciones necesarias. Por tanto, a partir de cada triángulo del mallado se construye una matriz de 3x3 que será la matriz local. Para la determinación de dichos elementos intervienen las coordenadas de los tres vértices. Estos elementos corresponden a combinaciones de los vértices de cada triángulo tomados de dos en dos. Para cada triángulo tenemos tres vértices: v1, v2 y v3; que les corresponden 2 coordenadas de tipo (x,y). Se forma la matriz de coordenadas que corresponde a los vértices de cada x1 y1 triángulo: x2 y2 x3 y3] 147
3 El jacobiano será: 1 x1 y1 1 x2 y2 1 x3 y3] =(x2*y3)+(x3*y1)+(x1*y2)-(x2*y1)-(x1*y3)-(x3*y2) También se construye la matriz Bkt que es la matriz de transformación que lleva los vértices del triángulo (0,0) (0,1) (1,0) a la posición de los vértices V1, V2 y V3: x2 y2 x1 x2 x1 y2 x3 y3] - = x1 y1] x3 x1 y3 y1] La inversa de Bkt es inmediata por ser una matriz 2x2, inv Bkt: 1 Bkt 1 y3 y1 y1 y2 = Det * x1 x3 x2 x1] A partir de ahí construimos la matriz CK definida como: CK= Bkt 1T * Bkt 1 De ahí, CK= 1 CK= Det 2 * 2 2 y3 y1 + x1 x3 1 y3 y1 x1 x3 y3 y1 y1 23 Det 2 * y1 y2 x2 x1]* x1 x3 x2 x1] y3 y1 y1 y2 + x1 x3 x2 x1 y3 y1 y1 y2 + x1 x3 x2 x1 y1 y2 + x2 x1 2 2 Se usan las siguientes matrices auxiliares definidas para las matrices locales: K XX = ], K YY = ], K XY = ] y K T XY = ] Para cada triángulo se construye la matriz local: R=jacob*{CK11* K XX +CK22* K YY +CK12* K XY + K T XY ]} K XY + K T XY = ] ]= ] 148
4 R= 1 2 * 1 Det 2 *jacob* CK11+CK22+ 2Ck12 CK11+ 0 CK12 0 CK22 CK12 CK11+ 0 CK12 CK CK12 0 CK22 CK CK12 0+CK22+ 0 Observamos que: y que: R11= R22+ R33+2*R23 R12=-R22+0*R33- R23 R13=0*R22- R33- R23 R21=R12 R31=R13 R32=R23 Concluimos que las matrices locales son reales, cuadradas y simétricas con sólo 3 elementos independientes. Por tanto necesitamos obtener sólo 3 elementos que formarán la base de nuestros cálculos: R22, R33 y R23 tal y como están definidos en función de CK. Los 6 restantes son deducidos de manera inmediata. Estos cálculos permiten simplificar el código. Otro elemento esencial es que estas matrices locales una vez ensambladas forman una matriz de rigidez simétrica real, dispersa, y con diagonal no nula. Todas estas características son útiles para generarla y simplificarla. 3. ALGORITMO DE GENERACIÓN Para la parte de generador, se parte del código MATLAB, y se expresa en ALGEBRA LINEAL. Tras realizar los cálculos pertinentes para simplificar las operaciones y permitir en la medida de lo posible la obtención de resultados inmediatos, se transcribió a lenguaje de programación C. Rápidamente se observa que los cálculos de mayor exigencia, son los bucles y entre éstos los bucles anidados (dobles o incluso triples). En particular el bucle para calcular las matrices locales. Esta parte del código se transcribió a CUDA mediante inserción de código Host y código device. 149
5 En la CPU se realiza la lectura de los archivos y el almacenamiento de los datos en matrices. Por un lado se realiza la lectura del archivo de coordenadas y se almacena su contenido en la matriz Cor de coordenadas donde la fila i corresponde al vértice V=i+1 y almacena dos valores x(v) e y(v) que corresponden a sus coordenadas. Por otro lado se realiza la lectura del archivo de triángulos y se almacena su contenido en la matriz Tri donde la fila i corresponde al triángulo T=i+1 y almacena tres valores V1, V2 y V3 que corresponden a los vértices que lo forman. Es de señalar que no existe ni el triángulo "0", ni tampoco el vértice 0. Esto es importante debido al indexado de matrices en C, donde, recordémoslo, sí existen las posiciones 0. Estas matrices se copian a la GPU donde se generan las matrices resultado. Para cada uno de los vértices se leen sus coordenadas correspondientes y se realizan los cálculos mediante la invocación del kernel. Finalmente los resultados se trasladarán a la CPU. La sección del kernel es sin duda la más importante del código porque es la que implanta el algoritmo de generación de matrices locales y además lo hace de manera paralela y no secuencial. Cada hilo ejecuta el algoritmo para un triángulo individual. Las operaciones son básicamente las expuestas en el desarrollo algebraico descrito arriba. Se ha buscado por un lado reducir al máximo los pasos y por otro usar el menor número posible de registros. Esto permite acelerar la ejecución y aumentar los recursos disponibles para ejecutar un gran número de hilos simultáneamente. La lectura de los datos de entrada para cada triángulo se hace casi de manera independiente leyendo secciones independientes de la matriz de triángulos. Aunque en teoría estas secciones coinciden o se repiten entre triángulos (porque los triángulos comparten vértices), en la práctica no se ha observado una saturación debido a la lectura, ni tampoco una aceleración cuando se han almacenado las coordenadas en memoria compartida en lugar de hacerlo en los registros. Sin embargo la escritura de los resultados se debe hacer de manera independiente. No se controla la secuencia de escritura de los hilos independientes por ello si dos o varios hilos escribieran en una misma posición actualizando el dato almacenado pueden surgir inconsistencias. Para ello se ha optado por reservar memoria suficiente con posiciones contiguas para que cada hilo almacene los 9 datos que genera (Que corresponden a los elementos R de la matriz local) usando 3 arrays que forman una matriz en el formato COO. La matriz I almacena la fila que corresponde al vértice tomado como índice inicial, la matriz J almacena las columnas correspondientes a todas las combinaciones usando los demás vértices del triángulo para obtener todas las combinaciones posibles y la matriz Val almacena los valores que corresponden. 150
6 El índice de almacenamiento y el orden se basan en el índice del triángulo. De tal modo que al triángulo T le corresponden las posiciones de 9*T hasta la 9*T+8 todas contiguas en cada uno de los 3 arrays. El sistema de almacenamiento de resultados que se ha usado se basa en reservar en cada array un bloque de posiciones contiguas para la escritura. Como índice se usan los triángulos. Por tanto cada hilo escribe en una posiciones identificadas e independientemente de los demás hilos en ejecución o los que puedan ejecutarse o arrancarse durante su existencia. La reserva de estos espacios con una dirección de comienzo determinada por el índice del hilo (en total 9 posiciones en cada matriz para cada triángulo), evita colisiones en escritura e independiza los accesos de los hilos. El orden descrito en este apartado será esencial para realizar las tareas de simplificación. En las matrices generadas, sin embargo la posición "i" corresponde al triángulo i+1 ya que en C la matrices empiezan en el índice 0. Para evitar limitaciones de memoria, se ha optado por volcar el contenido de las matrices a un archivo provisional: prov.dat. 4. ALGORITMO DE SIMPLIFICACIÓN La matriz generada en el apartado anterior es una matriz que contiene valores nulos y duplicidades. En realidad su formato no es el de una matriz COO propiamente dicho. Por ello se hace necesario un paso adicional que es someterla a un ALGORTIMO SIMPLIFICADOR que elimina los valores nulos y las DUPLICIDADES. Las duplicidades Se generan debido a que los vértices son compartidos por varios triángulos. Además los triángulos contiguos comparten un lado. Las duplicidades dependen del patrón de mallado, pero generan pares (I,J) que se repiten aunque puedan tener el mismo valor. Especial relevancia tienen los pares (I,I) que constituyen la diagonal de la matriz de ensamblado. El número de estas duplicidades puede llegar a ser muy importante y de hecho lo demuestran los datos de salida durante las pruebas. 151
7 Para eliminar estas duplicidades se probaron 3 soluciones: a. MÉTODO DIRECTO: La idea es convertir el código CPU siguiente: for(i=0; i<n; i++){ for(j=i+1; j<n; j++){ if((ij]==ii])&&(jj]==ji])){ Vali]+=Valj] Valj]=0 } } En código GPU de manera directa: Si definimos t como índice de hilos, una solución sería ejecutar cada hilo el bucle interno para for(j=t+1; j<n; j++){ if((ij]==it])&&(jj]==jt])){ Tt]=j j=n } } Las posiciones se recorren una a una y se comparan. En la CPU este bucle tarda horas, sin embargo en la GPU la versión paralela no se ejecuta y la GPU lo interrumpe. Se debe señalar que al no poder usar el depurador CUDA-gdb por no disponer de una salida vídeo adicional, se optó por incorporar código adicional para ayudar a depurar el programa. Esto se hizo mediante la inserción de código para producir mensajes por pantalla para controlar los puntos de ejecución (Una especie de orden Break que no interrumpe la ejecución) y bloques de escritura a archivo para conocer y guardar el contenido de las variables. En especial para los kernels se mostró muy útil el uso del temporizador menor que mide la duración de ejecución del kernel. El temporizador mayor se usa para medir el tiempo total de ejecución del programa o de un módulo; incluye por tanto el tiempo CPU y tiempo GPU. 152
8 En condiciones exitosas la duración de un kernel es del orden de decenas o centenares de milisegundos; en caso de fracaso se detectan valores absurdos (enormes o infinitamente pequeños) o bien sencillamente "0". Al no disponer de acceso a los valores de registros de la CUDA en tiempo de ejecución, sólo se puede especular acerca de la causa. Sin embargo esta especulación está basada en experiencias parecidas expuestas en los foros CUDA y NVIDIA. Un kernel "rebota" cuando los recursos son insuficientes para su ejecución. Especialmente cuando se agotan las memorias tipo shared memory y registros. La reserva de recursos se hace previamente a la ejecución por ello simplemente se interrumpe. Al examinar el código expuesto y sus variaciones se pueden concluir 2 hipótesis: 1- No sólo las escrituras deben ser no competitivas entre hilos; sino también las lecturas. 2- Recorrer el array en orden implica el almacenamiento de un gran número de datos. Estos espacios o no se liberan durante la ejecución del hilo (por ejemplo escribiendo encima de ellos en un bucle for ) o lo hacen con lentitud ocasionando el agotamiento de los registros. Se debe observar que incluso cuando se modificaron los parámetros de lanzamiento de kernel bajando al máximo el número de hilos (llegando a 4 hilos por bloque), no se logró que arrancara. b. MÉTODO DE ORDENACIÓN Reconsiderando el problema y especialmente la disposición de los datos, en el archivo prov.dat ; se observa que los datos están dispuestos según los triángulos. Esta disposición no es la más idónea para una matriz donde el orden natural es según nodos. Por ello se buscó algún método para ordenar los arrays según los nodos. Y una vez ordenados, era de esperar que las posiciones contiguas contuvieran los valores repetidos. Por tanto el problema se reduciría a recorrer los arrays en bloques y no en su conjunto. Se partiría del primer elemento y se compararía con los k siguientes que contiene los datos que poseen la misma fila. En resumen: Se ordenan I, J, y VAL según los nodos fila de I, obteniendo en las posiciones contiguas el mismo I y distintos J que son los que se recorrerían buscando repeticiones. 153
9 Para llevar a cabo esta idea se debía usar un código de ordenación (sorting). - THRUST dispone de funciones templates (plantillas) para arrays lineales. - La biblioteca estándar de C contiene la función qsort. - La SDK de NVIDIA también contienen implantaciones de algoritmos Sorting. En general esas soluciones manejan arrays lineales. Una solución barajada era convertir cada línea en una cadena; es decir, generar un array lineal de cadenas (strings) y ordenarlo, porque al ordenador el array de columnas debemos reorganizar el de valores. Sin embargo esta solución tenía dos inconvenientes: 1. Conversión adicional de datos con especial cuidado a los formatos y longitud de cada campo. 2. No aprovechamiento en absoluto de la disposición de datos en la memoria que nos es conocida a priori. Esta opción sigue siendo válida, pero para un diseño adaptado era preferible particularizar la solución. c. MÉTODO DE MAPEADO Para este método se tuvo en cuenta la disposición de los datos en la memoria. Se decidió, por tanto, mapear los datos de los triángulos a vértices. Recordemos que triangulos.dat y la matriz que de él se genera contienen para la posiciones i que corresponde al triángulo "i+1" los vértices V1, V2 y V3. En cambio la matriz Vértices se construye haciendo que la línea "i" corresponda al vértice "i+1" y contenga los triángulos T1, T2, hasta Tk. Es decir a cada vértice le hace corresponder todos los triángulos en los que aparece. Una vez mapeados los triángulos a vértices y usando matrices auxiliares se ejecuta el código de ordenación en la GPU. En concreto se usa la matriz V, que contiene las veces que se repite un vértice en el mallado (en cuantos triángulos entra a formar parte) y la matriz P, que almacena las posiciones de comienzo de almacenamiento de todos los elementos que tienen la misma fila. Pi] es la posición de comienzo de los elementos cuya fila es "i+1". Por otro lado Vi] nos indica las veces que un nodo se repite. Para almacenar todos los elementos de la misma fila se necesitan 3xVi] posiciones de memoria. Que mediante P se direccionan y se hacen contiguas. 154
10 No hay colisiones porque los hilos que aquí corresponden a vértices leen de posiciones determinadas, en concreto, de aquellas en que su índice coincide con la fila. Estas posiciones corresponden a 3 posiciones seguidas en las matrices de resultados según los triángulos. Para escribir también lo hacen en posiciones determinadas de las matrices de salida previamente fijadas evitando colisiones. Se debe señalar que se eligió almacenar los índices de los nodos filas de un modo lineal en los arrays. Es decir primero todos los elementos cuyo elemento fila es "1", luego todos los que van en la fila "2" etc. Por tanto durante todo el proceso se ahorra el manejar al array de filas. Este kernel se ha llamado ordenadorseguni. Seguidamente se llama un segundo kernel llamado eliminador que realiza comparaciones para cada fila entre los nodos de las columnas. En este caso se obtiene, como las posiciones son contiguas y conocidas previamente (porque dependen de las veces que un vértice es compartido por los triángulos), bucles pequeños de un máximo de k, que son recorridos cada uno por un hilo independiente. En estos bucles se realizan comparaciones. Cuando hay una coincidencia se acumula en el valor inicial y se anula en los siguientes. En lugar de realizar desde el kernel una llamada a función device, se prefiere implantar un nuevo kernel. El objetivo es disminuir los requisitos de ejecución permitiendo que no se agoten en especial los registros. Finalmente los datos no nulos obtenidos son volcados a un archivo. Esto se hace de manera sencilla insertando la condición de no escribir los valores nulos. 5. PRUEBAS Y OBSERVACIONES En las pruebas iniciales realizadas en el equipo de transición, se trató un sistema de mallado con triángulos y nodos. El programa se ejecutó correctamente con los siguientes datos relevantes: PRIMERA PARTE: GENERADOR: La ejecución del programa ha requerido: 11 segundos en total. La ejecución del programa ha requerido: milisegundos en la GPU. SEGUNDA PARTE: SIMPLIFICADOR: La ejecución del programa ha requerido: segundos en total. La ejecución del programa ha requerido: milisegundos en la GPU. 155
11 Se observó lo siguiente: - Los códigos generados son bastante rápidos. Recordemos que la tarjeta usada tiene 4 procesadores con un total de 32 núcleos. - Los resultados coinciden con los ofrecidos para MATLAB. Esto se comprueba mediante inspección de los archivos generados por ambas aplicaciones. - Los arrays no se pueden inicializar en la GPU pasando el tamaño como parámetro de la función de llamada. Es decir Ak] no es válido. En cambio A6] sí lo es. - El tamaño de los bloques actúa como des-acelerador de la velocidad, pero permite acomodar un máximo de hilos. - Dentro de un mismo código host no se pueden variar las dimensiones de la malla y de los bloques entre los distintos kernels a los que se llama. - Los códigos se desarrollaron de forma compartimentada para permitir un análisis de cada sección del problema, aunque luego su fusión no produjo inconvenientes. - Hay que observar que cualquier bucle "for" excepto los de lectura y escritura de archivos son susceptibles de ser trasladados a CUDA. Incluyendo por ejemplo los de mapeado, el de determinación del máximo orden de repeticiones y los de inicialización de matrices y arrays (zero padding). La paralelización de estas secciones supondrá sin duda una mejora. - No se ha considerado el uso de otro tipo de memorias por ejemplo texture. - A la hora de determinar los tamaños de malla y bloques se debe garantizar que todos los hilos "caben" para que sean ejecutados, de ahí el redondeo al entero superior y la condición de t<número total de tríangulos ; por ejemplo. - El formato de los datos contenidos en los archivos de entrada generados por Matlab (triangulos.dat y coordenadas.dat) produjo problemas al intentar almacenarlos directamente como int. Se deben leer como float y reconvertir mediante cast a int. 156
ANÁLISIS DEL CÓDIGO MATLAB DE PARTIDA EN CPU
II. ANÁLISIS DEL CÓDIGO MATLAB DE PARTIDA EN CPU Como punto de partida se escogió un código MATLAB que debía ser adaptado a CUDA con el objetivo de explorar la nueva tecnología y realizar comparaciones.
Más detallesPROGRAMACIÓN EN EL ENTORNO CUDA EN APLICACIONES DE MECÁNICA COMPUTACIONAL. PRUEBAS, RESULTADOS Y CONCLUSIONES CONCLUSIONES:
III. CONCLUSIONES: VELOCIDAD: La velocidad de la aplicación es elevada y satisfactoria. Para el mallado D se obtuvo una aceleración máxima de x200. Esta aceleración es especialmente debida al ahorro de
Más detallesMATRICES DISPERSAS (Sparse) 1. FORMATO DE ALMACENAMIENTO DE MATRICES EN ARCHIVO MATRIX MARKET (MM)
IV. MATRICES DISPERSAS (Sparse) 1. FORMATO DE ALMACENAMIENTO DE MATRICES EN ARCHIVO MATRIX MARKET (MM) El formato MM proporciona un mecanismo sencillo para facilitar el intercambio de datos de matrices.
Más detallesPRUEBAS, RESULTADOS y CONCLUSIONES
PRUEBAS, RESULTADOS y CONCLUSIONES When you have eliminated all which is impossible, then whatever remains, however improbable, must be the truth. The Adventure of the Blanched Soldier. Sir Arthur Conan
Más detallesINFORMATICA TECNICATURA DE NIVEL SUPERIOR ALGUNOS EJERCICIOS DE SELECCIÓN E ITERACION
INFORMATICA TECNICATURA DE NIVEL SUPERIOR ALGUNOS EJERCICIOS DE SELECCIÓN E ITERACION DIIAGRAMAS DE FLUJO Un diagrama de flujo es un dibujo que utiliza símbolos estándar de diagramación de algoritmos para
Más detallesTEMA 7. ARRAYS (LISTAS Y TABLAS).
TEMA 7. ARRAYS (LISTAS Y TABLAS). En capítulos anteriores se han descrito las características de los tipos de datos básicos o simples (carácter, entero y coma flotante). Asimismo, se ha aprendido a definir
Más detallesSEGUNDA PARTE: TIPOS COMPLEJOS
SEGUNDA PARTE: TIPOS COMPLEJOS Introducción En la primera parte del tema se vieron los tipos simples de datos que es capaz de almacenar el ordenador: booleanos, caracteres, enteros y reales. Sin embargo,
Más detallescuevogenet Paralelización en CUDA de la Dinámica Evolutiva de Redes Génicas Dirigido por: Fernando Díaz del Río José Luis Guisado Lizar
cuevogenet Paralelización en CUDA de la Dinámica Evolutiva de Redes Génicas Realizado por: Raúl García Calvo Dirigido por: Fernando Díaz del Río José Luis Guisado Lizar Objetivos Implementar un algoritmo
Más detallesTema 18. Vectores o Tablas. Diego Gutiérrez
Tema 18. Vectores o Tablas 1 Vectores: Conceptos básicos Índice: 2 Ejemplo: Contar el número de apariciones de la letra A en un texto introducido por teclado (sólo mayúsculas) Variables veces_a: integer;
Más detallesPROBLEMA 1. Rellena el hueco 1 (línea 23). Realiza la reserva de memoria para almacenar los n puntos.
PROBLEMA 1. El siguiente programa tiene algunos huecos en blanco que tienes que rellenar para que funcione correctamente. En cada hueco va una única línea de C, salvo en el cuerpo de la función calcula_area_triangulo,
Más detallesESTRUCTURA DE ASIGNACIÓN
ALUMNA: GRADO: MODALIDAD-10 FECHA: PROFESOR: Hugo Nelson Ramírez Cárdenas LOGROS 1. Comprende la importancia que tiene el diseño de algoritmos, como forma de dar solución a un determinado problema. 2.
Más detallesObjetivos. Conocer y saber utilizar diferentes tipos de datos. estructurados: cómo se definen. cómo están organizadas sus componentes
Objetivos Conocer y saber utilizar diferentes tipos de datos estructurados: cómo se definen cómo están organizadas sus componentes cómo se accede a ellas y sus operaciones y algoritmos básicos Tema: Estructuras
Más detallesProgramación (PRG) PRÁCTICA 10. Algoritmos de búsqueda
Programación (PRG) Facultad de Informática Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia 1. Introducción El objetivo de esta práctica es estudiar el comportamiento
Más detallesFormulación del problema de la ruta más corta en programación lineal
Formulación del problema de la ruta más corta en programación lineal En esta sección se describen dos formulaciones de programación lineal para el problema de la ruta más corta. Las formulaciones son generales,
Más detallesLa resolución de problemas es una tarea únicamente humana comprobable en todos los casos con los mismos resultados.
Pseudocódigo Introducción La importancia de sistematizar procesos y crear programas de cómputo radica esencialmente en que estos se puedan utilizar como resolución de problemas similares en muchos casos,
Más detallesDefinición de matriz Una matriz A es un conjunto de números dispuestos en filas y en columnas.
1.- CONCEPTO DE MATRIZ. TIPOS DE MATRICES Definición de matriz Una matriz A es un conjunto de números dispuestos en filas y en columnas. 1 3 4 Por ejemplo, A = es una matriz de 2 filas y 3 columnas 0 5
Más detallesCAPÍTULO 3 ESTRUCTURAS DE DATOS ESTÁTICAS
CAPÍTULO 3 ESTRUCTURAS DE DATOS ESTÁTICAS Capítulo 3 Estructuras de datos estáticas 1/37 1. INTRODUCCIÓN Las estructuras de datos se utilizan, generalmente, para procesar una colección de valores que están
Más detallesPROGRAMA PRINCIPAL: Se usan las siguientes variables en la función main()
PROGRAMA PRINCIPAL: Se trata de llevar un control de los datos característicos de varios modelos de vehículos, para poder calcular el consumo, emisión de dióxido de carbono y duración de viajes, a partir
Más detallesPráctica Guiada: Vectores y Matrices
Práctica Guiada: Vectores y Matrices 1. Objetivos Al finalizar esta actividad, serás capaz de: 1. Escribir la declaración de vectores y matrices de tipos básicos. 2. Escribir el código necesario para recorrer
Más detallesUNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA CARRERA INGENIERÍA DE SISTEMAS MODELO DE RESPUESTA
4-7- /8 UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA CARRERA INGENIERÍA DE SISTEMAS MODELO DE RESPUESTA ASIGNATURA: COMPUTACIÓN GRÁFICA CÓDIGO: 4 MOMENTO: INTEGRAL FECHA DE APLICACIÓN:
Más detallesTema 2: Teorema de estructura de los grupos abelianos finitamente generados.
ESTRUCTURAS ALGEBRAICAS GRADO EN MATEMÁTICAS. CURSO 215/216 Tema 2: Teorema de estructura de los grupos abelianos finitamente generados. 1.1. Grupo abeliano libre. Bases. Definición 1.1. El grupo Z n con
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 detallesV. OPTIMIZACIÓN PARA COMPUTACIÓN GPU EN CUDA
V. OPTIMIZACIÓN PARA COMPUTACIÓN GPU EN CUDA La arquitectura de una GPU es básicamente distinta a la de una CPU. Las GPUs están estructuradas de manera paralela y disponen de un acceso a memoria interna
Más detallesAlgoritmos y Estructuras de Datos Curso 04/05. Ejercicios
35. Sean A= {1, 2, 3, 7, 8} y B= {3, 4, 5, 7, 9}, mostrar la ejecución y los resultados de las siguientes operaciones, suponiendo una representación con arrays de booleanos y con listas de elementos (ordenadas
Más detallesMATRICES. Se simboliza tal matriz por y se le llamará una matriz x o matriz de orden x (que se lee por ).
1 MATRICES 1 Una matriz es una disposición rectangular de números (Reales); la forma general de una matriz con filas y columnas es Se simboliza tal matriz por y se le llamará una matriz x o matriz de orden
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 detallesAlgoritmos y Estructuras de Datos Ingeniería en Informática
2.1.Sean A= {1, 2, 3, 7, 8} y B= {3, 4, 5, 7, 9}, mostrar la ejecución y los resultados de las siguientes operaciones, suponiendo una representación con arrays de booleanos y con listas de elementos (ordenadas
Más detallesTEMA 7. ALGORITMOS DE BÚSQUEDA, ORDENACIÓN
M.P. Sesmero, P. de Toledo, F.J. Ordoñez, J. Gómez-Romero, J.A. Iglesias, J.L. Mira Programación TEMA 7. ALGORITMOS DE BÚSQUEDA, ORDENACIÓN Y MEZCLA Grado en Ingeniería en Tecnologías Industriales Programación
Más detalles4. Procedimiento de solución
4. Procedimiento de solución Para probar la validez del modelo desarrollado, se va a implementar su programación en la herramienta de optimización del programa Matlab R2008a. 4.1. Sub-rutina en Matlab
Más detallesRetículos y Álgebras de Boole
Retículos y Álgebras de Boole Laboratorio de Matemática Discreta Jesús Martínez Mateo jmartinez@fi.upm.es Práctica 1. Ordenación topológica A. Herramientas necesarias Para la práctica que vamos a realizar
Más detallesObjetivo El alumno conocerá y aplicará los conceptos de arreglo y estructura en la realización de programas que resuelvan problemas de tipo numérico.
Universidad Nacional Autónoma de México Facultad de Ingeniería ARREGLOS Y ESTRUCTURAS Objetivo El alumno conocerá y aplicará los conceptos de arreglo y estructura en la realización de programas que resuelvan
Más detallesFUNDAMENTOS DE INFORMÁTICA Convocatoria de Febrero. EXAMEN DE TEORÍA T1 curso 2002 / 2003 TEST. Nombre DNI Grupo INSTRUCCIONES
FUNDAMENTOS DE INFORMÁTICA Convocatoria de Febrero EXAMEN DE TEORÍA T1 curso 2002 / 2003 Nombre DNI Grupo INSTRUCCIONES Todas las preguntas del test se han de contestar en la tabla a pie de página de esta
Más detallesTeoría de redes y optimización en redes
Teoría de redes y optimización en redes Pedro Sánchez Martín Contenidos Definiciones básicas Árbol generador mínimo de expansión Camino mínimo Algoritmo Dkstra Algoritmo Bellman-Ford Fluo máximo Fluo de
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 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 detallesAlgoritmos. Medios de expresión de un algoritmo. Diagrama de flujo
Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten
Más detallesRepaso del algoritmo SIMPLEX
Universidad de Chile Facultad de Ciencias Físicas y Matemáticas Departamento de Ingeniería Industrial IN70K: Clase Auxiliar Repaso del algoritmo SIMPLEX Marcel Goic F. 1 1 Esta es una versión bastante
Más detallesEspacios euclídeos. Transformaciones ortogonales
Espacios euclídeos. Transformaciones ortogonales Álgebra con MATLAB: Práctica 3 Curso 2006-2007 Una ortogonalización Empezaremos esta práctica utilizando MATLAB para resolver el siguiente problema: En
Más detallesCONTENIDOS EXÁMEN DE ADMISIÓN MATEMÁTICA SEGUNDO BÁSICO 2018
SEGUNDO BÁSICO 2018 DEPARTAMENTO Ámbito numérico 0-50 - Escritura al dictado - Antecesor y sucesor - Uso de la tabla: parte parte todo. - Orden (menor a mayor y viceversa) - Patrones de conteo ascendente
Más detalles2. ESTRUCTURAS BÁSICAS
2. ESTRUCTURAS BÁSICAS En el computador un conjunto (no vacío) de datos se almacenan en memoria; el área de memoria se denomina por el elemento X k ; esto es una celda, una unidad de memoria direccionable;
Más detallesDETERMINANTES MATRICES EQUIVALENTES POR FILAS RANGO DE UNA MATRIZ. APLICACIONES
Tema 2.- DETERMINANTES DETERMINANTES MATRICES EQUIVALENTES POR FILAS RANGO DE UNA MATRIZ. APLICACIONES 1 Un poco de historia Los determinantes es uno de los temas más útiles del Álgebra Lineal, con muchas
Más detallesEstructuras Dinámicas de datos.
Estructuras Dinámicas de datos. Las estructuras dinámicas de datos son estructuras que crecen a medida que ejecuta un programa. Una estructura dinámica de datos es una colección de elementos llamadas nodos
Más detallesCapítulo 3. Introducción a la programación. Continuar
Capítulo 3 Introducción a la programación Continuar Introducción Java es un lenguaje que tiene muchas ventajas frente a otros lenguajes de programación: es open source (código abierto), esto permite ver
Más detallesCapítulo 5. 5.Seguimiento de objetos
Capítulo 5 5. Introducción 5.1.Introducción El seguimiento de objetos en movimiento es el fin último de este proyecto. Para ello, como se comentó previamente, el sistema de visión capta las imágenes del
Más detallesA l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información 1º año
Trabajo práctico Nº 5 (Resolución de problemas Arreglos bidimensionales ). Realiza el programa en Lenguaje C correspondiente. 1- Qué hay de incorrecto en los siguientes códigos? int main() { int x,y; int
Más detallesProgramación Estructurada
Programación Estructurada PROGRAMACIÓN ESTRUCTURADA 1 Sesión No. 7 Nombre: Estructuras de datos Contextualización Cuando un programa suele ser muy extenso, un problema clásico de los programadores es la
Más detallesAlejandro Molina Zarca
Compute Unified Device Architecture (CUDA) Que es CUDA? Por qué CUDA? Dónde se usa CUDA? El Modelo CUDA Escalabilidad Modelo de programación Programación Heterogenea Memoria Compartida Alejandro Molina
Más detallesOCW-V.Muto Eliminación Gaussiana y sustitución hacia atrás Cap. XIV CAPITULO XIV. ELIMINACION GAUSSIANA Y SUSTITUCION HACIA ATRAS
CAPITULO XIV ELIMINACION GAUSSIANA Y SUSTITUCION HACIA ATRAS 1 INTRODUCCION Y METODO El procedimiento general de eliminación Gaussiana aplicado al sistema E 1 : a 11 x 1 + a 1 x + + a 1n x n = b 1 E :
Más detallesResuelva las siguientes desigualdades justificando solo los pasos en que aplique postulados o teoremas de este modulo.
Ejercicios de autoevaluación Matemáticas II MODULO I CUESTIONARIO Resuelva las siguientes desigualdades justificando solo los pasos en que aplique postulados o teoremas de este modulo. 10. 12. - 4x < 3x
Más detallesEstructura de datos y Algoritmos. Tema III Clasificación en memoria secundaria
Estructura de datos y Algoritmos Tema III Clasificación en memoria secundaria 3.1. Clasificación externa basada en mezcla 3.1.1. Mezcla directa. 3.1.2. Mezcla natural. 3.1.3. Mezcla balanceada múltiple.
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 detallesINDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación
INDICE Prologo XI Capitulo 1. Algoritmos y programas 1.1. Configuraciones de una computadora 1 1.2. Lenguajes de programación 2 1.3. Resolución de problemas 1.3.1. Fase de resolución del problema 3 1.3.1.1.
Más detallesCUDA (Compute Unified Device Architecture)
CUDA (Compute Unified Device Architecture) Alvaro Cuno 23/01/2010 1 CUDA Arquitectura de computación paralela de propósito general La programación para la arquitectura CUDA puede hacerse usando lenguaje
Más detallesPráctica 5: Códigos Lineales
TRANSMISIÓN DE DATOS 2008/09 Práctica 5: Códigos Lineales Apellidos, nombre Apellidos, nombre Grupo Puesto Fecha 26 de Noviembre y 1y 4 de Diciembre del 2008 El objetivo de esta práctica es familiarizar
Más detallesPRESENTACIÓN DEL ALGORITMO
PRESENTACIÓN DEL ALGORITMO Puede ser en distintas formas, analizaremos cuatro: a) Descripción Narrada b) Pseudocódigo c) Diagramas de Flujo d) Diagramas N- S (Nassi-Schneiderman o de Chapin) Descripción
Más detallesUNIVERSIDAD SAN CARLOS DE GUATEMALA CUNIZAB
UNIVERSIDAD SAN CARLOS DE GUATEMALA CUNIZAB Facilitador del curso: Ing. Freddy Pérez Cuso: Introducción a la Programación Carrera: PEM en computación e informática Semestre: 2do Semestre Integrantes del
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 detallesEstructura de Datos ARREGLOS
Estructura de Datos ARREGLOS ESTRUCTURAS DE INFORMACIÓN Una estructura de datos o de información es una colección de datos que pueden ser caracterizados por su organización y las operaciones que se definen
Más detallesmedia = ( temp0 + temp1 + temp2 + temp3 + temp temp23 ) / 24; printf( "\nla temperatura media es %f\n", media );
Arrays en el lenguaje C Introducción Una posible definición de array sería: Un conjunto de datos del mismo tipo, identificados por el mismo nombre, y que se pueden distinguir mediante un número de índice.
Más detalles1 Introducción a los algoritmos y a la programación de computadoras... 1
Contenido - IX Contenido 1 Introducción a los algoritmos y a la programación de computadoras... 1 1.1 Introducción... 2 1.2 Concepto de algoritmo... 2 1.2.1 Definición de algoritmo y problema... 2 1.2.2
Más detallesCapítulo 5 Introducción a la teoría de grafos
Capítulo 5 Introducción a la teoría de grafos 5.1. Terminología básica y tipos de grafos Una primera aproximación a la teoría de grafos la tenemos cuando observamos un mapa de carreteras: ciudades (vértices)
Más detallessuma de los n>0 primeros números que se lean del teclado. El número n es un dato y es
EJERCICIOS.. 1. Escribe un algoritmo que usando un bucle for infinito, y una sentencia break calcule la suma de los n>0 primeros números que se lean del teclado. El número n es un dato y es el primero
Más detallesALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. Indíce Algoritmo Elementos de un algoritmo: Variables, Constantes, Expresiones Datos: Definición y
Más detallesPrácticas de SAGE (caldum) 19 de Enero de 2012
Prácticas de SAGE (caldum) 19 de Enero de 2012 1. Introducción En este ejercicio vamos a ver las posibilidades de programación de SAGE haciendo una implementación del algoritmo de reducción de Gauss de
Más detallesTécnicas de Programación
Técnicas de Programación 2.1.- Introducción: unos conceptos previos y primeros conceptos de la API Introducción La resolución de un problema con medios informáticos implica generalmente la siguiente secuencia
Más detallesProgramación: Sistemas unitriangulares inferiores
Programación: Sistemas unitriangulares inferiores Objetivos. Programar en el lenguaje de MATLAB el método de la sustitución hacia adelante para resolver sistemas de ecuaciones lineales con matrices unitriangulares
Más detallesELECTRÓNICA DIGITAL 1. INTRODUCCIÓN. SEÑALES ANALÓGICAS Y DIGITALES.
1 ELECTRÓNICA DIGITAL 1. INTRODUCCIÓN. SEÑALES ANALÓGICAS Y DIGITALES. Podemos dividir la electrónica en dos grandes campos: la electrónica analógica y la electrónica digital, según el tipo de señales
Más detallesUna forma fácil de recordar esta suma (regla de Sarrus): Primero vamos a estudiar algunas propiedades de los determinantes.
Una forma fácil de recordar esta suma (regla de Sarrus): Ejemplos: Tarea: realizar al menos tres ejercicios de cálculo de determinantes de matrices de 2x2 y otros tres de 3x3. PARA DETERMINANTES DE MATRICES
Más detallesTUTORIAL PSEINT. Ing. Ronald Rentería Ayquipa. Fundamentos de Programación
TUTORIAL PSEINT Ing. Ronald Rentería Ayquipa Fundamentos de Programación PSEINT Página Oficial: http://pseint.sourceforge.net/ Es un software que interpreta pseudocódigo. Permite la generación de diagramas
Más detallesINDICE. Prólogo de la Segunda Edición
INDICE Prólogo de la Segunda Edición XIII Capitulo 1. Algoritmos y Programas 1 1.1. Los sistemas de procesamiento de la información 2 1.2. Concepto de algoritmo 4 1.2.1. Características de los algoritmos
Más detallesCONTENIDOS EXÁMEN DE ADMISIÓN MATEMÁTICA SEGUNDO BÁSICO 2017
SEGUNDO BÁSICO 2017 DEPARTAMENTO ÁMBITO NUMÉRICO 0-50 - Escritura al dictado - Antecesor y sucesor - Orden (menor a mayor y viceversa) - Patrones de conteo ascendente (2 en 2, 5 en 5, 10 en 10) - Comparación
Más detallesUNIDAD IV ESTRUCTURA DE DATOS ESTÁTICAS MATRICES
UNIDAD IV ESTRUCTURA DE DATOS ESTÁTICAS MATRICES 1. Arreglos Unidimensionales (Vectores) Con fines académicos, un arreglo unidimensional puede compararse con una columna de una hoja electrónica, por ejemplo,
Más detalles2.- TIPOS DE MATRICES
2º BACHILLERATO MATEMÁTICAS APLICADAS A LAS CIENCIAS SOCIALES II TEMA.- MATRICES PROFESOR: RAFAEL NÚÑEZ NOGALES.- CONCEPTO DE MATRIZ. Definición de matriz Una matriz real A es un conjunto de números reales
Más detallesIntroducción a Cómputo Paralelo con CUDA C/C++
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO Facultad de Ingeniería Introducción a Cómputo Paralelo con CUDA C/C++ Laboratorio de Intel y Cómputo de alto desempeño Elaboran: Revisión: Ing. Laura Sandoval Montaño
Más detallesTema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo
Tema 4 Control de flujo Programación 2015-2016 Programación - Tema 4: Control de Flujo 1 Tema 4. Control de flujo Introducción. Estructuras condicionales. Estructuras de repetición. Programación - Tema
Más detallesINSTITUTO TECNOLÓGICO
INSTITUTO TECNOLÓGICO DE NUEVO LAREDO Con la Ciencia por la Humanidad Introducción a la Ingeniería en Sistemas Computacionales y al Diseño de Algoritmos Curso propedéutico Instructor: Bruno López Takeyas
Más detallesPrimeros pasos con CUDA. Clase 1
Primeros pasos con CUDA Clase 1 Ejemplo: suma de vectores Comencemos con un ejemplo sencillo: suma de vectores. Sean A, B y C vectores de dimensión N, la suma se define como: C = A + B donde C i = A i
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 detallesEs una ecuación polinómica de grado uno con una o varias incógnitas. Por ejemplo, son ecuaciones lineales: 2x 3y 4z
1. Ecuación lineal Es una ecuación polinómica de grado uno con una o varias incógnitas. Por ejemplo, son ecuaciones lineales: x y 4z 8 x 6y z 5 7y z 1. Sin embargo, no son, ecuaciones lineales: x y z 1,
Más detallesProgramación Web Tema 3.2 Java Script Estructura del Lenguaje. Ramón Alcarria ETSI en Topografía, Geodesia y Cartografía - UPM
Programación Web Tema 3.2 Java Script Estructura del Lenguaje Miguel Ángel Manso Emerson Castañeda Ramón Alcarria ETSI en Topografía, Geodesia y Cartografía - UPM Contenido Variables Operadores Estructuras
Más detallesLógica: Algoritmo: Archivo: Base de datos: Bit:
Lógica: Algoritmo: Archivo: Base de datos: Bit: 1 LÓGICA: Es una secuencia de operaciones realizadas por el hardware o por el software. Lógica del hardware, Son los circuitos y Chips que realizan las operaciones
Más detallesNOTACIÓN O GRANDE. El análisis de algoritmos estima el consumo de recursos de un algoritmo.
NOTACIÓN O GRANDE El análisis de algoritmos estima el consumo de recursos de un algoritmo. Esto nos permite comparar los costos relativos de dos o más algoritmos para resolver el mismo problema. El análisis
Más detallesPráctica 1 Parte 2: Masa-Muelle y ODEs (Bloque OPCIONAL) (Asignación 19 de Febrero; Entrega 25 de Febrero a las 23:59)
Práctica 1 Parte 2: Masa-Muelle y ODEs (Bloque OPCIONAL) (Asignación 19 de Febrero; Entrega 25 de Febrero a las 23:59) Cómo entregar la práctica? Enviar una copia de los ficheros ExercisePoint.cpp y ExerciseSpring.cpp
Más detallesUnidad II: Análisis semántico
Unidad II: Análisis semántico Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfológico y sintáctico. El análisis semántico utiliza como entrada el árbol sintáctico
Más detallesINSTITUTO SUPERIOR DE EDUCACION RURAL ISER FUNDAMENTOS DE PROGRAMACION
INTRODUCCIÓN A LA PROGRAMACIÓN POR COMPUTADORA Muchos usuarios creen que la programación es simplemente teclear palabras en una computadora. Eso es una parte, pero de ninguna manera todo. La programación
Más detalles4 MÉTODOS DIRECTOS PARA RESOLVER SISTEMAS DE ECUACIONES LINEALES
57 4 MÉTODOS DIRECTOS PARA RESOLVER SISTEMAS DE ECUACIONES LINEALES En este capítulo se estudia el componente algorítmico y computacional de los métodos directos para resolver sistemas de ecuaciones lineales.
Más detallesIndexación y Asociación
Bases de Datos Indexación y Asociación Contenidos Conceptos básicos Indices Ordenados Árboles B+ ArbolesB Asociación estática Bases de Datos Indexación y Asociación 2 Conceptos básicos Los Indices se utilizan
Más detallesLECTURA No. 2: COMBINATORIA
LECTURA No. 2: COMBINATORIA En todo problema combinatorio hay varios conceptos claves que debemos distinguir: a) Población. Es el conjunto de elementos que se está estudiando. Denotaremos con m al número
Más detallesEs común al crear estructuras de datos y luego trabajar sobre las mismas, tener la necesidad de realizar búsquedas en forma más frecuente que la
Es común al crear estructuras de datos y luego trabajar sobre las mismas, tener la necesidad de realizar búsquedas en forma más frecuente que la necesidad de realizar inserciones. Por ejemplo si tenemos
Más detalles3. ÁLGEBRA LINEAL // 3.2. GEOMETRÍA
3. ÁLGEBRA LINEAL // 3.2. GEOMETRÍA ANALÍTICA EN EL PLANO Y EN EL ESPACIO. COMPLEMENTOS PARA LA FORMACIÓN DISCIPLINAR EN MATEMÁTICAS 3.2.1. Rectas en el plano y en el espacio La recta que pasa por el punto
Más detallesEL4005 Principios de Comunicaciones Clase No.30: Códigos Lineales de Bloque
EL4005 Principios de Comunicaciones Clase No.30: Códigos Lineales de Bloque Patricio Parada Departamento de Ingeniería Eléctrica Universidad de Chile 26 de Noviembre de 2010 1 of 33 Contenidos de la Clase
Más detallesIntroducción a la Algorítmica Transparencias correspondientes a las clases impartidas por los profesores: Lourdes Miró Amarante Ignacio García Vargas
Dpto. de ATC - Página 1 de 16 CONCEPTO DE ALGORITMO (1) Fundamentos de Informática E.U.P. Universidad de Sevilla Introducción a la Algorítmica Transparencias correspondientes a las clases impartidas por
Más detallesCURSO BÁSICO DE MATEMÁTICAS PARA ESTUDIANTES DE ECONÓMICAS Y EMPRESARIALES
CONCEPTO MATRICES Se llama matriz de orden (dimensión) m n a un conjunto de m n elementos dispuestos en m filas y n columnas Se representa por A = a 11 a 12 a 1n a 21 a 22 a 2n a m1 a m2 a mn j=1,2,,n
Más detallesLección 8. Matrices y Sistemas de Ecuaciones Lineales
Lección 8 Matrices y Sistemas de Ecuaciones Lineales MIGUEL ANGEL UH ZAPATA 1 Análisis Numérico I Facultad de Matemáticas, UADY Septiembre 2014 1 Centro de Investigación en Matemáticas, Unidad Mérida En
Más detallesALGORITMOS II PSEUDOCODIGOS INTRODUCCION AL PSEINT CORPODICES VICTOR ANDRES OCHOA CORREA
ALGORITMOS II PSEUDOCODIGOS INTRODUCCION AL PSEINT CORPODICES VICTOR ANDRES OCHOA CORREA CONTENIDOS Definición de un algoritmo Tipos de datos Representaciones de un algoritmo Lenguaje natural Pseudocódigo
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 detallesArreglos. Juan Pablo Cobá Juárez Pegueros Algoritmos y Programación Básica Bioingeniería Médica Facultad de Medicina 2015
Arreglos Juan Pablo Cobá Juárez Pegueros Algoritmos y Programación Básica Bioingeniería Médica Facultad de Medicina 2015 Contenido Objetivo Qué son los Arreglos? Cómo son los Arreglos? Características
Más detalles