Recorrido de Grafos utilizando árboles Análisis de algoritmos
Es una estructura jerárquica aplicada sobre una colección de elementos llamados nodos .
Uno de los cuales es llamado raíz . Los demás nodos son M conjuntos disjuntos (m >=0) cada uno de los cuales es un árbol en si los cuales reciben el nombre de sub-árboles de la raíz.
Además se crea una relación de parentesco entre los nodos de forma que hay términos como: Padre, hijo, hermano, antecesor, sucesor, ancestro, etc.
Para definir un árbol se necesita recursión.
Se utilizan para representar formulas matemáticas, organizar información, árboles genealógicos, enumeración de capítulos y secciones de un libro, etc.
No-lineal porque a cada elemento (nodo) le pueden seguir varios elementos (nodos).
Concepto de Árbol
Nodo raíz: nodo que no tiene padre. Este es el nodo que usaremos para referirnos al árbol. En el ejemplo, ese nodo es el 'A'.
Nodo hoja: nodo que no tiene hijos. En el ejemplo hay varios: 'F', 'H', 'I', 'K', 'L', 'M', 'N' y 'O'.
Nodo rama: aunque esta definición apenas la usaremos, estos son los nodos que no pertenecen a ninguna de las dos categorías anteriores.
En el ejemplo: 'B', 'C', 'D', 'E', 'G' y 'J'.
Posición dentro de un árbol A B C D E F G H I J K L M N O
Recorrido de un se recorre el subárbol izquierdo; se recorre el subárbol derecho; se visita la raíz; Post Orden se recorre el subárbol izquierdo; se visita la raíz; se recorre el subárbol derecho; In Orden se visita la raíz; se recorre el subárbol izquierdo; se recorre el subárbol derecho; Pre Orden
Pre-Orden Se visita la raíz; se recorre el subárbol Izquierdo; se recorre el subárbol Derecho; Recorrido = A B E K F C G L M D H I J N O A B C D E F G H I J K L M N O
In-Orden Se recorre el subárbol Izquierdo; Se visita la raíz; se recorre el subárbol Derecho Recorrido = E K B F A L G M C H D I N J O A B C D E F G H I J K L M N O
Post-Orden Se recorre el subárbol Izquierdo; se recorre el subárbol Derecho; Se visita la raíz; Recorrido = K E F B L M G C H I N O J D A A B C D E F G H I J K L M N O
Ejemplo II ● Pre Orden
ALGORITMO
Se visita la raíz; se recorre el subárbol izquierdo; se recorre el subárbol derecho;
Secuencia:
* +a / b c - d * e f
* - a + / b c d * e f
ALGORITMO:
Se recorre el subárbol izquierdo; Se visita la raíz; Se recorre el subárbol derecho;
Secuencia:
a + b / c * d - e * f
Ejemplo II ● In Orden
ALGORITMO:
sub-árbol izquierdo
sub-árbol derecho
Visitar la raíz
Secuencia:
a b c / + d e f * - *
Ejemplo II ● Post Orden
Igual que los recorridos en árboles, se parte de un nodo dado y sirven para visitar los vértices y los arcos de manera sistemática. Existen dos tipos de recorridos: – Búsqueda en amplitud o anchura. Es equivalente a recorrer un árbol por niveles. Dado un nodo v, se visitan primero todos los nodos adyacentes a v, luego todos los que están a distancia 2 (y no visitados), a distancia 3, y así sucesivamente hasta recorrer todos los nodos. – Búsqueda en profundidad. Es equivalente a un recorrido en preorden de un árbol. Se elige un nodo v de partida. Se marca como visitado y se recorren los nodos no visitados adyacentes a v, usando recursivamente la búsqueda primero en profundidad. • El recorrido puede ser para grafos dirigidos o no dirigidos. Recorrido de GRAFOS
Recorrido por Anchura Recorrido desde Vertice por anchura desde vertice D ={D, B, C, H, R, A, T} A B D H T R C D B C R H A T 1° 2° 3° 4° 5° 6° 7° Nivel 1 Nivel 2 Nivel 3 Nivel 4
Recorrido por profundidad A B D H T R C Recorrido por profundidad desde Vértice D= {D, C, R, H, T, A, B} 1° 2° 3° 4° 5° 6° 7° Grafo Dirigido, por lo tanto necesitamos buscar la ruta que incluya más nodos. En este tipo de grafos se asume en algunos casos que el recorrido esta sujeto a los supuestos de: Peso y Orden alfabético.
Test Recorrido de un grafo en anchura. A-B-C-D-E-G-H-I-J-K-F 1° Nivel 2° Nivel 3° Nivel 4° Nivel 5° Nivel A B C D E I F G H J K 1° 2° 3° 4° 5° 6° 7° 8° 9° 10° 11°
Recorrido de un grafo en profundidad Solución: A-B-E-I-F-C-G-J-K-H-D Pre-Orden Se visita la raíz; se recorre el subárbol Izquierdo; se recorre el subárbol Derecho 1° 2° 3° 4° 5° 6° 7° 8° 9° 10° 11° Como es un grafo no dirigido, podemos utilizar el principio de Pre-Orden para abarcar el máximo de nodos
0 comments
Post a comment