Está en la página 1de 14

1

Plantel: Instituto tecnológico superior de Macuspana.

Nombre y número de control del o de los autores:

Juan Carlos Sánchez López – 19E40038.

Carrera: Ingeniería en sistemas computacionales.

Plan de estudios: 2223-AED1026-1-UB.

Asignatura: AED-1026 - Estructura de Datos.

Semestre: 7mo.

Docente: Jorge Chico Pozo.

Actividad: Reporte de prácticas de la unidad#3.

Fecha de elaboración: 17/11/2022.

Fecha de entrega: 18/11/2022.


CONTENIDO

INTRODUCCIÓN .............................................................................................................................. 2
2
MARCO TEÓRICO ............................................................................................................................ 4
PRACTICA ....................................................................................................................................... 12
CONCLUSIÓN ................................................................................................................................. 14
BIBLIOGRAFÍA............................................................................................................................... 14

INTRODUCCIÓN
En esta unidad se debe conocer, identificar y aplicar las estructuras no lineales en la solución
de problemas del mundo real. Para poder aprender de ello se necesita consultar en las fuentes
bibliográficas la terminología sobre árboles como también practicar ejercicios y buscar
3
información ayudara para su mayor comprensión. 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. En si podemos
decir que aprenderemos conceptos y aplicaciones de por ejemplo: Concepto de árbol y su
clasificación de árboles al igual las operaciones básicas sobre árboles binarios que sin duda
son herramientas que sirven y servirán en nuestra vida escolar.
MARCO TEÓRICO

# 4.1 ARBOLES 4

Un árbol es una estructura no lineal en la que cada nodo puede apuntar a uno o varios nodos.

También se suele dar una definición recursiva: un árbol es una estructura en compuesta por
un dato y varios árboles.

Esta estructura se usa principalmente para representar datos con una relación jerárquica entre
sus elementos, como por ejemplo registros, árboles genealógicos, y tablas de contenidos.
Vamos a profundizar en un tipo especial de árbol llamado árbol binario, la cual puede ser
implementada fácilmente en la computadora; aunque en un árbol puede parecer muy
restrictivo. También se va a ampliar sobre árboles más generales y puntos con relación a los
árboles binarios; entre estos tenemos a la terminología, los árboles binarios complementos,
árboles binarios de búsqueda, búsqueda e inserción en árboles binarios de búsqueda, árboles
generales, representación de árboles generales en la computadora y correspondencia entre los
árboles generales y árboles binarios.

# 4.1.1 CLASIFICACIÓN DE ÁRBOLES

Arboles binarios. Arboles cuyos nodos contienen dos enlaces (uno de los cuales puede ser
null). El nodo raíz es el primer nodo de un árbol. Cada enlace en el nodo raíz hace referencia
un hijo. El hijo izquierdo es el primer nodo en el subárbol izquierdo (también conocido como
el nodo raíz del subárbol izquierdo). El hijo derecho es el primer nodo en el subárbol derecho
(también conocido como el nodo raíz del subárbol derecho). Los hijos de un nodo especifico
se llaman hermanos. Un nodo sin hijos se llama nodo hoja. Generalmente, los científicos
computacionales dibujan arboles desde el nodo raíz hacia abajo; exactamente lo opuesto a la
manera en que crecen los árboles naturales. Recorrido de un árbol binario: Recorrido:
Requiere que cada nodo del árbol sea procesado (visitado) una vez y solo en una secuencia
predeterminada. Existen dos enfoques generales para la secuencia de recorrido, profundidad
5
y anchura. Recorrido en profundidad:

El proceso exige un camino desde la raíz a través de un hijo, al descendiente más lejano del
primer hijo antes de proseguir a un segundo hijo. En otras palabras, en el recorrido en
profundidad, todos los descendientes de un hijo se procesarán antes del siguiente hijo.

Recorrido en anchura: El proceso se realiza horizontalmente desde la raíz a todos sus hijos,
a continuación, a los hijos de sus hijos y así sucesivamente hasta que todos los nodos han
sido procesados. En otras palabras, en el recorrido en anchura cada nivel se procesa
totalmente antes que comience el siguiente nivel.

Arboles de búsqueda binaria. (Sin valores de nodo duplicado) cuenta con la característica
de que los valores en cualquier subárbol izquierdo son menores que el valor del nodo padre
de ese subárbol, y el valores en cualquier subárbol derecho son mayores que el valor del nodo
padre de ese subárbol.

El árbol de búsqueda binaria facilita la eliminación de valores duplicados. Al crear un árbol,


la operación de inserción reconoce los intentos de insertar un valor duplicado, ya que este
sigue las mismas decisiones de “ir a la izquierda” “ir a la derecha” en cada comparación, al
igual que el valor original. Por lo tanto, la operación de inserción eventualmente compara el
valor duplicado con un nodo que contenga el mismo valor.

Arboles estrechamente empaquetados (o balanceados). En este tipo de árboles, cada nivel


contiene cerca del doble de elementos que el nivel anterior.

Arboles AVL. Están siempre equilibrados de tal modo que, para todos los nodos, la altura
de la rama izquierda no difiere en más de una unidad de la altura de la rama derecha o
viceversa. Gracias a esta forma de equilibrio (o balanceo), la complejidad de una búsqueda
en uno de estos árboles se mantiene siempre en orden de complejidad O (log n).
Factor de equilibrio. Puede ser almacenado directamente en cada nodo o ser computado a
partir de las alturas de los sub árboles.
6
Arboles rojo negro. Un árbol rojo-negro es un árbol binario de búsqueda en el que cada
nodo tiene un atributo de color cuyo valor es o bien rojo o bien negro. Además de los
requisitos impuestos a los árboles binarios de búsqueda convencionales, se deben satisfacer
los siguientes para tener un árbol rojo-negro válido:

❖ Todo nodo es o bien rojo o bien negro.


❖ La raíz es negra.
❖ Todas las hojas son negras (las hojas son los hijos nulos).
❖ Los hijos de todo nodo rojo son negros (también llamada "Propiedad del rojo").
❖ Cada camino simple desde un nodo a una hoja descendiente contiene el mismo
número de nodos negros, ya sea contando siempre los nodos negros nulos, o bien no
contándolos nunca (el resultado es equivalente). También es llamada" Propiedad del
camino", y al número de nodos negros de cada camino, que es constante para todos
los caminos, se le denomina "Altura negra del árbol", y por tanto el camino no puede
tener dos rojos seguidos. El camino más largo desde la raíz hasta una hoja no es más
largo que 2 veces el camino más corto desde la raíz del árbol a una hoja en dicho
árbol. El resultado es que dicho árbol está aproximadamente equilibrado.

Árbol AA. Los árboles AA son una variación del árbol rojo-negro, que a su vez es una mejora
del árbol binario de búsqueda. A diferencia de los árboles rojo-negro, los nodos rojos en un
árbol AA sólo pueden añadirse como un hijo derecho. En otras palabras, ningún nodo rojo
puede ser un hijo izquierdo.

Arboles multicamino. Un árbol multicamino posee un grado g mayor a dos, donde cada
nodo de información del árbol tiene un máximo de g hijo.
# 4.1.2 OPERACIONES BÁSICAS SOBRE ARBOLES BINARIO.

❖ Enumerar todos los elementos. 7


❖ Buscar un elemento.
❖ Dado un nodo, listar los hijos (si los hay).
❖ Borrar un elemento.
❖ Eliminar un subárbol (algunas veces llamada podar
❖ Añadir un subárbol (algunas veces llamada injertar
❖ Encontrar la raíz de cualquier nodo. Por su parte, la representación puede realizarse
de diferentes formas. Las más utilizadas son: Advertisement
❖ Representar cada nodo como una variable en el heap, con punteros a sus hijos y a su
padre.
❖ Representar el árbol con un array donde cada elemento es un nodo y las relaciones
padre-hijo vienen dadas por la posición del nodo en el array.

# 4.1.3 APLICACIONES

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.

Una manera de encontrar los elementos duplicados en un arreglo es recorrer todo el arreglo
y comparar con cada uno de los elementos del arreglo. Esto implica que si el arreglo tiene
elementos, se deben hacer comparaciones, claro, no es mucho problema si es un número
pequeño, pero el problema se va complicando más a medida que aumenta. Si usamos un
árbol binario, el número de comparaciones se reduce bastante, veamos cómo.

El primer número del arreglo se coloca en la raíz del árbol (como en este ejemplo siempre
vamos a trabajar con árboles binarios, simplemente diremos árbol, para referirnos a un árbol 8

binario) con sus subárboles izquierdo y derechos vacíos. Luego, cada elemento del arreglo
se compara son la información del nodo raíz y se crean los nuevos hijos con el siguiente
criterio:

❖ Si el elemento del arreglo es igual que la información del nodo raíz, entonces notificar
duplicidad.
❖ Si el elemento del arreglo es menor que la información del nodo raíz, entonces se crea
un hijo izquierdo.
❖ Si el elemento del arreglo es mayor que la información del nodo raíz, entonces se crea
un hijo derecho.

# 4.2. GRAFOS

Un grafo G es un par G = (V, E), donde V es un conjunto finito (vértices, nodos) y E es un


multiconjunto de pares no ordenados de vértices, denotados por {x, y}, que se denominan
lados, aristas, etc. En este caso decimos que X y Y son extremos de {x, y}. Denotamos V (G)
por el conjunto de vértices del grafo G y por E (G) el conjunto de lados del grafo G.

Además (G) y "(G) denotan el número de vértices y el número de aristas de G


respectivamente. Puesto que E es un multiconjunto es posible que existen pares repetidos, en
este caso G tiene lados múltiples. También es posible que algún par no ordenado de E tenga
el mismo vértice repetido, en este caso decimos que el lado es un lazo (loop) o bucle. Cuando
existen lados múltiples y/o lazos decimos que G es un multígrafo.
Si no hay lados múltiples ni lazos decimos que es un grafo simple. Un dígrafo G es un par G
= (V, E) donde V es un conjunto de vértices y E es un multiconjunto de pares ordenados. Los
lados se denotan por pares ordenados, (u, v) denota el lado dirigido que tiene como vértice
inicial a u y como vértice terminal a v.
9

A continuación, damos unas definiciones:

Definición 1.- Un grafo simple G (V, E) consta de V, un conjunto no vacío de vértices, y de


E, un conjunto de pares no ordenados de elementos distintos de V. A esos pares se les llama
aristas o lados.

Definición 2.- Un grafo dirigido o dígrafo G = (V, E) consta de un conjunto V de vértices,


un conjunto E de aristas, que son pares ordenados de elementos de V.

En matemáticas y ciencias de la computación, un grafo (del griego grafos: dibujo, imagen)


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. Son
objeto de estudio de la teoría de grafos.

Típicamente, un grafo se representa gráficamente como un conjunto de puntos (vértices o


nodos) unidos por líneas (aristas). Desde un punto de vista práctico, los grafos permiten
estudiar las interrelaciones entre unidades que interactúan unas con otras. Por ejemplo, una
red de computadoras puede representarse y estudiarse mediante un grafo, en el cual los
vértices representan terminales y las aristas representan conexiones (las cuales, a su vez,
pueden ser cables o conexiones inalámbricas).
# 4.2.1 REPRESENTACIÓN DE GRAFOS

Grafos Dirigidos. Un grafo en el cual toda arista es dirigida se denominará "digrafo" o bien
10
"grafo dirigido". Un grafo dirigido o dígrafo consiste de un conjunto de vértices V y un
conjunto de arcos A.

Los vértices se denominan nodos o puntos; los arcos también se conocen como aristas o
líneas dirigidas que representan que entre un par de vértices existe una relación unívoca.

Grafos no Dirigidos. Un grafo en el cual todas las aristas son no dirigidas se denominará
"grafo no dirigido". El grafo no dirigido es aquel que no tiene sentido su arista. Un grafo no
dirigido G representa elementos, y una arista (v, w) representa una incompatibilidad entre los
elementos v y w.

Si en un Grafo hay aristas dirigidas y aristas no dirigidas, entonces el grafo se denomina


"mixto".

Existen diferentes formas de representar un grafo (simple), además de la geométrica. Entre


las estructuras más sencillas y usadas se encuentran las listas y las matrices, aunque
frecuentemente se usa una combinación de ambas.
# 4.2.2 OPERACIONES BÁSICAS DE LOS GRAFOS

En los grafos, como en todas las estructuras de datos, las dos operaciones básicas son insertar
11
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. La operación de inserción de un nuevo vértice es una operación muy


sencilla, únicamente 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 arista llegará a él.

Insertar arista. Esta operación es también muy sencilla. 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. Esta operación es inversa a la inserción de 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.

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 (Dechima, 2013).
PRACTICA

12
13
CONCLUSIÓN

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

BIBLIOGRAFÍA

Dechima, S. (27 de Mayo de 2013). sabrinamatematica.blogspot.com. Obtenido de


sabrinamatematica.blogspot.com:
https://sabrinamatematica.blogspot.com/2013/04/triangulo-de-sierpinski.html

También podría gustarte