430 likes | 682 Views
Árboles. Grafo que no contiene ciclos, es decir es un grafo también acíclico, pero a su vez es conexo. Los bosques de árboles son un caso similar a los árboles, son acíclicos, pero no son conexos. Bosques.
E N D
Árboles Grafo que no contiene ciclos, es decir es un grafo también acíclico, pero a su vez es conexo.
Los bosques de árboles son un caso similar a los árboles, son acíclicos, pero no son conexos Bosques
Un grafo conexo es un grafo no dirigido de modo que para cualquier par de nodos existe al menos un camino que los une". Grafo Conexo
Un árbol enraizado es un árbol libre con un vértice (o nodo) distinguido denominado raíz. Árbol enraizado
Si existe un camino de un nodo x a un nodo y en un árbol T, se dice que x es antecesor de y, y que y es sucesor de x.
Si (x, y) es el último arco en el camino desde la raíz r del árbol T hasta el nodo y, entonces x es el padre de y, e y es el hijo de x. La raíz es el único nodo en T que no tiene padre.
Un nodo sin hijos lo denominaremos hoja. El resto son nodos internos. El grado de un nodo es el número de hijos que tiene.
Se llama profundidad de un nodo a la longitud del camino desde la raíz hacia ese nodo. La altura de un árbol es la profundidad del nodo más profundo.
ÁRBOLES BINARIOS Un árbol binario es un árbol en el que el máximo número de hijos de cada nodo es 2 (hijo izquierdo e hijo derecho).
Un árbol binario es: Lleno si todos los nodos tienen 2 hijos no vacíos excepto los del último nivel que son hojas.
Completo cada nivel i, o<i<h-1 tiene 2 nodos Los nodos del nivel h-1 con hijos están a la izquierda. No existen hijos únicos
Homogéneo si cada nodo tiene 0 o 2 hijos Un árbol binario es:
A veces puede interesar un recorrido sistemático y eficiente de todos los nodos del árbol Recorridos de árboles binarios
Coste de todos los algoritmos q(n), siendo n el número de nodos del árbol después de la llamada inicial, la función se llama recursivamente exactamente 2 veces para cada nodo del árbol: una vez para su hijo izquierdo y otra para su hijo derecho.
La clave de la raíz se imprime entre los valores de su subárbol izquierdo y derecho. Recorridos de árboles binarios: Inorden
La clave de la raíz se imprime después de los valores de sus subárboles Recorridos de árboles binariosPostorden
La clave de la raíz se imprime antes de los valores de sus subárboles. Recorrido de árboles binarios: Preorden
Utilización de la estructura AB para representar expresiones aritméticas con operadores binarios Ejemplo de árboles binarios: árbol de expresiones
Raíz: operador principal Nodos internos: operadores de subexpresiones Hojas: operandos (niveles: precedencia relativa de evaluación)
Método para recorrer de forma sistemática y eficiente un grafo. Recorridos de grafos
Recorrido en profundidad: Generalización del recorrido en preorden de un árbol
Recorrido en amplitud: Generalización del recorrido en niveles de un árbol
En todos los algoritmos de recorrido de grafos supondremos que el grafo está implementado con listas de adyacencia
Recorrido en profundidad de un grafo Dado un grafo G = (V,A) y un v´ertice v 2 V , la estrategia de recorrido en profundidad (Depth-First Search (DFS)), explora sistemáticamente las aristas de G de manera que primero se visitan los vértices adyacentes a los visitados más recientemente.
De esta forma, se va profundizando en el grafo; es decir, alejándose progresivamente de v.
Este proceso continúa hasta que todos los vértices alcanzables desde el vértice de la llamada original han sido descubiertos.
Esta estrategia admite una implementación simple de forma recursiva y proporciona: Ordenamientos de los vértices. Clasificación de las aristas.
Algunas aplicaciones: Calcular un posible orden topológico y comprobar si el grafo es acíclico. Encontrar las componentes fuertemente conexas de un grafo.
Dado un grafo G = (V,A) y un vértice s∊ V, la estrategia de recorrido en amplitud o en anchura (Breadth-First Search (BFS)), explora sistemáticamente las aristas de G de manera que primero se visitan los vértices más cercanos a v. Recorrido en amplitud de un grafo
Algunos algoritmos importantes de grafos tienen una estructura similar al BFS. Por ejemplo, el algoritmo de Dijkstra para encontrar los caminos más cortos desde un vértice dado.
a distancia k + 1. El algoritmo BFS explora todos los vértices a distancia k del vértice origen s antes de empezar a explorar los vértices
Al igual que DFS, se utiliza un vector de tipo “color” para marcar los vértices del grafo como no visitados (WHITE), visitándose (GRAY) o ya visitados (BLACK)
También se genera un vector de predecesores para obtener un árbol.