Sunteți pe pagina 1din 9

"Año del Centenario de la Promulgación de la Constitución Política de los Estados Unidos

Mexicanos"

INSTITUTO TECNOLÓGICO SUPERIOR DEL OCCIDENTE DEL ESTADO DE


HIDALGO

INGENIERÍA EN SISTEMAS COMPUTACIONALES

Estructura de datos

Unidad IV: Estructuras de datos no lineales

Alumna:

Estrada Cruz María José

Profesor:

Eliud Paredes Reyes

Periodo escolar:

Agosto - Diciembre 2018

Mixquiahuala de Juárez, Hidalgo., a 3 de noviembre de 2018.


"Año del Centenario de la Promulgación de la Constitución Política de los Estados Unidos
Mexicanos"

Introducción
A las estructuras de datos no lineales se les llama también estructuras de datos
multienlazadas ya que cada elemento puede estar enlazado a cualquier otro
componentes puede tener varios sucesores y/o varios predecesores.
En esta unidad se debe conocer, identificar y aplicar las estructuras no lineales en
la solución de problemas del mundo real. Utilizando java o C++ podemos
implementar las operaciones básicas (insertar, eliminar, buscar) en un árbol binario
de búsqueda, así como los recorridos en PreOrden, InOrden y PostOrden. Además
de que conoceremos algunas de las operaciones básicas, concepto entre otras
acerca de los árboles y grafos.

Arboles
Clasificación de Arboles Binarios
Existen cuatro tipos de árbol binario:
Distinto: Se dice que dos árboles binarios son distintos cuando sus estructuras son
diferentes.

Similares: Dos árboles binarios son similares cuando sus estructuras son idénticas,
pero la información que contienen sus nodos es diferente.

Equivalentes: Son aquellos árboles que son similares y que además los nodos
contienen la misma información.
"Año del Centenario de la Promulgación de la Constitución Política de los Estados Unidos
Mexicanos"

Completos: Son aquellos árboles en los que todos sus nodos excepto los del ultimo
nivel, tiene dos hijos; el subárbol izquierdo y el subárbol derecho.

Operaciones básicas sobre los árboles binarios


Búsqueda: La búsqueda consiste acceder a la raíz del árbol, si el elemento a
localizar coincide con éste la búsqueda ha concluido con éxito, si el elemento es
menor se busca en el subárbol izquierdo y si es mayor en el derecho. Si se alcanza
un nodo hoja y el elemento no ha sido encontrado se supone que no existe en el
árbol. Cabe destacar que la búsqueda en este tipo de árboles es muy eficiente,
representa una función logarítmica. El máximo número de comparaciones que
necesitaríamos para saber si un elemento se encuentra en un árbol binario de
búsqueda estaría entre [log2(N+1)] y N, siendo N el número de nodos. La búsqueda
de un elemento se puede realizar forma iterativa o recursiva.
Inserción: La inserción es similar a la búsqueda y se puede dar una solución tanto
iterativa como recursiva. Si tenemos inicialmente como parámetro un árbol vacío se
crea un nuevo nodo como único contenido el elemento a insertar. Si no lo está, se
comprueba si el elemento dado es menor que la raíz del árbol inicial con lo que se
inserta en el subárbol izquierdo y si es mayor se inserta en el subárbol derecho. De
esta forma las inserciones se hacen en las hojas.

Borrado: La operación de borrado no es tan sencilla como las de búsqueda e


inserción. Existen varios casos a tener en consideración:
"Año del Centenario de la Promulgación de la Constitución Política de los Estados Unidos
Mexicanos"

 Borrar un nodo sin hijos ó nodo hoja: simplemente se borra y se establece a


nulo el apuntador de su padre.
 Borrar un nodo con un subárbol hijo: se borra el nodo y se asigna su subárbol
hijo como subárbol de su padre.
 Borrar un nodo con dos subárboles hijo: la solución está en reemplazar el
valor del nodo por el de su predecesor o por el de su sucesor en inorden y
posteriormente borrar este nodo. Su predecesor en inorden será el nodo más
a la derecha de su subárbol izquierdo (mayor nodo del subarbol izquierdo), y
su sucesor el nodo más a la izquierda de su subárbol derecho (menor nodo
del subarbol derecho).

Recorrido Pre-orden (RID): El recorrido inicia en la Raíz y luego se recorre en pre-


orden cada uno de los sub-árboles de izquierda a derecha.

Recorrido Pos-orden (IDR): Se recorre el pos-orden cada uno de los sub-árboles


y al final se recorre la raíz.
"Año del Centenario de la Promulgación de la Constitución Política de los Estados Unidos
Mexicanos"

Sin embargo es importante notar que el primer nodo que se imprime no es la raíz
pues en este recorrido la raíz de cada Sub-Árbol es procesado al final, ya que toda
su descendencia ha sido procesada
Recorrido in-orden (IRD): Se recorre en in-orden el primer sub-árbol, luego se
recorre la raíz y al final se recorre en in-orden los demás sub-árboles

Aplicación de los árboles binarios


Un árbol binario es una estructura de datos útil cuando se trata de hacer modelos
de procesos en donde se requiere tomar decisiones en uno de dos sentidos en cada
parte del proceso. Por ejemplo, supongamos que tenemos un arreglo en donde
queremos encontrar todos los duplicados. Esta situación es bastante útil en el
manejo de las bases de datos, para evitar un problema que se llama redundancia.
También podemos observar la aplicación de árboles binarios en:
 Árbol de Búsqueda binario: se utiliza en muchas aplicaciones de búsqueda
donde los datos es constantemente entrada/salida, tales como el map y set
objetos en muchos idiomas y bibliotecas.
 Binary Space Partition: se utiliza en casi todos los juegos de vídeo 3D para
determinar qué objetos deben ser prestados.
 Binario Trata: se usa en casi todos los routers de alto ancho de banda para
almacenar tablas-routers.
 Hash Árboles: se usan en los programas p2p.
 Montones: utilizado en la aplicación eficiente de prioridad-colas, que a su vez
se utilizan para los procesos de programación en muchos sistemas
operativos. Asimismo, en rutas para encontrar el algoritmo utilizado en
aplicaciones de la AI, como la robótica y los juegos de video. También se
utiliza en heap-sort.
 La Codificación Huffman Árbol (Chip Unit): se utiliza en los algoritmos de
compresión, tales como los utilizados por el .jpeg y .mp3 (archivo-formatos).
"Año del Centenario de la Promulgación de la Constitución Política de los Estados Unidos
Mexicanos"

 GGM Árboles: tiene aplicaciones criptográficas para generar un árbol de


números pseudo-aleatorios.
 El Árbol sintáctico: construido por los compiladores y (implícitamente)
calculadoras para analizar expresiones.
 Treap: estructura aleatoria de datos utilizados en las redes inalámbricas y la
asignación de memoria.

Grafos
Representación
Matriz de Adyacencia (estática): Se utiliza una matriz de tamaño n × n donde las
filas y las columnas hacen referencia a los vértices para almacenar en cada casilla
la longitud entre cada par de vértices del grafo. La celda [i, j] almacena la longitud
entre el vértice i y el vértice j. Si su valor es infinito significa que no existe arista
entre esos vértices, y [i, i] = 0.

Lista de Adyacencia (dinámica): se asocia a cada nodo del grafo una lista que
contenga todos aquellos nodos que sean adyacentes a él.
 Los vértices forman una lista.
 Cada vértice tiene una lista para representar sus relaciones (arcos).

Operaciones básicas
"Año del Centenario de la Promulgación de la Constitución Política de los Estados Unidos
Mexicanos"

En los grafos, como en todas las estructuras de datos, las dos operaciones básicas
son insertar y borrar. En este caso, cada una de ellas se desdobla en dos, para
insertar/eliminar vértices e insertar/eliminar aristas.
Insertar vértice: Consiste en añadir una nueva entrada en la tabla de vértices
(estructura de datos que almacena los vértices) para el nuevo nodo. A partir de ese
momento el grafo tendrá un vértice más, inicialmente aislado, ya que ninguna arista
llegará a él.
Insertar arista: Cuando se inserte una nueva arista en el grafo, habrá que añadir
un nuevo nodo a la lista de adyacencia (lista que almacena los nodos a los que un
vértice puede acceder mediante una arista) del nodo origen, así si se añade la arista
(A,C), se deberá incluir en la lista de adyacencia de A el vértice C como nuevo
destino.
Eliminar vértice: En este caso el procedimiento a realizar es la eliminación de la
tabla de vértices del vértice en sí. A continuación habrá que eliminar las aristas que
tuviesen al vértice borrado como origen o destino.
Eliminar arista: Mediante esta operación se borra un arco del grafo. Para llevar a
cabo esta acción es necesario eliminar de la lista de adyacencia del nodo origen el
nodo correspondiente al nodo destino.
Recorrido de grafos: Recorrer un grafo significa visitar todos sus nodos partiendo
de un nodo de salida, es muy importante asegurarnos de no ir en círculos. Existen
dos tipos básicos de recorridos:
 En anchura: recorrer el grafo en niveles (de los nodos más cercanos a los
más lejanos).

 En profundidad: buscar caminos que parten desde el nodo de salida hasta


que ya no es posible avanzar más, después volver atrás en busca de caminos
alternativos inexplorados.
"Año del Centenario de la Promulgación de la Constitución Política de los Estados Unidos
Mexicanos"

Algoritmo de Dijkstra: También llamado algoritmo de caminos mínimos, es un


algoritmo para la determinación del camino más corto dado un vértice origen al resto
de vértices en un grafo con pesos en cada arista.
Este consiste en ir explorando todos los caminos más cortos que parten del vértice
origen y que llevan a todos los demás vértices; cuando se obtiene el camino más
corto desde el vértice origen, al resto de vértices que componen el grafo, el algoritmo
se detiene.
Pasos del algoritmo
 Sea V un conjunto de vértices de un grafo.
 Sea C una matriz de costos de las aristas del grafo, donde en C[u,v] se
almacena el costo de la arista entre u y v.
 Sea S un conjunto que contendrá los vértices para los cuales ya se tiene
determinado el camino mínimo.
 Sea D un arreglo unidimensional tal que D[v] es el costo del camino mínimo
del vértice origen al vértice v.
 Sea P un arreglo unidimensional tal que P[v] es el vértice predecesor de v en
el camino mínimo que se tiene construido.
 Sea inicial el vértice origen. Recordar que el Algoritmo Dijkstra determina los
caminos mínimos que existen partiendo de un vértice origen al resto de los
vértices.
"Año del Centenario de la Promulgación de la Constitución Política de los Estados Unidos
Mexicanos"

Otras operaciones: Las operaciones adicionales que puede incluir un grafo son
muy variadas. Además de las clásicas de búsqueda de un elemento o recorrido del
grafo, también podemos encontrarnos con ejecución de algoritmos que busquen
caminos más cortos entre dos vértices, o recorridos del grafo que ejecuten alguna
operación sobre todos los vértices visitados, por citar algunas operaciones de las
más usuales.

Conclusiones:
Conocimos, identificamos y aplicamos las estructuras no lineales en la solución de
problemas del mundo real. Al igual conocimos un poco acerca de las teorías de esta
unidad así como el aprendizaje utilizando un lenguaje de programación podemos
implementar las operaciones básicas (insertar, eliminar, buscar) en un árbol binario
de búsqueda, así como los recorridos en PreOrden, InOrden y PostOrden asi como
algunas operaciones básicas de los arboles binarios como la forma en que se
pueden recorrer entre otros, la importancia y eficiencia de estos dependerá del
contexto en que se vaya aplicar y cuál es el problema al que se le busca solución.

Bibliográfica:
Bernal, W. (21 de abril de 2015). ESTRUCTURAS DE DATOS II. Obtenido de
http://estructuras2tat.blogspot.com/2015/02/algoritmo-de-dijkstra-el-algoritmo-de.html

Blancarte, O. (22 de agosto de 2014). Oscar Blancarte Softwer archilect. Obtenido de


https://www.oscarblancarteblog.com/2014/08/22/estructura-de-datos-arboles/

Hernandez, D. (10 de julio de 2011). Daniel Hdz. A. Obtenido de


http://danieliha.blogspot.com/2011/07/operaciones-basicas-sobre-arboles.html

León, V. (5 de mayo de 2016). Ingeniera de Ideas. Obtenido de


http://ingenieradeideas.blogspot.com/2015/11/aplicaciones-de-arbol-binario.html

Mendoza, D. (20 de marzo de 2012). Estructura De Datos. Obtenido de http://estructura-de-datos-


itsav.blogspot.com/2012/03/511-clasificacion-de-arboles.html

Villanueva, S. S. (19 de marzo de 2015). DataStruxcture Tool. Obtenido de


http://www.hci.uniovi.es/Products/DSTool/grafos/grafos-operaciones.html

S-ar putea să vă placă și