6. Listas Generalizadas
|
|
|
- Santiago Serrano Maldonado
- hace 8 años
- Vistas:
Transcripción
1 6. Listas Generalizadas Una lista enlazada es una estructura de datos en la cual los objetos están organizados linealmente. Listas enlazadas proveen una forma simple de estructuar conjuntos dinámicos de datos. Una lista puede tener diferentes formas, puede ser enlazadas simple, doblemente enlazada, ordenada o circular. Una lista generalizada, A, es una secuencia finita de n 0 elementos, α 1,..., α n, donde α i es un elemento átomo o una lista. Si es una lista, se llama sublista de A. Si n 1, entonces α 1 se dice la cabeza de A y el resto la cola. Ejemplos: A = (a,(b,c)) B = (A,A,()) C = (a,c) Consecuencias: Listas generalizadas pueden ser compartidas o pueden ser recursivas. 31
2 structurelist(item) declare CREAT E() list ADD IT EM(list, item) list ADD LIST (list, list) list DELET E I T EM(list, item) list DELET E L IST (list, list) list HEAD IT EM(list) item HEAD LIST (list) list IS EMP T Y (list) boolean EQU AL(list, list) boolean for all l, l 1, l 2, l 3 LIST, i, i 1 IT EM let IS EMP T Y (CREAT E()) ::= true IS EMP T Y (ADD IT EM(l, i)) ::= false IS EMP T Y (ADD LIST (l, l 1 )) ::= false EQUAL(CREAT E(), l) ::= IS EMP T Y (l) EQUAL(l, CREAT E()) ::= IS EMP T Y (l) EQUAL(ADD IT EM(l, i), ADD IT EM(l 1, i 1 ) ::= if i = i 1 then EQUAL(l, l 1 ) else false EQUAL(ADD IT EM(l, i), ADD LIST (l 1, l 2 ) ::= false EQUAL(ADD LIST (l, l 1 ), ADD IT EM(l 2, i)) ::= false EQUAL(ADD LIST (l, l 1 ), ADD LIST (l 2, l 3 )) ::= EQUAL(l, l 2 ) EQUAL(l 1, l 3 ) HEAD IT EM(CREAT E()) ::= error HEAD IT EM(ADD IT EM(l, i)) ::= if IS EMP T Y (l) then i else HEAD IT EM(l) HEAD IT EM(ADD LIST (l, l 1 )) ::= if IS EMP T Y (l) then error else HEAD IT EM(l) HEAD LIST (CREAT E()) ::= error HEAD LIST (ADD IT EM(l, i)) ::= if IS EMP T Y (l) then error else HEAD LIST (l) HEAD LIST (ADD LIST (l, l 1 )) ::= if IS EMP T Y (l) then l 1 else HEAD LIST (l) DELET E IT EM(CREAT E(), i) ::= CREAT E() DELET E IT EM(ADD IT EM(l, i), i 1 ) ::= if i = i 1 then DELET E IT EM(l, i 1 ) else ADD IT EM(DELET E(l, i 1 ), i) DELET E IT EM(ADD LIST (l, l 1 ), i) ::= ADD LIST (DELET E IT EM(l, i), DELET E IT EM(l 1, i)) DELET E LIST (CREAT E(), l) ::= CREAT E() DELET E LIST (ADD IT EM(l, i), l 1 ) ::= ADD IT EM(DELET E LIST (l, l 1 ), i) DELET E LIST (ADD LIST (l, l 1 ), l 2 ) ::= if EQUAL(l 1, l 2 ) then DELET E LIST (l, l 2 ) else ADD LIST (DELET E LIST (l, l 2 ), DELET E LIST (l 1, l 2 )) Supongamos una representación por punteros de modo que se tiene un nodo con tres campos: tag (0: atomo, 1: sublista) data (Si tag = 0, data es un dato que se almacena, and si tag = 1, data es un puntero a la sublista). puntero al siguiente elemento de la lista. Con esta representación, las lista dadas como ejemplo quedan representadas como: 32
3 A 0 a 1 0 (a,(b,c)) 0 b 0 c 0 (b,c) B (A,A,()) C 0 a 1 0 (a,c) Figura 8: Ejemplo de listas generalizadas Un ejemplo de aplicación de lista generalizadas en la representación de un polinomio. Ejemplo: P (x, y, z) = x 10 y 3 z 2 + 2x 8 y 3 z 2 + 3x 8 y 2 z 2 + x 4 y 4 z + 6x 3 y 4 z + 2yz z 2 (x 10 y 3 + 2x 8 y 3 + 3x 8 y 2 ) + z(x 4 y 4 + 6x 3 y 4 + 2y) z 2 (y 3 (x x 8 ) + y 2 (3x 8 )) + z(y 4 (x 4 + 6x 3 ) + y(2x 0 )) 33
4 z y x x Figura 9: Ejemplo de un polinomio como lista Cuál es la representación de los nodos de esta lista? El hecho que listas puedan ser compartidas puede resultar en un mejor manejo de espacio. Para hacer esto, exteremos la definición de una lista para permitir el manejo de nombres de sublistas. Por ejemplo, en la lista A=(a,(b,c)), la sublista (b,c) puede ser llamada Z de manera que A = (a,z(b,c)), o en forma más consistente A(a,Z(b,c)). Listas que son compartidas por otras, tal como A en los ejemplos, crea problemas cuando uno desea agar o borrar un nodo que está al frente. Si el primer nodo de A es borrado, es necesario mover los punteros de la lista B al segundo elemento de A. El problema también aparece cuando se aga un nodo al comienzo. Aún más, no siempre se conocen todas las listas que comparten una definición. Una solución fácil es agar un nodo cabecera. El tag de la cabecera no importa y es inicializado con 2. Adicionalmente al uso de la cabecera para indicar el comienzo de una lista, esta cabecera puede contener un contador indicando el número de listas que hacen referencia a ella. Así cuando uno desea eliminar una lista, esta lista sólo puede ser eliminada si es que no hay listas que hagan referencia a ella. A continuación se presenta el dibujo de la representación con cabecera de las lista de ejemplo: 34
5 2 3 0 a 1 0 A(a,Z(b,c)) b 0 c 0 Z(b,c) B(A,A,()) a 1 0 C(a,C) Figura 10: Ejemplo de lista generalizadas con encabezamiento El uso del contador resuelve el problema de listas compartidas, pero cuando existen listas con ciclos, el contador nunca llega a cero. Por ejemplo: Figura 11: Listas con ciclos Desafortunadamente, cuando se usan listas recursivas (con ciclos) es posible que se acabe el espacio disponible aunque no todos los nodos estén sio usados, ya que no se pueden devolver los nodos a medida que se van borrando. Cuando esto ocurre, es posible recolectar el espacio sin uso mediante un proceso conocido como colección de basura o garbage collection. 35
6 6.1. Aplicación de Listas: Recolección de Basura y Compactación En un ambiente de computadores multi-procesos, muchos programas residen en memoria al mismo tiempo. Diferentes programas tiene diferentes requerimientos de memoria. Así un programa puede requerrir 60K o 300K de memoria. En cualquier momento que el sistema necesite memoria, necesita localizar memoria continua del tamaño deseado. Cuando la ejecución de un programa es terminada, la memoria que ha sido ocupada debe ser liberada y disponible para otro programa. Más aún, bloques de memoria pueden ser liberados en una secuencia diferente a la que fueron solicitados. Suponga por ejemplo el siguiente caso: Se tiene una memoria de palabras y 5 programasa P1, P2, P3, P4, y P5 que requieren bloques de memoria de tamaños 10000, 15000, 6000, 8000 y La vista de la memoria al localizar el programa P5 sería: P1 P2 P3 P4 P5 Free Space Figura 12: Memoria con 5 procesos en ejecución Asuma ahora que el programa P4 y P2 completaron su ejecución y que por lo tanto la memoria es liberada: P1 Free P3 Free P5 Free Space Figura 13: Memoria con 2 procesos terminados Ahora se tienen 3 bloques de memoria contigua libres y tres ocupados. Con el propósito de seguir permitio la localización de memoria, es necesario mantener istro de los bloques que no están en uso. Para eso se usa un lista de bloques de memoria que no están en uso. El proceso de recolección de basura es llevado a cabo en dos pasos: (1) marcación de los bloques que están en uso y (2) compactación de los bloques libres a memoria disponible. Este segundo paso es trivial si los bloques son de igual tamaño llegando a ser de O(n), sio n el número de nodos. Cuando existe un tamaño variable por nodo, es deseable compactar la memoria de manera que todos los nodos libres queden en memoria contigua, lo que se llama compactación de memoria. La compactación de memoria reduce el tiempo de recuperación. 36
7 6.2. Representation de listas Considere el caso simple de listas con elementos de un sólo tipo: longitud Figura 14: Lista doblemente encadenada La representación de esta lista es: Tipos nodo lista = lista = valor : elemento sig, ant : puntero a nodo lista f longitud : nat izquierda, derecha : puntero a nodo lista f Algunas algoritmos son los siguientes. En todos los casos la complejidad es de orden lineal O(n) con n sio el numero de elementos en la lista. Procedure concatenar( lista x; lista y; var lista z) z lista vacia() p x.izquierda agar der(z, p valor) p y.izquierda agar der(z, p valor) 37
8 Procedure inversa( lista l) p l derecha r nil q p sig p sig r p ant q r p p q l r Func buscar( lista l, elem e) p l derecha while p nil and p valor e do if p nil then return false else return true Ahora considere listas doblemente encadenadas y, además, circulares: Figura 15: Lista doblemente encadenada y circular La representación de esta lista es por punteros es: Tipos nodo lista = lista = valor : elemento sig, ant : puntero a nodo lista f longitud : nat sentinela : puntero a nodo lista f En esta representación un nodo es usado como cabecera o sentinela de la lista de nodos. Los algoritmos soy muy parecidos a los anteriores, tenio en cuando que los punteros siguientes y anteriores nunca son nulos. La condición de parada es que el puntero sea igual a la cabecera o 38
9 sentinela. Otra representación de lista es usando arlos. Se pueden usar 3 arlos para lista doblemente encadenadas, un arlo de punteros anteriores, un arlo de puntero al siguiente y un arlo de valores, tal como la figura que se muestra: sig valor ant Figura 16: Lista doblemente encadenada y circular con representación por arlos Considerando la memoria como un arlo de una dimensión, otra representación en un sólo arlo es: N Figura 17: Lista doblemente encadenada y circular con representación por arlos En esta representación se maneja un desplazamiento de 0, 1 y 2, para el valor, el próximo y el anterior, respectivamente. Asumio esta represnetación, algunas puntas interesantes son:?qué estructuras o variables son necesarias para manejar la lista y usar asignación dinámica de memoria? Basada en esta representación,?qué debería hacerse para manejar la lista en forma compactada, osea, usando los primeros elementos del arlo? 39
10 Para el caso de listas generales: Tipos nodo lista gen = tipo : bool valor : elemento lista : lista gen sig : puntero a nodo lista f lista gen = ref erencias : natural primero : puntero a nodo lista gen f Procedure concatenar(lista gen x; lista gen y; var lista gen z) v copia lista gen(x) w copia lista gen(y) if v = nil then z w else [avanzamos hasta el último elemtno de v] p v primero while p sig nil do [y lo unimos con w] p sig w z v Procedure inversa gen(lista gen l) p l primero r nil q p if (q tipo) then inversa gen(q lista) q sig r r q l r 40
11 Func buscar gen( lista gen l, elem e) p l primero if p tipo = L then if buscar gen(p lista, e) then return true else else if p valor = e then return true else return false Dos algoritmos de profundidad son: Func depth 1 ( node list l) p l h 1 0 h 2 0 if p = nil then return h 1 h depth 1 (p sig) if p tipo = L then h depth 1 (p lista primero) return max(h 1, h 2 ) Func depth 2 ( lista gen l) p l primero n 0 long 0 if p tipo = L then n max(n, depth 2 (p lista)) long long + 1 return max(n, long) 41
Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero
Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 4: Ordenación Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Elección de un método Métodos directos
Este material es de uso exclusivo para estudio, los textos fueron tomados textualmente de varios libros por lo que está prohibida su impresión y
Este material es de uso exclusivo para estudio, los textos fueron tomados textualmente de varios libros por lo que está prohibida su impresión y distribución. Listas Enlazadas Estructuras de datos dinámicas
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
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
ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES
ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES Introducción al tema a. Formar grupos de 4 personas b. Tomar una hoja en blanco y una lapicera o lápiz c. En la hoja en blanco diseña un
El TAD Grafo. El TAD Grafo
! Esta representación resulta útil cuando el número de vértices se conoce previamente y permanecerá fijo durante la resolución del problema, pero resulta ineficiente si necesitamos añadir o eliminar vértices
Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos
Tema 2 Memoria Dinámica 2.1 Datos estáticos y dinámicos Datos estáticos: su tamaño y forma es constante durante la ejecución de un programa y por tanto se determinan en tiempo de compilación. El ejemplo
DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006
ARBOLES ESTRUCTURAS DE DATOS 2006 DEFINICION Un árbol (tree) es un conjunto finito de nodos. Es una estructura jerárquica aplicable sobre una colección de elementos u objetos llamados nodos; uno de los
Tema Árboles generales. 9.2 Árboles binarios 9.3 Árboles de búsqueda
Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Tema 9. Árboles 9.1 Árboles generales 9.2 Árboles binarios 9.3 Árboles de búsqueda 9.1 Árboles generales Un árbol es
Búsqueda en e.e. --> reglas para elegir entre las ramas que con más probabilidad lleven a la solución.
BÚSQUEDA HEURÍSTICA estudio de los métodos y reglas del descubrimiento y la invención. Búsqueda en e.e. --> reglas para elegir entre las ramas que con más probabilidad lleven a la solución. Situaciones
Sistemas operativos. Tema 10: Sistemas de ficheros
Sistemas operativos Tema 10: Sistemas de ficheros Sistemas de ficheros El sistema de ficheros suele ser el aspecto más m visible de un SO para los usuarios. Objetivos: Ofrecer una visión n uniforme del
Curso de Programación 1
Curso de Programación 1 Plan 97 Búsqueda y Ordenación Métodos de búsqueda Existen aplicaciones en las cuales es necesario consultar si un elemento se encuentra dentro de un array. A continuación veremos
Unidad Nº V Listas Enlazadas
Instituto Universitario Politécnico Santiago Mariño Unidad Nº V Listas Enlazadas Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada elemento se conecta
Isabelle como un lenguaje funcional
Capítulo 1 Isabelle como un lenguaje funcional 1.1 Introducción Nota 1.1.1. Esta notas son una introducción a la demostración asistida utilizando el sistema Isabelle/HOL/Isar. La versión de Isabelle utilizada
Introducción a la Geometría Computacional. Análisis de Algoritmos
Introducción a la Geometría Computacional Análisis de Algoritmos Geometría Computacional La Geometría Computacional surgió a finales de los 70s del área de diseño y análisis de algoritmos. Estudio sistemático
ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES
ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES Características ARBOLES - CONCEPTOS Cada elemento del árbol se relaciona con cero o más elementos a quienes llama hijos. Si el árbol no
APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.
APUNTADORES Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No hay que confundir una dirección de memoria con el contenido
UNIDAD 9. DATOS COMPLEJOS PILAS
UNI 9. TOS OMPLEJOS PILS Una pila es una lista de elementos en la que se pueden insertar y eliminar elementos sólo por uno de los extremos. omo consecuencia, los elementos de una pila serán eliminados
Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas
Tema 9 Algoritmos sobre listas Programación 2015-2016 Programación - Tema 9: Algoritmos sobre listas 1 Tema 9. Algoritmos sobre listas Algoritmos sobre Arrays. Búsqueda. Inserción. Ordenación. Programación
GESTIÓN DE ARCHIVOS. Presentado por: Alba Arosemena Alma Vargas Hospicia Mendoza Roselvira Fernández Ahías Arosemena
GESTIÓN DE ARCHIVOS Presentado por: Alba Arosemena Alma Vargas Hospicia Mendoza Roselvira Fernández Ahías Arosemena INTRODUCCIÓN En la mayoría de las aplicaciones, el archivo es el elemento central. La
Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1
Prologo Agradecimientos Nota de los autores Índice general I III V VII 1 Problemas, algoritmos y programas 1 1.1 Programas y la actividad de la programación.................... 4 1.2 Lenguajes y modelos
Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009
Árboles Ejemplos de estructuras arborescentes: con forma de árbol Regla de Alcance: los objetos visibles en un procedimiento son aquellos declarados en él mismo o en cualquier ancestro de él (cualquier
Módulo 8: Primitivas en Pascal
Módulo 8: Primitivas en Pascal Tecnologías en la Educación Matemática Dr. Carlos Gonzalía DCIC - UNS Técnologías en la educación matemática Dr. Carlos Gonzalía 1 de Copyright Copyright 2010, 2012 M. Capobianco,
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
Estatutos de Control C# Estatutos de Decisión (Selección)
SELECCIÓN Estatutos de Control C# Estatutos de Decisión (Selección) IF Condición THEN Estatuto1 ELSE Estatuto2 Estatuto1 Statement Condición... Antes de ver esta presentación: Lee el Capítulo correspondiente
Clases e instancias. Algoritmos y Estructuras de Datos I. Clases e instancias. memoria dinámica.
Algoritmos Estructuras de Datos I Primer cuatrimestre de 2014 Departamento de Computación - FCEN - UBA Programación imperativa - clase 10 Memoria dinámica listas enlazadas Clases e instancias El paquete
Estructuras de Datos. La pila es un objeto dinámico en constante cambio.
21 Capítulo 2. LA PILA (STACK). 2.1 Definición y ejemplos. Una pila es un conjunto ordenado de elementos en el cual se pueden agregar y eliminar elementos de un extremo, el cual es llamado el tope de la
Capítulo. Listas, pilas y colas en C. Contenido. Introducción
Capítulo 32 Listas, pilas y colas en C Contenido Listas enlazadas Clasificación de listas enlazadas Operaciones en listas enlazadas Inserción de un elemento en una lista Búsqueda de un elemento de una
Unidad 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
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
Algorítmica y Complejidad. Tema 3 Ordenación.
Algorítmica y Complejidad Tema . Introducción.. Algoritmo de inserción.. Algoritmo de selección.. Algoritmo de la burbuja.. Algoritmo heapsort.. Algoritmo quicksort. 7. Algoritmo countingsort.. Algoritmo
Estructura de datos Tema 3: El TAD Lista lineal. Universidad de Valladolid. Departamento de informática. Campus de Segovia
Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 3: El TAD Lista lineal Prof. Montserrat Serrano Montero ÍNDICE El TAD lista lineal Implementación con estructuras
Capítulo 1. Sistemas de Asignación Contigua Basados en Particiones
Problemas Resueltos Capítulo 1. Sistemas de Asignación Contigua Basados en Particiones 1.- Notas y criterios para los problemas 2.- NOTA GENERAL: Tema 1 Introducción a la gestión de memoria. 3.- Problemas
ORDENAMIENTO Y BÚSQUEDA EN ARREGLOS
1 ORDENAMIENTO Y BÚSQUEDA EN ARREGLOS Corina Flores Villarroel ORDENAMIENTO EN ARREGLOS Y COLECCIONES Una de las tareas más comunes a la hora de procesar datos es la clasificación u ordenación de los datos.
Diagramas De Casos De Uso
Estáticos Diagramas De Casos De Uso Los diagramas de casos de uso documentan el comportamiento de un sistema desde el punto de vista del usuario.. Por lo tanto los casos de uso determinan los requisitos
Estructuras en LabVIEW.
Estructuras en LabVIEW. Sumario: 1. Ejecución según el flujo de datos. 2. Estructuras básicas disponibles en LabVIEW. a) Estructura Sequence. b) Estructura Case. c) Estructura For Loop. d) Estructura While
Instrumentación Virtual con LabVIEW
Instrumentación Virtual con LabVIEW ESTRUCTURAS ESTRUCTURAS WHILE FOR.. CASE SEQUENCE Opciones de selección de CASE Controles Visibles Variables Locales y Globales Personalizar controles 1.- ENTORNO DE
Estructuras de Control. Secuencia y Selección
Estructuras de Control. Secuencia y Selección InCo - FING Programación 1 InCo - FING Estructuras de Control. Secuencia y Selección Programación 1 1 / 35 Estructuras de control InCo - FING Estructuras de
Convertir un AFND a un AFD
Convertir un AFND a un AFD Existe una equivalencia entre los AFD y AFN, de forma que un autómata M es equivalente a un autómata M' si L(M) ) L(M'). Ejemplo: Los autómatas de la siguiente figura son equivalentes.
SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos
TEMA 2 Diseño de Algoritmos 7 2. DISEÑO DE ALGORITMOS 2.1. Concepto de Algoritmo En matemáticas, ciencias de la computación y disciplinas relacionadas, un algoritmo (del griego y latín, dixit algorithmus
2.2 Nombres, Ligado y Ámbito
2.2 Nombres, Ligado y Ámbito Ligado estático y dinámico, reglas de ámbito y prueba de tipos. Conceptos Nombres e Identificadores Variables Tipos Ámbito Constantes Nombres Identificador que designa en el
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
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,[email protected] Universidad Técnica Federico Santa María Estructuras Discretas INF 152 Sean
GRAMATICAS LIBRES DEL CONTEXTO
GRMTICS LIBRES DEL CONTEXTO Estas gramáticas, conocidas también como gramáticas de tipo 2 o gramáticas independientes del contexto, son las que generan los lenguajes libres o independientes del contexto.
PHP: Lenguaje de programación
Francisco J. Martín Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Tipos de datos Enteros Con base decimal: 45, -43 Con base octal: 043, -054
Programación. Tema 8: Tablas Hash. Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el????
Programación. Tema : Tablas Hash /Mayo/ Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el???? Tema : Tabla Hash Las tabla hash aparece para conseguir
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
Estructura de datos Tema 6: Tablas de dispersión (hashing)
Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 6: Tablas de dispersión (hashing) Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Funciones hash
Estructuras de datos: Pilas, Colas, Listas
Estructuras de datos: Pilas,, Facultad de Informática Universidad de A Coruña Pilas,, Table of Contents Pilas 1 Pilas 2 3 Pilas,, Table of Contents Pilas 1 Pilas 2 3 Pilas,, Pilas Acceso limitado al último
TAD Lineales: Pila, Cola y Lista
TAD Lineales: Pila, Cola y Lista Objetivos! Dar a conocer los TAD lineales pila, cola y lista! Presentar la especificación de cada uno de los TAD! Discutir implementaciones alternativas para cada uno de
Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática
Programación de Computadores 4 Iteraciones y Decisiones Prof. Javier Cañas Universidad Técnica Federico Santa María Departamento de Informática Contenido 1 Introducción 2 Operadores Relacionales y Lógicos
Gestión de Memoria. Gestión de Memoria. Requisitos de Gestión de Memoria
Gestión de Memoria Gestión de Memoria Dividir la memoria para alojar múltiples procesos La memoria necesita ser asignada eficientemente para alojar tantos procesos como sea posible Capítulo 7 Requisitos
Sistemas Operativos. Dr. Luis Gerardo de la Fraga. Departamento de Computación Cinvestav
Sistemas Operativos Dr. Luis Gerardo de la Fraga E-mail: [email protected] http://cs.cinvestav.mx/~fraga Departamento de Computación Cinvestav 12 de junio de 2015 Dr. Luis Gerardo de la Fraga Cinvestav,
324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso 2015-2
324 MR Versión 1 Prueba Integral 1/3 UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA MODELO DE RESPUESTA ASIGNATURA: Computación II CÓDIGO: 324 MOMENTO: Prueba Integral FECHA DE APLICACIÓN:
Código Intermedio. Compiladores II 1
Código Intermedio Compiladores II 1 Usos del Código Intermedio Múltiples lenguajes y compiladores n+m módulos -> n*m compiladores Optimización Representación de fácil modificación Modelos de generación
Tabla de Símbolos. Programación II Margarita Álvarez
Programación II Margarita Álvarez La tabla de símbolos es una estructura global utilizada por distintos módulos del compilador. Es el principal atributo heredado. Almacena todos los nombres declarados
Este método se basa en buscar el elemento menor el vector y colocarlo en la primera
Lectura ORDENACIÓN DE ARREGLOS Con frecuencia se requiere clasificar u ordenar los elementos de un vector (arreglo unidimensional) en algún orden en particular. Por ejemplo, ordenar un conjunto de números
Tiempo de Ejecución. Midiendo el Tiempo de Ejecución
Tiempo de Ejecución Arturo Díaz Pérez Sección de Computación Departamento de Ingeniería Eléctrica CINVESTAV-IPN Av. Instituto Politécnico Nacional No. 2508 Col. San Pedro Zacatenco México, D. F. CP 07300
7.1 Consideraciones. Considere la búsqueda de un libro en una biblioteca. Considere la búsqueda de un nombre en el directorio telefónico.
86 Capítulo 7. ORDENAMIENTO. 7.1 Consideraciones. Considere la búsqueda de un libro en una biblioteca. Considere la búsqueda de un nombre en el directorio telefónico. Si los elementos a ordenar son compuestos
Arquitectura (Procesador familia 80 x 86 )
Arquitectura (Procesador familia 80 x 86 ) Diseño de operación Basada en la arquitectura Von Newman Memoria CPU asignadas direcciones I / O BUS: Es un canal de comunicaciones Bus de direcciones: Contiene
Tema 3: Espacios vectoriales
Tema 3: Espacios vectoriales K denotará un cuerpo. Definición. Se dice que un conjunto no vacio V es un espacio vectorial sobre K o que es un K-espacio vectorial si: 1. En V está definida una operación
La Máquina de Acceso Aleatorio (Random Access Machine)
La Máquina de Acceso Aleatorio (Random Access Machine) Nuestro modelo de cómputo secuencial es la máquina de acceso aleatorio (RAM, Random Access Machine) mostrada en la Figura 2.1, y que consiste de:
Sistemas Operativos Practica 1: procesos y concurrencia.
Sistemas Operativos Practica 1: procesos y concurrencia. Objetivos: Introducir al alumno a los conceptos de programa, concurrencia, paralelismo y proceso o tarea. Manejo del concepto de concurrencia haciendo
Ordenamiento Avanzado: Shellshort y Quicksort
October 1, 2009 1 2 3 4 Acerca del ordenamiento sencillo... Los métodos de ordenamiento sencillo que vimos anteriormente son relativamente fácil de implementar. A expensas de la facilidad de implementarlos
Tema 6. Gestión dinámica de memoria
Tema 6. Gestión dinámica de memoria http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, [email protected] Estructuras de datos y de la
Estudiemos el siguiente problema, propuesto por Wirth y desarrollado por Dijkstra: Una lista de las primeras secuencias que cumplen es:
25. Algoritmos heurísticos 25.1 Concepto de heurística. Se denomina heurística al arte de inventar. En programación se dice que un algoritmo es heurístico cuando la solución no se determina en forma directa,
Universidad de Cantabria. Facultad de Ciencias Ingeniería en Informática. Ingeniería del Software II
Universidad de Cantabria. Facultad de Ciencias Ingeniería en Informática. Ingeniería del Software II Ejercicios del Tema 1: Construcción y Pruebas del Software Ejercicio 1 Se desean realizar pruebas de
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
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,
Parte II: Estructuras de datos y algoritmos
Parte II: Estructuras de datos y algoritmos Tema 11. Tipos abstractos de datos. Conceptos básicos. Listas. Pilas. Colas. Vectores. Conjuntos. Mapas. Árboles. Árboles binarios. GRUPO DE COMPUTADORES Y TIEMPO
PILAS Fundamentos
Alg. y Estr. Datos-I / Fund. Progr.-II (R. Ferrís, J. Albert) 11 PILAS 11.1 Fundamentos En este tema y en el siguiente se analizarán las estructuras de datos lineales pilas y colas. Las pilas y las colas
Espacios Vectoriales www.math.com.mx
Espacios Vectoriales Definiciones básicas de Espacios Vectoriales www.math.com.mx José de Jesús Angel Angel [email protected] MathCon c 007-009 Contenido. Espacios Vectoriales.. Idea Básica de Espacio Vectorial.................................
Algoritmos glotones. mat-151
Algoritmos glotones (greedy) mat-151 Alonso Ramirez Manzanares Computación y Algoritmos 04.06.2009 Algoritmos glotones Algoritmos utilizados en problemas de optimización. Estos algoritmos siguen típicamente
Práctico 5. Definiciones Inductivas - Segunda Parte -
Práctico 5 Definiciones Inductivas - Segunda Parte - Objetivos: Trabajar con tipos inductivos. Realizar pruebas por inducción y análisis de casos. Familiarizarse con los lemas de inversión y las tácticas
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
Instrucciones de control
Instrucciones de control Instrucciones de control de flujo C# ofrece un conjunto de sentencias similar al de C, C++ o Java. A continuación se estudian muy brevemente cada una de ellas. if if se utiliza
Fundamentos de Informática
Tema 8: 8: Estructuras datos. Fundamentos Informática 1º Ingeniería Industrial Escuela Superior Ingenieros Universidad Sevilla Ismael Alcalá Torrego José Ángel Acosta Rodríguez Fernando Dorado Navas Fabio
Capítulo 6. Relaciones. Continuar
Capítulo 6. Relaciones Continuar Introducción Una relación es una correspondencia entre dos elementos de dos conjuntos con ciertas propiedades. En computación las relaciones se utilizan en base de datos,
Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.
Programación Básica Arturo Vega González [email protected] Division de Ciencias e Ingenierías Universidad de Guanajuato Campus León Sesión 5 Universidad de Guanajuato, DCI, Campus León 1 / 31 Universidad
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
Árboles. Cursos Propedéuticos 2015. Dr. René Cumplido M. en C. Luis Rodríguez Flores
Árboles Cursos Propedéuticos 2015 Dr. René Cumplido M. en C. Luis Rodríguez Flores Contenido de la sección Introducción Árbol genérico Definición y representación Árboles binarios Definición, implementación,
Elementos Diagramas de Clases Clase:
Diagramas de Clases Un diagrama de clases o estructura estática muestra el conjunto de clases y objeto importantes que forman parte de un sistema, junto con las relaciones existentes entre clases y objetos.
CAPÍTULO 4 TÉCNICA PERT
54 CAPÍTULO 4 TÉCNICA PERT Como ya se mencionó en capítulos anteriores, la técnica CPM considera las duraciones de las actividades como determinísticas, esto es, hay el supuesto de que se realizarán con
I. E. NORMAL SUPERIOR SANTIAGO DE CALI ASIGNATURA DE TECNOLOGÍA E INFORMÁTICA LIC. CARLOS ANDRÉS CASTAÑEDA HENAO GRADO 8º
I. E. NORMAL SUPERIOR SANTIAGO DE CALI ASIGNATURA DE TECNOLOGÍA E INFORMÁTICA LIC. CARLOS ANDRÉS CASTAÑEDA HENAO GRADO 8º EXCEL CONTENIDO: Gráficos Funciones Gráficos en Excel Un gráfico es la representación
Examen de Introducción a las Redes de Computadoras y Comunicación de Datos (ref: sirc0503.doc) 28 de febrero de 2005
Examen de Introducción a las Redes de Computadoras y Comunicación de Datos (ref: sirc0503.doc) 28 de febrero de 2005 Atención: para todos los ejercicios, suponga que dispone de los tipos de datos básicos
Aritmética de Enteros
Aritmética de Enteros La aritmética de los computadores difiere de la aritmética usada por nosotros. La diferencia más importante es que los computadores realizan operaciones con números cuya precisión
Tablas Hash y árboles binarios
Tablas Hash y árboles binarios Algoritmos Tablas hash Árboles Binarios Árboles Balanceados Tablas Hash Introducción Las tablas hash son estructuras tipo vector que ayudan a asociar claves con valores o
Iteradores y contenedores en C++
Iteradores y es en C++ Programación Orientada a Objeto Ing. Civil en Telecomunicaciones Se desea saber qué alumnos el curso Escribir función que identifique si un alumno tiene nota menor a 3.95 bool notarep(const
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
Profesorado de Nivel Medio y Superior en Biología Matemática - 1º Cuatrimestre Año 2013 FUNCIÓN CUADRÁTICA
Matemática - º Cuatrimestre Año 0 FUNCIÓN CUADRÁTICA Hemos definido anteriormente la función lineal como una función f: R R de la forma f()a+b con a R y b R, que se representa en el plano mediante una
Estructura de datos Tema 2: Tipos Abstractos de Datos (TADs)
Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 2: Tipos Abstractos de Datos (TADs) Prof. Montserrat Serrano Montero ÍNDICE Tipos de datos El tipo abstracto
Estructura de Datos. TDA: Listas. Primer Semestre, 2010. Indice. Tipos de estructura de datos lineales
Estructura de Datos TDA: Listas Prof. Mauricio Solar Prof. Lorna Figueroa Parte del material fue obtenido de Lic. Claudio Barúa Primer Semestre, 2010 Indice Tipos de estructura de datos lineales Listas
Curso de Java Introducción a la Programación III
Curso de Java Introducción a la Programación III Jaime Fernández Martín Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Operadores relacionales e igualdad 2 Estructuras de control condicional
Espacios vectoriales
Espacios vectoriales [Versión preliminar] Prof. Isabel Arratia Z. Algebra Lineal 1 En el estudio de las matrices y, en particular, de los sistemas de ecuaciones lineales realizamos sumas y multiplicación
Álgebra y Trigonometría Clase 7 Sistemas de ecuaciones, Matrices y Determinantes
Álgebra y Trigonometría Clase 7 Sistemas de ecuaciones, Matrices y Determinantes CNM-108 Departamento de Matemáticas Facultad de Ciencias Exactas y Naturales Universidad de Antioquia Copyleft c 2008. Reproducción
14. ÁRBOLES. 14.1 Fundamentos y terminología básica
Ricardo Ferrís / Jesús Albert Algoritmos y estructuras de datos I 14. ÁRBOLES 14.1 FUNDAMENTOS Y TERMINOLOGÍA BÁSICA... 79 14.2. ÁRBOLES BINARIOS... 81 14.3. FUNDAMENTOS... 82 14.3. OPERACIONES CON ÁRBOLES
Estructuras de datos: Pilas, Colas, Listas
Estructuras de datos: Dep. de Computación - Fac. de Informática Universidad de A Coruña Santiago Jorge [email protected] Índice Pilas 1 Pilas 2 3 Referencias bibliográficas Pilas M. A. Weiss., pilas
