9. Árboles. Una estructura de datos con una relación es una árbol si y sólo:

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

Download "9. Árboles. Una estructura de datos con una relación es una árbol si y sólo:"

Transcripción

1 9. Árboles Una estructura de datos con una relación es una árbol si y sólo: La relación es conexa, es decir, existe una composición de relaciones entre cualquier par de nodos en el árbol. No admite ciclos. Definición: Un árbol T es un conjunto finito de uno o más nodos tal que: (i) hay un nodo especialmente llamado raíz R; (ii) los demás nodos están particionados en n 0 conjuntos desconectados T 1... T n, donde cada uno de estos conjuntos es un árbol, así llamados subárboles de la raíz. sí: Padre: El nodo inmediatamente antecesor Hijos: nodos inmediatamente sucesor Grado: número de hijos de un nodo Nivel: distancia a la raíz de un nodo Profundidad: nivel máximo de un árbol osque: árboles desconectados Formas de visualizar un árbol son: Gráfico: T = {R} T 1... T n T i T n = (2) D E F G H I J K L M Listas: (((E(K,L),F),(G),D(H(M),I,J))) 50

2 Data G 0 0 D F 0 0 H 0 M 0 0 E 0 K 0 L 0 0 I 0 J 0 La representación es esencialmente por listas encadenadas Teoremas: El árbol es conexo pero al eliminar un arco, se convierte en no conexo El árbol no tiene ciclos y es conexo, arcos = nodos 1 l agregar un arco a un árbol se crea un ciclo. 10. Árbol inario Definición: Un árbol binario es un número finito de nodos que es vacío o consiste de una raíz con dos árboles binarios desconectados llamados subárbol izquierdo y derecho. Se llaman los nodos que no tienen hijos, nodos hojas o terminales. Nodos con uno o dos hijos son llamados nodos internos. 51

3 structuretree(item) declare NEW () btree M KET REE(btree, item, btree) btree LHILD(btree) btree RHILD(btree) btree DT (btree) item IS IN(btree, item) boolean IS EMP T Y (btree) boolean for all bt 1, bt 2 T REE, i, i 1, i 2 item let DT (NEW ()) ::= error DT (MKET REE(bt 1, i, bt 2 )) ::= i IS EMP T Y (NEW ()) ::= true IS EMP T Y (MKET REE(bt 1, i, bt 2 )) ::= false IS IN(NEW (), i) ::= false IS IN(MKET REE(bt 1, i 1, bt 2 ), i 2 ) ::= if i 1 = i 2 then true else IS IN(bt 1, i 2 ) IS IN(bt 2, i 2 ) LHILD(NEW ()) ::= NEW () LHILD(MKET REE(bt 1, i, bt 2 )) ::= bt 1 RHILD(NEW ()) ::= NEW () RHILD(MKET REE(bt 1, i, bt 2 )) ::= bt 2 Lema: El máximo número de nodos en un nivel i de un árbol binario es 2 i, i 0; y el máximo número de nodos en un árbol binario de profundidad k es 2 k+1 1, k 0. Prueba Por inducción ase inducción: La raíz es el único nodo en el nivel 0. Por lo tanto, el máximo número de nodos en el nivel i = 0 es 2 0 = 2 i. Hipótesis de inducción: Para todo j, 0 j i, el máximo número de nodos en el nivel j es 2 j. Paso de inducción: El máximo número de nodos en el nivel i 1 es 2 i 1, por la hipótesis de inducción. Debido a que cada nodo del árbol tiene como máximo grado 2, el número de nodos máximos en el nivel i es 2 veces el máximo número de nodos en el nivel i 1 o 2 i. El máximo número de nodos n en un árbol binario de profundidad k es la sumatoria del máximo número de nodos en cada nivel: k n = 2 i = 2 k+1 1 i=0 Lema: Por cada árbol binario no vacío T, si n es el número de nodos terminales (hojas) y m es el número de nodos de grado 2, entonces n = m + 1. Prueba: Sea l el número de nodos de grado uno, entonces el número total de nodos N en el árbol es N = n + m + l. Todos los nodos en el árbol excepto por la raíz tienen un arco de llegada. Entonces, N es igual al número de arcos + 1. También, todo arco emana de un nodo de grado uno o de grado dos. sí: = l + 2m. Por lo tanto N = 1 + l + 2m. Substrayendo N = 1 + l + 2m de N = n + m + l nos queda que n = m

4 10.1. Representación por arreglos Un árbol binario se representa en un arreglo del siguiente modo: si un nodo ocupa la posición i, entonces su hijo izquierdo ocupa la posición 2i y su hijo derecho la posición 2i + 1. Si un árbol es completo con n nodos, por cada nodo i, 1 i n, tenemos: PRENT(i) está localizado en i/2 si i 1. uando i = 1, i es la raíz y no tiene padre. LHILD(i) está en 2i si 2i n. Si 2i > n entonces no tiene hijo izquierdo. RHILD(i) está en 2i + 1 si 2i + 1 n. Si 2i + 1 > n, entonces no tiene hijo derecho. Esta forma de representación no es muy usada por problemas de pérdida de espacio Representación por punteros Usando punteros, cada nodo es un registro con tres campos: el dato, el puntero al hijo izquierdo y el puntero al hijo derecho. aminamiento en un árboles binario T : Procedure IN ORDER(T ) if T nil do [ call IN ORDER(LHILD(T )) print(dt(t)) call IN ORDER(RHILD(T )) ] end INORDER Procedure P REORDER(T ) if T nil do [ print(dt(t)) call P REORDER(LHILD(T )) call P REORDER(RHILD(T )) ] end P REORDER Procedure P OST ORDER(T ) if T nil do [ call P OST ORDER(LHILD(T )) call P OST ORDER(RHILD(T )) print(dt(t)) ] end P OST ORDER Si T es un árbol binario con raíz de n nodos, el caminamiento en el árbol toma Θ(n). Sea T (n) el tiempo que toma el recorrido de un árbol binario de n nodos. El menor tiempo posible es el de un árbol vacío T (0) = c para alguna constante positiva c. Para n > 0, suponga que la llamada al recorrido ocurrió en un nodo x raíz con k nodos en el subárbol izquierdo y n k 1 hijos en el subárbol derecho. El tiempo de recorrido es T (n) = T (k)+t (n k 1)+dparaalgunaconstantepositivad que refleja el tiempo de ejecución en el nodo raíz (o sea, el tiempo de las llamadas recursivas esencialmente). Provemos que T (n) = (c+d)n+c. Para n = 0, nosotros tenemos que (c+d)0+c = c = T (0). 53

5 Para n > 0 tenemos que: T (n) = T (k) + T (n k 1) + d = ((c + d)k + c) + ((c + d)(n k 1) + c) + d = (c + d)n + c (c + d) + c + d = (c + d)n + c (3) Esto demuestra que T (n) = (c + d)n + c y esto es Θ(n) Árboles inarios de úsqueda Un árbol binario de búsqueda es un árbol binario donde la raíz es siempre mayor que los nodos del subárbol izquierdo y menor que todos los nodos del subárbol derecho. structuretree(item) declare NEW () bbtree M T REE(bbtree, item, bbtree) btree IN SERT (item, bbtree) bbtree IS EMP T Y (btree) boolean IS IN(bbtree, item) boolean MINIMUM(bbtree) item MXIMUM(bbtree) item for all bt 1, bt 2 T REE, i, i 1, i 2 item let INSERT (i, NEW ()) ::= MT REE(NEW (), i, NEW ()) INSERT (i, MT REE(bbt 1, i, bbt 2 )) ::= MT REE(bbt 1, i, bbt 2 ) INSERT (i, MT REE(bbt 1, i 2, NEW ())) ::= if i > i 2 then MT REE(bbt 1, i 2, MT REE(NEW (), i, NEW ())) else MT REE(INSERT (i, bbt 1 ), i 2, NEW ()) INSERT (i, MT REE(NEW (), i 2, bbt 2 )) ::= if i < i 2 then MT REE(MT REE(NEW (), i, NEW ()), i 2, bbt 2 ) else MT REE(NEW (), i 2, INSERT (i, bbt 1 )) INSERT (i, MT REE(bbt 1, i 2, bbt 2 )) ::= if i < i 2 then MT REE(INSERT (i, bbt 1 ), i 2, bbt 2 ) else MT REE(bbt 1, i 2, INSERT (i, bbt 1 )) IS EMP T Y (NEW ()) ::= true IS EMP T Y (MT REE(bbt 1, i, bbt 2 )) ::= false IS IN(NEW (), i) ::= false IS IN(MT REE(bbt 1, i 1, bbt 2 ), i 2 ) ::= if i 1 = i 2 then true else if i 2 < i 1 then IS IN(bt 1, i 2 ) else IS IN(bt 2, i 2 ) MINIMUM(NEW ()) ::= error MINIMUM(MT REE(NEW (), i, bbt 2 )) ::= i MINIMUM(MT REE(bbt 1, i, bbt 2 )) ::= MINIMUM(bbt 1 ) MXIMUM(NEW ()) ::= error MXIMUM(MT REE(bbt 1, i, NEW ())) ::= i MXIMUM(MT REE(bbt 1, i, bbt 2 )) ::= MXIMUM(bbt 2 ) 54

6 Los algoritmos de árboles binarios de búsqeuda son: úsqueda: Procedure USR(N, T ) // N es el valor buscado // T es la raíz del árbol binario de búsqueda if T nil do [ if N = DT (T ) then return T else if N < DT (T ) then return USR(N, LHILD(T )) else USR(N, RHILD(T )) ] else return no se encontró end USR Procedure USR(N, T ) // no recursivo // N es el valor buscado // T es la raíz del árbol binario de búsqueda p := T while p nil do [ if N = DT (p) then return p else if N < DT (p) then p := LHILD(p) else p := RHILD(p) ] return no se encontró end USR En el peor caso, la búsqueda llega hasta la hoja de unárbol pasando por un camino desde la raíz hata la hoja, es decir, es un camino de largo h, con h siendo la profundidad. Mínimo y Máximo: Procedure MINIMUM(x) // x nodo del árbol binario de búsqueda while LHILD(x) nil do [ x := LHILD(x) ] return x end MINIMUM Procedure MXIMUM(x) // x es un nodo del árbol binario de búsqueda while RHILD(x) nil do [ x := RHILD(x) ] return x end MXIMUM mbos lgoritmos tienen complejidad O(h) ya que ambos siguen el camino desde la raíz a la hoja más izquierda o derecha del árbol. Sucesor y Predecesor: 55

7 Procedure SU ESSOR(x) // x es un nodo en el árbol //P RENT (x) obtiene el padre de x if RHILD(x) nil then return MINIMUM(RHILD(x)) y := P RENT (x) while y nil and x = RHILD(y) do [ x := y y := P RENT (y) ] return y end SU ESSOR Si un nodo x tiene un subárbol derecho, el sucesor y es el mínimo valor del subárbol derecho. Si un nodo no tiene subárbol derecho y tiene sucesor y, entonces, el sucesor y es el menor ancestor de x cuyo hijo izquierdo es también un ancestor de x. La complejidad del algoritmo es O(h) porque sigue el camino hacia una hoja del subárbol derecho o sigue hacia arriba el camino hasta la raíz El algoritmo P redecessor(x) es simétrico y con el mismas complejidad. Insertar y orrar: Procedure INSERT R(P, T ) // P es el nodo a insertar // T es la raíz del árbol binario de búsqueda if DT (T ) = DT (P ) then return existe else if DT (P ) < DT (T ) then [ if LHILD(T ) = nil then [ LHILD(T):= P return ] else IN SERT R(P, LHILD(T ))] else if RHILD(T ) = nil then[ RHILD(T):= P return ] else IN SERT R(P, RHILD(T )) end INSERT R En el peor caso, la inserción en un árbol se hace en un nodo hoja, lo que queda dado por la profundidad del árbol O(h)antes de insertar. Ojo, al insertar, esta profundidad puede variar. 56

8 Procedure DELET E(P, T ) // P es el nodo a eliminar // T es la raíz del árbol binario de búsqueda if LHILD(P ) = nil and RHILD(P ) = nil then y := P else y := SUESSOR(P ) if LHILD(y) nil then x := LHILD(y) else x := RHILD(y) if x nil then [ P RENT (x) := P RENT (y) if P RENT (y) = nil then T := x else if y = LHILD(P RENT (y)) then LHILD(P RENT (y)) := x else RHILD(P RENT (y)) := x if y x then DT(P) := DT(y) copia de información de punteros return y end DELET E Para borrar se consideran 3 casos. Si P no tiene hijos, modifique el padre de P para reemplazar P por nil como su hijo. N N H T H T L R U D K M P I J L R U D K I J 57

9 Si P tiene sólo un hijo, se divide P haciendo un nuevo enlace entre su hijo y su padre. N N H T H T L R U D K M P I L R U D I M P J J Finalmente, si el nodo tiene dos hijos, se divide el sucesor de P, y, el cual no tiene hijo izquierdo y se reemplaza la clave de P y sus punteros con la clave de y y sus información de punteros. N N H T I T L R U D K M P I L R U D K M P J J Problema: La eficiencia de un método depende de que el árbol de búsqueda esté balanceado. Entonces, cómo mantener el árbol balanceado? Definición: en un árbol de búsqueda balanceado (VL) la profundidad del subárbol izquierdo es igual a la profundidad del subárbol derecho ±1. su vez, esta profundidad es satisfecha recursivamente por los subárboles. Por ejemplo: 58

10 M H T J R U D P Supongamos que tenemos un árbol binario de búsqueda balanceado y le insertamos un nuevo nodo. El caso simple es cuando el árbol continua siendo balanceado. El problema sucede cuando al insertar el nodo, se desbalancea el árbol. Eso sucede en dos caso posibles: La solución es rotar el árbol una vez insertado el nodo. En el primer caso, la rotación es simple y se hace en el sentido contrario al desbalanceo. El segundo caso, es necesario hacer dos rotaciones ya que el desbalanceo se produce en el sentido contrario a la inserción: 59

11 + D D + En ambos casos, los árboles resultantes mantienen la profundidad inicial. Otra situación a considerar es al borrar un nodo de un árbol que está balanceado y que se desbalancea. D D l igual que para inserción se deben realizar rotaciones. diferencia de cuando se inserta, sin embargo, los árboles resultantes pueden cambiar su profundidad y por lo tanto, no se puede garantizar que el balanceo del subárbol mantenga el rbol que lo contenga balanceado. En resumen: l insertar: 1. usar búsqueda binaria para ver donde insertar, e insertar el nodo 2. desde allí hacia arriba, chequear donde ocurre el desbalanceo. 3. hacer la rotación adecuada. l eliminar: 1. borrar el nodo 2. ubicar punto de desbalanceo (único si existe) 3. hacer la rotactión correspondiente 60

12 4. si cambió profundidad volver al punto 2 Por ejemplo, en la siguiente figura, al ingresar la clave 20 se producen dos desbalances. La rotación sobre el nodo con valor 11 soluciona sólo un debalance rotación izquierda Sin embargo, al tomar el desbalance mas profundo (más cercano a la hoja donde se inserta el elemento) y su balanceo, el árbol vuelve a estar balanceado. 61

13 rotación doble lgoritmos de rotación: sume que X tiene hijo derecho. Y right rotation(t,y) X X γ left rotation(t,y) α Y α β β γ 62

14 Procedure LEF T ROT T ION(T, x) // x nodo de rotatción // T es la raíz del árbol binario de búsqueda y := RHILD(x) RHILD(x) := LHILD(y) if LHILD(y) nil then P RENT (LHILD(y)) := x P RENT (y) := P RENT (x) if P RENT (x) = nil then T := y else if x = LHILD(P RENT (x)) then LHILD(P RENT (x)) := y else RHILD(P RENT (x)) := y LHILD(y) := x PRENT(x) := y end LEF T ROT T ION(T, x) 63

15 Ejercicios de árboles binarios y árboles binarios de búsqueda 1. ombinando preorden con inorder. Dado una secuencia de un árbol binario en preorden y otra en inorden, es posible definir el único árbol que las define. Suponga la siguiente secuencia en preorden: D E F G H I y la secuencia en inorden: E D G H F I, se puede construir el árbol binario haciendo que la primera letra en preorden sea la raíz y al consider la definición en inorden de que todos los antecesores de sean los hijos izquierdo y los restantes en el lado derecho. Eso nos queda:, D,E,F,G,H,I Moviéndose a continuación de la secuencia en preorden está como la próxima raíz y por la secuencia en inorden se tiene que no tiene hijo izquierdo y un subárbol derecho con. D,E,F,G,H,I ontinuando de esta manera, se llega a: D E F G J H Se puede decir que cada árbol binario tiene un único par de secuencias pre-orden-inorden. 2. ontando árboles binarios. Para 0 o 1 nodo, se tiene 1 posible árbol binario. 64

16 Para 2 nodos, se tiene 2 posibles árboles binarios. Para 3 nodos, se tienen 5.. Para n? Si los nodos de un árbol son enumerados en una secuencia de preorden de 1... n, entonces por el ejercicio anterior, distintos árbol binarios definen distintas secuencias en inorden (permutaciones en inorden). Usando el concepto de permutación en inorden, es posible mostrar que el número total de distintas permutaciones pasando los 1... n nodes a través de una pila y borrándolas en todas las formas posibles es igual al número total de árboles binarios con n nodos. omenzemos con 3 nodos (1... 3), las posibles secuencias son: 1,2,3;3,2,1;2,1,3;2,3,1;3,2,1 ada una de estas permutaciones corresponde a uno de los 5 árboles posibles: En forma más general, queremos una expresión bn de los números de árboles binarios distintos con n nodos. Se puede deducir que b n es la suma de todos los posibles árboles binarios de la siguiente forma, una raíz y dos subrboles b i, b n i 1 : on recurrencia b n = b i b n i 1, n 1 b 0 = 1 0 i n 1 (x) = i 0 b i x i con Por teorema binomial (0) = b 0 = 1 (x) = 1 1 4x 2x (x) = m 0 ( 1/2 m + 1 ) ( 1) m 2 2m+1 x m 65

17 omparando las ecuaciones anteriores, b n es el coeficiente de x n en (x): b n ) = 1 ( 2n n + 1 n ) b n = O( 4n n 3/2 ) 3. Extensión de la definición algebraica de un árbol binario. Defina las funciones: P REORDER(btree) queue IN ORDER(btree) queue P OST ORDER(btree) queue usando la definición P P END(queue, queue) queue Defina, además, una función que realice el SW P T REE(btree) btree que invierte los hijos izquierdos y derechos en forma recursiva y la función que entrega el número de nodos hojas de un btree NUM LEV ES(btree) int. P REORDER(RET E) ::= EMP T Y QUEUE P REORDER(MKET (l, d, r)) ::= P P END(P P END(DDQ(EMP T Y QUEUE, d), (P REORDER(l))), (P REORDER(r))) INORDER(RET E) ::= EMP T Y QUEUE INORDER(MKET (l, d, r)) ::= P P END(P P END((INORDER(l)), DDQ(EMP T Y QUEUE, d)), (INORDER(l))) P OST ORDER(RET E) ::= EMP T Y QUEUE P OST ORDER(MKET (l, d, r)) ::= P P END(P P END((P OST ORDER(l)), (P OST ORDER(l))), DDQ(EMP T Y QUEUE, d)) SW P T REE(RET E) ::= RET E SW P T REE(MKET (l, d, r)) ::= MKET (SW P T REE(r), d, SW P T REE(l)) NUM LEV ES(RET E) ::= 0 NUM LEV ES(MKET (l, d, r)) ::= if ISEMT T (l) and ISEMT T (r) then 1 else NUM LEV ES(l) + NUM LEV ES(r) 4. Árboles ompletos: Un árbol con altura h es completo si tiene todos los niveles llenos hasta el nivel h (ojo, se asume aquí que a la altura h, el nivel es h + 1). El nivel h + 1 está lleno de izquierda a derecha y a partir de un punto en adelante está vacío. Escriba un algoritmo que indique si el árbol está o no lleno. 5. Árboles atados: Árboles atados son aquellos donde los nodos nulos de un árbol binario tradicional son usados para asociar el nodo al nodo sucesor o antecesor en el recorrido del árbol en un determinado orden (INORDER, POSTORDER, PREORDER). En la siguiente figura se muestra un árbol atado para un recorrido en inorder que apoya los algoritmos de sucesor o predecesor. lgunos algoritmos para estos árboles son: 66

18 I 0 D H E punteros adicional punteros originales F G Figura 20: Árboles tados Encontrar el sucesor en inorder de un nodo N en un árbol atado. Procedure SU ESSOR(var N oden) //Sea N el nodo en un árbol atado en inorder para el cual se desea encontrar el sucesor. // N retornará el valor del sucesor N := RLINK(N) if N es un puntero de atadura o N = nil then termina while LLINK(N) no sea un puntero de atadura do N := LHILD(N) endsu ESSOR Recorrer en inorder un árbo atado en inorder Procedure W LK(N oder) //Sea R la raíz del árbol atado N := R while LLINK(N) nil do N := LHILD(N) Visite N N := SUESOR(N) while N nil do [ visite N N := SUESOR(N)] endw LK Insertar un subárbol atado T 1 como subárbol derecho de un nodo N en otro subárbol atado T 2. Procedure INSERT R(var noden, nodert 1 ) // RT 1 es la raíz de T 1 R := RT 1 S := N repeat S := RHILD(S) until S es una atadura o S = nil RLINK(N) := R Q := R while RLINK(Q) no sea una atadura y RLINK(Q) nil do Q := RLINK(Q) RLINK(Q) := S Q := R while LLINK(Q) no sea una atadura y LLINK(Q) nil do Q := LLINK(Q) LLINK(Q) := N endin SERT R 67

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

Árboles Carlos Delgado Kloos Mª Carmen Fernández Panadero Raquel M. Crespo García Ingeniería Telemática Univ. Carlos III de Madrid

Árboles Carlos Delgado Kloos Mª Carmen Fernández Panadero Raquel M. Crespo García Ingeniería Telemática Univ. Carlos III de Madrid Árboles Carlos Delgado Kloos Mª Carmen Fernández Panadero Raquel M. Crespo García Ingeniería Telemática Univ. Carlos III de Madrid cdk@it.uc3m.es Java: Árboles / 1 Índice Concepto Definición no recursiva

Más detalles

Estructura de Datos Árboles Árboles 2-3

Estructura de Datos Árboles Árboles 2-3 Estructura de Datos Árboles 1-2-3 Árboles 2-3 Prof.: Mauricio Solar Prof.: Lorna Figueroa Primer Semestre, 2010 1 Arboles 1-2-3 Árbol n-ario ordenado de orden 3 Cada nodo tiene 1 ó 2 elementos 75 Nodo

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

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

Definición 1.1 Sea G = (V, A) un grafo no dirigido. G se denomina árbol si es conexo y no contiene ciclos.

Definición 1.1 Sea G = (V, A) un grafo no dirigido. G se denomina árbol si es conexo y no contiene ciclos. Matemática Discreta y Lógica 2 1. Árboles Árboles Definición 1.1 Sea G = (V, A) un grafo no dirigido. G se denomina árbol si es conexo y no contiene ciclos. Como un lazo es un ciclo de longitud 1, un árbol

Más detalles

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

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

Más detalles

Algoritmos y estructuras de datos

Algoritmos y estructuras de datos Algoritmos y estructuras de datos Dr. Eduardo A. Rodríguez Tello Laboratorio de Tecnologías de Información Cinvestav Tamaulipas ertello@tamps.cinvestav.mx Cursos de inducción a la MCC Cinvestav Tamaulipas

Más detalles

Tema Árboles generales. 9.2 Árboles binarios 9.3 Árboles de búsqueda

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

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

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

Tablas Hash y árboles binarios

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

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

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. 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. 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

Más detalles

Estructuras de Datos. Estructuras de Datos para Conjuntos Disjuntos

Estructuras de Datos. Estructuras de Datos para Conjuntos Disjuntos Estructuras de Datos. Estructuras de Datos para Conjuntos Disjuntos Santiago Zanella 2008 1 Introducción Para ciertas aplicaciones se requiere mantener n elementos distintos agrupándolos en una colección

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

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.

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

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

Algoritmos y estructuras de datos

Algoritmos y estructuras de datos Algoritmos y estructuras de datos Dr. Eduardo A. Rodríguez Tello Laboratorio de Tecnologías de Información Cinvestav Tamaulipas ertello@tamps.cinvestav.mx Cursos de inducción a la MCC Cinvestav Tamaulipas

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

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 Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 4: Ordenación Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Elección de un método Métodos directos

Más detalles

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 Formulación del problema de la ruta más corta en programación lineal En esta sección se describen dos formulaciones de programación lineal para el problema de la ruta más corta. Las formulaciones son generales,

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

Á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

4.5 Árboles AVL (Adelson-Velskii y Landis) Inserción y extracción en árboles AVL

4.5 Árboles AVL (Adelson-Velskii y Landis) Inserción y extracción en árboles AVL 4.5 Árboles AVL (Adelson-Velskii y Landis) Árbol binario de búsqueda que verifica que las alturas de los subárboles derecho e izquierdo de cada nodo sólo pueden diferir, a lo sumo, en 1 lo que garantiza

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

Á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

Estructuras de datos Árboles B

Estructuras de datos Árboles B Estructuras de datos Árboles B Dra. Elisa Schaeffer elisa.schaeffer@gmail.com PISIS / FIME / UANL Árboles B p. 1 Árboles B Árboles B son árboles balanceados que no son binarios. Todos los vértices contienen

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

Á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

El Juego como Problema de Búsqueda

El Juego como Problema de Búsqueda El Juego como Problema de Búsqueda En este algoritmo identificamos dos jugadores: max y min. El objetivo es encontrar la mejor movida para max. Supondremos que max mueve inicialmente y que luego se turnan

Más detalles

Grafos. Amalia Duch Brown Octubre de 2007

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

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

Algorítmica y Complejidad. Tema 3 Ordenación.

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

Más detalles

Unidad Nº V Listas Enlazadas

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

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

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

Introducción Supongamos un subconjunto de n elementos X = {e 1,,e n de un conjunto referencial Y, X Y. Dentro de Y se define una relación de orden tot

Introducción Supongamos un subconjunto de n elementos X = {e 1,,e n de un conjunto referencial Y, X Y. Dentro de Y se define una relación de orden tot Algoritmos de ordenación Análisis y Diseño de Algoritmos Algoritmos de ordenación Algoritmos básicos: Θ(n 2 ) Ordenación por inserción Ordenación por selección Ordenación por intercambio directo (burbuja)

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

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

Análisis en el caso peor El plan:

Análisis en el caso peor El plan: Análisis en el caso peor El plan: Repaso de conceptos Montículos y el problema de ordenación Árboles rojinegros Técnicas Avanzadas de Programación - Javier Campos 39 TAD Diccionario Tipo Abstracto de Datos

Más detalles

Propiedades de lenguajes independientes del contexto

Propiedades de lenguajes independientes del contexto Capítulo 12. Propiedades de lenguajes independientes del contexto 12.1. Identificación de lenguajes independientes del contexto Lema de bombeo. 12.2. Propiedades Cierre, Complemento de lenguajes, Sustitución,

Más detalles

Apuntes elaborados por: Aaron Asencio, Eduardo Quevedo, Raquel López Revisado por: Javier Miranda el???

Apuntes elaborados por: Aaron Asencio, Eduardo Quevedo, Raquel López Revisado por: Javier Miranda el??? Apuntes elaborados por: Aaron Asencio, duardo Quevedo, Raquel López Revisado por: Javier Miranda el??? Tema 9: rafos Los grafos no son más que la versión general de un árbol, es decir, cualquier nodo de

Más detalles

Relaciones de recurrencia

Relaciones de recurrencia MATEMÁTICA DISCRETA I F. Informática. UPM MATEMÁTICA DISCRETA I () Relaciones de recurrencia F. Informática. UPM 1 / 7 Relaciones de recurrencia Relaciones de recurrencia Definición Una relación de recurrencia

Más detalles

Esquema. Condicionales. Ejemplo de condicional. Demostración. P { if (B) uno else dos } Q. P { while (B) cuerpo } Q

Esquema. Condicionales. Ejemplo de condicional. Demostración. P { if (B) uno else dos } Q. P { while (B) cuerpo } Q Esquema Teórica Imperativo 2 Estructuras de control Instrucción de asignación P{v=e Q // estado 1; vale P: true v:=e; // vale Q: v == e@1 && para toda vi: vi == vi@1 Instrucciones de Control de Flujo P

Más detalles

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

En cualquier caso, tampoco es demasiado importante el significado de la B, si es que lo tiene, lo interesante realmente es el algoritmo. Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa

Más detalles

ÁRBOLES PARCIALMENTE ORDENADOS

ÁRBOLES PARCIALMENTE ORDENADOS ÁRBOLES PARCIALMENTE ORDENADOS INTRODUCCIÓN - Un árbol A se dice parcialmente ordenado (APO) si cumple la condición de que la etiqueta de cada nodo es menor (de igual forma mayor) o igual que las etiquetas

Más detalles

Ciclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL

Ciclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL Ciclos Fundamentos de Programación Recordando Estructuras de Control Básicas: Una secuencia es una serie de estatutos que se ejecutan uno después de otro. Selección (condición) ejecuta diferentes estatutos

Más detalles

Análisis y Diseño de Algoritmos Tablas de Hash

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

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

UNIDAD 9. DATOS COMPLEJOS PILAS

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

Más detalles

Tema 5. Tipos Abstractos de Datos

Tema 5. Tipos Abstractos de Datos . E.U.Politécnica. I.T.Industrial (Electricidad) Tema 5. Tipos Abstractos de Datos. E.U. Politécnica Curso 2004-2005 Departamento Lenguajes y Ciencias de la Computación. Universidad de Málaga José Luis

Más detalles

GRAMATICAS LIBRES DEL CONTEXTO

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.

Más detalles

Estructuras de datos. Estructuras de datos

Estructuras de datos. Estructuras de datos Un arbol es un conjunto de nodos que cumplen con las relaciones padre, hijo y hermano. Llamamos hijos de un nodo a todos los nodos que podemos llegar directamente por medio de un apuntador hacia ellos

Más detalles

Algoritmos de emparejamiento

Algoritmos de emparejamiento Algoritmos de emparejamiento Mager, Jesús 1 Universidad Autónoma Metropolitana Unidad Azcapozalco 2015 Introducción El presente trabajo es un resumen del libro Combinatorial Optimization. Algorithms and

Más detalles

TAD CONJUNTOS Y MULTICONJUNTOS

TAD CONJUNTOS Y MULTICONJUNTOS TAD CONJUNTOS Y MULTICONJUNTOS INTRODUCCIÓN Qué es un conjunto? Un conjunto en matemática es una colección de objetos. Los objetos no mantienen ninguna relación aparente entre ellos y tampoco están obligados

Más detalles

Algoritmos Aleatorizados

Algoritmos Aleatorizados Algoritmos Aleatorizados Gabriel Diéguez Franzani November 29, 2011 Gabriel Diéguez Franzani () Algoritmos Aleatorizados November 29, 2011 1 / 44 Contenidos 1 Motivación 2 Algoritmos aleatorizados Definición

Más detalles

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas

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

Más detalles

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

Más detalles

Algoritmos y Programación II 75.41

Algoritmos y Programación II 75.41 Algoritmos y Programación II 75.41 Cátedra: Lic. Gustavo Carolo Guía de Estudio Enero 2005 Indice Indice 2 Definición 3 Árbol Binario 4 Árbol General 5 Árbol AVL 5 Árbol B 6 Implementación de Binarios

Más detalles

Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento fue tomada textualmente de varios

Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento fue tomada textualmente de varios CLASE GRAFOS Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento fue tomada textualmente de varios libros por lo que está prohibida su impresión

Más detalles

Conjuntos. Un conjunto es una colección de objetos. Si a es un objeto y R es un conjunto entonces por. a R. se entiende que a pertenece a R.

Conjuntos. Un conjunto es una colección de objetos. Si a es un objeto y R es un conjunto entonces por. a R. se entiende que a pertenece a R. Conjuntos Un conjunto es una colección de objetos. Si a es un objeto y R es un conjunto entonces por se entiende que a pertenece a R. a R Normalmente, podremos definir a un conjunto de dos maneras: Por

Más detalles

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta

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

Más detalles

Cubiertas convexas II

Cubiertas convexas II Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 22 de enero del 2013 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Cubiertas convexas II 22 de enero del 2013 1 / 41 1 Cubiertas convexas II Algoritmo QuickHull

Más detalles

Análisis y Diseño de Algoritmos

Análisis y Diseño de Algoritmos Análisis y Diseño de Algoritmos Recurrencias DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Introducción 2 Cuando un algoritmo se llama a sí mismo Su tiempo de ejecución se puede describir

Más detalles

Capitulo V Listas Enlazadas

Capitulo V Listas Enlazadas Capitulo V Listas Enlazadas Muere lentamente, quien abandona un proyecto antes de iniciarlo, no preguntando de un asunto que desconoce o no respondiendo cuando le indagan sobre algo que sabe. Evitemos

Más detalles

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. 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

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

Análisis y Diseño de Algoritmos

Análisis y Diseño de Algoritmos Análisis y Diseño de Algoritmos Notación Asintótica DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Introducción Por qué el análisis de algoritmos? Determinar tiempos de respuesta (runtime)

Más detalles

Manejo de Filas, Columnas, Celdas y Rangos

Manejo de Filas, Columnas, Celdas y Rangos Manejo de Filas, Columnas, Celdas y Rangos Selección de filas Selección de columnas Selección de celdas y rangos Ingresar, editar y eliminar datos Tipos de datos Agregar nombres a celdas y rangos Insertar

Más detalles

Árboles Binarios Ordenados Árboles AVL

Árboles Binarios Ordenados Árboles AVL Árboles Binarios Ordenados Árboles AVL Estructuras de Datos Andrea Rueda Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas Recordatorio... Se acerca la fecha de la primera entrega

Más detalles

Tema: Los Grafos y su importancia para la optimización de redes.

Tema: Los Grafos y su importancia para la optimización de redes. Tema: Los Grafos y su importancia para la optimización de redes. Qué son los Grafos? Un grafo es una dupla G= {X,U}, donde X es un conjunto finito y no vacio de elementos llamados vértices y U es el conjunto

Más detalles

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

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

Más detalles

Análisis probabilístico y Algoritmos Aleatorizados

Análisis probabilístico y Algoritmos Aleatorizados Análisis probabilístico y Algoritmos Aleatorizados Andrés Becerra Sandoval Ponticia Universidad Javeriana 14 de julio de 2007 Lenguajes III Introducción La probabilidad puede ayudarnos a medir la complejidad

Más detalles

Curso de Programación 1

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

Más detalles

Estructuras en LabVIEW.

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

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

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

Notación Asintótica 2

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

Más detalles

Manual Guías Temáticas Excel (V 1.2)

Manual Guías Temáticas Excel (V 1.2) Manual Guías Temáticas Excel 2007-2010 + (V 1.2) por Elsa M.Meyer (Elsamatilde) (para versiones Excel 2007 en adelante) Incluye comentarios y soluciones para versiones anteriores) Copyright 2012-2013 -

Más detalles

ÁRBOLES DE SINTAXIS. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales.

ÁRBOLES DE SINTAXIS. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales. ÁRBOLES DE SINTAXIS ÁRBOL grafo dirigido acíclico. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales. Los nodos terminales (nodos hojas) están rotulados por los

Más detalles

<tipo> Tipo de dato de los elementos del vector

<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.

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

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

EJERCICIOS DE ÁRBOLES BINARIOS

EJERCICIOS DE ÁRBOLES BINARIOS EJERCICIOS DE ÁRBOLES BINARIOS 1) Supongamos que tenemos una función valor tal que dado un valor de tipo char (una letra del alfabeto) devuelve un valor entero asociado a dicho identificador. Supongamos

Más detalles

Binary Decision Diagrams

Binary Decision Diagrams Rodríguez Blanco 2006-05-18 Introduccion Equivalencia Tablas de verdad eficientes Construcción de Equivalencia Tablas de verdad eficientes Equivalencia de dos fórmulas A 1 y A 2. Construir su tabla de

Más detalles

Tema 3: Espacios vectoriales

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

Más detalles

Tiempo de Ejecución. Midiendo el Tiempo de Ejecución

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

Más detalles

Búsqueda en e.e. --> reglas para elegir entre las ramas que con más probabilidad lleven a la solución.

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

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

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

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información - 1º año -

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información - 1º año - Trabajo práctico Nº 7 (Resolución de problemas Estructura: pila y cola). Realiza el programa de cada situación problemática. 1- Cargar en una pila n letras del abecedario.(n debe ser menor a 30) 2- En

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

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

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

Convertir un AFND a un AFD

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.

Más detalles

Programa Entrenamiento MT-21

Programa Entrenamiento MT-21 Programa Entrenamiento MT-1 SOLUCIONARIO Guía de ejercitación avanzada Función potencia y función raíz cuadrada SGUICEN05MT1-A16V1 TABLA DE CORRECCIÓN Guía de ejercitación Función potencia y función raíz

Más detalles

Generación de variables aleatorias discretas Método de la Transformada Inversa

Generación de variables aleatorias discretas Método de la Transformada Inversa Generación de variables aleatorias discretas Método de la Transformada Inversa Patricia Kisbye FaMAF 30 de marzo, 2010 Generación de v.a. discretas Existen diversos métodos para generar v.a. discretas:

Más detalles