Ejemplos de TAD (tipos simples)

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

Download "Ejemplos de TAD (tipos simples)"

Transcripción

1 ESPECIFICACIÓN BOOLEANOS TAD booleano Ejemplos de TAD (tipos simples) T : booleano { valor cierto } F : booleano { valor falso } : booleano booleano : booleano, booleano booleano : booleano, booleano booleano x, y : booleano T == F F == T x y == y x { conmutatividad } x y == y x F x == F ; T T == T { tablas de verdad } T x == T ; F F == F ESPECIFICACIÓN NATURALES1 (BOOLEANOS) TAD natural 0 : natural suc : natural natural { siguiente número natural } +, * : natural, natural natural = : natural, natural booleano x, y : natural x + 0 == x { axiomas de Peano } x * 0 == 0 x + suc(y) == suc(x + y) x * suc(y) == (x * y) + x 0 = 0 == T 0 = suc(x) == F ; suc(x) = 0 == F suc(x) = suc(y) == x = y UNIVERSIDAD DE VALLADOLID - DPTO. DE INFORMÁTICA PÁG. 1

2 ESPECIFICACIÓN NATURALES2 (NATURALES1) : natural, natural booleano >,, < : natural, natural booleano x, y : natural 0 x == T suc(x) 0 == F suc(x) suc(y) == x y x > y == (x y) x y == (x > y) (x = y) x < y == (x y) ESPECIFICACIÓN NATURALES3 (NATURALES2) - : natural, natural natural div : natural, natural natural { Cociente } mod : natural, natural natural { Resto } mcd : natural, natural natural { Máximo común divisor } x, y : natural x - y x y x div y y 0 x mod y y 0 x - 0 == x suc(x) - suc(y) == x - y (x < y) x div y == 0 (x y) x div y == (x-y) div y (x < y) x mod y == x (x y) x mod y == (x-y) mod y mcd(x, 0) == x mcd(x, x) == x mcd(x, y) == mcd(y, x) mcd(x, y) == mcd(y, x mod y) UNIVERSIDAD DE VALLADOLID - DPTO. DE INFORMÁTICA PÁG. 2

3 TADs de Parámetros ESPECIFICACIÓN EQUIVALENCIA (BOOLEANOS) TAD equivalente = : equivalente, equivalente booleano : equivalente, equivalente booleano x, y, z : equivalente x = x == T { Reflexividad } x = y == y = x { Simetría } (x = y) (y = z) == x = z { Transitividad } x y == (x = y) ESPECIFICACIÓN COMPARABLE (EQUIVALENCIA) TAD comparable equivalente : comparable, comparable booleano, <, > : comparable, comparable booleano x, y, z : comparable x x == T { Reflexividad } (x y) (y x) == x = y { Antisimetría } (x y) (y z) == x z { Transitividad } x > y == (x y) x y == (x > y) (x = y) x < y == (x y) UNIVERSIDAD DE VALLADOLID - DPTO. DE INFORMÁTICA PÁG. 3

4 TAD Vector ESPECIFICACIÓN VECTOR (NATURALES1, COMPARABLE) TAD vector [indice comparable, elemento] crear : natural vector { Crea un vector no asignado tamaño : vector natural con índices 1..n } asignado : vector, indice booleano asignar : vector, indice, elemento vector valor : vector, indice elemento v : vector ; n : natural ; i, j : indice ; x, y : elemento [P1] asignar( v, i, x ) 1 i tamaño(v) [P2] valor( v, i ) (1 i tamaño(v)) asignado( v, i ) [E1] asignar( asignar(v, i, x), i, y ) == asignar(v, i, y) [E2] ( i j ) asignar( asignar(v, i, x), j, y ) == asignar( asignar(v, j, y), i, x ) [E3] valor( asignar(v, i, x), i ) == x [E4] ( i j ) valor( asignar(v, i, x), j ) == valor(v, j) [E5] asignado( asignar(v, i, x), i ) == T [E6] ( i j ) asignado( asignar(v, i, x), j ) == asignado(v, j) [E7] asignado( crear(n), i ) == F [E8] tamaño( crear(n) ) == n [E9] tamaño( asignar(v,i,x) ) == tamaño(v) UNIVERSIDAD DE VALLADOLID - DPTO. DE INFORMÁTICA PÁG. 4

5 TAD Colección y Conjunto ESPECIFICACION COLECCION (NATURALES1, EQUIVALENCIA) TAD coleccion[elemento equivalente] crear_coleccion : coleccion { colección vacía } añadir : coleccion, elemento coleccion { añadir elemento } quitar : coleccion, elemento coleccion { quitar todos los elementos iguales } cuantos_hay : coleccion, elemento natural { contar elementos iguales } c : colección x, y : elemento quitar( crear_coleccion, x ) == crear_coleccion quitar( añadir(c, x), x ) == quitar(c, x) (x y) quitar( añadir(c, x), y ) == añadir( quitar(c, y), x ) cuantos_hay( crear_coleccion, x ) == 0 cuantos_hay( añadir(c, x), x ) == 1 + cuantos_hay(c, x) (x y) cuantos_hay( añadir(c, x), y ) == cuantos_hay(c, x) ESPECIFICACIÓN CONJUNTO (EQUIVALENCIA) TAD conjunto[elemento equivalente] crear_conjunto : conjunto { conjunto vacío } añadir : conjunto, elemento conjunto { incluir elemento } quitar : conjunto, elemento conjunto { excluir elemento } pertenece : conjunto, elemento booleano { pertenencia de elemento } c : conjunto x, y : elemento quitar( crear_conjunto, x ) == crear_conjunto quitar( añadir(c, x), x ) == quitar(c, x) (x y) quitar( añadir(c, x), y ) == añadir( quitar(c, y), x ) pertenece( crear_conjunto, x ) == F pertenece( añadir(c, x), x ) == T (x y) pertenece( añadir(c, x), y ) == pertenece(c, x) UNIVERSIDAD DE VALLADOLID - DPTO. DE INFORMÁTICA PÁG. 5

6 TAD Lista (Especificación básica Bicola) ESPECIFICACIÓN LISTA_BASICA (NATURALES1) TAD lista[elemento] [ ] : lista { lista vacía } [ ] : elemento lista { lista unitaria } ++ : lista, lista lista { concatenar listas } >> : elemento, lista lista { insertar al principio } << : lista, elemento lista { insertar al final } tamaño : lista natural { número de elementos } esta_vacía : lista booleano primero, ultimo : lista elemento { acceso } quita_primero, quita_ultimo : lista lista { borrado } l, l1, l2 : lista; x : elemento primero( l ) esta_vacía( l ) ultimo( l ) esta_vacía( l ) quita_primero( l ) esta_vacía( l ) quita_ultimo( l ) esta_vacía( l ) [ ] ++ l == l ( x >> l1 ) ++ l2 == x >> ( l1 ++ l2 ) l << x == l ++ [ x ] [ x ] == x >> [ ] tamaño( [ ] ) == 0 tamaño( x >> l ) == 1 + tamaño( l ) primero( x >> l ) == x quita_primero( x >> l ) == l ultimo( x >> [ ] ) == x ultimo( x >> (y >> l) ) == ultimo( y >> l ) quita_ultimo( x >> [ ] ) == [ ] quita_ultimo( x >> (y >> l) ) == x >> quita_ultimo( y >> l ) esta_vacía( [ ] ) == T esta_vacía( x >> l ) == F UNIVERSIDAD DE VALLADOLID - DPTO. DE INFORMÁTICA PÁG. 6

7 TAD Lista (acceso por índice) ESPECIFICACIÓN LISTA_INDEXADA (LISTA_BASICA) TAD lista_ind[elemento] : lista_ind, natural elemento { acceso a elemento } insertar : lista_ind, natural, elemento lista_ind { insertar( l, i, x i == x } cambiar : lista_ind, natural, elemento lista_ind { cambiar( l, i, x i == x } quitar : lista_ind, natural lista_ind concatenar : lista_ind, lista_ind lista_ind l, l1, l2 : lista_ind ; x, y : elemento ; i : natural i 1 i tamaño( l ) insertar( l, x, i ) 1 i tamaño( l ) cambiar( l, x, i ) 1 i tamaño( l ) quitar( l, i ) 1 i tamaño( l ) ( x >> l 1 == x ( i > 1 ) ( x >> l i == ( i - 1 ) insertar( l, 1, x ) == x >> l ( i > 1 ) insertar( y >> l, i, x ) == y >> insertar( l, i - 1, x ) cambiar( y >> l, 1, x ) == x >> l ( i > 1 ) cambiar( y >> l, i, x ) == y >> cambiar( l, i - 1, x ) quitar( x >> l, 1 ) == l ( i > 1 ) quitar( x >> l, i ) == x >> quitar( l, i - 1 ) concatenar(l1, l2) == l1 ++ l2 UNIVERSIDAD DE VALLADOLID - DPTO. DE INFORMÁTICA PÁG. 7

8 TAD Lista (acceso por cursor) ESPECIFICACIÓN LISTA_CURSOR (LISTA_BASICA) TAD lista_cur[elemento] crear_lc : lista_cur { lista-cursor vacía } : lista, lista lista_cur { una lista-cursor consta de dos lista basicas } fin_de_lista : lista_cur booleano { cursor fuera de la lista } actual : lista_cur elemento { acceso a elemento actual } ir_a_siguiente : lista_cur lista_cur { elemento actual pasa a ser el siguiente } ir_a_inicial : lista_cur lista_cur { elemento actual pasa a ser el primero } insertar : lista_cur, elemento lista_cur { inserta despues del actual y pasa al siguiente } cambiar : lista_cur, elemento lista_cur { cambia el elemento actual y pasa al siguiente } quitar : lista_cur lista_cur { borra el elemento actual y pasa al siguiente } concatenar : lista_cur, lista_cur lista_cur { une dos listas, una despues de la otra } l : lista_cur ; l1, l2 : lista ; x, y : elemento; actual( l ) fin_de_lista( l ) cambiar( l ) fin_de_lista( l ) quitar( l ) fin_de_lista( l ) crear_lc == [ ] [ ] fin_de_lista( l1 [ ] ) == T fin_de_lista( l1 (x >> l2) ) == F actual( l1 (x >> l2) ) == x ir_a_siguiente( l1 [ ] ) == l1 [ ] ir_a_siguiente( l1 (x >> l2) ) == (l1 << x) l2 ir_a_inicial( l1 l2 ) == [ ] (l1 ++ l2) insertar( l1 [ ], x ) == l1 [ x ] insertar( l1 (y >> l2), x ) == (l1 << y) (x >> l2) cambiar( l1 (y >> l2), x ) == (l1 << x) l2 quitar( l1 (x >> l2) ) == l1 l2 concatenar( l1 l2, l3 l4 ) == (l1 ++ l2) (l3 ++ l4) UNIVERSIDAD DE VALLADOLID - DPTO. DE INFORMÁTICA PÁG. 8

9 TAD Lista ordenada (acceso por índice) ESPECIFICACIÓN LISTA_ORDENADA (COMPARABLE) TAD lista_ord[elemcomp comparable] crear_lisord : lista_ord { crear lista vacía } tamaño : lista_ord natural { número de elementos : lista_ord, natural elemcomp { acceso a elemento } insertar : lista_ord, elemcomp lista_ord { insertar en orden } cambiar : lista_ord, natural, elemcomp lista_ord { cambiar elem. en posición } quitar : lista_ord, natural lista_ord { quitar elem. en posición } fusionar : lista_ord, lista_ord lista_ord OCULTO >> : elemcomp, lista_ord lista_ord { inserción al principio } l, l1, l2 : lista_ord ; x, y : elemcomp ; i : natural i 1 i tamaño( l ) insertar( l, x, i ) 1 i tamaño( l ) cambiar( l, x, i ) 1 i tamaño( l ) quitar( l, i ) 1 i tamaño( l ) tamaño( crear_lisord ) == 0 tamaño( x >> l ) == 1 + tamaño( l ) ( x >> l 1 == x ( i > 1 ) ( x >> l i == ( i - 1 ) quitar( x >> l, 1 ) == l ( i > 1 ) quitar( x >> l, i ) == x >> quitar( l, i - 1 ) cambiar( l, i, x ) == insertar( quitar( l, i ), x ) insertar( [ ], x ) == x >> [ ] (x < y) insertar( y >> l, x ) == x >> (y >> l) (x y) insertar( y >> l, x ) == y >> insertar(l, x) fusionar( l, [ ] ) == l fusionar( [ ], l ) == l (x y) fusionar( x >> l1, y >> l2 ) == x >> fusionar( l1, y >> l2 ) (x > y) fusionar( x >> l1, y >> l2 ) == y >> fusionar( x >> l1, l2 ) UNIVERSIDAD DE VALLADOLID - DPTO. DE INFORMÁTICA PÁG. 9

10 Operaciónes de búsqueda en listas ESPECIFICACIÓN BUSQLIS (LISTA_INDEXADA, LISTA_CURSOR, LISTA_ORDENADA) { Aunque tienen el mismo nombre son operaciones distintas porque se aplican a TADs diferentes (sus parámetros son de tipos distintos). La búsqueda en listas indexadas y ordenadas devuelven la posición del primer elemento igual o un indice fuera de rango (mayor que el tamaño de la lista) si no existe ningún elemento igual. La búsqueda en listas basadas en cursor situa el cursor sobre el primer elemento igual o sobre el final de la lista si no existe. } buscar : lista_ind, elemento natural buscar : lista_cur, elemento lista_cur buscar : lista_ord, elemcomp natural l1, l2 : lista ; li : lista_ind ; lo : lista_ord ; x, y : elemento; u,v : elemcomp { --- Lista indexada --- } buscar( [ ], x ) == 1 buscar( x >> li, x ) == 1 (x y) buscar( y >> li, x ) == 1+ buscar( li, x ) { --- Lista basada en cursor --- } buscar( l1 [ ], x ) == l1 [ ] buscar( l1 (x >> l2), x ) == l1 (x >> l2) (x y) buscar( l1 (x >> l2), y ) == buscar( (l1 << x) l2, y) { --- Lista ordenada --- } buscar( crear_lisord, u ) == 1 buscar( u >> lo, u ) == 1 (u v) buscar( v >> lo, u ) == 1+ buscar( lo, u ) UNIVERSIDAD DE VALLADOLID - DPTO. DE INFORMÁTICA PÁG. 10

11 TAD Pila y Cola ESPECIFICACIÓN PILA Y COLA (BOOLEANOS) TAD pila[elemento] TAD cola[elemento] { --- Operaciones de pila --- } crear_pila : pila vacía : pila booleano añadir : pila, elemento pila cima : pila elemento { Último elemento añadido } quitar : pila pila { Elimina elemento cima } { --- Operaciones de cola --- } crear_cola : cola vacía : cola booleano añadir : cola, elemento cola cabeza : cola elemento { Primer elemento añadido } quitar : cola cola { Elimina elemento cabeza } p : pila; c : cola ; x : elemento cima(p) vacía(p) quitar(p) vacía(p) cabeza(c) vacía(c) quitar(c) vacía(c) { --- Pila --- } vacía( crear_pila ) == T vacía( añadir(p, x) ) == F cima( añadir(p, x) ) == x quitar( añadir(p, x) ) == p { --- Cola --- } vacía( crear_cola ) == T vacía( añadir(c, x) ) == F cabeza( añadir( crear_cola, x ) ) == x vacía(c) cabeza( añadir(c, x) ) == cabeza(c) quitar( añadir( crear_cola, x ) ) == crear_cola vacía(c) quitar( añadir(c, x) ) == añadir( quitar(c), x ) UNIVERSIDAD DE VALLADOLID - DPTO. DE INFORMÁTICA PÁG. 11

12 TAD Cola de prioridad ESPECIFICACIÓN COLA PRIORIDAD (COMPARABLE) TAD colapri[elemcomp comparable] crear_cp : colapri { Crear cola vacía } vacía : colapri booleano minimo : colapri elemcomp { Elemento mínimo } añadir : colapri, elemcomp colapri { Añadir elemento } quitar : colapri colapri { Elimina el elemento mínimo } { --- Operaciones auxiliares --- } min_aux : cola_pri, elemcomp colapri { Obtención del valor mínimo } quitar_aux : cola_pri, elemcomp colapri { Quitar elemento igual } : elemcomp, cola_pri booleano { Pertenencia } c : colapri ; x, y: elemento minimo(c) vacía(c) quitar(c) vacía(c) cambiar(c, x) vacía(c) min_aux(c, x) vacía(c) quitar_aux(c, x) x c vacía( crear_cp ) == T vacía( añadir(c, x) ) == F minimo( añadir(c, x) ) == min_aux(c, x) min_aux( crear_cp, x ) == x (x < y) min_aux( añadir(c, x), y ) == min_aux(c, x) (x y) min_aux( añadir(c, x), y ) == min_aux(c, y) quitar(c) == quitar_aux( c, minimo(c) ) quitar_aux( añadir(c, x), x ) == c (x y) quitar_aux( añadir(c, y), x ) == añadir( quitar_aux(c, x), y ) x crear_cp == F x añadir(c, x) == T (x y) x añadir(c, y) == x c UNIVERSIDAD DE VALLADOLID - DPTO. DE INFORMÁTICA PÁG. 12

13 TAD Tabla (un elemento por clave) ESPECIFICACION TABLA (EQUIVALENCIA) TAD tabla[clave equivalente, elemento] crear_tabla : tabla { creación de una tabla vacía } añadir : tabla, clave, elemento : tabla { inserción y modificación } quitar : tabla, clave tabla { borrado de clave } presente : tabla, clave booleano { existencia de par clave-elemento } valor : tabla, clave elemento { acceso a elemento } t : tabla ; k, k1, k2 : clave ; v : elemento valor(t, k) presente(t, k) quitar( crear_tabla, k ) == crear_tabla quitar( añadir(t, k, v), k ) == quitar( t, k ) ( k1 k2 ) quitar( añadir( t, k1, v ), k2 ) == añadir( quitar( t, k2 ), k1, v ) presente( crear_tabla, k ) == F presente( añadir(t, k, v), k ) == T ( k1 k2 ) presente( añadir(t, k1, v), k2 ) == presente(t, k2) { Si existen varias operaciones de añadir sobre la misma clave sólo se tiene en cuenta la más reciente } valor( añadir(t, k, v), k ) == v ( k1 k2 ) valor( añadir(t, k1, v), k2 ) == valor(t, k2) UNIVERSIDAD DE VALLADOLID - DPTO. DE INFORMÁTICA PÁG. 13

14 TAD Diccionario (varios elementos por clave) ESPECIFICACIÓN DICCIONARIO (LISTA_BASICA) TAD diccionario[clave equivalente, elemento equivalente] crear_dic : diccionario { creación de un diccionario vacío } añadir : diccionario, clave, elemento diccionario { inserción } borrar : diccionario, clave diccionario { borrado de todos los elementos asociados a la misma clave } quitar : diccionario, clave, elemento diccionario { borrado de elemento concreto } valor : diccionario, clave lista[elemento] { lista de valores asoc. a clave } d : diccionario ; k, k1, k2 : clave ; v, v1, v2 : elemento borrar( crear_dic, k ) == crear_dic borrar( añadir(d, k, v), k ) == borrar(d, k) ( k1 k2 ) borrar( añadir(d, k1, v), k2 ) == añadir( borrar(d, k2), k1, v ) quitar(crear_dic, k, v) == crear_dic ( k1 k2 ) quitar( añadir(d, k1, v1), k2, v2 ) == añadir( quitar(d, k2, v2), k1, v1 ) quitar( añadir(d, k, v), k, v ) == quitar(d, k, v) ( v1 v2 ) quitar( añadir(d, k, v1 ), k, v2 ) == añadir( quitar(d, k, v2), k, v1 ) valor( crear_dic, k ) == [ ] valor( añadir(d, k, v), k ) == v >> valor(d, k) ( k1 k2 ) valor( añadir(d, k1, v), k2 ) == valor(d, k2) UNIVERSIDAD DE VALLADOLID - DPTO. DE INFORMÁTICA PÁG. 14

15 TAD Arbol ESPECIFICACION ARBOL (LISTA_INDEXADA) TAD arbol[nodo equivalente] : nodo, lista_ind[arbol] arbol { creación de un arbol } raiz : arbol nodo { nodo raiz de un arbol } subarbol : arbol, natural arbol { subarbol n-ésimo de un arbol } padre : arbol, nodo nodo { nodo padre de un nodo del arbol } hijos : arbol, nodo lista[nodo] { nodos hijos de un nodo del arbol }, : nodo, arbol booleano { pertenencia de un nodo a un arbol } a : arbol ; x, y : nodo ; i : natural ; l, l1, l2 : lista_ind[arbol] subarbol( x l, i ) 1 i tamaño(l) padre(a, x) ( x raiz(a) ) ( x a ) hijos(a, x) x a raiz( x l ) == x subarbol( x l, i ) == i x (x l) == T ( x y ) x (y [ ]) == F ( x y ) x (y (a >> l) ) == ( x a ) ( x (y l) ) x a == (x a) padre( y ((x l1 ) >> l2), x ) == y ( x a ) padre( y (a >> l), x ) == padre( a, x ) ( x a ) padre( y (a >> l), x ) == padre( y l, x ) hijos( x [ ], x ) == [ ] hijos( x (a >> l), x ) == raiz(a) >> hijos( x l, x ) ( x y ) ( x a ) hijos( y (a >> l), x ) == hijos( a, x ) ( x y ) ( x a ) hijos( y (a >> l), x ) == hijos( y l, x ) UNIVERSIDAD DE VALLADOLID - DPTO. DE INFORMÁTICA PÁG. 15

16 Operaciones sobre árboles ESPECIFICACIÓN ARBOPER (ARBOL) altura : arbol natural altura_nodo : arbol, nodo natural profundidad : arbol, nodo natural preorden, postorden, inorden : arbol lista_ind[nodo] { --- Operaciones auxiliares para recorridos --- } lista_preorden, lista_postorden, lista_inorden : lista_ind[arbol] lista_ind[nodo] a : arbol ; x, y : nodo ; l : lista_ind[arbol] altura_nodo( a, x ) x a profundidad( a, x ) x a altura( x [ ] ) == 0 altura( x (a >> l) ) == max( 1+altura(a), altura(x l) ) altura_nodo( x l, x ) == altura( x l ) ( x y ) ( x a ) altura_nodo( y (a >> l), x ) == altura_nodo( a, x ) ( x y ) ( x a ) altura_nodo( y (a >> l), x ) == altura_nodo( y l, x ) profundidad( x l, x ) == 0 ( x y ) ( x a ) profundidad( y (a >> l), x ) == 1+profundidad( a, x ) ( x y ) ( x a ) profundidad( y (a >> l), x ) == profundidad( y l, x ) { --- Recorridos --- } preorden( x [ ] ) == [x] preorden( x l ) == x >> lista_preorden(l) lista_preorden( [ ] ) == [ ] lista_preorden( a >> l ) == preorden(a) ++ lista_preorden(l) postorden( x [ ] ) == [x] postorden( x l ) == lista_postorden(l) << x lista_postorden( [ ] ) == [ ] lista_postorden( a >> l ) == postorden(a) ++ lista_postorden(l) inorden( x [ ] ) == [x] inorden( x [a] ) == inorden(a) << x inorden( x (a >> l) ) == inorden(a) ++ [x] ++ lista_inorden(l) lista_inorden( [ ] ) == [ ] lista_inorden( a >> l ) == inorden(a) ++ lista_inorden(l) UNIVERSIDAD DE VALLADOLID - DPTO. DE INFORMÁTICA PÁG. 16

17 TAD Directorio ESPECIFICACION DIRECTORIO (EQUIVALENCIA, LISTA_BASICA) TAD directorio[nodo equivalente] { El TAD directorio es el análogo de un sistema de ficheros, y el TAD nodo representa el concepto de subdirectorio (un fichero sería un subdirectorio vacío). La operación insertar es el análogo de mkdir, quitar de rmdir, subdirs devuelve la lista de nodos hijos de otro nodo (análogo de dir ). } crear_dir : nodo directorio { crear directorio con nodo raiz } raiz : directorio nodo { nodo raiz del directorio } insertar : directorio, nodo, nodo directorio { inserta 2º nodo como hijo del 1º } quitar : directorio, nodo directorio { elimina el nodo y sus descendientes } quitar_aux : directorio, nodo directorio { elimina sólo el nodo (op. auxiliar) } quitar_lista : directorio, lista[nodo] directorio { elimina nodos de la lista (auxiliar) } subdirs : directorio, nodo lista[nodo] { lista de hijos del nodo } : directorio, nodo booleano { pertenencia de un nodo al dir. } d : directorio ; r, p, h, x : nodo insertar( d, x, y ) (x d) (y d) { No se permiten nodos duplicados } quitar( d, x ) x raiz(d) { No se puede borrar el raiz } quitar_aux( d, x ) x raiz(d) raiz( crear_dir(r) ) == r raiz( insertar(d, p, h) ) == raiz(d) r crear_dir(r) == T (h r) h crear_dir(r) == F h insertar(d, p, h) == T (x h) x insertar(d, p, h) == x d subdirs( crear_dir(r), p ) == [ ] subdirs( insertar( d, p, h ), p ) == h >> subdirs( d, p ) (x p) subdirs( insertar( d, p, h ), x ) == subdirs( d, x ) quitar(d, p) = quitar_lista( quitar_aux(d, p), subdirs(d, p) ) quitar_aux( crear_dir(r), h ) == crear_dir(r) quitar_aux( insertar( d, p, h ), h ) == d (x h) quitar_aux( insertar( d, p, h ), x ) == insertar( quitar_aux( d, x ), p, h ) quitar_lista(d, [ ]) == d quitar_lista( d, (x >> l) ) == quitar_lista( quitar(d, x), l ) UNIVERSIDAD DE VALLADOLID - DPTO. DE INFORMÁTICA PÁG. 17

18 TAD Grafo (malla, red) ESPECIFICACION GRAFO (LISTA_BASICA, CONJUNTO) TAD grafo[nodo equivalente] crear_grafo : grafo { grafo vacío } insertar : grafo, nodo, nodo grafo { inserta arco en el grafo } quitar : grafo, nodo, nodo grafo { elimina arco del grafo } hay_arco : grado, nodo, nodo booleano { existencia de arco } vecinos : grafo, nodo lista[nodo] { nodos vecinos } nodos : grafo conjunto[nodo] { nodos del grafo } g : grafo ; x, y, a, b : nodo insertar(g, x, y) hay_arco(g, x, y) { no se permiten arcos duplicados } hay_arco( crear_grafo, x, y ) == F hay_arco( insertar(g, x, y), x, y ) == T hay_arco( insertar(g, y, x), x, y ) == T (x a) (x b) hay_arco( insertar(g, a, b), x, y ) == hay_arco(g, x, y) quitar( crear_grafo, x, y ) == crear_grafo quitar( insertar(g, x, y), x, y ) == g quitar( insertar(g, y, x), x, y ) == g (x a) (x b) quitar( insertar(g, a, b), x, y ) == insertar( quitar(g, x, y), a, b ) vecinos( crear_grafo, x ) == [ ] vecinos( insertar(g, x, y), x ) == y >> vecinos(g, x) vecinos( insertar(g, y, x), x ) == y >> vecinos(g, x) (x a) (x b) vecinos( insertar(g, a, b), x ) == vecinos(g, x) nodos( crear_grafo ) == crear_conjunto nodos( insertar(g, x, y) ) == añadir( añadir( nodos(g), x ), y ) UNIVERSIDAD DE VALLADOLID - DPTO. DE INFORMÁTICA PÁG. 18

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

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

Tipos Abstractos de Datos

Tipos Abstractos de Datos Objetivos Repasar los conceptos de abstracción de datos y (TAD) Diferenciar adecuadamente los conceptos de especificación e implementación de TAD Presentar la especificación algebraica como método formal

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

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

Contenido. Prólogo... Capítulo 1. Algoritmos y estructuras de datos... 1. Introducción... 24

Contenido. Prólogo... Capítulo 1. Algoritmos y estructuras de datos... 1. Introducción... 24 Contenido Prólogo... vii Capítulo 1. Algoritmos y estructuras de datos... 1 Introducción... 2 1.1. Tipos de datos... 2 1.1.1. Tipos primitivos de datos... 3 1.1.2. Tipos de datos compuestos y agregados...

Más detalles

MANUAL DE USUARIO: Simulador ArbolBinarioBusqueda

MANUAL DE USUARIO: Simulador ArbolBinarioBusqueda<T> MANUAL DE USUARIO: Simulador ArbolBinarioBusqueda Descripción General El presente Manual de usuario pretende describir en detalle el conjunto de funcionalidades de la Aplicación desarrollada para la

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

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

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

á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

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

ESTRUCTURA DE DATOS. ABB Arboles de Búsqueda Binaria

ESTRUCTURA DE DATOS. ABB Arboles de Búsqueda Binaria ESTRUCTURA DE DATOS ABB Arboles de Búsqueda Binaria ÁRBOLES BINARIOS Hasta ahora nos hemos dedicado a estudiar TAD que de una u otra forma eran de naturaleza lineal, o unidimensional. En los tipos abstractos

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

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

Temario. Tema 5. Estructuras de Datos no Lineales. 5.1 Árboles Binarios 5.2 Árboles n-arios

Temario. Tema 5. Estructuras de Datos no Lineales. 5.1 Árboles Binarios 5.2 Árboles n-arios Temario 5.1 Árboles Binarios 5.2 Árboles n-arios Especificación Utilización Representación Enlazada 5.3 Árboles Binarios de Búsqueda 5.4 Árboles Parcialmente Ordenados 1 Árbol n-ario: O bien es el conjunto

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

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

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

4 Introduccin a los tipos abstractos de datos o Definiciones o TAD String o Concepto de contenedor o Colecciones e Iteradores o Relaciones entre elementos o TAD's contenedores Estructuras de datos, curso

Más detalles

Tema IV Programación lógica con estructuras

Tema IV Programación lógica con estructuras Tema IV Programación lógica con estructuras Programación Lógica - E.T.S.I. Informática - Málaga 1 Términos La estructura de datos básica en PROLOG es el término. Los términos se clasifican en : variables

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

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

Registro (record): es la unidad básica de acceso y manipulación de la base de datos.

Registro (record): es la unidad básica de acceso y manipulación de la base de datos. UNIDAD II 1. Modelos de Bases de Datos. Modelo de Red. Representan las entidades en forma de nodos de un grafo y las asociaciones o interrelaciones entre estas, mediante los arcos que unen a dichos nodos.

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

TEMA 3. Árboles. Objetivos. Contenidos. Bibliografía. Básica

TEMA 3. Árboles. Objetivos. Contenidos. Bibliografía. Básica TEMA 3. Árboles Objetivos En este tema se estudia una de las estructuras de datos no lineal más importante en computación, el árbol. Comenzaremos introduciendo la terminología asociada a los árboles y

Más detalles

Estructuras de Datos. Montículos. Montículos. Montículos. Tema 3. Montículos. Definiciones básicas: Definiciones básicas:

Estructuras de Datos. Montículos. Montículos. Montículos. Tema 3. Montículos. Definiciones básicas: Definiciones básicas: Estructuras de Datos Tema. 1. Definiciones básicas 2. Implementación. Operaciones con montículos 4. Definiciones básicas: En un árbol binario completo todos los niveles del árbol (excepto tal vez el último)

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

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

Restricciones. Inteligencia Artificial. Ingeniería Superior en Informática, 4º Curso académico: 2011/2012 Profesores: Ramón Hermoso y Matteo Vasirani

Restricciones. Inteligencia Artificial. Ingeniería Superior en Informática, 4º Curso académico: 2011/2012 Profesores: Ramón Hermoso y Matteo Vasirani Restricciones Ingeniería Superior en Informática, 4º Curso académico: 2011/2012 Profesores: Ramón Hermoso y Matteo Vasirani 1 Tema 2: Agentes basados en Búsqueda Resumen: 2. Agentes basados en búsqueda

Más detalles

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

Solución al Examen de Prácticas de Programación (Ingeniería Informática) Solución al Examen de Prácticas de Programación (Ingeniería Informática) Junio 2006 Parte I. Cuestiones (3 puntos=50% nota del examen) 1) Se desea crear un conjunto de clases para representar en un programa

Más detalles

Definición recursiva de los árboles

Definición recursiva de los árboles Árboles Un árbol es una estructura de datos jerarquizada ada dato reside en un nodo, y existen relaciones de parentesco entre nodos: padre, hijo, hermano, ascendiente, descendiente, etc. Ejemplo: apítulos

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

UNIVERSIDAD NACIONAL DE INGENIERÍA CENTRO DE EXTENSIÓN Y PROYECCIÓN SOCIAL

UNIVERSIDAD NACIONAL DE INGENIERÍA CENTRO DE EXTENSIÓN Y PROYECCIÓN SOCIAL UNIVERSIDAD NACIONAL DE INGENIERÍA ALGORITMOS Y ESTRUCTURA CERTIFICA ORGANIZA Mayor Información: informes@uni.edu.pe Visite Nuestra Web http://www.ceps.uni.edu..pe OBJETIVOS GENERALES - Diseñar algoritmos

Más detalles

Estructura de datos y de la información Boletín de problemas - Tema 10

Estructura de datos y de la información Boletín de problemas - Tema 10 Estructura de datos y de la información Boletín de problemas - Tema 10 1. En el caso de que sea posible, dar un ejemplo de los siguientes puntos. Si no, explicar por qué no lo es. Considerar un valor genérico

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

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

Tema 1: Implementación del sistema de archivos

Tema 1: Implementación del sistema de archivos Tema 1: Implementación del sistema de archivos 1. Introducción 2. Implementación 3. Estructura del almacenamiento secundario Dpto. Tema Lenguajes 1: Implementación y Sistemas del Informáticos. sistema

Más detalles

Ing. Manuel Ramírez López ITESCA

Ing. Manuel Ramírez López ITESCA ANTOLOGÍA DE ESTRUCTURA DE DATOS 2 Ing. Manuel Ramírez López ITESCA Estructura de Datos Antología de la Materia 2 Instituto Tecnológico Superior de Cajeme Carretera Internacional Km. 2 Teléfono (644) 415

Más detalles

Tema 10. Árboles. José M. Badía, Begoña Martínez, Antonio Morales y José M. Badía

Tema 10. Árboles.  José M. Badía, Begoña Martínez, Antonio Morales y José M. Badía Tema 10. Árboles http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Badía {badia, bmartine, morales, sanchiz}@icc.uji.es Estructuras de datos y de la información Universitat

Más detalles

El TAD Árbol. El TAD Árbol

El TAD Árbol. El TAD Árbol Objetivos! Presentar el árbol como estructura de datos jerárquica! Estudiar diferentes variantes de árboles, tanto en su especificación como en su implementación Contenidos 3.1 Concepto, definiciones y

Más detalles

Laboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO

Laboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO Laboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO 1.- Objetivos del laboratorio Diseño de clases en C++ Comprensión y uso del TAD Árbol Binario de Búsqueda

Más detalles

El método main de la clase PruebaArbol, empieza creando una instancia de un objeto Árbol vacío y asigna su referencia a la variable árbol

El método main de la clase PruebaArbol, empieza creando una instancia de un objeto Árbol vacío y asigna su referencia a la variable árbol Árboles Las listas enlazadas, pilas y colas son estructuras de datos lineales (es decir, secuencias). Un árbol es una estructura de datos bidimensional no lineal, con propiedades especiales. Los nodos

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

Curso 2006/2007 Estructura de Datos y de la Información I. Informática, I. T. Informática de Gestión y de Sistemas PRÁCTICA 2

Curso 2006/2007 Estructura de Datos y de la Información I. Informática, I. T. Informática de Gestión y de Sistemas PRÁCTICA 2 Curso 2006/2007 Estructura de Datos y de la Información I. Informática, I. T. Informática de Gestión y de Sistemas PRÁCTICA 2 1 El problema Desserts es un local de hostelería que sirve toda clase de postres.

Más detalles

ESTRUCTURAS DE DATOS ÁRBOLES 143

ESTRUCTURAS DE DATOS ÁRBOLES 143 ESTRUCTURAS DE DATOS ÁRBOLES 143 TEMA 4. ÁRBOLES 4.1. CONCEPTOS GENERALES. Un árbol es una estructura de datos ramificada (no lineal) que puede representarse como un conjunto de nodos enlazados entre sí

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

Tema 1. Introducción a las estructuras y tipos de datos

Tema 1. Introducción a las estructuras y tipos de datos Tema 1. Introducción a las estructuras y tipos de datos http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia,bmartine,morales,sanchiz}@icc.uji.es Estructuras

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

Apuntes de Matemática Discreta 6. Relaciones

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

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

Tema 14: ÁRBOLES Algoritmos y estructuras de datos I - Tema 14 1

Tema 14: ÁRBOLES Algoritmos y estructuras de datos I - Tema 14 1 Tema 14: ÁRBOLES Estructura Árbol Definición: Una estructura de árbol con tipo base Valor es: (i) Bien la estructura vacía. (ii) Un conjunto finito de uno o más nodos, tal que existe un nodo especial,

Más detalles

III. BÚSQUEDA Y RESOLUCIÓN DE PROBLEMAS. III.3.

III. BÚSQUEDA Y RESOLUCIÓN DE PROBLEMAS. III.3. III. BÚSQUEDA Y RESOLUCIÓN DE PROBLEMAS. III.3. Búsquedas con retroceso. III.3.1. Búsquedas con retroceso a ciegas. III.3.1.1. Procedimientos con retroceso. La búsqueda con retroceso, o backtracking, es

Más detalles

Sistema de Ficheros. Sistemas Operativos - ITIG. Álvaro Polo Valdenebro. Abril 2009. apoloval@gsyc.es. GSyC - 2009 Introducción 1

Sistema de Ficheros. Sistemas Operativos - ITIG. Álvaro Polo Valdenebro. Abril 2009. apoloval@gsyc.es. GSyC - 2009 Introducción 1 Sistema de Ficheros Sistemas Operativos - ITIG Álvaro Polo Valdenebro apoloval@gsyc.es Abril 2009 GSyC - 2009 Introducción 1 c 2009 GSyC Algunos derechos reservados. Este trabajo se distribuye bajo la

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

Tema 1. Abstracciones y Especificaciones.

Tema 1. Abstracciones y Especificaciones. Programa de teoría Parte I. Estructuras de Datos. 1. Abstracciones y especificaciones. 2. Conjuntos y diccionarios. 3. Representación de conjuntos mediante árboles. 4. Grafos. Parte II. Algorítmica. 1.

Más detalles

Transferencia de conocimiento para el aprendizaje de Redes Bayesianas de Nodos Temporales

Transferencia de conocimiento para el aprendizaje de Redes Bayesianas de Nodos Temporales Transferencia de conocimiento para el aprendizaje de Redes Bayesianas de Nodos Temporales Lindsey Fiedler Cameras, Dr. L. Enrique Sucar Dr. Eduardo F. Morales INAOE Junio, 2013 Contenido Motivación Aprendizaje

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

SQL Server 2008 Bootcamp Día 2. SQL 2008 HierarchyID

SQL Server 2008 Bootcamp Día 2. SQL 2008 HierarchyID SQL Server 2008 Bootcamp Día 2 SQL 2008 HierarchyID Información sobre versiones beta Toda la información y ejemplos respectivos, son relativos a la beta pública CTP5 de SQL Server 2008 Comandos y funcionalidades

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

ESTRUCTURA DE DATOS: ARREGLOS

ESTRUCTURA DE DATOS: ARREGLOS ESTRUCTURA DE DATOS: ARREGLOS 1. Introduccion 2. Arreglos - Concepto - Caracteristicas 3. Arreglos Unidimensionales 4. Arreglos Bidimensionales 5. Ventajas del uso de arreglos 6. Ejemplo 1. Introducción

Más detalles

RECORRIDO EN ARBOLES

RECORRIDO EN ARBOLES RECORRIDO EN ARBOLES Orlando Arboleda Molina Escuela de Ingeniería de Sistemas y Computación de La Universidad del Valle 16 de septiembre de 2008 Contenido Recorrido en árboles Definición Recorrido en

Más detalles

Análisis y Complejidad de Algoritmos. Arboles Binarios. Arturo Díaz Pérez

Análisis y Complejidad de Algoritmos. Arboles Binarios. Arturo Díaz Pérez Análisis y Complejidad de Algoritmos Arboles Binarios Arturo Díaz Pérez Arboles Definiciones Recorridos Arboles Binarios Profundidad y Número de Nodos Arboles-1 Arbol Un árbol es una colección de elementos,

Más detalles

Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010

Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010 Estructura de Datos Árboles Binarios de Búsqueda ABB Prof.: Mauricio Solar Prof.: Lorna Figueroa Primer Semestre, 20 1 Arboles de Búsqueda Binaria El árbol binario de búsqueda (ABB) toma su nombre del

Más detalles

PROGRAMACIÓN E INGENIERÍA DE SOFTWARE

PROGRAMACIÓN E INGENIERÍA DE SOFTWARE PROGRAMACIÓN E INGENIERÍA DE SOFTWARE A. ALGORÍTMICA I. Representación y manipulación de datos 1. Taxonomía de las estructuras de datos Apuntadores Un apuntador (también llamado liga) se de fine como una

Más detalles

TEMA 7. EL TDA PILA. 7.1. Definición

TEMA 7. EL TDA PILA. 7.1. Definición TEM 7. EL TD PIL 7.1. Definición 7.2. Operaciones del TD PIL 7.3. Implementaciones más usuales: vectores y listas enlazadas 7.4. Utilidades de las Pilas ibliografía Weiss Cairó y Guardati ho, Hopcroft

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

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

Capítulo 8. Árboles. Continuar

Capítulo 8. Árboles. Continuar Capítulo 8. Árboles Continuar Introducción Uno de los problemas principales para el tratamiento de los grafos es que no guardan una estructura establecida y que no respetan reglas, ya que la relación entre

Más detalles

Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap)

Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap) Práctico 4 Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap) Clasificación de ejercicios: (I) Imprescindibles (R) Recomendados (C) Complementarios Árboles balanceados (AVL)

Más detalles

4 ÁRBOLES. ÁRBOLES BINARIOS.

4 ÁRBOLES. ÁRBOLES BINARIOS. 4 ÁRBOLES. ÁRBOLES BINARIOS. Hasta ahora nos hemos dedicado a estudiar TADes que de una u otra forma eran de naturaleza lineal, o unidimensional. En los tipos abstractos de datos lineales existen exactamente

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

COLAS. GRUPO # 22 Alumnos: Aguilar Elba Barrios Miguel Camacho Yaquelin Ponce Rodríguez Jhonny

COLAS. GRUPO # 22 Alumnos: Aguilar Elba Barrios Miguel Camacho Yaquelin Ponce Rodríguez Jhonny COLAS 2002 GRUPO # 22 Alumnos: Aguilar Elba Barrios Miguel Camacho Yaquelin Ponce Rodríguez Jhonny ESTRUCTURA DE DATOS TEMA 4 Estructura de datos Cola ÍNDICE 4.1. Definición y ejemplos...3 4.2. El TAD

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

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

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

Universidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS

Universidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS Especificación algebraica ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS Un tipo abstracto de datos se determina por las operaciones asociadas, incluyendo constantes que se consideran como operaciones sin

Más detalles

CAPÍTULO 5 ESTRUCTURAS DE DATOS

CAPÍTULO 5 ESTRUCTURAS DE DATOS CAPÍTULO 5 ESTRUCTURAS DE DATOS En la práctica, la mayor parte de información útil no aparece aislada en forma de datos simples, sino que lo hace de forma organizada y estructurada. Los diccionarios, guías,

Más detalles

INSTITUTO TECNOLÓGICO DE NUEVO LAREDO ING. EN SISTEMAS COMPUTACIONALES

INSTITUTO TECNOLÓGICO DE NUEVO LAREDO ING. EN SISTEMAS COMPUTACIONALES OBJETIVO: El estudiante desarrollará aplicaciones mediante la implementación de estructuras de datos basadas en Pilas. MATERIAL Y EQUIPO NECESARIO: Papel y lápiz Se recomienda la comprobación de los ejercicios

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

{} representa al conjunto vacío, es decir, aquel que no contiene elementos. También se representa por.

{} representa al conjunto vacío, es decir, aquel que no contiene elementos. También se representa por. 2. Nociones sobre Teoría de Conjuntos y Lógica Para llevar a cabo nuestro propósito de especificar formalmente los problemas y demostrar rigurosamente la correctitud de nuestro programas, introduciremos

Más detalles

Definición de árbol. Árboles

Definición de árbol. Árboles ÁRBOLES Árboles * Definición de árbol * Formas de representación * Nomenclatura sobre árboles * Árboles binarios * Declaración de árbol binario * Recorridos sobre árboles binarios * Construcción de un

Más detalles

3. COLA DE PRIORIDAD DEFINICION (I)

3. COLA DE PRIORIDAD DEFINICION (I) 3. COLA DE PRIORIDAD DEFINICION (I) Conjunto de elementos ordenados con las operaciones: Crear ( ) > ColaPrioridad EsVacio () > Boolean Insertar (ColaPrioridad, Item) > ColaPrioridad BorrarMínimo (ColaPrioridad)

Más detalles

Introducción al lenguaje Java Práctica Editor de Línea

Introducción al lenguaje Java Práctica Editor de Línea Introducción al lenguaje Java Práctica Editor de Línea (Diciembre 2006) 1 Introducción al lenguaje Java Práctica Editor de Línea Dpto. LSIIS. Unidad de Programación Normas y Objetivos Objetivo: el objetivo

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

Tema#2. Tipos de Datos 10

Tema#2. Tipos de Datos 10 2.1 DEFINICIÓN DE DATOS. Los datos son los objetos sobre los que opera una computadora. El tipo de un dato es el conjunto de valores que puede tomar durante el programa. Si se le intenta dar un valor fuera

Más detalles

RELACIONES BINARIAS. (1, b)} es una relación de A en B. Sea A = {1, 2, 3, 4}. En A se tiene la relación R = {(a, b)/a, b A y a divide a b}:

RELACIONES BINARIAS. (1, b)} es una relación de A en B. Sea A = {1, 2, 3, 4}. En A se tiene la relación R = {(a, b)/a, b A y a divide a b}: RELACIONES BINARIAS 1. Relaciones Las relaciones entre elementos de conjuntos se dan en muchos contextos y, en informática, aparecen con frecuencia en programación, bases de datos informáticas, etc. 1.1.

Más detalles

Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 3: ESTRUCTURAS DINÁMICAS LINEALES. LISTAS ENLAZADAS, PILAS Y COLAS

Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 3: ESTRUCTURAS DINÁMICAS LINEALES. LISTAS ENLAZADAS, PILAS Y COLAS Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 3: ESTRUCTURAS DINÁMICAS LINEALES. LISTAS ENLAZADAS, PILAS Y COLAS ÍNDICE Listas enlazadas Pilas Colas DEFINICIÓN DEL TIPO LISTA

Más detalles

Estructura de datos y algoritmos. Tema V TDA DINÁMICOS NO LINEALES: Árboles: árboles binarios

Estructura de datos y algoritmos. Tema V TDA DINÁMICOS NO LINEALES: Árboles: árboles binarios Estructura de datos y algoritmos Tema V TDA DINÁMICOS NO LINEALES: Árboles: árboles binarios TEMA V : TIPOS DE DATOS ABSTRACTOS NO LINEALES: ÁRBOLES 5.1 Conceptos y definiciones 5.2 Árboles perfectamente

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

Haydee Jiménez Tafur Grupo de Algebra. Universidad Pedagógica Nacional Estudiante de maestría en Matemáticas. Universidad Nacional de Colombia.

Haydee Jiménez Tafur Grupo de Algebra. Universidad Pedagógica Nacional Estudiante de maestría en Matemáticas. Universidad Nacional de Colombia. "Otras Alternativas Para La Definición De Relación En Teoría De Conjuntos" Carlos Julio Luque Arias Profesor Universidad Pedagógica Nacional Grupo de Algebra. Universidad Pedagógica Nacional Haydee Jiménez

Más detalles

Definición: NODO Un nodo es un punto de intersección o unión de varios elementos que confluyen en el mismo lugar.

Definición: NODO Un nodo es un punto de intersección o unión de varios elementos que confluyen en el mismo lugar. Definición: ÁRBOL El árbol es como un tipo de grafo cíclico, conexo y no dirigido. Las estructuras tipo árbol se usan principalmente para representar datos con una relación jerárquica entre sus elementos.

Más detalles

CI2126 PRÁCTICA 9: TAD COLA. 1) Implemente las operaciones C_Insert y C_Remove del TAD COLA usando a. un arreglo. La estructura sería:

CI2126 PRÁCTICA 9: TAD COLA. 1) Implemente las operaciones C_Insert y C_Remove del TAD COLA usando a. un arreglo. La estructura sería: CI2126 PRÁCTICA 9: TAD COLA. 1) Implemente las operaciones C_Insert y C_Remove del TAD COLA usando a. un arreglo La estructura sería: typedef struct s_cola ELEM elementos[max]; int primero,ultimo; STRUCTCOLA,*COLA;

Más detalles

Práctica 7. TAD aplicación

Práctica 7. TAD aplicación bjetivos. Práctica 7. TAD aplicación Se trata de construir el TAD APLICACIN con una implementación acotada. Se introducen la dispersión (hashing) y las cachés como técnicas de implementación para mejorar

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

Manual de Usuario www.controlfacturascooperativas.com

Manual de Usuario www.controlfacturascooperativas.com 2011 Manual de Usuario www.controlfacturascooperativas.com V3.0 GrupoLabel 23/05/2011 INDICE Introducción... 2 Página principal (FACTURAS)... 2 CREAR UNA FACTURA nueva... 3 Insertar Concepto de factura...

Más detalles

Eduardo Mosqueira Rey Bertha Guijarro Berdiñas Mariano Cabrero Canosa

Eduardo Mosqueira Rey Bertha Guijarro Berdiñas Mariano Cabrero Canosa Estructura de Datos y de la Información Eduardo Mosqueira Rey Bertha Guijarro Berdiñas Mariano Cabrero Canosa Laboratorio de Investigación y Desarrollo en Inteligencia Artificial Departamento de Computació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

Programa ayudadelt@ ayudadelt@ Manual para las Empresas

Programa ayudadelt@ ayudadelt@ Manual para las Empresas Pág. 1 de 27 ayudadelt@ Manual para las Empresas Pág. 2 de 27 Versiones del Programa Versión Fecha Autor Modificación realizada 1.0 20/01/2004 Dir. Sistemas Fremap Emisión Inicial 1.1 16/02/2004 Dir. Sistemas

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