Estructuras de Datos. Estructuras de Datos para Conjuntos Disjuntos

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Estructuras de Datos. Estructuras de Datos para Conjuntos Disjuntos"

Transcripción

1 Estructuras de Datos. Estructuras de Datos para Conjuntos Disjuntos Santiago Zanella Introducción Para ciertas aplicaciones se requiere mantener n elementos distintos agrupándolos en una colección de conjuntos disjuntos, permitiendo dos operaciones: (1) la unión de dos conjuntos de la colección y (2) conocer en qué conjunto se encuentra un elemento dado. Entre estas aplicaciones se cuentan el algoritmo de Kruskal para la determinación del árbol de expansión mínimo de un grafo, la inferencia de tipos, la determinación de las componentes conexas de un grafo, el reconocimiento de objetos en imágenes, étc... 2 Definición de la Estructura Una estructura de datos de conjuntos disjuntos (disjoint-set data structure) mantiene una colección de conjuntos disjuntos entre sí con elementos dentro de un cierto universo S = {S 1, S 2,...,S k } i, j {1,..., k} i j S i S j = U = {x 1,...,x n } Cada conjunto de la colección se identifica por un representante que puede ser un miembro cualquiera del conjunto. Solo se requiere que al consultar por el representante de un conjunto dos veces consecutivas sin modificar el conjunto el resultado sea el mismo. Sin perder generalidad se puede asumir que U = {1,..., n}. Si no fuera así se puede encontrar una función biyectiva que realice la traducción entre U y el conjunto {1,...,n}. Sean x, y U se desea implementar las siguientes operaciones: 1

2 MakeSet(x): Crea un nuevo conjunto cuyo único miembro (y representante) es x. Se requiere que x no esté en ningún conjunto de la estructura. pre: x U k i=1 S i pos: S = S {x} Union(x, y): Une los conjuntos que contienen a x y a y, digamos S x y S y. El representante del conjunto resultante puede ser cualquier miembro de S x S y. Como se requiere que la colección sea disjunta, se eliminan los conjuntos S x y S y de la colección S. pre: x S x y S y S x S y pos: S = S (S x S y ) {S x, S y } Find(x): Encuentra el representante del único conjunto al que pertenece x o 0 si x no está en ningún conjunto de la colección. pre: x U pos: (x S i i = 1,...,k Find(x) S i ) (x / k i=1 S i Find(x) = 0) En lo que sigue se intentará analizar el costo de diferentes implementaciones de la estructura al ejecutar una secuencia σ de m de estas operaciones, de las cuales n son operaciones MakeSet, q son operaciones Union y f son operaciones Find (Ver Tabla 1). Como los conjuntos son disjuntos, cada operación Union reduce el número de conjuntos en 1. Luego de n 1 operaciones Union solamente queda un conjunto, por lo tanto el número de operaciones Union es a lo sumo n 1. σ MakeSet Union Find Número de Operaciones m n q n 1 f = m (n + q) Tabla 1: Número de operaciones de cada tipo en la secuencia σ. Se considerará además que en cada una de las operaciones Union(x, y), x e y son los representantes de los conjuntos a los que pertencen. 3 Aplicación Una aplicación simple de la estructura de conjuntos disjuntos es determinar si dos vértices de un grafo no-dirigido pertenecen o no a la misma componente conexa. 1 procedure connected components (G) 2 foreach v V(G) 2

3 3 MakeSet (v ) ; 4 end 5 foreach (u, v) E(G) 6 if Find (u) Find (v) then 7 Union(u, v ) ; 8 end 9 end 10 end 1 procedure same component (u, v) 2 if Find (u) = Find (v) then 3 return True ; 4 else 5 return False ; 6 end 7 end Ejemplo a b c d e g h i Figura 1: Un grafo no-dirigido con 8 vértices y 3 componentes conexas. Paso Arista Procesada S 0 inicio {a} {b} {c} {d} {e} {g} {h} {i} 1 (a,b) {a, b} {c} {d} {e} {g} {h} {i} 2 (a,e) {a, b, e} {c} {d} {g} {h} {i} 3 (a,g) {a, b, e, g} {c} {d} {h} {i} 4 (c,d) {a, b, e, g} {c, d} {h} {i} 5 (c,i) {a, b, e, g} {c, d, i} {h} Tabla 2: Colección de conjuntos disjuntos luego de proecesar cada arista. La Tabla 2 muestra la colección S que mantiene la estructura en cada paso del procedimiento. Al finalizar, dos vértices se encuentran en el mismo conjunto de la colección si y solo sí se encuentran en la misma componente conexa. Luego, Find(u) = Find(v) si y solo si u y v están en la misma componente conexa. 3

4 La relación R donde u R v si y solo sí u y v están en la misma componente conexa es una relación de equivalencia. En general, siempre que se divide un grupo de objetos en conjuntos disjuntos, la relación R donde xry si y solo sí x e y están en el mismo conjunto es una relación de equivalencia. 4 Representación por Arreglos Una manera simple de implementar la estructura es utilizando un arreglo rep de tamaño n de tal forma que rep[x] indique el representante del conjunto al que pertence x. Se incializan todas las posiciones del arreglo rep en 0. La operación Makeset(x) asigna rep[x] := x. O(1). La operación Find(x) simplemente devuelve el valor de rep[x]. O(1). Para la operación Union(x, y) se recorre el arreglo rep y se cambian, por ejemplo, todas las posiciones iguales a y por x. O(n). 1 procedure MakeSet (x) 2 rep [ x ] := x ; 3 end 1 function Find ( x) 2 return rep [ x ] ; 3 end 1 procedure Union(x, y) 2 for i :=1 to n do 3 if rep [ i ] = y then 4 rep [ i ] := x ; 5 end 6 end 7 end El costo de m operaciones está dominado por la cantidad de operaciones Union, cada una de las cuales tiene costo O(n). El orden de una secuencia σ de m operaciones resulta O(n + qn + f). En el peor caso, q = n 1 = Θ(m) y la secuencia σ completa tiene un orden de tiempo de O(m 2 ). 4

5 (a) (b) rep rep b c d e f g h c c f c f f c b c d e f g h c c c c c c c Figura 2: (a) Representación por arreglos de los conjuntos {c, h, e, b} con c como representante y {f, g, d} con f como representante. (b) Resultado luego de ejecutar Union(c, f). 5 Representación por Listas Se puede mejorar el costo de la operación Union si en lugar de recorrer todas las entradas del arreglo rep se recorren solamente aquellas que corresponden a uno de los dos conjuntos. Esto se puede lograr representando los conjuntos mediante listas usando arreglos. Se representa la estructura usando un arreglo rep como en el caso anterior, un arreglo next que indica el sucesor de un elemento en la lista a la que pertenece y un arreglo last que almacena el último elemento de cada lista. El primer elemento de cada lista sirve como representante del conjunto. Se incializan todas las posiciones del arreglo rep en 0. La operación Makeset(x) crea una nueva lista que contiene solo al elemento x en O(1). La operación Find(x) simplemente devuelve el valor de rep[x]. O(1). Para la operación Union(x, y) se recorre, por ejemplo, la lista que comienza en x cambiando las entradas correspondientes en el arreglo rep por y y luego se concatena al final de la lista que comienza en y. (Fig. 3) c h e b f g d c h e b f g d (a) (b) Figura 3: (a) Representación en forma de lista de los conjuntos {c, h, e, b} y {f, g, d}. (b) Resultado luego de ejecutar Union(c, f). 5

6 1 procedure MakeSet (x) 2 rep [ x ] := x ; 3 next [ x ] := 0; 4 last [ x ] := x ; 5 end 1 function Find ( x) 2 return rep [ x ] ; 3 end 1 procedure Union(x, y) 2 p := x ; 3 do 4 rep [ p ] := y ; 5 p := next [ p ] ; 6 while p 0 7 next [ last [ y ] ] := x ; 8 last [ y ] := last [ x ] ; 9 end Para realizar una operación Union se recorre toda la lista x, lo que lleva un tiempo proporcional a la longitud de la lista. Se puede construir una secuencia de m operaciones que lleve tiempo Θ(m 2 ). Considere la secuencia de m operaciones con n = m/2 + 1 y q = m n = m/2 1 que se muestra en la Tabla 3. Operación Número de Actualizaciones a rep MakeSet(x 1 ) 1.. MakeSet(x n ) 1 Union(x 1, x 2 ) 1 Union(x 2, x 3 ) 2 Union(x 3, x 4 ) 3.. Union(x q 1, x q ) q 1 Tabla 3: Una secuencia de m operaciones que toma tiempo Θ(m 2 ). Cada operación MakeSet realiza una actualización a rep. La i-ésima operación Union realiza i actualizaciones. El número de actualizaciones en las q operaciones Union es q 1 i = Θ(q 2 ) i=1 6

7 El número total de actualizaciones es de orden Θ(n + q 2 ) = Θ(m 2 ) porque n = Θ(m) y q = Θ(m). En promedio cada una de las m operaciones tiene orden Θ(m). 5.1 Unión por Tamaño En la implementación anterior no se consideraba la longitud de cada lista al realizar una operación Union. Qué sucede si se considera y se actualizan siempre los representantes de la lista de menor tamaño? Claramente, la secuencia anterior de operaciones se ejecutaría en orden Θ(m). Aunque el anterior es un caso particular, se observa una mejora en general. 1 procedure Union(x, y) 2 if size [ x ] > size [ y ] then 3 swap (x, y ) ; 4 end 5 6 p := x ; 7 8 do 9 rep [ p ] := y ; 10 p := next [ p ] ; 11 while p 0 12 next [ last [ y ] ] := x ; 13 size [ y ] := size [ x ] + size [ y ] ; 14 end Teorema 5.1 Usando la representación por listas y la técnica de unión por tamaño una secuencia de m operaciones MakeSet, Union y Find, n de las cuales son operaciones MakeSet, toma tiempo O(m + n log n). Demostración Se trata de encontrar para cada elemento x una cota superior del número de veces que se actualiza rep[x]. Cada vez que se actualiza rep[x] al realizar una operación Union(S x, S y ) el elemento x se debe encontrar en la lista de menor tamaño: S x S y y la lista resultante tiene tamaño S x + S y 2 S x Es decir, cada vez que el conjunto al que pertence un elemento x participa en una unión, y se modifica rep[x], el elemento termina dentro de un conjunto que es al menos dos veces mayor. Luego de actualizar log k veces el representante de un elemento, el conjunto en el que está debe tener al menos k miembros. Como un conjunto no puede tener más de n elementos, a lo sumo se actualiza el representante de un elemento log n veces. El número de 7

8 actualizaciones en todas las operaciones Union es por lo tanto de orden O(q log n). Cada operación MakeSet y cada operación Find toma tiempo O(1), por lo tanto la secuencia completa toma tiempo O(n + q log n + f). En el peor caso, cuando n = Θ(m), q = Θ(m) y f = Θ(m), el orden es O(m log m). 6 Representación por Árboles Se puede representar la colección S como una colección de árboles donde cada árbol representa un conjunto y cada nodo es un miembro del conjunto. El representante de un conjunto es el nodo raíz en el árbol y para cada nodo solo se mantiene un puntero a su nodo padre en un arreglo llamado father (Fig. 4). c f f h e d c d b g h e g (a) b (b) Figura 4: Un bosque de conjuntos disjuntos. (a) Dos árboles representando los conjuntos de la Fig. 3. El árbol de la izquierda representa el conjunto {b, c, e, h}, con c como el representante, y el árbol de la derecha representa el conjunto {d, f, g} con f como representante. (b) El resultado luego de Union(c, f). Se incializan todas las posiciones del arreglo father en -1. La operación Makeset(x) crea un nuevo árbol que solo contiene al elemento x en O(1). La operación Find(x) recorre el árbol donde está x hasta la raíz para buscar el representante del conjunto. El orden temporal está dado por la altura del árbol. La operación Union(x, y) asigna, por ejemplo, f ather[x] := y en O(1). (Fig. 3) 1 procedure MakeSet (x) 2 father [ x ] := 0; 3 end 1 function Find ( x) 2 if father [ x ] = 1 then 3 return 0; 8

9 4 end; 5 while father [ x ] 0 do 6 x := father [ x ] ; 7 end 8 return x ; 9 end 1 procedure Union(x, y) 2 father [ x ] := y ; 3 end Hasta el momento, no se obtuvo ninguna mejora sobre la representación por listas en el orden de tiempo que lleva ejecutar una secuencia de m operaciones. Es posible crear una secuencia de aproximadamente m/3 operaciones MakeSet seguidas de aproximadamente m/3 operaciones Union de tal forma que se obtenga un único conjunto representado como un árbol lineal una cadena de nodos. Se puede encontrar luego una secuencia de aproximadamente m/3 operaciones Find cada una de las cuales lleve tiempo Θ(m/3). La secuencia completa se ejecutará en tiempo Θ(m 2 ). 6.1 Heurísticas Utilizando dos simples heurísticas en las operaciones Union y Find se puede mejorar el orden de tiempo para ejecutar una secuencia σ de m operaciones Unión por Tamaño La heurística de unión por tamaño no es más que una extensión de la heurística de unión por tamaño para la representación por listas. La idea consiste en modificar la operación Union para que agregue el árbol con menos nodos como subárbol del árbol con más nodos Compresión de Caminos Cada vez que se ejecuta una instrucción Find(x) se recorre el camino desde x hasta la raíz del árbol que lo contiene. Se puede mejorar el tiempo que llevarán futuras operaciones si durante la operación se convierte cada nodo en el camino de búsqueda en un hijo de la raíz. (Fig. 5) 6.2 Implementación La cantidad de nodos en el subárbol de un nodo x se conserva en size[x]. Cuando se aplica Union sobre dos árboles, el árbol de menor tamaño se convierte en un subárbol de la raíz del árbol con mayor tamaño. En caso de empate se realiza una elección arbitraria. 9

10 (a) f (b) f e e d c b a d c b a Figura 5: Efecto de la compresión de caminos sobre un árbol lineal. (a) (b) Árbol luego de ejecutar Find(a) utilizando compresión de caminos. Árbol original. 1 procedure MakeSet (x) 2 size [ x ] := 0; 3 end 1 function Find ( x) 2 r := x ; 3 while father [ r ] 0 do 4 r := father [ r ] ; 5 end 6 / r es ahora la raíz del árbol / 7 8 p := x ; 9 while p r do 10 t := father [ p ] ; 11 father [ p ] := r ; 12 p := t ; 13 end 14 return r ; 15 end 1 procedure Union(x, y) 2 if size [ x ] > size [ y ] then 3 father [ y ] := x ; 4 size [ x ] := size [ x ] + size [ y ] ; 10

11 5 else 6 father [ x ] := y ; 7 size [ y ] := size [ y ] + size [ x ] ; 8 end 9 end 6.3 Impacto de las Heurísticas Utilizando solamente la heurística de unión por tamaño, cada vez que un nodo se mueve a un nuevo árbol suceden dos cosas: La distancia del nodo a la raíz del árbol donde se encuentra se incrementa en uno. El nuevo árbol tiene al menos dos veces más nodos que el anterior. Si en total existen n elementos en el universo, ningún nodo puede moverse más de log n veces y por lo tanto la distancia de cualquier nodo a la raíz de su árbol no puede exceder log n y cada operación Find requiere tiempo O(logn). El impacto de la compresión de caminos es más difícil de analizar. Cuando se utilizan ambas heurísticas, el orden de complejidad temporal del peor caso es O(m α(m, n)), donde α(m, n) es una función que se define como una especie de inversa de la función de Ackermann y crece en forma extremadamente lenta. Para cualquier aplicación práctica concevible, resulta α(m, n) 4 y por lo tanto el orden de complejidad de la ejecución de una secuencia de m operaciones es prácticamente lineal. En lugar de probar que el orden de complejidad temporal del peor caso al ejecutar una secuencia σ de m operaciones es O(m α(m, n)) se puede probar más fácilmente una cota ligeramente menos ajustada, como se muestra a continuación. 6.4 Análisis de Complejidad Definición F y G Definimos las funciones F y G como sigue: F(k) = { 1 k = 0 2 F(k 1) k 1 (1) G(n) = min{k N F(k) n} (2) La función F crece muy rápidamente y la función G muy lentamente: n = G(n) 5 11

12 n F(n) = = = = = = Tabla 4: Primeros valores de F. n G(n) 0 n < n < n < n < n < n Tabla 5: Primeros valores de G(n). Definición σ σ es la secuencia de operaciones obtenida al eliminar de σ todas las operaciones Find. Definición F F es el bosque resultante luego de ejecutar σ. Definición T i T i es el subárbol con raíz en el nodo i dentro de F. Definición Rango El rango de un vértice i en F, r(i), es la altura de T i. Lema 6.1 Todo nodo i tiene al menos 2 r(i) descendientes, o equivalentemente T i 2 r(i). Demostración Por inducción sobre r(i) Caso Base: r(i) = 0 T i tiene al menos un vértice, i. Por lo tanto T i 1 = 2 0 = 2 r(i). Caso Inductivo: (HI) i F r(i) k T i 2 r(i) 12

13 Sea i un nodo con rango k. En algún momento tuvo rango menor que k y fue unido con otro árbol con raíz en un vértice j de rango k 1 y menos nodos: T i = T i + T j 2 T j 2 2k 1 = 2 k Corolario 6.2 Ningún vértice en F tiene rango mayor que log n. Lema 6.3 Existen a lo sumo n/2 r vértices de rango r en F Demostración Cada vértice de rango r tiene al menos 2 r descendientes. Los nodos de los subárboles de dos nodos en el bosque con el mismo rango son disjuntos. Hay n nodos en total, puede a lo sumo haber n/2 r nodos de rango r. Lema 6.4 Si en algún momento durante la ejecución de σ, w es un descendiente propio de v, entonces el rango de w es estrictamente menor que el rango de v. Demostración Si en algún momento un vértice w es descendiente propio de otro vértice v, lo será hasta que se termine de ejecutar la secuencia (no hay operaciones Find en σ ) y en el bosque resultante F su altura será estrictamente menor. Teorema 6.5 Una secuencia σ de m operaciones de las cuales n 2 son operaciones MakeSet se ejecuta en tiempo O(m G(n)). Demostración Como antes, con q indicaremos el número de operaciones Union y con f el número de operaciones Find. Como cada operación Union y cada operación MakeSet se realiza en tiempo de orden constante y q < n, todas las operaciones MakeSet y Union se realizan en orden O(n). Para acotar el costo de todas las operaciones Find se utiliza una técnica de contabilidad. El costo de ejecutar una sola operación Find se reparte entre la operación misma y algunos vértices en el camino de búsqueda. El costo total se calcula sumando los costos sobre todas las operaciones Find y sobre todos los vértices. Se dividen los rangos de los vértices en F en grupos. Los vértices de rango r se colocan en el grupo G(r). Los vértices con el mayor rango posible, log n. se colocan en el grupo G( log n ) G(n). G(0) = {0, 1} G(1) = {2} G(2) = {3, 4} G(3) = {5, 6,..., 16}... Para los vértices v en el camino de búsqueda de una operación Find(x) (sin contar el propio x), la política para repartir el costo es la siguiente: 13

14 1. Si v es una raíz, o father[v] está en un grupo diferente de v, se le carga una unidad de costo a la operación. 2. Si v y su padre están en el mismo grupo, se le carga una unidad a v Por el Lema 6.4 los vértices en un camino de búsqueda desde un nodo hasta la raíz del árbol crecen estrictamente en rango. Cómo a lo sumo hay G(n) grupos diferentes, ninguna operación Find puede tener costo mayor que G(n). Cada vez que se aplica la segunda regla en un vértice v, se le asigna un nuevo padre que debe tener un rango mayor por el Lema 6.4. Si v está en el grupo g > 0, solamente puede incrementarse su costo F(g) F(g 1) veces por la segunda regla antes de que adquiera un padre en un grupo de rango mayor a su propio rango (el costo de un vértice en el grupo 0 solo puede incrementarse una vez). Cuando pasa a tener un padre en un grupo de rango mayor, nunca más se incrementa su costo porque la segunda regla ya no es aplicable. Para obtener una cota superior de los costos de los vértices, se multiplica el máximo posible costo de un vértice en un grupo por el número de vértices en el grupo. Sea N(g) el número de vértices en el grupo g, por el Lema 6.3: N(g) F(g) r=f(g 1)+1 n/2 r (3) (n/2 F(g 1)+1 ) (1 + 1/2 + 1/4 + ) (4) (n/2 F(g 1)+1 ) 2 (5) = n/2 F(g 1) (6) = n/f(g) (7) El máximo costo para un vértice en el grupo g es menor o igual que F(g) F(g 1), luego el costo máximo de todos los vértices en el grupo g, C(g) resulta C(g) = (F(g) F(g 1)) N(g) (8) n (F(g) F(g 1)) (9) F(g) F(g 1) = n (10) F(g) n (11) Por lo tanto, como no puede haber más de G(n) grupos, el máximo costo asignado a todos los vértices es n G(n). Como el máximo costo asignado a una operación Find es G(n), el máximo costo asignado a todas las operaciones Find es f G(n). Por último, todas las 14

15 operaciones Find se ejecutan en tiempo O((n + f) G(n)). Por todo lo visto, la secuencia σ se ejecuta en tiempo O((n + f) G(n)) y como n + f m en tiempo O(m G(n)). Referencias [AHU74] Alfred V. Aho, J. E. Hopcroft, and Jeffrey D. Ullman. The Design and Analysis of Computer Algorithms. Addison-Wesley, [CSRL01] Thomas H. Cormen, Clifford Stein, Ronald L. Rivest, and Charles E. Leiserson. Introduction to Algorithms. McGraw-Hill Higher Education, [Sed92] Robert Sedgewick. Algorithms in C++. Addison-Wesley, ISBN:

Introducción a la Teoría de Grafos

Introducción a la Teoría de Grafos Introducción a la Teoría de Grafos Flavia Bonomo fbonomo@dc.uba.ar do. Cuatrimestre 009 Árboles Un árbol es un grafo conexo y acíclico (sin ciclos). Un bosque es un grafo acíclico, o sea, una unión disjunta

Más detalles

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

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

Más detalles

ELO320 Estructuras de Datos y Algoritmos. Arboles Binarios. Tomás Arredondo Vidal

ELO320 Estructuras de Datos y Algoritmos. Arboles Binarios. Tomás Arredondo Vidal ELO320 Estructuras de Datos y Algoritmos Arboles Binarios Tomás Arredondo Vidal Este material está basado en: Robert Sedgewick, "Algorithms in C", (third edition), Addison-Wesley, 2001 Thomas Cormen et

Más detalles

Á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 Á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,

Más detalles

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

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

Más detalles

Tema 10- Representación Jerárquica: Tema 10- Representación Jerárquica: Árboles Binarios

Tema 10- Representación Jerárquica: Tema 10- Representación Jerárquica: Árboles Binarios Tema 10- Representación Jerárquica: Árboles Binarios Tema 10- Representación Jerárquica: Árboles Binarios Germán Moltó Escuela Técnica Superior de Ingeniería Informática Universidad Politécnica de Valencia

Más detalles

ÁRBOLES GENERALES Y Y ESTRUCTURAS DE ÍNDICES DEFINICIONES Y REPRESENTACIONES DEFINICIONES Y REPRESENTACIONES. NOMENCLATURA SOBRE ÁRBOLES. DECLARACIÓN Y REPRESENTACIÓN.. CONSTRUCCIÓN.. ÁRBOLES 2-3-4. ÁRBOLES

Más detalles

Estructuras de datos: Árboles binarios de

Estructuras de datos: Árboles binarios de Estructuras de datos: Árboles binarios de búsqueda, Dep. de Computación - Fac. de Informática Universidad de A Coruña Santiago Jorge santiago.jorge@udc.es Árboles binarios de búsqueda, Table of Contents

Más detalles

3. ESTRUCTURAS DE DATOS NO LINEALES

3. ESTRUCTURAS DE DATOS NO LINEALES 3. ESTRUCTURAS DE DATOS NO LINEALES 3.1 Conjuntos 3.2 Árboles 3.3 Grafos 1 3.1 Conjuntos Índice Introducción Especificación del TAD TipoConjunto Implementaciones del TAD TipoConjunto Programación usando

Más detalles

Un grafo G es un par (V,E) donde V es un conjunto (llamado conjunto de vértices) y E un subconjunto de VxV (conjunto de aristas).

Un grafo G es un par (V,E) donde V es un conjunto (llamado conjunto de vértices) y E un subconjunto de VxV (conjunto de aristas). TEMA 5.- GRAFOS 5.1.- DEFINICIONES BÁSICAS Un grafo G es un par (V,E) donde V es un conjunto (llamado conjunto de vértices) y E un subconjunto de VxV (conjunto de aristas). Gráficamente representaremos

Más detalles

Análisis amortizado El plan:

Análisis amortizado El plan: Análisis amortizado El plan: Conceptos básicos: Método agregado Método contable Método potencial Primer ejemplo: análisis de tablas hash dinámicas Montículos agregables (binomiales y de Fibonacci) Estructuras

Más detalles

Integrantes. Leonardo Herrera Cristian Fernandez Jorge A Mondragón. Análisis y Diseño de Algoritmos. Docente Diana Mabel Díaz Herrera.

Integrantes. Leonardo Herrera Cristian Fernandez Jorge A Mondragón. Análisis y Diseño de Algoritmos. Docente Diana Mabel Díaz Herrera. Integrantes Leonardo Herrera Cristian Fernandez Jorge A Mondragón Análisis y Diseño de Algoritmos Docente Diana Mabel Díaz Herrera HeapSort Universidad Piloto de Colombia Facultad de Ingeniería de Sistemas

Más detalles

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

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

Más detalles

VI Colas de prioridad

VI Colas de prioridad VI Colas de prioridad Una cola de prioridad (cat: cua de prioritat; ing: priority queue) es una colección de elementos donde cada elemento tiene asociado un valor susceptible de ordenación denominado prioridad.

Más detalles

Instituto de Computación - Facultad de Ingeniería - Universidad de la República

Instituto de Computación - Facultad de Ingeniería - Universidad de la República Parcial de Programación 2 Julio de 2011 Generalidades: La prueba es individual y sin material. Duración: 3hs. Sólo se contestan dudas acerca de la letra de los ejercicios. Escriba las hojas de un sólo

Más detalles

Ampliación de Estructuras de Datos

Ampliación de Estructuras de Datos Ampliación de Estructuras de Datos Amalia Duch Barcelona, marzo de 2007 Índice 1. Diccionarios implementados con árboles binarios de búsqueda 1 2. TAD Cola de Prioridad 4 3. Heapsort 8 1. Diccionarios

Más detalles

Estructuras de Datos Abstractas en Lenguaje Java

Estructuras de Datos Abstractas en Lenguaje Java Universidad de Santiago de Chile Facultad de Ingeniería Departamento de Ingeniería Industrial Estructuras de Datos Abstractas en Lenguaje Java Listas Enlazadas, Colas, Pilas y Árboles Binarios Creado por

Más detalles

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

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ás detalles

Nota 2. Luis Sierra. Marzo del 2010

Nota 2. Luis Sierra. Marzo del 2010 Nota 2 Luis Sierra Marzo del 2010 Cada mecanismo de definición de conjuntos que hemos comentado sugiere mecanismos para definir funciones y probar propiedades. Recordemos brevemente qué son las funciones

Más detalles

Sorting++ Herman Schinca. Clase 21. 10 de Junio de 2011

Sorting++ Herman Schinca. Clase 21. 10 de Junio de 2011 Sorting++ Herman Schinca Clase 21 10 de Junio de 2011 Recordando Ya vimos 3 algoritmos de ordenamiento basados en la comparación entre elementos: Selection, Insertion y Bubble. Los 3 en peor caso (cuando

Más detalles

Capítulo 12: Indexación y asociación

Capítulo 12: Indexación y asociación Capítulo 12: Indexación y asociación Conceptos básicos Índices ordenados Archivos de índice de árbol B+ Archivos de índice de árbol B Asociación estática Asociación dinámica Comparación entre indexación

Más detalles

Estructuras de datos: Conjuntos disjuntos

Estructuras de datos: Conjuntos disjuntos Estructuras de datos: Dep. de Computación - Fac. de Informática Universidad de A Coruña Santiago Jorge sjorge@udc.es Referencias bibliográficas G. Brassard y T. Bratley. Estructura de datos. En Fundamentos

Más detalles

Árboles AVL. Laboratorio de Programación II

Árboles AVL. Laboratorio de Programación II Árboles AVL Laboratorio de Programación II Definición Un árbol AVL es un árbol binario de búsqueda que cumple con la condición de que la diferencia entre las alturas de los subárboles de cada uno de sus

Más detalles

Resolución de Problemas

Resolución de Problemas Resolución de Problemas con algoritmos Colaboratorio de Computación Avanzada (CNCA) 2015 1 / 27 Contenidos 1 Introducción 2 Elementos de algoritmos Elementos Variables Estructuras de Control Condicionales

Más detalles

Árboles binarios de búsqueda ( BST )

Árboles binarios de búsqueda ( BST ) Árboles binarios de búsqueda ( BST ) mat-151 Alonso Ramírez Manzanares Computación y Algoritmos 24.04.2015 Arbol Binario de Búsqueda Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol

Más detalles

ÁRBOLES BINARIOS 2002. GRUPO # 22 Alumnos: Aguilar Elba Barrios Miguel Camacho Yaquelin Ponce Rodríguez Jhonny

ÁRBOLES BINARIOS 2002. GRUPO # 22 Alumnos: Aguilar Elba Barrios Miguel Camacho Yaquelin Ponce Rodríguez Jhonny ÁRBOLES BINRIOS 2002 GRUPO # 22 lumnos: guilar Elba Barrios Miguel Camacho Yaquelin Ponce Rodríguez Jhonny ESTRUCTURS DE DTOS TEM 6 Estructuras de datos no lineales. Árboles binarios ÍNDICE 6.1. Introducción.

Más detalles

Sistemas de producción y búsqueda de soluciones. Area de Computación e Inteligencia Artificial 1

Sistemas de producción y búsqueda de soluciones. Area de Computación e Inteligencia Artificial 1 Sistemas de producción y búsqueda de soluciones Area de Computación e Inteligencia Artificial 1 Técnicas de búsqueda Resolución de problemas en Inteligencia Artificial. En general, podemos afirmar que

Más detalles

El programa que permite el manejo de la base de datos tiene la siguiente funcionalidad:

El programa que permite el manejo de la base de datos tiene la siguiente funcionalidad: El TAD Diccionario Cuando se usa un conjunto en el diseño de un algoritmo podría no ser necesario contar con operaciones de unión o intersección. A menudo lo que se necesita es simplemente manipular un

Más detalles

Ejemplos de conversión de reales a enteros

Ejemplos de conversión de reales a enteros Ejemplos de conversión de reales a enteros Con el siguiente programa se pueden apreciar las diferencias entre las cuatro funciones para convertir de reales a enteros: program convertir_real_a_entero print

Más detalles

Algoritmos Básicos de Grafos

Algoritmos Básicos de Grafos Universidad Central de Venezuela Facultad de Ciencias Escuela de Computación Lecturas en Ciencias de la Computación ISSN -9 Algoritmos Básicos de Grafos Ernesto Coto ND - Laboratorio de Computación Gráfica

Más detalles

Capítulo 6. ÁRBOLES.

Capítulo 6. ÁRBOLES. 67 Capítulo 6. ÁRBOLES. 6.1 Árboles binarios. Un árbol binario es un conjunto finito de elementos, el cual está vacío o dividido en tres subconjuntos separados: El primer subconjunto contiene un elemento

Más detalles

ALGORITMICA III Capitulo I ANALISIS DE ALGORITMOS

ALGORITMICA III Capitulo I ANALISIS DE ALGORITMOS Universidad Nacional de San Antonio Abad del Cusco Departamento Académico de Informática ALGORITMICA III Capitulo I ANALISIS DE ALGORITMOS Iván Medrano Valencia ANALISIS DE ALGORITMOS Un algoritmo es un

Más detalles

Notas de Clase. Prof. Juan Andrés Colmenares, M.Sc. Instituto de Cálculo Aplicado Facultad de Ingeniería Universidad del Zulia. 21 de febrero de 2004

Notas de Clase. Prof. Juan Andrés Colmenares, M.Sc. Instituto de Cálculo Aplicado Facultad de Ingeniería Universidad del Zulia. 21 de febrero de 2004 Árboles Notas de Clase Prof. Juan Andrés Colmenares, M.Sc. Instituto de Cálculo Aplicado Facultad de Ingeniería Universidad del Zulia 21 de febrero de 2004 Índice 1. Definición 1 2. Términos Básicos 2

Más detalles

Curso 2012-2013 15/10/12. Inteligencia Artificial (30223) Lección 5. Juegos. Índice. Juegos. Los juegos son una forma de entorno multiagente

Curso 2012-2013 15/10/12. Inteligencia Artificial (30223) Lección 5. Juegos. Índice. Juegos. Los juegos son una forma de entorno multiagente Inteligencia Artificial (30223) Lección 5. Juegos Curso 2012-2013 José Ángel Bañares 15/10/2013. Dpto. Informática e Ingeniería de Sistemas. Índice Juegos Decisiones optimas Poda α-β Juegos con información

Más detalles

Algoritmos sobre Grafos

Algoritmos sobre Grafos Sexta Sesión 27 de febrero de 2010 Contenido Deniciones 1 Deniciones 2 3 4 Deniciones sobre Grafos Par de una lista de nodos y una lista de enlaces, denidos a su vez como pares del conjunto de nodos.

Más detalles

Apuntes de Matemática Discreta 7. Relaciones de Orden

Apuntes de Matemática Discreta 7. Relaciones de Orden Apuntes de Matemática Discreta 7. Relaciones de Orden Francisco José González Gutiérrez Cádiz, Octubre de 2004 Universidad de Cádiz Departamento de Matemáticas ii Lección 7 Relaciones de Orden Contenido

Más detalles

Programación Genética

Programación Genética Programación Genética Programación Genética consiste en la evolución automática de programas usando ideas basadas en la selección natural (Darwin). No sólo se ha utilizado para generar programas, sino

Más detalles

Introducción a la Programación en MATLAB

Introducción a la Programación en MATLAB Introducción a la Programación en MATLAB La programación en MATLAB se realiza básicamente sobre archivos M, o M-Files. Se los denomina de esta forma debido a su extensión.m. Estos archivos son simple archivos

Más detalles

14. ÁRBOLES. 14.1 Fundamentos y terminología básica

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

Más detalles

Apuntes de Algoritmos y Estructuras de Datos, Programación III, Fac. de Informática UNLP. Alejandro Santos. 7 de agosto de 2012. 1.

Apuntes de Algoritmos y Estructuras de Datos, Programación III, Fac. de Informática UNLP. Alejandro Santos. 7 de agosto de 2012. 1. Apuntes de Algoritmos y Estructuras de Datos, Programación III, Fac. de Informática UNLP Índice Alejandro Santos 7 de agosto de 2012 1. Introducción 4 2. Tiempo de Ejecución 5 2.1. Análisis Asintótico

Más detalles

LINUX - El intérprete de órdenes II

LINUX - El intérprete de órdenes II LINUX - El intérprete de órdenes II Objetivos: Se pretende introducir al alumno en el uso del intérprete de órdenes bash de LINUX. Ejecución de órdenes en el intérprete de órdenes Orden simple Como ya

Más detalles

Clase 32: Árbol balanceado AVL

Clase 32: Árbol balanceado AVL Clase 32: Árbol balanceado AVL http://computacion.cs.cinvestav.mx/~efranco @efranco_escom efranco.docencia@gmail.com (Prof. Edgardo A. Franco) 1 Contenido Problema de los árboles binarios de búsqueda Variantes

Más detalles

CLASE # 5 TÉCNICAS DE CAJA BLANCA

CLASE # 5 TÉCNICAS DE CAJA BLANCA CLASE # 5 TÉCNICAS DE CAJA BLANCA 750105M - TÉCNICAS DE PRUEBAS DE SOFTWARE INGENIERÍA DE SISTEMAS Y COMPUTACIÓN UNIVERSIDAD DEL VALLE SEMESTRE 2013A - DOCENTE BEATRIZ FLORIAN GAVIRIA Basado Parcialmente

Más detalles

Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 7: VALIDACIÓN

Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 7: VALIDACIÓN Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 7: VALIDACIÓN TÉCNICAS DE PRUEBA DEL SOFTWARE Introducción Aspectos psicológicos de las pruebas Flujo de información de la prueba

Más detalles

EJERCICIOS RESUELTOS PROGRAMACIÓN III

EJERCICIOS RESUELTOS PROGRAMACIÓN III EJERCICIOS RESUELTOS PROGRAMACIÓN III Curso 2008 2009 Ejercicios resueltos de programación 3 Tema 3. Notación asintótica. Alumna: Alicia Sánchez Centro: UNED-Las Rozas (Madrid) El índice de los ejercicios

Más detalles

Programación de Sistemas

Programación de Sistemas Programación de Sistemas Algoritmos de Ordenación Índice Por qué es importante la ordenación? Un par de ejemplos InsertionSort QuickSort Para cada uno veremos: En qué consisten, Casos extremos Eficiencia

Más detalles

Manual del Modelizador. 28 de enero de 2009

Manual del Modelizador. 28 de enero de 2009 Índice de contenidos Introducción... 1 Proceso de ejecución de modelos... 1 Origen de datos... 3 Detalles técnicos... 3 Lenguaje de programación... 3 Estructura de los modelos... 3 Biblioteca de clases...

Más detalles

Analisis de algoritmos

Analisis de algoritmos Analisis de algoritmos Eficiencia Es la capacidad de disponer de un recurso. En el caso de los algoritmos, la eficiencia se logra haciendo el mejor uso posible de los recursos del sistema. Recursos Qué

Más detalles

Capítulo V Operaciones Booleanas

Capítulo V Operaciones Booleanas 85 Capítulo V Operaciones Booleanas 5.1 Introducción Es muy posible que en muchos casos sea necesario comparar dos objetos y determinar cuál es su parte común. Esto implica intersectar los dos objetos

Más detalles

TAD Lineales: Pila, Cola y Lista

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

Más detalles

Descripción inicial del sistema. Descripción final del sistema. Estado 1 Estado 2 Estado n

Descripción inicial del sistema. Descripción final del sistema. Estado 1 Estado 2 Estado n Búsqueda en Inteligencia Artificial Fernando Berzal, berzal@acm.org Búsqueda en I.A. Introducción Espacios de búsqueda Agentes de búsqueda Uso de información en el proceso de búsqueda Búsqueda sin información

Más detalles

Evaluación de Algoritmos de Ruteo de Paquetes en Redes de Computadoras. Fax: 54-2652-430224 Fax: 34-91-3367426

Evaluación de Algoritmos de Ruteo de Paquetes en Redes de Computadoras. Fax: 54-2652-430224 Fax: 34-91-3367426 Evaluación de Algoritmos de Ruteo de Paquetes en Redes de Computadoras Berón, Mario Marcelo Gagliardi, Edilma Olinda Departamento de Informática Facultad de Ciencias Físico, Matemáticas y Naturales Universidad

Más detalles

Árboles de Búsqueda Binaria. Agustín J. González ELO-320: Estructura de Datos y Algoritmos

Árboles de Búsqueda Binaria. Agustín J. González ELO-320: Estructura de Datos y Algoritmos Árboles de Búsqueda Binaria Agustín J. González ELO-320: Estructura de Datos y Algoritmos 1 Introducción Los árboles de búsqueda son estructuras de datos que soportan las siguientes operaciones de conjuntos

Más detalles

árbol como un conjunto de nodos y líneas

árbol como un conjunto de nodos y líneas ÁRBOLES CAPÍTULO 6 ÁRBOLES Desde el punto de vista conceptual, un árbol es un objeto que comienza con una raíz (root) y se extiende en varias ramificaciones o líneas (edges), cada una de las cuales puede

Más detalles

Estructura de datos Tema 6: Tablas de dispersión (hashing)

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

Más detalles

PRÁCTICA No. 13 ÁRBOL BINARIO DE BÚSQUEDA

PRÁCTICA No. 13 ÁRBOL BINARIO DE BÚSQUEDA INSTITUTO POLITÉCNICO NACIONAL SECRETARIA ACADÉMICA DIRECCIÓN DE EDUCACIÓN SUPERIOR ESIME CULHUACAN NOMBRE ALUMNO: FECHA DIA MES AÑO INGENIERÍA EN COMPUTACIÓN ASIGNATURA 1. Objetivo Apellido paterno ESTRUCTURAS

Más detalles

Estructura de datos Tema 3: El TAD Lista lineal. Universidad de Valladolid. Departamento de informática. Campus de Segovia

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

Más detalles

Primer Parcial de Programación 3 (1/10/2009)

Primer Parcial de Programación 3 (1/10/2009) Primer Parcial de Programación (/0/009) Instituto de Computación, Facultad de Ingeniería Este parcial dura horas y contiene carillas. El total de puntos es 0. En los enunciados llamamos C* a la extensión

Más detalles

Búsqueda heurística Prof. Constantino Malagón

Búsqueda heurística Prof. Constantino Malagón Búsqueda heurística Prof. Constantino Malagón Area de Computación e Inteligencia Artificial 1 Búsqueda heurística Los métodos de búsqueda heurística disponen de alguna información sobre la proximidad de

Más detalles

Reconocímíentes y Agradecimientos 5 Indice 6 Prólogo 11

Reconocímíentes y Agradecimientos 5 Indice 6 Prólogo 11 índice Reconocímíentes y Agradecimientos 5 Indice 6 Prólogo 11 Capítulo 1: Introducción a c/e++ Introducción a C/C++ 13 Introducción 14 Primeros Pasos en C/C++ 15 Mi Primer Programa 15 Bibliotecas 17 Archivos

Más detalles

Curso de Visual Basic 6.0 - Lección 1 Area Interactiva - www.areaint.com

Curso de Visual Basic 6.0 - Lección 1 Area Interactiva - www.areaint.com LECCIÓN 6 En esta lección vamos a familiarizarnos con las estructuras de repetición, las cuales nos sirven para realizar una misma instrucción un número determinado de veces o indeterminado dependiendo

Más detalles

Árboles balanceados. Alonso Ramírez Manzanares Computación y Algoritmos 28.04.2015 1. Thursday, April 30, 15

Árboles balanceados. Alonso Ramírez Manzanares Computación y Algoritmos 28.04.2015 1. Thursday, April 30, 15 Árboles balanceados Alonso Ramírez Manzanares Computación y Algoritmos 28.04.2015 1 Árboles balanceados Los algoritmos en árboles binarios de búsqueda dan buenos resultados en el caso promedio pero el

Más detalles

3. Consideremos el puzzle-8 descrito en clase y sea el estado objetivo, como de costumbre,

3. Consideremos el puzzle-8 descrito en clase y sea el estado objetivo, como de costumbre, E.T.S.I. INFORMÁTICA 4º CURSO. INTELIGENCIA ARTIFICIAL. UNIVERSIDAD DE MÁLAGA Dpto. Lenguajes y Ciencias de la Computación RELACIÓN DE PROLEMAS. ÚSQUEDAS CON ÁROL.. Un móvil puede situarse en los nodos

Más detalles

Ingeniería Técnica en Informática de Gestión

Ingeniería Técnica en Informática de Gestión Departamento de Informática Universidad Carlos III de Madrid Ingeniería Técnica en Informática de Gestión Inteligencia Artificial Febrero 2006. 1 a parte Normas generales del examen El tiempo para realizar

Más detalles

GRAFOS. Prof. Ing. M.Sc. Fulbia Torres

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

Más detalles

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS 1 NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Árboles Binarios y Árboles Binarios Ordenados 2 Contenido Árboles binarios Iteradores Árboles binarios ordenados 3 Árboles binarios Algunas definiciones para

Más detalles

Procesadores de lenguaje Tema 5 Comprobación de tipos

Procesadores de lenguaje Tema 5 Comprobación de tipos Procesadores de lenguaje Tema 5 Comprobación de tipos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Sistemas de tipos. Expresiones de tipo. Equivalencia de tipos. Sobrecarga,

Más detalles

CAPÍTULO 2 METODOS PROBABILÍSTICOS

CAPÍTULO 2 METODOS PROBABILÍSTICOS CAPÍTULO 2 METODOS PROBABILÍSTICOS La planeación de movimientos tiene aplicaciones en muchas áreas tales como la robótica, sistemas de realidad virtual y diseño asistido por computadora. Aunque muchos

Más detalles

Capítulo 7 RAMIFICACIÓN Y PODA

Capítulo 7 RAMIFICACIÓN Y PODA Capítulo 7 RAMIFICACIÓN Y PODA 7.1 INTRODUCCIÓN Este método de diseño de algoritmos es en realidad una variante del diseño Vuelta Atrás estudiado en el capítulo anterior. Sin embargo, su particular importancia

Más detalles

Cómo rastrear objetos distribuidos. Rajmohan Rajaraman. Universidad de Northeastern

Cómo rastrear objetos distribuidos. Rajmohan Rajaraman. Universidad de Northeastern Cómo rastrear objetos distribuidos Rajmohan Rajaraman Universidad de Northeastern 1 El problema del rastreo de datos Un esquema de rastreo de datos. o Encontrar una copia (cerca) del objeto solicitado.

Más detalles

Estructura de Datos. TDA: Listas. Primer Semestre, 2010. Indice. Tipos de estructura de datos lineales

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

Más detalles

Práctico 5. Definiciones Inductivas - Segunda Parte -

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

Más detalles

TEORIA DE GRAFICAS INTRODUCCIÓN CONCEPTOS BÁSICOS DE LA TEORIA DE GRAFOS

TEORIA DE GRAFICAS INTRODUCCIÓN CONCEPTOS BÁSICOS DE LA TEORIA DE GRAFOS TEORIA DE GRAFICAS INTRODUCCIÓN La teoría de gráficas o teoría de grafos es aplicada en una gran cantidad de áreas tales como ciencias sociales, lingüística, ciencias físicas, ingeniería de comunicación,

Más detalles

Arboles Binarios de Búsqueda

Arboles Binarios de Búsqueda Arboles Binarios de Búsqueda Algoritmos y Estructuras de Datos Departamento de Electricidad y Electrónica (UPV/EHU) Arboles Binarios de Búsqueda p.1/52 Arboles Binarios Arbol binario: árbol ordenado de

Más detalles

SEMINARIO DE ESPECIFICACIONES ALGEBRAICAS

SEMINARIO DE ESPECIFICACIONES ALGEBRAICAS Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º, Año 2004/2005 SEMINARIO DE ESPECIFICACIONES ALGEBRAICAS Contenidos: 1. Descripción general de Maude 2. Comandos básicos 3. Formato

Más detalles

Eligiendo algoritmos: El caso de ordenamiento

Eligiendo algoritmos: El caso de ordenamiento Eligiendo algoritmos: El caso de ordenamiento Horst H. von Brand * Universidad Técnica Federico Santa María Departamento de Informática Valparaíso, Chile vonbrand@inf.utfsm.cl Abstract The problem of sorting

Más detalles

Problemas de satisfacción de restricciones. Javier Ramírez Rodríguez Departamento de Sistemas Universidad Autónoma Metropolitana

Problemas de satisfacción de restricciones. Javier Ramírez Rodríguez Departamento de Sistemas Universidad Autónoma Metropolitana Problemas de satisfacción de restricciones Javier Ramírez Rodríguez Departamento de Sistemas Universidad Autónoma Metropolitana La programación con restricciones (PR) ha generado gran expectación entre

Más detalles

TEMA 2: Grupos. El grupo Simétrico.

TEMA 2: Grupos. El grupo Simétrico. Álgebra y Estructuras Discretas Grupo B de la Ingeniería Técnica de Sistemas TEMA 2: Grupos. El grupo Simétrico. 1. Definición de Grupo. Propiedades Básicas. Definición 1. Dado un conjunto no vacío G,

Más detalles

Parte II: Estructuras de datos y algoritmos

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

Más detalles

Estructuras de Datos y Algoritmos Tema 6. Análisis de algoritmos

Estructuras de Datos y Algoritmos Tema 6. Análisis de algoritmos Contenidos 1 Estructuras de Datos y Algoritmos Tema 6. Análisis de algoritmos Noción de algoritmo Eficiencia de algoritmos Complejidad de algoritmos Análisis de algoritmos Iván Cantador Silvia Teresita

Más detalles

Árboles binarios de búsqueda

Árboles binarios de búsqueda Clase 27 Árboles binarios de búsqueda Árboles binarios de búsqueda En la clase anterior, definimos el concepto de árbol binario de búsqueda como un árbol binario de nodos que contienen una clave ordenada

Más detalles

Bachillerato en Ingeniería del software

Bachillerato en Ingeniería del software Estructuras de datos 2 NIVEL: SÉTIMO Cuatrimestre Horas Teóricas : 2 Horas de Trabajo individual: 7 Horas Laboratorio: 3 Créditos: 4 1.0. DESCRIPCIÓN DEL CURSO Este curso continúa el estudio de estructuras

Más detalles

Almacenamiento y Recuperación de la Información

Almacenamiento y Recuperación de la Información Almacenamiento y Recuperación de la Información Estructuras basicas de archivos Archivos Secuenciales 2do Semestre 2005 Wenceslao Palma M. www.inf.utfsm.cl/~wpalma/ari Una estructura

Más detalles

Tema 3: Problemas de Satisfacción de Restricciones

Tema 3: Problemas de Satisfacción de Restricciones Tema 3: Problemas de Satisfacción de Restricciones Universidad de Granada Tema 3: Satisfacción de Restricciones Contenido Problemas de satisfacción de restricciones Métodos de búsqueda Búsqueda local para

Más detalles

Programacion Genetica

Programacion Genetica Programacion Genetica PG a Vuelo de Pajaro Desarrollado: EEUU en los 90s Pioneros: J. Koza pero Generalmente aplicado a: prediccion, clasificacion Propiedades generales: compite con NN y similares necesita

Más detalles

Apuntes de Matemática Discreta 14. Grafos

Apuntes de Matemática Discreta 14. Grafos Apuntes de Matemática Discreta 14. Grafos Francisco José González Gutiérrez Cádiz, Octubre de 2004 Universidad de Cádiz Departamento de Matemáticas ii Lección 14 Grafos Contenido 14.1 Generalidades.....................................

Más detalles

Tema 7: Optimización sobre Redes Muchos de los problemas de Investigación Operativa pueden modelizarse y resolverse sobre un grafo: conjunto de

Tema 7: Optimización sobre Redes Muchos de los problemas de Investigación Operativa pueden modelizarse y resolverse sobre un grafo: conjunto de Tema 7: Optimización sobre Redes Muchos de los problemas de Investigación Operativa pueden modelizarse y resolverse sobre un grafo: conjunto de vértices o nodos conectados con arcos y/o aristas. Diseñar

Más detalles

Comencemos a programar con. Entrega 10. Estructuras de Control II

Comencemos a programar con. Entrega 10. Estructuras de Control II Comencemos a programar con VBA - Access Entrega 10 Estructuras de Control II Eduardo Olaz 10-2 Estructuras de Control, segunda parte Las Instrucciones While - - - Wend La estructura de bucle For Contador

Más detalles

Carrera: Licenciatura en Sistemas. Materia: Programación de computadoras. Profesor Asociado: Cdor. Héctor A. Carballo

Carrera: Licenciatura en Sistemas. Materia: Programación de computadoras. Profesor Asociado: Cdor. Héctor A. Carballo Carrera: Licenciatura en Sistemas Materia: Programación de computadoras Profesor Asociado: Cdor. Héctor A. Carballo Profesor Adjunto: Ing. Obadiah O. Alegbe Año: 2011 Cuatrimestre: Anual 1- Fundamentación

Más detalles

Metodología de la Programación II. Recursividad

Metodología de la Programación II. Recursividad Metodología de la Programación II Recursividad Objetivos Entender el concepto de recursividad. Conocer los fundamentos del diseño de algoritmos recursivos. Comprender la ejecución de algoritmos recursivos.

Más detalles

INTRODUCCIÓN. Estructura de Datos Tipos Abstractos de Datos (TAD S) Profs. Lorna Figueroa M. Mauricio Solar F. UTFSM 1 / 2008

INTRODUCCIÓN. Estructura de Datos Tipos Abstractos de Datos (TAD S) Profs. Lorna Figueroa M. Mauricio Solar F. UTFSM 1 / 2008 INTRODUCCIÓN Estructura de Datos Tipos Abstractos de Datos (TAD S) Para poder obtener un programa que resuelva un problema dado, son necesarios varios pasos : La formulación y especificación del problema

Más detalles

Evaluación de la disponibilidad de los servicios desplegados sobre Volunteer Computing

Evaluación de la disponibilidad de los servicios desplegados sobre Volunteer Computing Evaluación de la disponibilidad de los servicios desplegados sobre Volunteer Computing Antonio Escot Praena Enginyeria Informàtica i Tècnica de Gestió Dirección del TFC Ángel A. Juan, PhD. Eva Vallada

Más detalles

Árbol binario. Elaborado por Ricardo Cárdenas cruz Jeremías Martínez Guadarrama Que es un árbol Introducción

Árbol binario. Elaborado por Ricardo Cárdenas cruz Jeremías Martínez Guadarrama Que es un árbol Introducción Árbol binario Elaborado por Ricardo Cárdenas cruz Jeremías Martínez Guadarrama Que es un árbol Introducción Un Árbol Binario es un conjunto finito de Elementos, de nombre Nodos de forma que: El Árbol Binario

Más detalles

Introducción al Análisis Complejo

Introducción al Análisis Complejo Introducción al Análisis Complejo Aplicado al cálculo de integrales impropias Complementos de Análisis, I.P.A Prof.: Federico De Olivera Leandro Villar 13 de diciembre de 2010 Introducción Este trabajo

Más detalles

" ##$ % & '( % & )*+),$ -##$ -!- $! "-./ - 0WebClass1-2

 ##$ % & '( % & )*+),$ -##$ -!- $! -./ - 0WebClass1-2 ! " ##$ % & '( % & )*+),$ -##$ -!- $! "-./ - 0WebClass1-2!" # 345 637 6$5!!!89 & 5 :8-7 & & ;(< 8 $ + - 8 : #= ' 7= : 0 & 0 &- =.> = ;(("9 &? WebClass - 1@#$% &'A1 ;(< 8- ( ) * *+ " $ % B9 5 5 # :!- WebClass

Más detalles

Ingeniería en Informática

Ingeniería en Informática Departamento de Informática Universidad Carlos III de Madrid Ingeniería en Informática Aprendizaje Automático Junio 2007 Normas generales del examen El tiempo para realizar el examen es de 3 horas No se

Más detalles

Particiones binarias del espacio (BSP)

Particiones binarias del espacio (BSP) (BSP) Contenido 1. Introducción. 2. Quadtrees. 3. Árboles BSP. 4. Aplicación al algoritmo del pintor. 5. Construcción de un árbol BSP. 6. Conclusiones. Contenido 1. Introducción. 2. Quadtrees. 3. Árboles

Más detalles

Complejidad - Problemas NP-Completos. Algoritmos y Estructuras de Datos III

Complejidad - Problemas NP-Completos. Algoritmos y Estructuras de Datos III Complejidad - Problemas NP-Completos Algoritmos y Estructuras de Datos III Teoría de Complejidad Un algoritmo eficiente es un algoritmo de complejidad polinomial. Un problema está bien resuelto si se conocen

Más detalles

Profesorado de Informática Ciencias de la Computación INET- DFPD Matemática I - Matemática Discreta usando el computador Ing. Prof.

Profesorado de Informática Ciencias de la Computación INET- DFPD Matemática I - Matemática Discreta usando el computador Ing. Prof. Árboles Profesorado de Informática Ciencias de la Computación INET- DFPD Matemática I - Matemática Discreta usando el computador Ing. Prof. Paula Echenique Una de las estructuras de datos más importantes

Más detalles

Estructura de datos (arreglos) Vectores y Matrices

Estructura de datos (arreglos) Vectores y Matrices Apunte del curso PROGRAMACIÓN (FI-UBA,, J. T. P. Ing. Z. CATALDI; A.T.P. Srta. A Pauluzzi, Sr. C Corradino, Sr. F Gómez Estructura de datos (arreglos) Hasta aquí se han visto distintos tipos de estructuras

Más detalles