Matrices dispersas. Miguel Vargas-Félix. CIMAT, August 13, /34
|
|
- Julián Rodríguez Iglesias
- hace 6 años
- Vistas:
Transcripción
1 Matrices dispersas Miguel Vargas-Félix CIMAT, August 13, /34
2 Matrices dispersas Son matrices en las cuales la gran mayoría de las entradas son cero. En inglés se les conoce como sparse matrices, en algunos países de habla hispana también se les conoce como matrices ralas. Sea A una matriz dispersa de tamaño n n. Definamos la notación η(a), que indica el número de entradas no cero de A. Por ejemplo 1 a1 2 a a 21 a 22 0 a 24 a a 31 0 a 33 a A=(a1 0 a 42 a 43 a 44 0 a 46 0 ), 0 a a 55 0 a a 64 0 a 66 a a 75 a 76 0 el número de entradas de A es 7 7=49, el número de entradas distintas de cero es η(a)= /34
3 Con las matrices dispersas se pueden trabajar fácilmente matrices de millones de renglones por millones de columnas. A veces se requiere solo visualizar las entradas distintas de cero, para ello se usan imágenes como las siguientes: Bandada No estructurada Skyline Los puntos negros representan las entradas de la matriz que son distintas de cero. 3/34
4 Matrices dispersas como grafos Un grafo está formado por un conjuto de vértices y un conjunto de aristas G=(V,E). Los vértices están numerados, V es el conjunto de todos los vértices. Cada arista conecta dos vértices. El conjunto de aristas E está formado por pares no ordenados de vértices. Los grafos en los cuales no importa el orden se llaman grafos no dirigidos. Por ejemplo: En este caso, el conjunto de vértices es V={1, 2,3,4,5,6,7}, el conjunto de aristas es E={(1,2), (1,3),(1, 4), (1,6), (2, 4), (3,4), (3,5),(4,7), (5,7)}. 4/34
5 Una matriz dispersa con estructura simétrica se puede representar como un grafo no dirigido. En el grafo no están representados los valores de la matriz, sólo la estructura de las entradas distintas de cero. Sea A una matriz dispersa de tamaño n n. Cada vértice del grafo de A representa un renglón (columna) de la matriz, V={v 1, v 2,, v n }. El número de aristas es igual al número de entradas no cero de la matriz η(a), así E={e 1, e 2,, e η(a ) }. Cada entrada no cero de la matriz a i j 0 es representada con una arista e k =(v i,v j ), con k=1,2,, η(a). Ejemplo: ( ) /34
6 Matrices dispersas de mallas de elemento finito En el método de elemento finito, se trabaja de forma contraria, se parte de la malla (grafo) y con la matriz de conectividades se genera la matriz dispersa. En las mallas de elemento finito tenemos un dominio discretizado en elementos, triángulos o cuadriláteros en 2D, tetraedros o hexaedros en 3D (a1 1 a1 2 a a 21 a 2 2 a 23 a 24 a a 31 a 3 2 a 33 a a 4 2 a 43 a 44 a 45 a a a 54 a 55 a 56 a a 64 a 65 a 66 a a 75 a 76 a 77) 6/34
7 Dado que un nodo de la malla se conecta sólo con pocos nodos, tendremos una matriz muy dispersa. En general, el tamaño del número de entradas distintas de cero será O (n). i j k ( a i i a i j ) 0 a j i a j j a k k En el ejemplo, a i j 0 dado que están conectados con la arista (i, j ). En cambio a i k =0 puesto que no existe una arista (i,k ). De igual forma a k j =0 dado que no existe (k, j ). 7/34
8 Las mallas pueden llegar a ser muy complejas. El siguiente es el ejemplo de una malla de elemento finito en 3D formada por tetraedros. 8/34
9 Poder representar la estructura de matrices dispersas como grafos nos permitirá aplicar varios conceptos de teoría de grafos que resultarán en transformaciones a la matriz. Por ejemplo: Reordenar la matriz para reducir el número de cálculos. Partir la matriz para enviarla a distintas computadoras y paralelizar los cálculos. 9/34
10 Almacenamiento de matrices dispersas Las matrices llenas de tamaño n n tienen un costo de almacenamiento de O (n 2 ), las matrices dispersas suelen tener un costo de almacenamiento de O (n). Como ejemplo, la siguiente matriz A R decir sólo el 0.58% de las entradas son no cero. contine 309,136 entradas, con η(a)=1810, es 10/34
11 Para ahorrar tanto memoria como tiempo de procesamiento sólo almacenaremos los elementos de la matriz A que sean distintos de cero. Hay varias estratégias de almacenamiento en memoria de matrices dispersas, dependiendo de la forma en que se accesarán las entradas. Por coordenadas Para una matriz dispersa A de tamaño m n, las entradas diferentes de cero serán enumeradas con k=1,2,, η(a). Las entradas se alamacenan por medio de tres vectores V, I y J. Estos contendrán el valor V k, el número de renglón I k y el número de columna J k de la k-ésima entrada no cero. 8 ( ) V I J Entre más grande sea el tamaño de la matriz más notorio será el ahorro en memoria. 11/34
12 Además de utilizar menos memoria, la otra gran diferencia con respecto a las matrices completas es que en las matrices dispersas las entradas de la matriz deben ser buscadas. 8 ( ) Por ejemplo cuál es el valor de la entrada a 46? V I J Cuál es el valor de la entrada a 55? Cuál es la primer entrada distinta de cero de la columna 6? Cuántas entradas distintas de cero tiene el renglón 3? El costo de búsqueda es muy elevado, ya que en el peor caso hay que buscar en todos las entradas. 12/34
13 Este método no es adecuado si se necesitan accessar todos los elementos de un renglón o columna de forma secuencial. Se pueden ordenar los vectores (por renglón o por columna). Al ordenar se puede utilizar una búsqueda binaria para encontrar una entrada a i j, ésto reduce el costo de la búsqueda a log 2 η(a). 8 ( ) V I J Acceso a: Entrada a i j (sin ordenar) Entrada a i j (ordenando) Costo máximo η(a) log 2 η(a) Este tipo de almacenamiento es adecuado cuando se lee de forma incremental las entradas la matriz. Este formato es muy utilizado para almacenar matrices dispersas en archivos. 13/34
14 Compressed Row Storage El método Compressed Row Storage (compresión por renglones) [Saad03 p362], se guardan las entradas no cero de cada renglón de A por separado V 3 ={2,1,7} J 3 ={1,3,5} Con este método, por cada renglón de la matriz se guardan dos arreglos para las entradas distintas de cero de cada renglón. Un vector J i conteniendo los índices y otro V i los valores, con i=1,, m. Este esquema es adecuado cuando todos (o casi todos) los renglones tienen al menos una entrada distinta de cero. Este tipo de esquema se puede crear utilizando un vector de vectores. 14/34
15 Como cambia el costo de búsqueda en relación al almacenamiento por coordenadas? V 3 ={2,1,7 } J 3 ={1,3,5} Cuál es el valor de la entrada a 46? Cuál es el valor de la entrada a 55? Cuál es la primer entrada distinta de cero de la columna 6? Cuántas entradas distintas de cero tiene el renglón 3? 15/34
16 Sea η(j i ) el número de entradas no cero del renglón i de A. Los cóstos de búsqueda de las entradas ahora son: Acceso a: Costo máximo Entrada a i j η(j i ) Primer valor no cero de un renglón 1 j-ésimo valor no cero de un renglón 1 Primer valor no cero de una columna i-ésimo valor no cero de una columna m i=1 m i=1 η(j i )=η(a) η(j i )=η(a) 16/34
17 Podemos reducir el costo de acceso ordenando por índice las entradas de cada renglón. Así, al momento de accesar podremos utilizar un patrón búsqueda binaria. Acceso a: Costo máximo Entrada a i j log 2 (η(j i )) Primer valor no cero de un renglón 1 j-ésimo valor no cero de un renglón 1 Primer valor no cero de una columna i-ésimo valor no cero de una columna m i=1 m i=1 log 2 (η(j i )) log 2 (η(j i )) 17/34
18 Multiplicación matriz vector Realizar la multiplicación matriz-vector utilizando compresión por renglones resulta muy fácil. En la multiplicación matriz-vector c=a b el órden de búsqueda es O (1), esto es porque no se hace una búsqueda de las entradas del rengón, se toman las entradas una tras otra. Sea J i el conjunto de índices de las entradas no cero del renglón i de A. Sea J i el número de entradas no cero del renglón i de A. Nótese que J i = V i )(5 c 6)=(8 9) (c1 c 2 c 3 c 4 c 5 c 1 c 2 c 3 c 4 c 5 c 6 = n c i = i=1 a i j b j J i c i = k=1 V i k b Ji k La ventaja de utilizar compresión por renglones es que los datos de cada renglón de la matriz de rigidez son accesados en secuencia uno tras otro, esto producirá una ventaja de acceso al entrar el bloque de memoria de cada renglón en el cache del CPU. 18/34
19 Compressed Column Storage Análogamente a la compresión por renglones, existe el método Compressed Column Storage en el cual se almacena por columna en vez de por renglón V 3 ={1,1, 3} I 3 ={2,3, 4 } Por cada columna de la matriz se guardan dos arreglos para las entradas distintas de cero. Uno I j conteniendo los índices y otro V j los valores, con j=1,,n. Este esquema es adecuado cuando se quiere buscar entradas por columna y no por renglón. 19/34
20 Sea η(i j ) es el número de entradas no cero de la columna j de A. Los cóstos de búsqueda de las entradas ahora son: Acceso a: Costo máximo Entrada a i j η(i j ) Primer valor no cero de un renglón j-ésimo valor no cero de un renglón n η(i j )=η(a) j=1 n η(i j )=η(a) j=1 Primer valor no cero de una columna 1 i-ésimo valor no cero de una columna /34
21 Este esquema es útil cuando se van a buscar entradas por columna y no por renglón. Por ejemplo, al multiplicar dos matrices dispersas. Sean A R m p y B R p n, la multiplicación C=A B, p c i j = k=0 a i k b k j es conveniente almacenar A utilizando compresión por renglones y B con compresión por columnas. El acceso de las entradas de ambas matrices dispersas será conveniente para el cache. Por ejemplo: (c11 c12 c13 c c 21 c 2 2 c 23 c c 31 c 32 c 33 c c 41 c 4 2 c 43 c c 51 c 52 c 53 c )(0 54)=(8 0) c 11 c 12 c 13 c 14 c 21 c 22 c 23 c 24 = c 41 c 31 c 32 c 33 c 34 c 42 c 43 c 44 c 51 c 52 c 53 c /
22 Matrices dispersas en MatLab/Octave Tanto MatLab como Octave tienen soporte para manejar matrices dispersas. El formato para definir matrices dispersas es utilizando almacenamiento por coordenadas. Un ejemplo sencillo: I = [1, 1, 2, 3, 3, 3, 5, 5]; J = [1, 5, 3, 1, 4, 5, 1, 4]; V = [9, 2, 5, 6, 2, 6, 1, 8]; A = sparse(i, J, V); A spy(a); nnz(a) full(a) sparse(i, J, V) crea una matriz dispersa, el I contiene los índices de renglón, J los índices de columna y V los valores. spy(a) despliega una figura mostrando las entradas no cero de la matriz A. nnz(a) indica el número de entradas distintas de cero en la matriz A. full(a) convierte la matriz dispersa en una matriz llena. 22/34
23 Almacenamiento con formato MAT-File version 4 Vamos a utilizar el formato MAT-File versión 4 de MATLAB para alamacenar las matrices dispersas. Los archivos con formato MAT-File versión 4 sirven para almacenar escalares, vectores, matrices completas y matrices dispersas en formato binario. Por ejemplo: I = [1, 1, 2, 3, 3, 3, 5, 5]; J = [1, 5, 3, 1, 4, 5, 1, 4]; V = [9, 2, 5, 6, 2, 6, 1, 8]; A = sparse(i, J, V); x = [0, 1.1, 4, 20, 11, 0, 0,2]; Guardar en formato MAT-File 4: save('-v4', 'test_file.mat', 'A', 'x'); Leer archivo: load('test_file.mat'); Este formato funciona tanto con MATLAB como con Octave. 23/34
24 En el formato MAT-File versión 4 todos los elementos son almacenados como matrices. Por ejemplo: Un escalar es una matriz de tamaño 1x1. Un vector columna es una matriz con N renglones y una columna. Cada archivo MAT-File versión 4 puede contener varias matrices. Se guardan una detrás de otra. Hay 3 formatos de matrices: completas, dispersas y texto (estas últimas no las vamos a utilizar). Las matrices se guardan en formato binario. La forma más simple de abrir un archivo MAT-File versión 4 (con formato binario) es con: "rb" significa read binary. FILE* file; file = fopen("file_name.mat", "rb"); 24/34
25 El encabezado Cada matriz comienza con un header de 5 enteros de 32bits que contiene información sobre los atributos de la matriz. Podemos leer estos enteros así: int header[5]; fread(header, sizeof(int), 5, file); header[0] (int), indica el formato de la matriz y el tipo de datos para la matriz: Podemos leer estos parámetros así: 0 Matrix completa 1 Texto 2 Matriz rala +0 double +10 float +20 int +30 short +40 unsigned short +50 unsigned char int format = header[0] % 10; int type = header[0] - format; El significado de los siguientes cuatro enteros depende del tipo de matriz. 25/34
26 Matrices completas (int) header[1], número de renglones (int) header[2], número de columnas (int) header[3], tipo de valores 0 Reales 1 Complejos (int) header[4], longitud del nombre de la matriz + 1. Normalmente la longitud máxima es (char[]), arreglo de caracteres, nombre de la matriz + \0 (double[]) Arreglo de valores, corresponde a las entradas reales de la matriz. El número de valores es renglones*columnas. Los valores están almacenados por columnas. El valor 1 corresponde a la entrada (1,1), el valor 2 a la entrada (2,1) y así sucesivamente. (double[]) Sólo si es el tipo de valores (header[3]) indica complejos. Valores imaginarios de la matriz. El número de valores es renglones*columnas. Los valores están almacenados por columnas, de igual forma que los reales. 26/34
27 Ejemplo de matriz completa A=[0, 1.1, 2; 3, 4, 5; 6, 7, 8] A = save('-v4', 'full.mat', 'A'); El archivo contendrá: (int) header[0] Formato y el tipo de datos para la matriz (0 = full matrix, +0 = double) (int) header[1] Número de renglones (3) (int) header[2] Número de columnas (3) (int) header[3] Tipo de valores (0 = real) (int) header[4] Longitud del nombre de la matriz + 1 (2) (char[2]) Arreglo de caracteres, nombre de la matriz + \0 ( A\0 ) (double[9]) Corresponde a las entradas reales de la matriz (doubles, 8 bytes cada valor) Los valores int32 y double están gurdados con formato Little-Endian. 27/34
28 Ejemplo de cómo leer una matriz llena: FILE* file = fopen(argv[1], "rb"); int header[5]; fread(header, sizeof(int), 5, file); int format = header[0] % 10; int type = header[0] - format; if (format == 0) // Full matrix { int rows = header[1]; int cols = header[2]; int field = header[3]; int name_size = header[4]; char name[128]; fread(name, name_size, 1, file); double* real = new double[rows*cols]; fread(real, sizeof(double), rows*cols, file); double* imag = NULL; if (field == 1) // Complex { imag = new double[rows*cols]; fread(imag, sizeof(double), rows*cols, file); } //... delete [] imag; delete [] real; } fclose(file); 28/34
29 Matrices dispersas (int) header[1], número de entradas no cero + 1, η(a)+1 (int) header[2], tipo de valores (int) header[3], valor fijo en 0 3 Reales 4 Complejos (int) header[4], longitud del nombre de la matriz + 1 (char[]) Arreglo de caracteres, nombre de la matriz + \0 (double[]) Arreglo de indices de renglón. El número de índices es η(a) (double) Número de renglones (double[]) Arreglo de indices de columna. El número de índices es η(a) (double) Número de columnas (double[]) Valores. El número de valores es η(a) (double) Valor fijo en 0 Nota importante: El número de renglones y de columnas están guardadas con double, no con int. 29/34
30 spa = sparse([1, 2, 1, 3], [1, 1, 2, 2], [-1, 2, 1.1, 3]) spa = Compressed Column Sparse (rows = 3, cols = 2, nnz = 4 [67%]) (1, 1) -> -1 (2, 1) -> 2 (1, 2) -> (3, 2) -> 3 save('-v4', 'sparse.mat', 'spa'); (int) header[0] Formato y tipo de datos para la matriz (2 = sparse matrix, +0 = double) (int) header[1] Número de entradas no cero + 1 (5 = 4 + 1) (int) header[2] Tipo de valores (3 = real) (int) header[3] Valor fijo en 0 (0) (int) header[4] Longitud del nombre de la matriz + 1 (4 = 3 + 1) (char[4]) Arreglo de caracteres, nombre de la matriz + \0 ( spa\0 ) (double[4]) Arreglo de indices de renglón (4 doubles) (double) Número de renglones (3) (double[4]) Arreglo de indices de columna (4 doubles) (double) Número de columnas (double[4]) Entradas de la matriz (4 doubles) (double) Valor fijo en /34
31 Ejemplo de cómo escribir una matriz dispersa: const char* name = "spa"; int name_size = strlen(name) + 1; double rows = 3; double cols = 2; double I[4] = {1, 2, 1, 3}; double J[4] = {1, 1, 2, 2}; double V[4] = {-1, 2, 1.1, 3}; FILE* file = fopen("sparse.mat", "wb"); int header[5]; header[0] = 2 + 0; // 2 = sparse matrix, +0 = double header[1] = 4 + 1; // Number of non-zero + 1 header[2] = 3; // 3 = real header[3] = 0; // fixed value 0 header[4] = name_size; // name length + 1 fwrite(header, sizeof(int), 5, file); fwrite(name, sizeof(char), name_size, file); fwrite(i, sizeof(double), 4, file); fwrite(&rows, sizeof(double), 1, file); fwrite(j, sizeof(double), 4, file); fwrite(&cols, sizeof(double), 1, file); fwrite(v, sizeof(double), 4, file); double zero = 0; fwrite(&zero, sizeof(double), 1, file); fclose(file); 31/34
32 Nota importante: En el formato de matrices dispersas, las entradas deben estar ordenadas, primero por el índice de columna y segundo por el índice de renglón. Por ejemplo, la siguiente matriz rala: 8 ( ) Para poder ser leida correctamente por MatLab hay que reordenar las entradas en base a los índices de columna y renglón antes de guardarla. De la siguiente forma: 8 ( ) V I J V I J Octave es menos riguroso con el orden de los índices, pero por compatibilidad es mejor ordenarlos. 32/34
33 Preguntas? 33/34
34 Referencias [Piss84] S. Pissanetzky. Sparse Matrix Technology. Academic Press, [Saad03] Y. Saad. Iterative Methods for Sparse Linear Systems. SIAM, /34
Gradiente conjugado. MSc. Miguel Vargas-Félix miguelvargas@cimat.mx http://www.cimat.mx/~miguelvargas 07/09/11 1/23
Gradiente conjugado MSc. Miguel Vargas-Félix miguelvargas@cimat.mx http://www.cimat.mx/~miguelvargas 07/09/11 1/23 Contenido Contenido Estructura de una matriz rala a partir de conectividades Compressed
Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.
Tipos de Datos Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Entrada de datos Procesamientos de datos Salida de resultados Los
Grafos. Suponiendo que e = [u, v]. Entonces los nodos u y v se llaman extremos de e y u y v se dice que son nodos adyacentes o vecinos.
Grafos Los grafos son estructuras que constan de vértices o nodos y de aristas o arcos que conectan los vértices entre sí. Un grafo G consiste en dos cosas: 1. Un conjunto V de elementos llamados nodos
Introducción al tipo Vector Cómo guardar una colección de datos conceptualmente relacionados? - almacenar los 100 primeros números primos, - al
Tema 6. Vectores 1. Introducción y Definiciones 2. Operaciones elementales con vectores 3. Definición y manejo de vectores (arrays arrays) en C 4. Operación de Recorrido secuencial de un vector 5. Operación
Elementos de un programa en C
Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución
Definición de Memoria
Arquitectura de Ordenadores Representación de Datos en Memoria Abelardo Pardo abel@it.uc3m.es Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Definición de Memoria DRM-1 La memoria
Por ejemplo, para declarar un arreglo de enteros llamado a con diez elementos se hace de la siguiente forma:
Arreglos unidimensionales y multidimensionales Los arreglos son una colección de variables del mismo tipo que se referencian utilizando un nombre común. Un arreglo consta de posiciones de memoria contigua.
Grafos. Amalia Duch Brown Octubre de 2007
Grafos Amalia Duch Brown Octubre de 2007 Índice 1. Definiciones Básicas Intuitivamente un grafo es un conjunto de vértices unidos por un conjunto de líneas o flechas dependiendo de si el grafo es dirigido
Prof. Dr. Paul Bustamante
Prácticas de C++ Practica Nº 2 Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante Practica Nº 2 Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1. Introducción... 1 1.1 Ejercicio 1: Reserva
Algoritmos y Programación I
Algoritmos y Programación I ARREGLOS Y ESTRUCTURAS EN C Arreglos Un arreglo o vector es un conjunto de datos del mismo tipo, almacenados de forma contigua (es decir uno al lado del otro) en memoria principal.
Relaciones. Estructuras Discretas. Relaciones. Relaciones en un Conjunto. Propiedades de Relaciones en A Reflexividad
Estructuras Discretas Relaciones Definición: relación Relaciones Claudio Lobos, Jocelyn Simmonds clobos,jsimmond@inf.utfsm.cl Universidad Técnica Federico Santa María Estructuras Discretas INF 152 Sean
Fundamentos de Matemática Aplicada. (Prácticas)
Fundamentos de Matemática Aplicada (Prácticas) Damián Ginestar Peiró UNIVERSIDAD POLITÉCNICA DE VALENCIA 1 Índice general 1. Matrices dispersas 3 1.0.1. Esquemas de almacenamiento.............. 3 1.0.2.
Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen
Fundamentos de Informática. Dpto. de ATC - Página 1 de 8 conceptos Manejo de ficheros en C Contienen los datos que se almacenan en dispositivos de almacenamiento masivo: disquetes, discos duros, DROM,
TEMA 2. CODIFICACIÓN DE LA INFORMACIÓN
TEMA 2. CODIFICACIÓN DE LA INFORMACIÓN 1. INTRODUCCIÓN. SISTEMAS DE NUMERACIÓN EN. Sistema binario. Sistema octal. Sistema hexadecimal. 2. REPRESENTACIÓN DE TEXTOS.. Números naturales. Números enteros.
Repaso sobre lectura de datos desde la línea de comandos, manejo de memoria dinámica e introducción a la librería GSL
Clase No. 5: Repaso sobre lectura de datos desde la línea de comandos, manejo de memoria dinámica e introducción a la librería GSL MAT 251 Dr. Alonso Ramírez Manzanares CIMAT, A.C. e-mail: alram@ cimat.mx
Datos y tipos de datos
Datos y tipos de datos Dato Representación formal de hechos, conceptos o instrucciones adecuada para su comunicación, interpretación y procesamiento por seres humanos o medios automáticos. Tipo de dato
Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.
Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1
Apuntadores en C y C++
Apuntadores en C y C++ Universidad de Carabobo Facultad Experimental de Ciencias y Tecnología Prof. Marcos A. Gil T. 8 de diciembre de 2004 1. Introducción Los apuntadores en C y C++ son una herramienta
Constantes. Las constantes no cambian durante la ejecucion de un programa en C++, en C++ existen 4 tipos de constantes:
Constantes Las constantes se pueden declarar con la palabra reservada const y se le asigna un valor en el momento de la declaracion, este valor no se puede modificar durante el programa y cualquier intento
Representación de la información
Laboratorio de Introducción a las Ciencias de la Computación Página 1 UNIERSIDAD CATÓLICA DE SANTA MARÍA PROGRAMA PROESIONAL DE INGENIERÍA DE SISTEMAS SESIÓN 2: Representación de la información OBJETIOS
El lenguaje C. 1. Identificadores, constantes y variables
Principios de Programación El lenguaje C 1. Identificadores, constantes y variables 1.1. Conceptos de memoria Los nombres de variable como x, y, suma corresponden a localizaciones o posiciones en la memoria
Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.
LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan
Algoritmos. 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
Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)
Objetivos de la sesión Entender el tipo de programas que se pueden realizar con aplicaciones de consola. Conocer el concepto de variable, la forma en que se declaran y su utilización. Conocer la forma
Para convertir un decimal a un binario se necesita la siguiente tabla.
Conversiones Conversión de Decimal a Binario Para convertir un decimal a un binario se necesita la siguiente tabla. Para convertir el 33: Primero: Se busca en la tabla un número igual o menor a 33. Segundo:
Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos
Algoritmos y Estructuras de Datos I 1 cuatrimestre de 009 Departamento de Computación - FCEyN - UBA Programación funcional - clase Tipos algebraicos Tipos algebraicos y abstractos ya vimos los tipos básicos
Tipos de datos para Campos
Tipos de datos para Campos Tipo de datos Almacena Tamaño Texto Memo Número Fecha/Hora Moneda Autonumérico Sí/No Objeto OLE Datos adjuntos Hipervínculo Asistente para búsquedas Caracteres alfanuméricos
Conceptos básicos de bases de datos
Conceptos básicos de bases de datos 1.1 Definición de base de datos Una base de datos es una colección de archivos relacionados que permite el manejo de la información de alguna compañía. Cada uno de dichos
Programació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
Es un conjunto de objetos llamados vértices o nodos unidos por enlaces llamados aristas o arcos, que permiten representar relaciones binarias entre
Es un conjunto de objetos llamados vértices o nodos unidos por enlaces llamados aristas o arcos, que permiten representar relaciones binarias entre elementos de un conjunto. Típicamente, un grafo se representa
El TAD Grafo. El TAD Grafo
Objetivos! Estudiar la especificación del TAD Grafo! Presentar diferentes alternativas de implementación! Conocer los algoritmos más importantes de manipulación de grafos Contenidos.1 Conceptos. Especificación
Fundamentos de la programación
Fundamentos de la programación 2A Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Facultad de Informática Universidad Complutense int 214 float 216
Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros
Práctica 3. Paso de parámetros entre subrutinas 1. Objetivo de la práctica El objetivo de esta práctica es que el estudiante se familiarice con la programación en ensamblador y el convenio de paso de parámetros
Complejidad computacional (Análisis de Algoritmos)
Definición. Complejidad computacional (Análisis de Algoritmos) Es la rama de las ciencias de la computación que estudia, de manera teórica, la optimización de los recursos requeridos durante la ejecución
TUTORIAL 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
Programación. Test Autoevaluación Tema 3
Programación Test Autoevaluación Tema 3 Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordoñez Morales Juan Gómez Romero José A. Iglesias Martínez José Luis Mira Peidro SOLUCIONES 1.
MANUAL BÁSICO DE MYSQL
MANUAL BÁSICO DE MYSQL ESCUELA COLOMBIANA DE INGENIERÍA JULIO GARAVITO LABORATORIO DE INFORMÁTICA BOGOTÁ D. C. 2007-2 TABLA DE CONTENIDO MANUAL BÁSICO DE MYSQL... 1 INTRODUCCIÓN... 3 1. CONECTARSE CON
El nivel ISA (II)! Conjunto de Instrucciones
El nivel ISA (II) Conjunto de Instrucciones EC-2721 Arquitectura del Computador I Que es un Conjunto de Instrucciones? Colección completa de instrucciones comprendida por un procesador Lenguaje de máquina
Apuntadores (Punteros)
Apuntadores (Punteros) x9ff10 X int 209 SESION 7 *ptr Definición Llamados también punteros. Un Apuntador es una variable que contiene una dirección de memoria, la cual corresponderá a un dato o a una variable
Árboles. Un grafo no dirigido es un árbol si y sólo si existe una ruta unica simple entre cualquiera dos de sus vértices.
ÁRBOLES Árboles Un grafo conectado que no contiene circuitos simples. Utilizados desde 1857, por el matemático Ingles Arthur Cayley para contar ciertos tipos de componentes químicos. Un árbol es un grafo
Formulació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,
Clase 8 Matrices Álgebra Lineal
Clase 8 Matrices Álgebra Lineal Código Escuela de Matemáticas - Facultad de Ciencias Universidad Nacional de Colombia Matrices Definición Una matriz es un arreglo rectangular de números denominados entradas
Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Lógica y Estructuras Discretas Tutor: Antonio Rivero Cuesta Tema 5 Teoría de Grafos Conceptos Básicos Un grafo consta de: Grafo Un conjunto de nodos, Un conjunto de aristas
Herramientas computacionales para la matemática MATLAB: Cómo guardar el trabajo?
Herramientas computacionales para la matemática MATLAB: Cómo guardar el trabajo? Verónica Borja Macías Marzo 2013 1 Cómo guardar el trabajo? Trabajar en la ventana de comandos es similar a realizar cálculos
Notación Asintótica 2
Notación Asintótica 2 mat-151 1 Éxamen Rápido (6 minutos) Cada operación fundamental usa c milisegundos, cuánto tiempo toma contar hasta 1,000,000? Cuál es el valor de N? Cuál es el órden de complejidad
VARIABLES Y CONSTANTES
1 VARIABLES Y CONSTANTES 2 Qué es una Variable? En C++, una variable es un lugar para almacenar información. Una variable es una localidad de memoria en la cual se almacena una valor que puede ser recuperados
Computación Gráfica = CG = Computer Graphics
Computación Gráfica = CG = Computer Graphics Porqué computación gráfica? Para qué sirve? Cómo se utiliza? Cuáles son las principales áreas? Necesidad contemporanea Visualizar/Analizar lo imposible Una
Grafos y Redes. 3. Resolución: Dibujar el camino sin levantar el lápiz y pasando sólo una vez por cada arco o arista.
Grafos y Redes. Nodos: vértices, 2, 3 2. Arcos: aristas, conexión entre nodos. 2, 54, etc. 3. Resolución: Dibujar el camino sin levantar el lápiz y pasando sólo una vez por cada arco o arista. 4. Grado
Tema 3 Constantes, Variables y Tipos
Tema 3 Constantes, Variables y Tipos Contenidos 1. Definiciones. 1.1 Variables y Constantes. 1.2 Identificadores. 2. Declaración de Variables en un Programa en C. 3. Tipos de Datos. 3.1 Clasificación.
GRAFOS. Prof. Ing. M.Sc. Fulbia Torres
ESTRUCTURAS DE DATOS 2006 Prof. DEFINICIÓN Un grafo consta de un conjunto de nodos(o vértices) y un conjunto de arcos (o aristas). Cada arco de un grafo se especifica mediante un par de nodos. Denotemos
https://dac.escet.urjc.es/docencia/etc-sistemas/teoria-cuat1/tema2.pdf
1.3 Sistemas numéricos 1.3.1. Introducción Un sistema de representación numérica es un lenguaje que consiste en: Un conjunto ordenado de símbolos (dígitos o cifras) y otro de reglas bien definidas para
Tema 14: Arreglos estáticos en C
Tema 14: Arreglos estáticos en C Solicitado: Ejercicios 05: Ejercicios con arreglos estáticos unidimensionales M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom
En este manual se propone utilizar el SkyDrive del correo electrónico del CONALEP, sin embargo también es
En este manual se propone utilizar el SkyDrive del correo electrónico del CONALEP, sin embargo también es funcional para el correo electrónico de HOTMAIL y OUTLOOK. En el caso de que el alumno tenga algún
MÉTODOS DE GENERACIÓN DE MALLA
EJEMPLO DE GENERACIÓN DE MALLA MÉTODOS DE GENERACIÓN DE MALLA El objetivo de este ejemplo es mallar una pieza utilizando las distintas opciones que GiD ofrece para el control del tipo de elemento en mallas
Estructura de Datos. Arreglos. Experiencia Educativa de Algorítmica ESTRUCTURA DE DATOS - ARREGLOS 1
Estructura de Datos Arreglos Experiencia Educativa de Algorítmica ESTRUCTURA DE DATOS - ARREGLOS 1 Introducción Una estructura de datos es una colección de datos que pueden ser caracterizados por su organización
MODELADO DE OBJETOS 3D. Computación Gráfica
MODELADO DE OBJETOS 3D Computación Gráfica Referencia K.Shoemake. Animating Rotation with Quaternion Curves. SIGGRAPH 1985. http://run.usc.edu/cs520-s12/assign2/p245- shoemake.pdf Tipos de modelado de
Datos y tipos de datos
Datos y tipos de datos Dato Representación formal de hechos, conceptos o instrucciones adecuada para su comunicación, interpretación y procesamiento por seres humanos o medios automáticos. Tipo de dato
<tipo> Tipo de dato de los elementos del vector
Vectores y matrices Declaración Vector (array unidimiensional): []; Tipo de dato de los elementos del vector Identificador de la variable.
Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones
Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice
Francis Guthrie Planteo el problema de los cuatro colores, después de colorear el mapa de Inglaterra 9/15/2015 3
INTRODUCCION GRAFOS La Teoria de Grafos nace del análisis sobre una inquietud presentada en la isla Kueiphof en Koenigsberg (Pomerania) ya que el río que la rodea se divide en dos brazos. Sobre los brazos
Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática
Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso 2013-2014. 1º Grado en Informática Práctica 1: Punteros Objetivos Se hará hincapié en la aritmética de punteros
2007 Carmen Moreno Valencia
Tema VIII. Grafos Grafos 1 2007 Carmen Moreno Valencia 1. Grafos, digrafos y multigrafos 2. Grafos eulerianos 3. Matrices de adyacencia e incidencia 4. Exploración de grafos pesados 1. Grafos, digrafos
TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS
TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS Una vez que ya sabes crear tus propios programas, vamos a analizar los fundamentos del lenguaje de programación C. Este capítulo incluye además los siguientes temas:
Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.
Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1
UNIDAD 8: SUCESIONES Y SERIES
UNIDAD 8: SUCESIONES Y SERIES Llegamos a la última unidad de la asignatura correspondiente a Sucesiones y Series, recuerde mantener la motivación hasta el final, el tema que vamos a tratar aquí es de especial
Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES.
APUNTADORES. La memoria de una máquina esta ordenada en forma de celdas numeradas consecutivamente y que se pueden manipular individualmente o en grupos contiguos. La siguiente figura muestra una representación
Lección 2 Introducción al lenguaje C
Lección Introducción al lenguaje C Decimal Binario Hexadecimal A B C D E F Octal Equivalencia entre decimal, binario, hexadecimal y octal. Código ASCII (American Standard Code for Information Interchange)
Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.
Java Avanzado. Guía 1 Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 2 Introducción Este manual ha sido elaborado para orientar al estudiante de Java Avanzado en el desarrollo
Mé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
1. (F, +) es un grupo abeliano, denominado el grupo aditivo del campo.
Capítulo 5 Campos finitos 5.1. Introducción Presentaremos algunos conceptos básicos de la teoría de los campos finitos. Para mayor información, consultar el texto de McEliece [61] o el de Lidl y Niederreiter
GUIA BÁSICA DEL PROCEDIMIENTO MATRIX END MATRIX
GUIA BÁSICA DEL PROCEDIMIENTO MATRIX END MATRIX El SPSS permite realizar cálculos matriciales mediante el lenguaje de comandos que se resumen en los siguientes pasos: 1) Abrir una ventana de sintaxis Menú:
COMBINAR CORRESPONDENCIA
COMBINAR CORRESPONDENCIA Microsoft Office Word nos provee una herramienta muy útil que nos permite incluir en un documento, datos que se encuentran almacenados en otro lugar. De esta forma logramos obtener
Arreglos. Otra definición seria;
Buenas tardes!!! El tema que vamos a tratar es sobre arreglos, para ser presentado mediante una prueba escrita en pareja y con la opción de cuaderno abierto Arreglos Se define a un arreglo como un grupo
Herramientas computacionales para la matemática MATLAB: Arreglos
Herramientas computacionales para la matemática MATLAB: Arreglos Verónica Borja Macías Marzo 2013 1 Una matriz es un arreglo bidimensional, es una sucesión de números distribuidos en filas y columnas.
TIPO DE DATO ABSTRACTO (TDA)
TIPO DE DATO ABSTRACTO (TDA) Ing. Eduard Antonio Lozano Córdoba Nota: Toda la información fue copiada de: Libros físicos e Internet Actividad Extra Clases #include #include int binario(int
Guía - Taller # 2 (JAVA)
CEET - Distrito Capital Programa de Formación: ADSI 150752 TRIMESTRE VI Conocimiento de Conocimiento: Aplicar diversos estilos de Programación usando herramientas para Desarrollo Web Instructor: Ing. Espec.
CAPÍTULO II SISTEMAS NUMÉRICOS. Este método de representar los números se llama sistema de numeración decimal, donde 10 es la base del sistema.
CIENCIAS DE LA COMPUTACIÓN MAT 1104 12 CAPÍTULO II SISTEMAS NUMÉRICOS 2.1 INTRODUCCIÓN Los números usados en Aritmética están expresados por medio de múltiplos o potencias de 10; por ejemplo: 8654= 8*10
Operadores y Expresiones
Operadores y Expresiones Los programas Java constan de datos, sentencias de programas y expresiones. Una expresión es normalmente, una ecuación matemática, tal como 3 * x + 5 * z. En esta expresión, los
Soluciones a los problemas impares. Tema 5. Memorias. Estructura de Computadores. I. T. Informática de Gestión / Sistemas
Tema 5. Soluciones a los problemas impares Estructura de Computadores I. T. Informática de Gestión / Sistemas Curso 28-29 Tema 5 Hoja: 2 / 36 Tema 5 Hoja: 3 / 36 Base teórica La memoria es el lugar en
Contenido. Sistema de archivos. Operaciones sobre archivos. Métodos de acceso a archivos. Directorio. Sistema de archivos por capas.
Contenido Sistema de archivos Operaciones sobre archivos Métodos de acceso a archivos Directorio Sistema de archivos por capas Espacio libre Sistema de archivos Proporciona el mecanismo para el almacenamiento
GiD, bevísimo tutorial
GiD, bevísimo tutorial MSc. Miguel Vargas-Félix miguelvargas@cimat.mx http://www.cimat.mx/~miguelvargas 24/09/12 1/37 Contenido Contenido Descripción Pre-proceso Creación de un problem-type Formato de
FORMULARIO HTML PREPARACION DEL FORMULARIO. Que información debes solicitar al visitante de tu web?
FORMULARIO HTML Con este apunte se realizara un sencillo formulario que creará un nuevo mensaje de e-mail en el computador del usuario; y dicho mensaje se rellenará con tu dirección de e-mail (como destinatario),
Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática
Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso 2013-2014. 1º Grado en Informática Práctica 2: Memoria dinámica y Bibliotecas Objetivos Practicar conceptos
Modelos Comprimidos. Modelo de Bloque 3D Standard
Modelos Comprimidos Introducción Una vez que ha creado un modelo de bloques en 3D estándar (3DBM), ya tiene una ideas del tamaño y forma generales del cuerpo mineralizado. En este punto, conviene afinar
TIPOS DE DATOS BASICOS EN LENGUAJE C
TIPOS DE DATOS BASICOS EN LENGUAJE C TIPO char int float double void ANCHO EN BIT 64 0 TIPOS DE DATOS RANGO EN PC -12 a 127 3.4E-3 a 3.4E+3 1.7E-30 a 1.7E+30 sin valores TIPO ANCHO EN BIT RANGO EN PC char
Píxel. Un píxel ( picture element ) es la menor unidad homogénea en color que forma parte de una. fotograma de video, gráfico)
La imagen digital Esta formada por una secuencia de ceros y unos que se almacenan en una memoria informática. Cuando es interpretada (leída), los ordenadores la transforman en una imagen visible a través
ACCESS 2010 FÁCIL - ONLINE - EN LÍNEA
IMECAF México, S.C. Instituto Mexicano de Contabilidad, Administración y Finanzas Nombre del Curso ACCESS 2010 FÁCIL - ONLINE - EN LÍNEA Objetivo Objetivo general de este curso en línea: Adquirir las habilidades
MATRICES. 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
Programación En Lenguaje C
Programación En Lenguaje C Introducción Básica para Primero de Bachillerato TECNOLOGÍA DE LA INFORMACIÓN IES PALAS ATENEA Lenguaje C Estructurado Secuencial De alto Nivel Altamente portable Necesita un
PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos
ESCUELA DE INGENIERÍA DE SISTEMAS DEPARTAMENTO DE COMPUTACIÓN PROGRAMACIÓN 2 PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos Contenido Introducción...1 Objeto...2 Atributo...2 Métodos...2 Clase...3
Una base de datos de Access puede estar conformada por varios objetos, los más comunes son los siguientes:
MICROSOFT ACCESS DEFINICIÓN MS Access es un programa para manejar bases de datos. Una base de datos es un conjunto de datos de un determinado tema o contexto, almacenados de forma sistemática, para obtener
Importación de Datos
Datos en Excel I Importación de Datos En muchas ocasiones tenemos la necesidad de trabajar en Excel con datos procedentes de otras aplicaciones. Tenemos dos alternativas: - Introducir de nuevo los datos
ARCHIVOS. 1. Introducción. 2. Definición de archivo. 3. Archivos de acceso secuencial. 4. Gestión de un archivo secuencial de estructuras
ARCHIVOS 1. Introducción 2. Definición de archivo 3. Archivos de acceso secuencial 3.1. fopen 3.2. fclose 3.3. fcloseall 3.4. putc 3.5. getc 3.6. fscanf 3.7. fprintf 4. Gestión de un archivo secuencial
{ } Listado de elementos del conjunto
CONJUNTOS Qué es un conjunto? Un conjunto es un grupo no ordenado de elementos que comparte una o más características. Nomenclatura en los conjuntos Los conjuntos siempre se nombran con letras mayúsculas,
!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016!
INFORMÁTICA Práctica4. ProgramaciónbásicaenC. GradoenIngenieríaenElectrónicayAutomáticaIndustrial Curso2015H2016 v2.1(18.09.2015) A continuación figuran una serie de ejercicios propuestos, agrupados por
TEMA 6: LENGUAJE DE DEFINICIÓN DE DATOS (LDD)
TEMA 6: LENGUAJE DE DEFINICIÓN DE DATOS (LDD 6.1 Introducción Hasta ahora hemos estudiado las sentencias que forman parte del DML (Data Management Language lenguaje de manipulación de datos, todas esas
ANEXO XVII DE LA RESOLUCION N
Hoja 1 de 7 UNIVERSIDAD NACIONAL DE CÓRDOBA Facultad de Ciencias Exactas Físicas y Naturales República Argentina Programa de: Código: Informática Carrera: Materia común Res. Nº Plan: Puntos:3.5 Escuela:
Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria
Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Bibliografía: Elmasri y Navathe: Fundamentos de Sistemas de Bases de Datos 3ª edición, 2002 (Capítulo 6). Garcia-Molina, Ullman
Análisis y Diseño de Algoritmos Tablas de Hash
Análisis y Diseño de Algoritmos Tablas de Hash Guillermo Morales-Luna Arturo Díaz Pérez CONTENIDO 1. Dispersión 2. Funciones de dispersión (a) Método de división (b) Método de multiplicación 3. Direccionamiento
PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07
PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07 1. En qué método de análisis sintáctico puede suceder que en la construcción del árbol de derivación de las posibles expansiones de un símbolo no terminal