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

Á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

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

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

Á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

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

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

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

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

á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

Á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

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

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

Á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

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

Á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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Á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

1 Agencia de viajes: enunciado

1 Agencia de viajes: enunciado 1 AGENCIA DE VIAJES: ENUNCIADO 1 1 Agencia de viajes: enunciado Una agencia de viajes mantiene una base de datos con exactamente N clientes y M destinos turísticos. En una situación real, estos valores

Más detalles

Tema 2. Recursividad. Fundamentos de Programación II. Luís Rodríguez Baena (luis.rodriguez@upsam.net)

Tema 2. Recursividad. Fundamentos de Programación II. Luís Rodríguez Baena (luis.rodriguez@upsam.net) Fundamentos de Programación II Tema 2. Recursividad Luís Rodríguez Baena (luis.rodriguez@upsam.net) Universidad Pontificia de Salamanca (campus Madrid) Escuela Superior de Ingeniería y Arquitectura Naturaleza

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

Estructuras de Datos en Java

Estructuras de Datos en Java Estructuras de Datos en Java 1. Antecedentes Introducción a la Orientación a Objetos La programación orientada a objetos (POO) es una nueva manera de enfocar la programación. Desde sus comienzos, la programación

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

Sistemas Informáticos Curso 2005-06

Sistemas Informáticos Curso 2005-06 Sistemas Informáticos Curso 2005-06 Sistema multiusuario para la gestión universitaria vía Web, incluyendo el desarrollo de un interfaz para el diseño de aplicaciones de datos visuales Roberto Carrasco

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

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

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

Tema 2. Organizaciones de ficheros y estructuras de acceso

Tema 2. Organizaciones de ficheros y estructuras de acceso Tema 2. Organizaciones de ficheros y estructuras de acceso Ficheros y Bases de Datos 10 de junio de 2002 1. Introducción Este documento contiene preguntas del tema 2 recogidas por estudiantes de la asignatura

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

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

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

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

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

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

Estructura de Datos. TDA: Listas. Primer Semestre, 2010. Indice. Tipos de estructura de datos lineales Estructura de Datos TDA: Listas Prof. Mauricio Solar Prof. Lorna Figueroa Parte del material fue obtenido de Lic. Claudio Barúa Primer Semestre, 2010 Indice Tipos de estructura de datos lineales Listas

Más detalles

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

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

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

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

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

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

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

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

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

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

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

Más detalles

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

ESTRUCTURA DE DATOS APUNTES

ESTRUCTURA DE DATOS APUNTES ESTRUCTURA DE DATOS APUNTES INTRODUCCION Como ya sabemos, las computadoras fueron diseñadas o ideadas como una herramienta mediante la cual podemos realizar operaciones de cálculo complicadas en un lapso

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

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

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

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

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

Alumnos: Familiarizarse con el código y su uso y resolver las cuestiones planteadas utilizando el intérprete de LISP.

Alumnos: Familiarizarse con el código y su uso y resolver las cuestiones planteadas utilizando el intérprete de LISP. Práctica IA- Búsqueda Nº 1 Equipo nº: Alumnos: Semana 8 Dic.2000 Familiarizarse con el código y su uso y resolver las cuestiones planteadas utilizando el intérprete de LISP. Nota: hay que entregar los

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

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

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

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

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

Pilas y Colas. Capítulo 3

Pilas y Colas. Capítulo 3 Pilas y Colas Capítulo 3 Pilas Una pila representa una estructura lineal de datos en que se puede agregar o quitar elementos únicamente por uno de los dos extremos. En consecuencia, los elementos de una

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

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

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

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

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

Más detalles

Estructuras de Datos y Algoritmos. Árboles de Expresión

Estructuras de Datos y Algoritmos. Árboles de Expresión Estructuras de Datos y Algoritmos Árboles de Expresión Año 2014 Introducción Los avances tecnológicos producen día a día una gran cantidad de información que debe ser almacenada y procesada en forma eficiente.

Más detalles

Introducción a Matlab

Introducción a Matlab Introducción a Matlab Visión en Robótica 1er cuatrimestre de 2013 En este apunte veremos las operaciones más comunes del entorno de programación Matlab. Se aprerán a manejar los aspectos básicos como saltos

Más detalles

Comencemos a programar con. Entrega 17

Comencemos a programar con. Entrega 17 Comencemos a programar con VBA - Access Entrega 17 Trabajar con ficheros Eduardo Olaz 17-2 Trabajar con Ficheros Desde VBA podemos acceder no sólo a las tablas de nuestras bases de datos, sino también

Más detalles

Capítulo 6 Relaciones binarias y grafos

Capítulo 6 Relaciones binarias y grafos Relaciones binarias y grafos 305 Capítulo 6 Relaciones binarias y grafos En este capítulo nos centraremos en el modelo de las relaciones binarias 1 entre elementos de dos dominios A y B, donde un elemento

Más detalles

índice MÓDULO 1: Access XP 1ª Parte Ofimática Avanzada Access XP TEMA 1. Tablas y sus Componentes TEMA 2. Introducción al Manejo de las Bases de Datos

índice MÓDULO 1: Access XP 1ª Parte Ofimática Avanzada Access XP TEMA 1. Tablas y sus Componentes TEMA 2. Introducción al Manejo de las Bases de Datos MÓDULO 1: Access XP 1ª Parte TEMA 1. Tablas y sus Componentes Qué es una Base de Datos Tipos de Bases de Datos Tablas Registros Campos Tipos de Campo y su Aplicación Campo Clave TEMA 2. Introducción al

Más detalles

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

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

Más detalles

OBJETIVOS ÍNDICE MÓDULO 1: ACCESS XP 1ª PARTE

OBJETIVOS ÍNDICE MÓDULO 1: ACCESS XP 1ª PARTE OBJETIVOS El objetivo de este curso es descubrir cómo utilizar una de las herramientas más utilizadas en la gestión y ordenación de datos de las empresas: la Base de Datos. Descubrir cómo diseñar, crear,

Más detalles