Tarea 6 - Estructura de Datos - Jorge Martinez
Tarea 6 - Estructura de Datos - Jorge Martinez
Tarea 6 - Estructura de Datos - Jorge Martinez
Cuenta: 201510060235
Fecha: 2019
Ingeniería en computación
INTRODUCCION
Árbol n-ario
los arboles n-arios son aquellos arboles donde el número máximo de hijos por
nodo es de N, en la figura 7 podemos apreciar dos árboles con grado 2 y grado
3, estos dos árboles también los podemos definir como Árbol n-ario con n = 2 y
n=3 respectivamente.
Árboles binarios
Árbol binario lleno: Es aquel que el que todos los nodos tiene cero o 2 hijos con
excepción de la Raíz.
Árbol binario perfecto: Es un Árbol lleno en donde todos las Hojas están en el
mismo Nivel.
Un árbol binario se dice que es completo, si todos los nodos del árbol, excepto
los del ultimo nivel tienen dos hijos: Sub árbol izquierdo y sub árbol derecho.
REPRESENTACIONES DE ÁRBOLES:
Hay muchas maneras diferentes para representar árboles; las representaciones
más comunes representan a los nodos dinámicamente como registros con
punteros a sus hijos, a sus padres, o a ambos, o como elementos de un vector,
con relaciones entre ellos determinadas por sus posiciones en este (por
ejemplo, un montículo binario).
De hecho, un árbol binario puede ser implementado como una lista de listas
(una lista donde los valores son listas): la cabeza de una lista (el valor del
primer término) es el hijo izquierdo, mientras que la cola (la lista de los
términos segundo y siguientes) es el hijo derecho. Esto puede ser modificado
para permitir que los valores, como en las listas de expresión simbólica
(expresión S), en donde la cabeza (valor de primer término) es el valor del
nodo, la cabeza de la cola (valor de segundo término) sea el hijo izquierdo, y la
cola de la cola (lista de términos sucesorios) sea el hijo derecho.
En general un nodo en un árbol no tendrá punteros a sus padres, pero esta
información puede ser incluida (ampliando la estructura de datos para incluir
también un puntero al vector) o almacenarse por separado. Alternativamente,
los enlaces ascendentes pueden ser incluidos en los datos del nodo hijo, como
en un árbol binario enlazado.
RECORRIDO:
Comparado a las estructuras de datos lineales como las listas
enlazadas y arreglos unidimensionales, que tienen un método canónico de
recorrido, las estructuras arborescentes pueden ser recorridas de muchas
maneras diferentes. Comenzando en la raíz de un árbol binario, hay tres pasos
principales que pueden ser realizados y el orden en la cual son realizados
define el tipo de recorrido. Estos pasos (en ningún orden particular) son:
ejecución de una acción en el nodo actual (referido como “visitando” el nodo),
recorriendo al nodo hijo de la izquierda, y recorriendo al nodo hijo de la
derecha. Así el proceso más fácilmente descrito a través de la recursión.
Los nombres dados para un estilo particular de recorrido vienen de la posición
del elemento de raíz con respecto a los nodos izquierdo y derecho. Imagine
que los nodos izquierdo y derecho son constantes en espacio, entonces el
nodo raíz pudiera colocarse a la izquierda del nodo izquierdo (pre-orden), entre
el nodo izquierdo y derecho (in-orden), o a la derecha del nodo derecho (post-
orden).
Con el fin de ilustrar, se asume que los nodos izquierdos tienen siempre
prioridad sobre los nodos derechos. Este ordenamiento puede ser invertido
mientras el mismo orden sea asumido para todos los métodos de recorrido.
TIPOS DE RECORRIDO:
Recorrido en profundidad-primero
Recorrido en anchura-primero
Recorrido en orden por nivel basado en cola
Recorrer el subárbol izquierdo en postorden.
Recorrer el subárbol derecho en postorden.
Examinar la raíz.
PILAS
Las pilas son otro tipo de estructura de datos lineales, las cuales presentan
restricciones en cuanto a la posición en la cual pueden realizarse las
inserciones y las extracciones de elementos.
Una pila es una lista de elementos en la que se pueden insertar y eliminar
elementos sólo por uno de los extremos. Como consecuencia, los elementos
de una pila serán eliminados en orden inverso al que se insertaron. Es decir, el
último elemento que se metió a la pila será el primero en salir de ella.
En la vida cotidiana existen muchos ejemplos de pilas, una pila de platos en
una alacena, una pila de latas en un supermercado, una pila de papeles sobre
un escritorio, etc.
Debido al orden en que se insertan y eliminan los elementos en una pila,
también se le conoce como estructura LIFO (Last In, First Out: último en entrar,
primero en salir).
TIPOS DE DATOS
Simples:
Son todos aquellos que abarcan una sola casilla de memoria como los
boléanos, enteros, flotantes, etc.
Estructurales:
Arreglos de cadenas, pilas o estructuras, abarcan más de una casilla de
memoria.
MAPA
MAPA CONCEPTUAL
CONCEPTUAL
TIPOS AMINO:
AMINO: Radical
Radical monovalente
monovalente formado
formado
TIPOS DE
DE NODOS:
NODOS: SUBÁRBOL:
SUBÁRBOL: Sub-Árbol: Conocemos
Sub-Árbol: Conocemos por
como Sub-Árbol por un
un átomo
átomo dede nitrógeno
nitrógeno yy dos
dos de
de
Los nodos
Los nodos de
de línea
línea como Sub-Árbol aa todo Árbol generado
todo Árbol generado hidrógeno,
hidrógeno, que
que constituye
constituye el
el grupo
grupo
aa partir de RECORRIDO:
Los nodos uniformes
uniformes partir de una
una sección
sección determinada
determinada funcional de las aminas y otros
funcional de las aminas y otros
RECORRIDO:
Los nodos del TIPOS
TIPOS DESUBARBOLES
del Árbol, Por lo que podemos decir
Árbol, Por lo que podemos decir compuestos
compuestos orgánicos: denota la
orgánicos: denota la DESUBARBOLES Comparado
Comparado aa las
las estructuras
estructuras dede datos
datos
PROFUNDIDAD:
PROFUNDIDAD: profundidad, del
profundidad, del
Los nodos
Los nodos simétricos que
simétricos que un
un Árbol
Árbol es
es un
un nodo Raíz con
nodo Raíz con NN
presencia Árbol
Árbol n-ario lineales
lineales como
como las listas
las listas
latín profunditas,
latín profunditas, es
es la cualidad
la cualidad de
de
Sub-Árboles. presencia de
de un
un radical
radical =NH
=NH22 unido
unido aa n-ario
profundo (algo
Los nodos
Los nodos asimétricos
asimétricos Sub-Árboles. un Árboles binarios enlazadas y arreglos unidimensionales,
enlazadas y arreglos unidimensionales, profundo (algo que
que resulta
resulta más
más hondo
hondo
un radical
radical no
no ácido.
ácido. Árboles binarios que que
que lo
lo regular,
regular, que
que se
se encuentra
ÁRBOL
ÁRBOL BINARIO
BINARIO COMPLETO:
COMPLETO:
Árbol que tienen
tienen un
un método
método canónico
canónico dede encuentra NIVEL:
NIVEL: instrumento
instrumento de de nivelación, la
Árbol binario
binario lleno:
lleno: recorrido, las estructuras
recorrido, las estructuras
extendido
extendido aa lo
lo largo
largo oo que
que penetra
penetra posición
nivelación, la Es un árbol binario de profundidad K q
Es un árbol binario de profundidad K q
Árbol binario
binario perfecto arborescentes mucho) posición relativa
relativa de
de determinados
determinados ue tiene todos los nodos posibles hasta
Árbol perfecto arborescentes pueden
pueden ser
ser recorridas
recorridas mucho) conjuntos de elementos
conjuntos de elementos en su en su ue tiene todos los nodos posibles hasta
de el penúltimonivel (profundidad K-
de muchas
muchas maneras
maneras diferentes.
diferentes. disposición
disposición en
en diferentes
diferentes planos
planos dede
el penúltimonivel (profundidad K-
1), y donde los elementos del último ni
1), y donde los elementos del último ni
organización
organización de de un
un sistema;
sistema; sese vel están colocados de izquierda a dere
sugiere, vel están colocados de izquierda a dere
sugiere, de
de este
este modo,
modo, unauna cha sin dejarhuecos entre ellos.
cha sin dejarhuecos entre ellos.
disposición
disposición según
según una
una jerarquía;
jerarquía; aa su
su
vez,
vez, una
una jerarquía
jerarquía oo nivel
nivel
ÁRBOL
ÁRBOL COMPLETO:
COMPLETO: Un Un árbol
árbol REPRESENTACIONES
REPRESENTACIONES DE DE ÁRBOLES:
ÁRBOLES: determinado, puede ser considerado
completo determinado, puede ser considerado
completo se
se caracteriza
caracteriza porque
porque todos
todos ÁRBOL
ÁRBOL BINARIO
BINARIO EXTENDIDO:
EXTENDIDO: es es un
un
Hay muchas
Hay muchas maneras
maneras diferentes
diferentes para
para como
como sistema,
sistema, dentro
dentro del
del sistema
sistema
sus
sus nodos terminales tienen la
nodos terminales tienen la misma representar
altura.
misma árbol
árbol binario
binario al
al que
que se
se le han agregado
le han agregado representar árboles;
árboles; las
las más
más general
general
altura. nodos representaciones más comunes
nodos terminales
terminales donde
donde existían
existían representaciones más comunes OPERACIONES
OPERACIONES DE DE ÁRBOLES
ÁRBOLES BINARIOS
BINARIOS
enlaces nulos. representan
representan aa los
los nodos DE
Un
Un árbol
árbol binario
binario se
se dice
dice que
que eses enlaces nulos. nodos
TIPOS DE BÚSQUEDA:
BÚSQUEDA: El El procedimiento
procedimiento dede
completo,
dinámicamente
dinámicamente como registros con
como registros con TIPOS DE DE RECORRIDO:
RECORRIDO: inserción
inserción en un árbol binario de
en un árbol binario de
completo, sisi todos
todos los
los nodos
nodos del
del árbol,
árbol, punteros
punteros aa sus
sus hijos,
hijos, aa sus
sus padres,
padres, oo aa Recorrido búsqueda es muy sencillo, únicamente
excepto
excepto los
los del
del ultimo
ultimo nivel
nivel tienen
tienen dos
dos ambos, Recorrido en
en profundidad-primero
profundidad-primero búsqueda es muy sencillo, únicamente
hijos: ambos, oo como
como elementos
elementos de de
Recorrido en
en anchura-primero
anchura-primero ÁRBOL
ÁRBOL BINARIO
BINARIO DE DE BÚSQUEDA:
BÚSQUEDA: La hay
hay que
que tener
tener cuidado
cuidado dede no
no romper
romper lala
hijos: Sub
Sub árbol
árbol izquierdo
izquierdo yy sub
sub árbol
árbol un vector,
un vector, con relaciones entre ellos
con relaciones entre Recorrido La
estructura
derecho. ellos
Recorrido
búsqueda
búsqueda en árboles binarios
en árboles binarios es un
es un estructura ni
ni el
el orden
orden del árbol.
del árbol.
derecho. determinadas
determinadas por sus posiciones en
por sus posiciones en Recorrido en
en orden
orden por
por nivel
nivel basado
basado método
método dede búsqueda
búsqueda simple,
simple,
este (por ejemplo, un montículo en
en cola
cola dinámico
este (por ejemplo, un montículo
binario). dinámico yy eficiente considerado
eficiente considerado
binario). Recorrer
Recorrer el subárbol izquierdo en
el subárbol izquierdo en como
como uno de los
uno de fundamentales en
los fundamentales en
postorden.
postorden. Ciencia
Ciencia de la Computación
de la Computación
Recorrer el subárbol derecho
Recorrer el subárbol derecho en en
postorden.
postorden.
Examinar
Examinar lala raíz.
raíz.
ENSAYO
Aplicaciones del TDA Árbol en la actualidad informática
Primeramente es importante definir que referirse a TDA es hablar de tipos de
datos abstractos Un Tipo de dato abstracto (en adelante TDA) es un conjunto de
datos u objetos al cual se le asocian operaciones. El TDA provee de una interfaz con
la cual es posible realizar las operaciones permitidas, abstrayéndose de la manera
en como estén implementadas dichas operaciones. Esto quiere decir que un mismo
TDA puede ser implementado utilizando distintas estructuras de datos y proveer la
misma funcionalidad.
El paradigma de orientación a objetos permite el encapsulamiento de los datos y las
operaciones mediante la definición de clases e interfaces, lo cual permite ocultar la
manera en cómo ha sido implementado el TDA y solo permite el acceso a los datos
a través de las operaciones provistas por la interfaz.
Por lo cual considero que La ingeniería de sistemas de información ha progresado
gracias a la introducción de nuevas técnicas para construir programas. El primer
gran avance lo constituye la programación modular, que complementa a la
programación estructurada. Otros logros lo constituyen los llamados lenguajes de
cuarta generación, que permiten desarrollar sistemas de información en un lenguaje
muy especializado.
Pero conforme avanza la tecnología de computadores es necesario crear
programas cada vez más sofisticados. En la última década ha tomado gran auge el
uso de la programación por objetos, que tiene como requisito la abstracción de
datos, y que implica una nueva manera de diseñar programas. El lenguaje
Smalltalk [GR-83] ha causado gran revuelo, hasta tal punto que existen
compiladores para lenguajes como C++ [Str-86], que han sacado la programación
por objetos de los laboratorios de investigación, para ser utilizados en el quehacer
diario de las empresas. (Una excelente discusión de los alcances de la
programación por objetos puede encontrarse en [Str-88]).
La programación que utiliza abstracción de datos se basa en el hecho de que en un
programa se deben integrar y combinar los tipos básicos de datos, como números y
caracteres, para formar estructuras de datos más complejas y así representar
información dentro del computador. En general existe una fuerte relación entre todos
los datos manipulados por un programa, por lo que es conveniente que esa relación
esté claramente especificada y controlada, de forma que cada parte del programa
"vea" sólo lo que necesita [LG-86].
Esto último es muy importante para separar el programa en partes
independientes, o módulos, evitando así que cambios en una parte produzcan
errores en otras partes del programa. Por ejemplo, en un programa que usa varios
arreglos y matrices para almacenar información, es frecuente que al aumentar el
tamaño de una dimensión se olvide aumentar la de los demás arreglos, por lo que el
mantenimiento del programa es más difícil. El objetivo perseguido al usar
abstracción de datos es lograr aislar todas estas dependencias, de forma que los
cambios puedan ser hechos con un mínimo de esfuerzo y en una forma localizada.
En nada ayuda tener que buscar por todo el programa en qué lugar debe hacerse
cada cambio.
También es importante especificar mediante la abstracción de datos qué es cada
estructura de datos. Una lista, por ejemplo, es una estructura de datos que tiene un
comportamiento muy bien definido: pueden insertársele nuevos elementos,
recorrérsela, encontrar el primer y último elemento, etc. Un programador que use el
tipo de datos Lista no debe necesitar descubrir de nuevo ese concepto: simplemente
debe poderlo importar de una biblioteca.
public PilaArreglo()
{
arreglo=new Object[MAX_ELEM];
tope=-1; // inicialmente la pila esta vacía
}
public PilaLista()
{
lista=null;
}
// versión recursiva
}
Si bien los programas no recursivos son más eficientes que los recursivos, la
eliminación de recursividad (excepto en el caso de tal recursión) le quita claridad al
código del programa. Por lo tanto:
A menudo es conveniente eliminar el tal recursión.
Un método recursivo es menos eficiente que uno no recursivo, pero sólo en
pocas oportunidades vale la pena eliminar la recursión.
TDA cola
Una cola (queue en inglés) es una lista de elementos en donde siempre se insertan
nuevos elementos al final de la lista y se extraen elementos desde el inicio de la
lista. También se conoce a las colas como listas FIFO (FIRST IN - FIRST OUT: el
primero que entra es el primero que sale).
class ColaArreglo
{
private Object[] arreglo;
private int primero, ultimo, numElem;
private int MAX_ELEM=100; // maximo número de elementos en la cola
Nuevamente en este caso, dependiendo de la aplicación, se debe definir qué hacer
en caso de producirse OVERFLOW o UNDERFLOW.
Con esta implementación, todas las operaciones del TDA cola tienen costo O(1).
TDA Cola de Prioridad
Una cola de prioridad es un tipo de datos abstracto que almacena un conjunto de
datos que poseen una llave perteneciente a algún conjunto ordenado, y
permite insertar nuevos elementos y extraer el máximo (o el mínimo, en caso de que
la estructura se organice con un criterio de orden inverso).
Es frecuente interpretar los valores de las llaves como prioridades, con lo cual la
estructura permite insertar elementos de prioridad cualquiera, y extraer el de mejor
prioridad.
Dos formas simples de implementar colas de prioridad son:
Una lista ordenada:
o Inserción: O(n)
o Extracción de máximo: O(1)
Una lista desordenada:
o Inserción: O(1)
o Extracción de máximo: O(n)
Por lo cual en base a las aplicaciones del TDA Árbol en la actualidad informática.
cuyo código fuente esté disponible, de forma que permita diseñar una aplicación
capaz de mostrar animaciones con explicaciones claras sobre los pasos que se
están llevando a cabo cuando se realiza cualquier tipo de operaciones, todo esto con
un enfoque pedagógico, gracias a el cual se garantiza el aprendizaje. En Internet
existen una serie de sitios con animaciones del TDA ABB, para árboles AVL,
Rojo/Negro, y Biselado, pero la mayoría no explica el proceso que se muestra de
manera gráfica y en ocasiones son tan rápidas que no se percibe el concepto del
algoritmo que se está utilizando. Las opciones para los estudiantes se ven reducidas
además por la barrera del idioma, y aunque en este tipo de carreras se debe tener la
habilidad al menos de leer inglés, no todos han adquirido el conocimiento en esta
etapa de la carrera. Desde el punto de vista de programación se pretende acotar dos
problemas: La programación de los algoritmos para el TDA, sin perder de vista que
muchos de estos algoritmos están ya definidos, pero intentando buscar variantes
suficientemente claras para que sean entendidos con mayor facilidad por los
estudiantes. La representación gráfica de árboles, tomando como referencia la teoría
existente para la representación de grafos.
CONCLUSIONES
Como podemos ver, el uso de grafos y árboles es de mucha importancia y no
sólo en la rama de la informática, sino en el estudio de diferentes ciencias e
incluso en la vida cotidiana como es el sistema de transporte o hasta en los
deportes.
He observado que los árboles son estructuras bastante complejas, tiene una
gran aplicación en la ciencia y en la programación convencional. En los
últimos años este tipo de estructuras ha sido utilizado con mucha frecuencia
en la Inteligencia artificial.
En esta asignación se han valorado factores como ser los puntos vas
relevantes a en cuenta a lo que son los árboles y los principales métodos de
búsqueda, sin embargo estamos lejos de cubrir este tema en profundidad ya
que existen muchísimos tipos de operaciones y algoritmos que se pueden
realizar sobre estas estructuras de datos.
REFERENCIAS BIBLIOGRAFICAS
Vázquez, A. (2012) Recorrido inorden. Video de youtube.
http://brd.unid.edu.mx/recorrido-inorden/