BLOGGER FUE CREADO POR
ISELA DE JESÚS MARTINEZ CARACHURE
JUANA ESTRADA JACOBO
IRENE PINEDA BARRIO
SALVADOR REYES VILLA
TEMAS
4.1 ARBOLES.
4.1.1.CONCEPTO DE ARBOLES.
4.1.2. CLASIFICACIÓN DE LOS ARBOLES .
4.1.3 OPERACIONES BÁSICAS SOBRE ARBOLES BINARIOS
4.1.4. APLICACIONES.
4.1.5 ARBOLES BALANCEADOS (AVL).
4.2. GRAFOS.
4.2.1. TERMINOLOGÍA DE GRAFOS.
4.2.2. OPERACIONES BÁSICAS SOBRE GRAFOS.
******LA UNIDAD 4********
***ESTRUCTURAS NO LINEALES ***
4.1 ARBOLES
4.1.1 CONCEPTO DE ARBOLES
Las listas enlazadas, pilas y colas son estructuras de datos
lineales (es decir, secuencias).Un árbol es una estructura de datos
bidimensional no lineal, con propiedades especiales. Los nodos de un árbol
contienen dos o mas enlaces. Intuitivamente el concepto árbol implica una
estructura de modo en que los elementos de información están relacionados entre
si a través de ramas. El árbol genealógico es el concepto típico más
representativo del concepto de árbol general. En ciencias de la informática, un ejemplo:
Árbol
es una estructura de datos amplia mente usada que imita la
forma de un árbol (un conjunto de nodos conectados). Un
Nodo
es la unidad sobre la que se construye el árbol y
puede tener cero o más nodos hijos conectados a él. Se dice que un nodo
a es padre de un nodo b si existe un
enlace desde a hasta b (en ese caso, también decimos que b es hijo de a). Sólo puede haber un único
nodo sin padres, que llamaremos raíz. Un nodo que no tiene hijos se conoce como hoja. Los demás nodos (tienen padre y uno o varios hijos) se les
conoce como rama.
Los Árboles tienen 3 Recorridos Diferentes los cuales son:
* Pre-Orden:
La raíz se procesa primero, luego el subárbol izquierdo y
luego el derecho.
* In-Orden:
Primero la raíz, luego el subárbol izquierdo y luego el
derecho.
* Post-Orden:
Primero el subárbol izquierdo, luego el derecho y luego la
raíz.
4.1.2 CLASIFICACIÓN DE ARBOLES- 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 a 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 arboles 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 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 procesaran antes del siguiente hijo.
Recorrido en anchura: El proceso se realiza horizontalmente
desde el 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 Listas decisiones de “ir a la
izquierda” a “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. En este punto, la operación de inserción
puede decidir descartar el valor duplicado.-
Arboles estrechamente empaquetados (o
balanceados):
En este tipo de arboles, 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). El factor de equilibrio puede ser almacenado directamente en cada nodo o ser
computado a partir de las alturas de los subárboles .
Ejemplo:
- 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 hijos.
4.1.3
OPERACIONES BÁSICAS SOBRE ARBOLES BINARIOS
* *Enumerar todos los elementos.
* Buscar un elemento.
* Dado un nodo, listar los hijos (si los hay).
* Borrar un elemento.
*Eliminar un subárbol (algunas veces llamada podar).
Encontrar
la raíz de cualquier nodo .Por su parte, la representación puede realizarse de
diferentes formas. Las más utilizadas son:
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 bien en dadas por la posición
del nodo en el array.
4.1.4 APLICACIONES
Los arboles binarios facilitan la búsqueda
y ordenamiento de los datos de alta velocidad, la eliminación eficiente de
elementos de datos duplicados, la representación de directorios del sistema de
archivos y la compilación de expresiones en lenguaje maquina. El árbol de
búsqueda binaria facilita la eliminación de valores duplicados. Al crear un árbol
se reconocen los intentos de insertar un valor duplicado, ya que este sigue las
mismas decisiones de
“ir a a izquierda” a “ir a la derecha” en
cada aclaración, a
igual que el valor original. Por lo tanto,
eventualmente se comprar el valor duplicado con un nodo que contenga el mismo
valor. El valor duplicado puede destacarse en este punto. Otra de las
aplicaciones mas importantes es dentro de la inteligencia artificial, y mas concreta mente
en el área de reconocimiento de patrones. Se trata de utilizar los arboles para
realizar clasificaciones. La clave esta en asignar a cada nodo del árbol un
significado. Las distintas ramas tienen asociados criterios que ayudan a determinar
el sentido de las búsquedas. También con aplicables en el análisis de
notaciones algebraicas y la implementan de algoritmos de compresión, etc.
4.1.5 ARBOLES BALANCEADOS (AVL)
La búsqueda mas eficiente se efectúa en un
árbol binario balanceado .Desafortunadamente,
la función Inserta no asegura que el árbol permanezca balanceada, el grado de
balance depende del orden en que son insertados los nodo se n el árbol .Un
árbol esta perfectamente balanceado si su estructura es optima con respecto al largo
del camino de la raíz a cada hoja :Todas las hojas están en el mismo nivel, es
decir, el largo máximo de tal camino es igual
al largo mínimo de tal camino sobre todas las hojas .La altura de un árbol
binario es el nivel máximo de sus hojas (profundidad). La altura del árbol uno
se define como -1. Un árbol binario balanceado es un árbol binario en el cual
las alturas de los subárboles de todo nodo difiere a lo sumo en
1. El balance de un nodo en un árbol
binario se define como la altura de su subárbol izquierdo menos la altura de su
subárbol derecho. Cada nodo en un árbol binario balanceado tiene balance igual
a 1, -1 o 0, dependiendo de si la altura de su subárbol izquierdo es mayor que,
menos que o igual a la altura de su subárbol derecho .Su póngase que tenemos un
árbol binario balanceado, y usamos la función para insertar un nodo en dicho
árbol. Entonces el árbol resultante puede o no permanecer balanceado .Es fácil
ver que el árbol se vuelve des balanceado si y solo si el nodo recién insertado es
un descendiente izquierdo de un nodo que tenia de manera previa balance de 1, o
si es un hijo derecho descendiente de un nodo que tenia de manera previa
balance-1.Para que el árbol se mantenga balanceado es necesario realizar una
transformación en el mismo de manera que:
1.- El recorrido en orden del árbol
transformado sea el mismo que para el árbol original (es decir, que el árbol
transformado siga siendo un árbol de búsqueda binaria).
2.- El árbol transformado este balanceado
Un
grafo es una estructura de datos no lineal con la siguiente característica: un
nodo puede apuntar a varios y a su vez ser apuntado por otro.
4.2.1 TERMINOLOGÍA DE GRAFOS
Un
grafo se compone por un conjunto de V vértices y un conjunto de A aristas. Cada
arista se identifica con el par de vértices que une. Los vértices de una arista
son entre si nodos adyacentes.
- Grado de un nodo:
Numero
de aristas que contiene ese nodo. Si el grado de un nodo es 0, se dice que es
un nodo aislado.
- Grado de un grafo:
Números
de vértices de ese grafo.
- Camino:
Un
camino C de longitud N de un nodo V1 a un nodo V2, se define como la secuencia
de nodos por los que hay que pasar para llegar del nodo V1 a V2. La longitud es
el numero de aristas que comprende el camino. El camino es cerrado si empieza y
termina en el mismo nodo. El camino es simple si todos los nodos de dicho
camino son distintos a excepción de los de los extremos que pueden ser iguales.
- Bucles:
Aristas
cuyos extremos son idénticos.
- Aristas múltiples:
Dos o
mas aristas que conectan los mismos nodos.
Tipos de grafos:
-
Grafo conectado o conexo:
Existe
un camino simple entre dos cualquiera de sus nodos.
Aquel en que existen
nodos que no están unidos por ningún camino.
Grafo dirigido:
Cada arista tiene asignada una dirección (identificada por
un par ordenado).
La arista esta definida por un par no ordenado.
Grafo sencillo:
Aquel que no tiene ni bucles ni aristas múltiples.
Grafo múltiple o multígrafo:
Permite la existencia de aristas múltiples o bucles.
Grafo completo:
Cada nodo del grafo es adyacente a todos los demás.
Grafo etiquetado con peso ponderado:
Cada arista tiene asociado un valor denominado peso. Se usa
para indicar algún criterio de evaluación como la longitud o la importancia de
la arista respecto a un parámetro.
Peso de un camino:
La suma de los pesos de las aristas del camino.
Representación de los grafos:
Existen dos formas de representar un grafo:- Con memoria estática (Matriz adyacente):
Matriz de N*N elementos donde N es el numero de nodos del grafo. Cada
posición M(i ,j) indica si hay una conexión o no entre los nodos que están
asociados a la posición i y j de la
matriz.- Con memoria dinámica. Se utilizan 2 listas enlazadas:*Lista
de nodos: Formada por todos lo vértices*Lista de adyacentes: Contiene las
aristas del grafo.
4.2.2 OPERACIONES BÁSICAS SOBRE GRAFOS
Se trata de localizar un nodos que contiene una determinada
información. Para ello le pasamos la información al procedimiento de búsqueda y
este devuelve su posición si lo encuentra, o NULL en caso contrario.
- Búsqueda de una arista:
Se trata de buscar una arista dados sus campos de información
origen y destino. Devuelve un puntero a la lista de aristas que apunta a esa
arista o NULL si no existe.
Inserción de un nodo:
Se recorre el grafo hasta el punto de inserción. A continuación
se actualizan los puntos que salen del nuevo nodo y aquellos que lo apunten a
el desde nodos ya existentes.
- Inserción de una arista:
Primero hay que comprobar si existen los nodos origen y destino,
luego hay que comprobar que no exista una arista igual en esa dirección. Por
ultimo se realizara la inserción.
- Borrado de un nodo:
Primero se borra un nodo y después todas sus aristas.