Programación II Tema 5. Árboles binarios

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

Download "Programación II Tema 5. Árboles binarios"

Transcripción

1 ontenidos Programación II Tema 5. Árboles binarios Iván antador ompletitud de búsqueda onstrucción de un árbol e inserción y búsqueda de un elemento y recorrido onstrucción ontenidos ompletitud de búsqueda onstrucción de un árbol e inserción y búsqueda de un elemento y recorrido onstrucción 2 Grafos. efinición Un grafo es una estructura de datos G=(V, R) compuesta de: Un conjunto V de vértices(nodos) Un conjunto R de ramas(arcos), conexiones entre los vértices de V de grafo (dirigido) V= {, 2,,, 5, 2 R= {(,), (,5), (,), (2,),, (5,), (,2) Un grafo es una Edgeneral, muy rica y flexible 5

2 Grafos. Ejemplos (I) Máquinas de estados (autómatas finitos deterministas) Grafos. Ejemplos (II) Planificación de tareas Grafos. Ejemplos (III) Redes de transporte 5 Grafos. Ejemplos (IV) 7 Redes sociales

3 Grafos. Ejemplos (V) 8 Grafos. aminos 9 Internet redes de ordenadores Un camino de un grafo G = (V, R) es una secuencia de nodos de V en los que cada nodo es adyacente al siguiente mediante un arco de R 2 5 V= {, 2,,, 5, R= {(,), (,5), (,), (2,),, (5,), (,2) aminos: {,, 2,, {5,,, Árboles. efinición 0 Árboles. Sub-árboles Un árbol ordenado con raíz es un grafo tal que: Un sub-árbol de un árbol T es un subconjunto de nodos de T conectados mediante ramas de T ada nodo de un árbol T junto con sus hijos da lugar a nuevo sub-árbol T tiene un único nodo, denominado raíz, sin ramas incidentes cada nodo raíz recibe una sola rama cualquier nodo es accesible desde la raíz 2 raíz nodos terminales (hojas) 7 raíz 2 nodos intermedios árbol T sub-árboles T nodos terminales (hojas) nodos intermedios

4 Árboles. Nodos padre e hijo 2 Árboles. Profundidad En un árbol =(V, R): Un nodo u ϵv es padrede otro nodo v ϵvsi existe un arco r = (u, v) ϵr Un nodo v ϵv es hijode otro nodo u ϵv si existe un arco r = (u, v) ϵr T es padre de 7 y es hijo de (la raíz) no tiene padre 2 (una hoja) no tiene hijos La profundidad (nivel) de un nodo es el número de ramas entre el nodo y la raíz (es 0 para la raíz) La profundidad (altura) de un árbol es el máximo número de ramas entre la raíz una hoja del árbol (es - si el árbol está vacío, 0 para un árbol con un nodo) T profundidad(t) = profundidad() = 0 profundidad(5) = profundidad(7) = Árboles. Profundidad Profundidad de un árbol T profundidad(t)= - 25 T 25 profundidad(t)= 0 T profundidad(t)= T 25 profundidad(t)= (la mayor profundidad de todas las hojas) ontenidos ompletitud de búsqueda onstrucción de un árbol e inserción y búsqueda de un elemento y recorrido onstrucción 5

5 Árboles binarios. efinición Árboles binarios. efinición 7 Un árbol binario(b) es un árbol ordenado con raíz tal que: cada nodo tiene a lo sumo2 hijos raíz raíz En un B: Todo nodo excepto el raíz tiene un nodo padre Todo nodo tiene a lo sumo 2 nodos hijos: hijo izquierdo e hijo derecho padre de X nodos intermedios hojas hojas hijo izquierdo de X X hijo derecho de X Árboles binarios. efinición Propiedad recursiva de los B El hijo izquierdo de la raíz (u otro nodo) forma un nuevo árbol con dicho hijo como raíz El hijo derecho de la raíz (u otro nodo) forma un nuevo árbol con dicho hijo como raíz sub-árbol izquierdo raíz sub-árbol derecho sub-árbol izquierdo raíz sub-árbol derecho 8 ontenidos ompletitud de búsqueda onstrucción de un árbol e inserción y búsqueda de un elemento y recorrido onstrucción 9

6 Árboles binarios. Recorrido Un árbol se puede recorrer de distintas formas, pero siempre desde la raíz Para el recorrido normalmente se usa la propiedad recursiva de los árboles uando se aplica un algoritmo de visita de árboles se implementa la función "visitar" que puede realizar distintas operaciones sobre cada nodo Visitar un nodo puede ser p.e.imprimir el contenido del nodo o liberar su memoria Árboles binarios. Recorrido s en profundidad preorden, postorden, inorden de aplicación (en grafos): encontrar componentes conexas en anchura recorrido por nivel s de aplicación (en grafos): camino más corto entre dos nodos, crawling Web 2 Árboles binarios. Recorrido en profundidad: preorden Preorden = orden previo esde la raíz y recursivamente:. Visitamos nodo actual n 2. Recorremos en orden previo el hijo izquierdo de nodo actual n. Recorremos en orden previo el hijo derecho de nodo actual n visitar = printfdel contenido de un nodo resultado: B F E G F B E G 22 Árboles binarios. Recorrido en profundidad: preorden lgoritmo recursivo aso base / condición de parada aso general / llamada recursiva Pseudocódigo ab_preorden(rbolbinario T) { // Árbol vacío si ab_vacio(t)= TRUE: volver si no: nodoab_visitar(t) // printf ab_preorden(izq(t)) ab_preorden(der(t)) volver Observaciones Árbol vacío no ene nodos Árbol de un nodo un nodo raíz sin hijos sociamos nodo raíz de un subárbol; ú l para la recursión

7 Árboles binarios. Recorrido en profundidad: postorden Postorden = orden posterior esde la raíz y recursivamente:. Recorremos en orden posterior el hijo izquierdo de nodo actual n 2. Recorremos en orden posterior el hijo derecho de nodo actual n. Visitamos nodo actual n visitar = printfdel contenido de un nodo resultado: B E G F F B E G 2 Árboles binarios. Recorrido en profundidad: postorden Pseudocódigo compacto ab_postorden(rbolbinario T) { // Árbol no vacío si ab_vacio(t) = FLSE: ab_postorden(izq(t)) ab_postorden(der(t)) nodoab_visitar(t) Pseudocódigo más eficiente ab_postorden(rbolbinario T) { // Árbol no vacío si ab_vacio(t) = FLSE: si ab_vacio(izq(t)) = FLSE: ab_postorden(izq(t)) si ab_vacio(der(t)) = FLSE: ab_postorden(der(t)) nodoab_visitar(t) Árboles binarios. Recorrido en profundidad: inorden 2 Árboles binarios. Recorrido en profundidad: inorden 27 Inorden= orden medio esde la raíz y recursivamente:. Recorremos en orden posterior el hijo izquierdo de nodo actual n 2. Visitamos nodo actual n. Recorremos en orden posterior el hijo derecho de nodo actual n visitar = printfdel contenido de un nodo resultado: B E F G F B E G Pseudocódigo compacto ab_inorden(rbolbinario T) { // Árbol no vacío si ab_vacio(t) = FLSE: ab_inorden(izq(t)) nodoab_visitar(t) ab_inorden(der(t)) Pseudocódigo más eficiente ab_inorden(rbolbinario T) { // Árbol no vacío si ab_vacio(t) = FLSE: si ab_vacio(izq(t)) = FLSE: ab_inorden(izq(t)) nodoab_visitar(t) si ab_vacio(der(t)) = FLSE: ab_inorden(der(t)) 2 5 7

8 Árboles binarios. Recorrido en anchura en anchura = recorrido por nivel lgoritmo Recorre de izquierda a derecha y de arriba a abajo Nunca recorre un nodo de nivel isin haber visitado todos los de nivel i- Implementación mediante el T ola, sin recursividad resultado: F B E G F B E G 28 Árboles binarios. Recorrido en anchura Pseudocódigo Recorre de arriba abajo y de izquierda a derecha Nunca recorre un nodo de nivel isin haber visitado los de nivel i- ab_anchura(rbolbinario T) { Q = cola_crear() cola_insertar(q, T) mientras cola_vacia(q) = FLSE: T = cola_extraer(q) nodoab_visitar(t ) para cada hijo H de T : cola_insertar(q, H) cola_liberar(q) 29 Árboles binarios. Recorrido en anchura 0 ontenidos ab_anchura(rbolbinario T) { Q = cola_crear() cola_insertar(q, T) mientras cola_vacia(q) = FLSE: T = cola_extraer(q) nodoab_visitar(t ) para cada hijo H de T : cola_insertar(q, H) cola_liberar(q) F B E G VISITR F B E G F F B B E G E G 7 Q ompletitud de búsqueda onstrucción de un árbol e inserción y búsqueda de un elemento y recorrido onstrucción

9 Árboles binarios. ompletitud ada nivel de profundidad dde un B puede albergar 2 d nodos 2 0 = 2 = = En total, un árbol de profundidad pcompleto puede albergar (2 p+ )nodos profundidad mínima necesaria para albergar N nodos: = 2 7 = p = prof(t) = log 2 (N + )) = Árboles binarios. ompletitud B casi completo Todos los niveles con profundidad d < p están completos, i.e. tienen 2 d nodos B completo Todos los niveles con profundidad d p están completos, i.e. tienen 2 d nodos (= casi completo y tiene exactamente 2 p hojas a profundidad p) no completo 2 casi completo 7 completo ontenidos Árboles binarios. Implementación en 5 ompletitud de búsqueda onstrucción de un árbol e inserción y búsqueda de un elemento y recorrido onstrucción Estructura de datos de un nodo de un árbol binario // En arbolbinario.c #define info(pnodo) ((pnodo)->info) #define izq(pnodo) ((pnodo)->izq) #define der(pnodo) ((pnodo)->der) struct _NodoB { Elemento info; struct _NodoB izq; struct _NodoB der; ; typedef struct _NodoB NodoB; izq info der

10 Árboles binarios. Implementación en Estructura de datos de un árbol binario // En arbolbinario.c #define root(pab) ((pab)->root) struct _rbolbinario { NodoB root; // un árbol es el puntero a su nodo raíz ; // En arbolbinario.h typedef struct _rbolbinario rbolbinario; root Árboles binarios. Implementación en Funciones de creación y liberación de un nodo de un árbol binario NodoB nodoab_crear(); // rea un nuevo nodo e inicializa sus campos a NULL void nodoab_liberar(nodob pn); // Libera memoria de un nodo tras llamar a elemento_liberar Árboles binarios. Implementación en 8 Árboles binarios. Implementación en 9 // La inicialización de info se hará tras la llamada a nodoab_crear NodoB nodoab_crear() { NodoB pn = NULL; pn = (NodoB ) malloc(sizeof(nodob)); if (!pn) return NULL; info(pn) = izq(pn) = der(pn) = NULL; Primitivas del T árbol binario rbolbinario ab_crear(); // Reserva memoria e inicializa un árbol return pn; boolean ab_vacio(rbolbinario pa); // Indica si un árbol tiene algún nodo o no void nodoab_liberar(nodob pn) { if (pn) { elemento_liberar(info(pn)); free(pn); void ab_liberar(rbolbinario pa); // Libera la memoria de un árbol y todos sus nodos

11 Árboles binarios. Implementación en struct _rbolbinario { NodoB root; ; 0 Árboles binarios. Implementación en struct _rbolbinario { NodoB root; ; rbolbinario ab_crear() { rbolbinario pa = NULL; pa = (rbolbinario ) malloc(sizeof(rbolbinario)); if (!pa) return NULL; root(pa) = NULL; rbolbinario ab_crear() { rbolbinario pa = NULL; pa = (rbolbinario ) malloc(sizeof(rbolbinario)); if (!pa) return NULL; root(pa) = NULL; return pa; return pa; Árboles binarios. Implementación en struct _rbolbinario { NodoB root; ; 2 Árboles binarios. Implementación en struct _rbolbinario { NodoB root; ; boolean ab_vacio(rbolbinario pa) { if (!pa) { return TRUE; boolean ab_vacio(rbolbinario pa) { if (!pa) { return TRUE; if (!root(pa)) { return TRUE; return FLSE; if (!root(pa)) { return TRUE; return FLSE;

12 5 Árboles binarios. Implementación en Árboles binarios. Implementación en Implementar la función ab_liberar La liberación de un árbol se realiza usando la propiedad de recursión El hijo izquierdo de un nodo forma un nuevo árbol con dicho hijo como raíz El hijo derecho de un nodo forma un nuevo árbol con dicho hijo como raíz Para liberar un árbol desde su raíz: primero se libera el árbol del hijo izquierdo y el árbol hijo derecho, y luego se libera la raíz Esquema de liberación: recorrido postordende árbol T considerando como visita de un nodo su liberación ab_liberar(t) { ab_liberar(izq(t)) ab_liberar(der(t)) liberar(root(t)) // visita de la raíz = liberación de la raíz Árboles binarios. Implementación en Árboles binarios. Implementación en 7 // Función públicamente declarada en arbolbinario.h void ab_liberar(rbolbinario pa) { if (!pa) return; // Función públicamente declarada en arbolbinario.h void ab_liberar(rbolbinario pa) { if (!pa) return; ab_liberar_rec(root(pa)); // Primera llamada: root ab_liberar_rec(root(pa)); // Primera llamada: root free(pa); free(pa); // Función privada en arbolbinario.c void ab_liberar_rec(nodob pn) { if (!pn) return; // Función privada en arbolbinario.c void ab_liberar_rec(nodob pn) { if (!pn) return; if (izq(pn)) { ab_liberar_rec(izq(pn)); if (der(pn)) { ab_liberar_rec(der(pn)); nodoab_liberar(pn); // Liberación de subárbol izquierdo // Liberación de subárbol derecho // visitar nodo = liberar nodo if (izq(pn)) { ab_liberar_rec(izq(pn)); if (der(pn)) { ab_liberar_rec(der(pn)); nodoab_liberar(pn); // Liberación de subárbol izquierdo // Liberación de subárbol derecho // visitar nodo = liberar nodo

13 Árboles binarios. Implementación en uál sería la implementación de primitivas para insertar y extraer elementos de un árbol binario? La respuesta se abordará a continuación al estudiar los árboles binarios de búsqueda 8 ontenidos ompletitud de búsqueda onstrucción de un árbol e inserción y búsqueda de un elemento y recorrido onstrucción 9 Árbolesbinariosdebúsqueda. efinición Un Árbol Binario de Búsqueda (BdB) es un árbol binario T tal que sub-árbol T de T se cumple que info(izq(t )) < info(t ) < info(der(t )) dado un criterio de ordenación para los info(t), que vendrá dado por una primitiva elemento_comparar(e,e ) del T Elemento Nota: ada subárbol de un BdBes a su vez un BdB Árbolesbinariosdebúsqueda. Orden medio en orden mediode un BdB Salida Listado ordenado de los nodos!

14 ontenidos 52 Árbolesbinariosdebúsqueda. reación 5 ompletitud de búsqueda onstrucción de un árbol e inserción y búsqueda de un elemento y recorrido onstrucción reación de BdB: inserción iterativa de valores en BdB parciales Árbolesbinariosdebúsqueda. Inserción Árbolesbinariosdebúsqueda. Inserción La función abdb_insertar(t,e) que introduce un dato e en un árbol Trealiza lo siguiente: Si Testá vacío, se crea un nodo con ey se inserta Si no, se hace una llamada recursiva a insertar - Si e < info(t), entonces se ejecuta insertar (izq(t)) - Si e > info(t), entonces se ejecuta insertar (der(t)) - aso excepcional: si dato e= info(t), se devuelve ERROR o se ignora devolviendo OK Pseudocódigo status abdb_insertar(rbolbinario T, Elemento e) si ab_vacio(t) // aso base T = nodoab_crear() si (T == NULL) devolver ERROR info(t) = e devolver OK else // aso general si info(t) < e devolver abdb_insertar(izq(t), d) else devolver abdb_insertar(der(t), d)

15 Árbolesbinariosdebúsqueda. Inserción status abdb_insertar(rbolbinario pa, Elemento pe) { if (!pa!pe) return ERROR; return abdb_insertar_rec(&root(pa), pe); // Función pública status abdb_insertar_rec(nodob ppn, Elemento pe) { // Función privada int cmp; if (!ppn) { ppn = nodoab_crear(pe); if (!ppn) return ERROR; // Ojo: crea nodo con copia de pe en info cmp = elemento_comparar(pe, info(ppn)); if (cmp < 0) { return abdb_insertar_rec(&izq(ppn), pe); if (cmp > 0) { return abdb_insertar_rec(&der(ppn), pe); if (cmp == 0) { return OK; // El elemento ya estaba en el árbol: se podría devolver ERROR return OK; 5 Árbolesbinariosdebúsqueda. reación y búsqueda ado un vector de valores representados en una lista,la construcción de su correspondiente BdB es como sigue: status abdb_crear(rbolbinario T, Lista L) mientras lista_vacia(l) == FLSE && st == OK e = lista_extraerini(l) st = abdb_insertar(t, e) si st == ERROR ab_liberar(t) // Ojo: la lista L no se ha recuperado devolver ERROR devolver OK Una vez creado el BdB Recorrer el árbol en orden medio recupera los datos ordenados Buscar un dato en el árbol es muy eficiente - Buscar en una lista desordenada es menos eficiente, pues hay que recorrerla de forma secuencial 57 Árbolesbinariosdebúsqueda. Búsqueda 58 Árbolesbinariosdebúsqueda. Búsqueda 59 Búsqueda de un dato, p.e. 2 : comparar(2, 25)? 25 2: comparar(2, )? : comparar(2, 2)! 29 Pseudocódigo rbol abdb_buscar(rbolbinario T, Elemento e) si ab_vacio(t) == TRUE devolver NULL else si info(t) == e devolver T else si e < info(t) devolver abdb_buscar(izq(t), e) else devolver abdb_buscar(der(t), e) Búsqueda de? - Se hacen llamadas recursivas hasta llegar a un árbol vacío uántas comparaciones en promedio se tienen que hacer para encontrar un dato en un BdB?

16 Árbolesbinariosdebúsqueda.omplejidad búsqueda oste(número de accesos/comparaciones) de buscar un dato en un BdB Para un BdB(casi) completo con profundidad p: a lo sumo p accesos Para un BdB(casi) completo de nnodos: a lo sumo tantos accesos como la profundidad del árbol log 2 (n + )) Orden (log(n)) O(log(n)) Búsqueda secuencial en una lista desordenada de nnodos, a lo sumo naccesos: O(n) 0 Árbolesbinariosdebúsqueda.omplejidad ordenación Para n elementos, hay que realizar n inserciones ado árbol (casi) completo, cada inserción es a lo sumo del orden de la profundidad actual del árbol log2(n + )) orden (log(n)) O(log(n)) La creación del árbol es O(n log(n)), pues involucra ninserciones de orden O(log(n)) Una vez creado el árbol, éste se puede usar para ordenar sus elementos recorriéndolo por orden medio O(n) ordenación es O(n log(n)) + O(n) O(n log(n)) Ordenación de una lista de n nodos mediante algoritmos como BubbleSort, InsertSort: O(n 2 ) O(n) O(log(n)) O(n 2 ) O(nlog(n)) ontenidos ompletitud de búsqueda onstrucción de un árbol e inserción y búsqueda de un elemento y recorrido onstrucción 2 Árbolesbinariosdebúsqueda. Extracción Pseudocódigo status abdb_extraer(rbolbinario T, Elemento e) si ab_vacio(t) == TRUE devolver ERROR T = abdb_buscar(t, e) // Buscar devuelve el nodo donde está e if T == NULL devolver OK else devolver abdb_reajustar(t )

17 Árbolesbinariosdebúsqueda. Extracción Reajustede un (sub-)árbol T por la extracción de su raíz. La raíz de T es hoja 2. La raíz de T tiene hijo. La raíz de T tiene 2 hijos Árbolesbinariosdebúsqueda. Extracción Reajustede un (sub-)árbol T por la extracción de su raíz. La raíz de T es hoja: reajustar puntero del padre de (la raíz de)t a NULL, eliminar T 2. La raíz de T tiene hijo. La raíz de T tiene 2 hijos Ejemplo: abdb_extraer(t, 2) T 5 T Árbolesbinariosdebúsqueda. Extracción Reajustede un (sub-)árbol T por la extracción de su raíz. La raíz de T es hoja 2. La raíz de T tiene hijo: reajustar puntero del padre de T al hijo de T, eliminar de T. La raíz de T tiene 2 hijos Árbolesbinariosdebúsqueda. Extracción Reajustede un (sub-)árbol T por la extracción de su raíz. La raíz de T es hoja 2. La raíz de T tiene hijo. La raíz de T tiene 2 hijos: buscar sucesor de T, guardar info del sucesor en T, extraer sucesor 7 Ejemplo: abdb_extraer(t, ) T T 2 T Ejemplo: abdb_extraer(t, ) T El sucesor de T se obtiene:. Bajando a la derecha de T un nivel 2. Bajando a continuación a la izquierda hasta el último nivel (nodo hoja) sucesor de T

18 ontenidos 8 Árbolesbinariosdebúsqueda. Equilibrado 9 ompletitud de búsqueda onstrucción de un árbol e inserción y búsqueda de un elemento y recorrido onstrucción Problema de BdB: árboles no equilibrados L = {,2,,,5, abdbrear(t, L) El acceso ya no es O(log(n)), sino O(n), por lo que: oste de la búsqueda: O(n log(n)) O(n) oste de la ordenación: O(n) O(n 2 ) 2 5 Árbolesbinariosdebúsqueda. Equilibrado 70 Árbolesbinariosdebúsqueda. Equilibrado 7 Un árbol está equilibradosi para todo nodo el número de niveles de sus sub-árboles no difieren en más de una unidad Un árbol con máximo número k de hijos por nodo está perfectamente equilibrado si todo nodo tiene k hijos ómo crear BdB equilibrados? Mediante el algoritmo VL (se estudiará en otra asignatura) Árbol equilibrado Árbol perfectamente equilibrado

19 ontenidos ompletitud de búsqueda onstrucción de un árbol e inserción y búsqueda de un elemento y recorrido onstrucción 72 Árboles de expresión. efinición Un Árbol de Expresión(dE) es un árbol binario donde: Los nodos tienen operadores Las hojas tienen operandos (Todo nodo tiene 2 hijos, i.e., operador sobre dos valores) + - B / E 7 Árboles de expresión. efinición Los sub-árboles (de más de un nodo) de un deson de operador de de 2 Un de almacena una expresión aritmética + - (+B) - B / (+B) (-(/E)) (/E) E ((+B)( (/E))) 7 Árboles de expresión. Recorrido en orden previo (preorden) Salida: + B / E Forma prefijo de la expresión en orden posterior (postorden) Salida: B + E / - Forma postfijo de la expresión en orden medio (inorden) Imprimiendo paréntesis al comienzo y al final de la llamada a cada sub-árbol Salida: (( + B) ( ( / E))) Forma infijo de la expresión + - B / 75 E

20 ontenidos 7 Árboles de expresión. onstrucción 77 onstrucción de un de ompletitud de búsqueda onstrucción de un árbol e inserción y búsqueda de un elemento y recorrido onstrucción El paso de una expresión infija a un dees natural a ojo : (( + B) ( ( / E))) ( + B) - ( + B) (-( / E)) ( / E) + - B / E Árboles de expresión. onstrucción Árboles de expresión. onstrucción onstrucción de un de Basada en la evaluación de expresiones mediante el T Pila onsistente en la evaluación de una expresión guardando en una pila árboles generados para sub-expresiones El algoritmo de evaluación más sencillo es el de expresiones postfijo : B + E / - Símbolo, B + Pila B + B Si se tiene una expresión prefijo o infijo, ésta se pasa a postfijo para evaluarla,, E + B E - (+B)(-/E) a postfijo B + E / - evaluación / + B / E

21 Árboles de expresión. onstrucción 80 Árboles de expresión. onstrucción 8 : B + E / - Símbolo Pila 2: ( + B ) ( ^ (E / F)) B + E F / ^ Símbolo Pila - + B - / E, B, +, + -,, E, F, / + B - / B E F + - B / ^ + - ^ / E B E F Árboles de expresión. onstrucción 82 2: ( + B ) ( ^ (E / F)) B + E F / ^ Símbolo Pila - ^ + / B E F

Á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

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

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

Tema Árboles generales. 9.2 Árboles binarios 9.3 Árboles de búsqueda Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Tema 9. Árboles 9.1 Árboles generales 9.2 Árboles binarios 9.3 Árboles de búsqueda 9.1 Árboles generales Un árbol es

Más detalles

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

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

Más detalles

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

Más detalles

Estructuras de datos: Árboles binarios de

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

Más detalles

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

7.4. UTILIDADES DE LAS PILAS

7.4. UTILIDADES DE LAS PILAS 7.4. UTILIDADES DE LAS PILAS o Llamadas a subprogramas o Paso de programas recursivos a iterativos o Un caso especial, quick_sort iterativo. o Equilibrado de símbolos o Tratamiento de expresiones aritméticas

Más detalles

UNIDAD 9. DATOS COMPLEJOS PILAS

UNIDAD 9. DATOS COMPLEJOS PILAS UNI 9. TOS OMPLEJOS PILS Una pila es una lista de elementos en la que se pueden insertar y eliminar elementos sólo por uno de los extremos. omo consecuencia, los elementos de una pila serán eliminados

Más detalles

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

Estructuras de datos. Estructuras de datos

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

Más detalles

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES Introducción al tema a. Formar grupos de 4 personas b. Tomar una hoja en blanco y una lapicera o lápiz c. En la hoja en blanco diseña un

Más detalles

324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso 2015-2

324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso 2015-2 324 MR Versión 1 Prueba Integral 1/3 UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA MODELO DE RESPUESTA ASIGNATURA: Computación II CÓDIGO: 324 MOMENTO: Prueba Integral FECHA DE APLICACIÓN:

Más detalles

El TAD Grafo. El TAD Grafo

El TAD Grafo. El TAD Grafo ! Esta representación resulta útil cuando el número de vértices se conoce previamente y permanecerá fijo durante la resolución del problema, pero resulta ineficiente si necesitamos añadir o eliminar vértices

Más detalles

<tipo> Tipo de dato de los elementos del vector

<tipo> Tipo de dato de los elementos del vector Vectores y matrices Declaración Vector (array unidimiensional): []; Tipo de dato de los elementos del vector Identificador de la variable.

Más detalles

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

Tema 6. Gestión dinámica de memoria

Tema 6. Gestión dinámica de memoria Tema 6. Gestión dinámica de memoria http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz@icc.uji.es Estructuras de datos y de la

Más detalles

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero

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

Más detalles

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

Árboles binarios de búsqueda ( BST )

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

Más detalles

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

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

Más detalles

Inteligencia Artificial

Inteligencia Artificial Inteligencia Artificial Tema 2 Búsquedas Ivan Olmos Pineda Contenido Estructura General de un PSA Formulación de un PSA Algoritmos de Búsqueda de Soluciones Aplicaciones BUAP Inteligencia Artificial 2

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

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten

Más detalles

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

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

Más detalles

GRAMATICAS LIBRES DEL CONTEXTO

GRAMATICAS LIBRES DEL CONTEXTO GRMTICS LIBRES DEL CONTEXTO Estas gramáticas, conocidas también como gramáticas de tipo 2 o gramáticas independientes del contexto, son las que generan los lenguajes libres o independientes del contexto.

Más detalles

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso 2013-2014. 1º Grado en Informática Práctica 1: Punteros Objetivos Se hará hincapié en la aritmética de punteros

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

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

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1 Prologo Agradecimientos Nota de los autores Índice general I III V VII 1 Problemas, algoritmos y programas 1 1.1 Programas y la actividad de la programación.................... 4 1.2 Lenguajes y modelos

Más detalles

EJERCICIOS DE ÁRBOLES BINARIOS

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

Más detalles

2.2 Nombres, Ligado y Ámbito

2.2 Nombres, Ligado y Ámbito 2.2 Nombres, Ligado y Ámbito Ligado estático y dinámico, reglas de ámbito y prueba de tipos. Conceptos Nombres e Identificadores Variables Tipos Ámbito Constantes Nombres Identificador que designa en el

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

Curso de Java Introducción a la Programación III

Curso de Java Introducción a la Programación III Curso de Java Introducción a la Programación III Jaime Fernández Martín Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Operadores relacionales e igualdad 2 Estructuras de control condicional

Más detalles

Tabla de Símbolos. Programación II Margarita Álvarez

Tabla de Símbolos. Programación II Margarita Álvarez Programación II Margarita Álvarez La tabla de símbolos es una estructura global utilizada por distintos módulos del compilador. Es el principal atributo heredado. Almacena todos los nombres declarados

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

(d) Puede haber estrategias que funcionan mejor que Minimax si el contrincante es

(d) Puede haber estrategias que funcionan mejor que Minimax si el contrincante es Universidad Rey Juan Carlos Curso 2014 2015 Hoja de Problemas Tema 5 1. Cuáles de las siguientes afirmaciones acerca del algoritmo Minimax son ciertas (a) El algoritmo Minimax realiza una exploración primero

Más detalles

Máquinas Secuenciales, Autómatas y Lenguajes. Tema 3.1: Autómatas Finitos Deterministas

Máquinas Secuenciales, Autómatas y Lenguajes. Tema 3.1: Autómatas Finitos Deterministas Tema 3.1: Autómatas Finitos Deterministas Luis Peña luis.pena@urjc.es http://www.ia.urjc.es/cms/es/docencia/ic-msal Sumario Tema 3.1: Autómatas Finitos Deterministas. 1. Concepto de AFD 2. Equivalencia

Más detalles

Es un conjunto de objetos llamados vértices o nodos unidos por enlaces llamados aristas o arcos, que permiten representar relaciones binarias entre

Es un conjunto de objetos llamados vértices o nodos unidos por enlaces llamados aristas o arcos, que permiten representar relaciones binarias entre Es un conjunto de objetos llamados vértices o nodos unidos por enlaces llamados aristas o arcos, que permiten representar relaciones binarias entre elementos de un conjunto. Típicamente, un grafo se representa

Más detalles

Alonso Ramírez Manzanares Computación y Algoritmos 10.03

Alonso Ramírez Manzanares Computación y Algoritmos 10.03 Recursividad mat-151 1 Ejercicio de recursión: dibujando una regla Queremos dibujar las marcas de diferentes tamaños de una regla. Marcas grandes cada 1/2 cm, marcas más pequeñas cada 1/4 cm... hasta una

Más detalles

Clases e instancias. Algoritmos y Estructuras de Datos I. Clases e instancias. memoria dinámica.

Clases e instancias. Algoritmos y Estructuras de Datos I. Clases e instancias. memoria dinámica. Algoritmos Estructuras de Datos I Primer cuatrimestre de 2014 Departamento de Computación - FCEN - UBA Programación imperativa - clase 10 Memoria dinámica listas enlazadas Clases e instancias El paquete

Más detalles

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso 2013-2014. 1º Grado en Informática Práctica 2: Memoria dinámica y Bibliotecas Objetivos Practicar conceptos

Más detalles

Procesadores de Lenguaje

Procesadores de Lenguaje Procesadores de Lenguaje Repaso TALF Cristina Tîrnăucă Dept. Matesco, Universidad de Cantabria Fac. Ciencias Ing. Informática Primavera de 2013 La Jerarquía de Chomsky Cuatro niveles de lenguajes formales

Más detalles

(e) Con la poda alfa-beta se eliminan nodos que nunca serán alcanzados

(e) Con la poda alfa-beta se eliminan nodos que nunca serán alcanzados Universidad Rey Juan Carlos Curso 2014 2015 Hoja de Problemas Tema 5 1. Cuáles de las siguientes afirmaciones acerca del algoritmo Minimax son ciertas (a) El algoritmo Minimax realiza una exploración primero

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

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

Procesadores de lenguaje Tema 6 La tabla de símbolos

Procesadores de lenguaje Tema 6 La tabla de símbolos Procesadores de lenguaje Tema 6 La tabla de símbolos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen La tabla de símbolos. Requerimientos de información. Diseño de la tabla de

Más detalles

UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA DIRECCION GENERAL DE ASUNTOS ACADEMICOS PROGRAMA DE ASIGNATURA

UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA DIRECCION GENERAL DE ASUNTOS ACADEMICOS PROGRAMA DE ASIGNATURA UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA DIRECCION GENERAL DE ASUNTOS ACADEMICOS PROGRAMA DE ASIGNATURA I. DATOS DE IDENTIFICACION 1. Unidad Académica: Facultad de Ciencias 2. Programa (s) de estudio: Licenciatura

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

Sistemas Operativos Practica 1: procesos y concurrencia.

Sistemas Operativos Practica 1: procesos y concurrencia. Sistemas Operativos Practica 1: procesos y concurrencia. Objetivos: Introducir al alumno a los conceptos de programa, concurrencia, paralelismo y proceso o tarea. Manejo del concepto de concurrencia haciendo

Más detalles

Tablas Hash y árboles binarios

Tablas Hash y árboles binarios Tablas Hash y árboles binarios Algoritmos Tablas hash Árboles Binarios Árboles Balanceados Tablas Hash Introducción Las tablas hash son estructuras tipo vector que ayudan a asociar claves con valores o

Más detalles

Autómatas Deterministas. Ivan Olmos Pineda

Autómatas Deterministas. Ivan Olmos Pineda Autómatas Deterministas Ivan Olmos Pineda Introducción Los autómatas son una representación formal muy útil, que permite modelar el comportamiento de diferentes dispositivos, máquinas, programas, etc.

Más detalles

Algoritmos de Ordenación

Algoritmos de Ordenación Algoritmos de Ordenación Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria corcuerp@unican.es Algoritmos comunes - Ordenación Ordenación o clasificación es

Más detalles

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Operadores y Expresiones rcoppo@uns.edu.ar Primer programa en Java 2 Comentarios en Java Comentario tradicional (multi-línea) Comentario de línea Comentario

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

El Juego como Problema de Búsqueda

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

Más detalles

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

Práctica de constantes, expresiones y operadores. Programación en C 1

Práctica de constantes, expresiones y operadores. Programación en C 1 Práctica de constantes, expresiones y operadores Programación en C 1 Definición de variables (II) Las variables (automáticas) no inicializadas tienen cualquier valor. Una variable (automática) se inicializa

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

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

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

ALGORITMO MINIMAX. o Nodo: Representa una situación del juego. o Sucesores de un nodo: Situaciones del juego a las que se

ALGORITMO MINIMAX. o Nodo: Representa una situación del juego. o Sucesores de un nodo: Situaciones del juego a las que se ALGORITMO MINIMAX Algoritmo de decisión para minimizar la pérdida máxima aplicada en juegos de adversarios Información completa (cada jugador conoce el estado del otro) Elección del mejor movimiento para

Más detalles

ORDENAMIENTO Y BÚSQUEDA EN ARREGLOS

ORDENAMIENTO Y BÚSQUEDA EN ARREGLOS 1 ORDENAMIENTO Y BÚSQUEDA EN ARREGLOS Corina Flores Villarroel ORDENAMIENTO EN ARREGLOS Y COLECCIONES Una de las tareas más comunes a la hora de procesar datos es la clasificación u ordenación de los datos.

Más detalles

11. PILAS Introducción Fundamentos

11. PILAS Introducción Fundamentos 11. PILAS 11.0 INTRODUCCIÓN... 25 11.1 FUNDAMENTOS... 25 11.2. REPRESENTACIÓN DE LAS PILAS EN C++... 26 Implementación mediante estructuras estáticas... 31 Implementación mediante cursores... 35 Implementación

Más detalles

MODELOS DE COMPUTACION I Preguntas Tipo Test. 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular.

MODELOS DE COMPUTACION I Preguntas Tipo Test. 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular. MODELOS DE COMPUTACION I Preguntas Tipo Test Indicar si son verdaderas o falsas las siguientes afirmaciones: 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular. 2.

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

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C) APRENDERAPROGRAMAR.COM LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado

Más detalles

Teoría de grafos y optimización en redes

Teoría de grafos y optimización en redes Teoría de grafos y optimización en redes José María Ferrer Caja Universidad Pontificia Comillas Definiciones básicas Grafo: Conjunto de nodos (o vértices) unidos por aristas G = (V,E) Ejemplo V = {,,,,

Más detalles

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros Práctica 3. Paso de parámetros entre subrutinas 1. Objetivo de la práctica El objetivo de esta práctica es que el estudiante se familiarice con la programación en ensamblador y el convenio de paso de parámetros

Más detalles

Pilas y Colas. Cursos Propedéuticos Dr. René Cumplido M. en C. Luis Rodríguez Flores

Pilas y Colas. Cursos Propedéuticos Dr. René Cumplido M. en C. Luis Rodríguez Flores Pilas y Colas Cursos Propedéuticos 2015 Dr. René Cumplido M. en C. Luis Rodríguez Flores Contenido de la sección Pilas Estructura Operaciones Ejemplos de aplicación Implementación Colas Definición Operaciones

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

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

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

Algoritmos glotones. mat-151

Algoritmos glotones. mat-151 Algoritmos glotones (greedy) mat-151 Alonso Ramirez Manzanares Computación y Algoritmos 04.06.2009 Algoritmos glotones Algoritmos utilizados en problemas de optimización. Estos algoritmos siguen típicamente

Más detalles

7. Agrupamiento (clustering)

7. Agrupamiento (clustering) 7. Agrupamiento (clustering) INMUEBLES y CONTRATOS I IA4 En medio, 8 Centro Castellón 600 C 004 Q6 600 Visa 00 S /6/99 /5/00 I IL94 Riu Ebre, 4 Ronda Sur Castellón 50 C 0075 Q76 50 Efectivo 700 N //00

Más detalles

Estructuras de Datos Dinámicas. Diseñar y programar en lenguaje C soluciones utilizando estructuras de datos dinámicas

Estructuras de Datos Dinámicas. Diseñar y programar en lenguaje C soluciones utilizando estructuras de datos dinámicas Fundación Misión Sucre Colegio Universitario de Caracas Taller 3: Estructuras de Datos Dinámicas Objetivo Diseñar y programar en lenguaje C soluciones utilizando estructuras de datos dinámicas Contenido

Más detalles

Un. VI. Generador de código intermedio.

Un. VI. Generador de código intermedio. Un. VI. Generador de código intermedio. La administración de la memoria se da en esta etapa. Se debe considerar tanto la memoria estática como dinámica, y en esta se utilizan generalmente pilas. Los lenguajes

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

Introducción al lenguaje C

Introducción al lenguaje C Programación 2 Profesorado de Informática CeRP del Suroeste, Uruguay 29 de marzo de 2016 Estructuras de control IV Iteración Sentencia for: for (inicio; condicion; paso) cuerpo for (int i = 0; i < 10;

Más detalles

PROGRAMA DE ASIGNATURA DE PROGRAMACIÓN I

PROGRAMA DE ASIGNATURA DE PROGRAMACIÓN I PROGRAMA DE ASIGNATURA DE PROGRAMACIÓN I Table of contents 1 INFORMACIÓN GENERAL...2 2 INTRODUCCIÓN... 2 3 OBJETIVOS GENERALES DE LA ASIGNATURA... 3 4 OBJETIVOS, TEMAS Y SUBTEMAS... 3 5 PLAN TEMÁTICO...6

Más detalles

Clases y Objetos en Java. ELO329: Diseño y Programación Orientados a Objetos

Clases y Objetos en Java. ELO329: Diseño y Programación Orientados a Objetos Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos Construyendo clases nuevas La forma más simple de una clase en Java es: Class Nombre_de_la_Clase { } /* constructores */ /* métodos

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

Fundamentos de Informática

Fundamentos de Informática Tema 8: 8: Estructuras datos. Fundamentos Informática 1º Ingeniería Industrial Escuela Superior Ingenieros Universidad Sevilla Ismael Alcalá Torrego José Ángel Acosta Rodríguez Fernando Dorado Navas Fabio

Más detalles

Tema 5.- Recursividad

Tema 5.- Recursividad Apuntes elaborados por: Raquel López, Eduardo Quevedo y Aaron Asencio Revado por: Javier Miranda el???? Tema 5.- Recursividad NOTA Todos los ejemplos que se exponen en este tema se pueden realizar utilizando

Más detalles

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos. 1 Programación II, Guía 2 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos. Objetivos Utilizar la sintaxis de las funciones

Más detalles

TIPO DE DATO ABSTRACTO (TDA)

TIPO DE DATO ABSTRACTO (TDA) TIPO DE DATO ABSTRACTO (TDA) Ing. Eduard Antonio Lozano Córdoba Nota: Toda la información fue copiada de: Libros físicos e Internet Actividad Extra Clases #include #include int binario(int

Más detalles

Algoritmos de Strings. Héctor Navarro

Algoritmos de Strings. Héctor Navarro lgoritmos de Strings Héctor Navarro Substrings Dado un string T (posiblemente muy grande) y un patrón P (de tamaño menor), encontrar la primera (o todas) las apariciones de P en T Solución trivial de (NM)

Más detalles

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

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

Más detalles

Notación Polaca (Jan Lukasiewitz) (Notación prefija)

Notación Polaca (Jan Lukasiewitz) (Notación prefija) APLICACIONES. Notación Polaca y Polaca Inversa. Notación infija A+B C-D E*F G/H Distinción entre (A+B)*C y A+(B*C) de prelación. Con paréntesis y orden Notación Polaca (Jan Lukasiewitz) (Notación prefija)

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

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria. Punteros Definición Un puntero es un dato que contiene una dirección de memoria. NOTA: Existe una dirección especial que se representa por medio de la constante NULL (definida en ) y se emplea

Más detalles

Fundamentos de Programación Visual Basic

Fundamentos de Programación Visual Basic Pág. N. 1 Fundamentos de Programación Visual Basic Familia: Editorial: Tecnología de información y computación Macro Autor: Ricardo Walter Marcelo Villalobos ISBN: 978-612-304-236-3 N. de páginas: 280

Más detalles

TAD: Pila. TALLER: TAD Pila

TAD: Pila. TALLER: TAD Pila TALLER: TAD Una pila (stack) es un conjunto de elementos del mismo tipo que solamente puede crecer o decrecer por uno de sus extremos. Una pila también se la conoce con el nombre de estructura de tipo

Más detalles

Tema: Métodos de Ordenamiento. Parte 1.

Tema: Métodos de Ordenamiento. Parte 1. Programación IV. Guía 2. 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Métodos de Ordenamiento. Parte 1. Objetivos Específicos Identificar la estructura de algunos algoritmos

Más detalles

Estructuras de datos: Pilas, Colas, Listas

Estructuras de datos: Pilas, Colas, Listas Estructuras de datos: Dep. de Computación - Fac. de Informática Universidad de A Coruña Santiago Jorge santiago.jorge@udc.es Índice Pilas 1 Pilas 2 3 Referencias bibliográficas Pilas M. A. Weiss., pilas

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

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos PROGRAMACIÓN DE SHELL SCRIPTS EN LINUX El shell es un intérprete de órdenes, pero el shell no es solamente eso; los intérpretes de órdenes de Linux son auténticos lenguajes de programación. Como tales,

Más detalles

Árboles binarios de búsqueda

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

Más detalles

Semana de las Matemáticas e Ingeniería. Desarrollo de algoritmos recursivos empleando la aplicación PseInt

Semana de las Matemáticas e Ingeniería. Desarrollo de algoritmos recursivos empleando la aplicación PseInt Semana de las Matemáticas e Ingeniería Desarrollo de algoritmos recursivos empleando la aplicación PseInt 21 de Noviembre de 2013 Agenda Desarrollo de algoritmos recursivos empleando la aplicación PSeInt

Más detalles