GUIA DE TEXTOS EDUCATIVOS SANTILLANA PARA SECUNDARIA
Estructuras Discretas - Árboles Enraizados
1. Curso : Estructuras Discretas
Profesor: Jonny Albitres Infante
Integrantes: Diego Nicho Alvares
Julio De la Cruz Santisteban
Carlos Pujada Narro
Hans Rojas Pacheco
2. ARBOLES ENRAIZADOS
• Árbol es el nombre que se le da a un grupo versátil
de estructuras de datos.Se pueden utilizar para
implementar un número de interfaces
abstractas, incluida la interfaz List, pero las
aplicaciones en las que resultan más útiles emplean
estructuras de ramas de árboles para representar
alguna propiedad de los elementos de los datos o
para optimizar ciertos métodos. Por ejemplo, los
árboles de juegos Minimax se suelen utilizar en
programas de juegos para Representar la forma en
que las posiciones de la clasificación se multiplican
a partir de una situación original.
3.
4. ÁRBOLES, NODOS Y RAÍCES
• Un árbol consta de nodos conectados, Cada
árbol (salvo un árbol vacío degenerado)
cuenta con un nodo distinguido llamado raíz.
No puede haber rutas circulares en las
conexiones de un árbol, de tal forma que sólo
puede existir una ruta única desde cada nodo
hasta la raíz.
5. NODOS HIJOS Y PADRES
Todos los nodos conectados a un nodo concreto
son hijos o bien el padre de dicho nodo. Si el nodo
conectado se encuentra en la única ruta a la
raíz, dicho nodo recibe el nombre de padre. Todos
los nodos, salvo la raíz, tienen un único padre. El
resto de nodos conectados a un nodo concreto son
los hijos del nodo.
6. Antecesores, descendientes y
subárboles
• Los nodos que se encuentran en la ruta que va
desde un nodo a la raíz reciben el nombre de
antecesores del nodo e incluyen a su padre, al
padre de su padre, etc., hasta llegar a la raíz.
• El conjunto de nodos que incluyen a los hijos del
nodo, a los hijos del hijo, etc., reciben el nombre
de descendientes del nodo. Un nodo y sus
descendientes forman un subárbol enraizado a
dicho nodo. Un nodo sin hijos recibe el nombre
de hoja.
7. CODIFICACIÓN DE LOS ALGORITMOS
• La principal razón para que las personas
aprendan lenguajes de programación es utilizar
un ordenador como una herramienta para la
resolución de problemas
• Tres fases pueden ser identificadas en el proceso
de resolución:
• Fase de Identificación (qué nos plantean)
• Fase de resolución del problema
• Fase de implementación (realización) en un
lenguaje de programación
8. ANÁLISIS DEL PROBLEMA
• Entrada:
• Información dada al algoritmo.
• Proceso:
• Operaciones o cálculos necesarios para encontrar la solución del problema.-
• Salida:
• Respuestas dadas por el algoritmo o resultadosfinalesde los procesos
realizados. Como ejemplo supongamos que desea desarrollar un algoritmo que
calcule la superficie de un rectángulo proporcionándole su base y altura. Lo
primero que debemos hacer es plantearnos las siguientes preguntas:
• Especificaciones de entrada ¿Que datos son de entrada? ¿Cuántos datos se
introducirán? ¿Cuántos son datos de entrada válidos? Especificaciones de salida
¿Cuáles son los datos de salida? ¿Cuántos datos de salida se producirán? ¿Qué
formato y precisión tendrán los resultados?
9. • El algoritmo que podemos utilizar es el siguiente:
• -Paso 1. Entrada desde el teclado, de los datos de base
y altura.
• -Paso2. Cálculo de la superficie, multiplicando la base
por la altura.
• -Paso 3. Salida por pantalla de base, altura y superficie
calculada. El lenguaje algorítmico debe ser
independiente de cualquier lenguaje de programación
particular, pero fácilmente traducible a cada uno de
ellos. Alcanzar estos objetivos conducirá al empleo de
• Métodos normalizados para la representación de
algoritmos, tales como los diagramas de flujo o
pseudocódigo.
10.
11. ALGORITMO DE RECORRIDO BFS Y
DFS
• Algoritmo de recorrido BFS
La búsqueda en anchura (o búsqueda en
amplitud), llamada Breadth First Search en inglés, es un
algoritmo usado para recorrer o buscar elementos en una
estructura de datos como los árboles y los grafos (aunque
nosotros nos centremos ahora mismo en los árboles).
Pertenece al grupo de las búsquedas no informadas (sin
heurísticas). Su procedimiento consiste en ir visitando
todos los nodos de un nivel antes de proceder con el
siguiente nivel tal y como mostramos en la siguiente
figura (los números en naranja indican el orden de
exploración de los nodos)
12.
13. • De modo que lo primero que hará será visitar la
raíz, luego los hijos de la raíz, luego los hijos de cada
uno de estos hijos y así sucesivamente. ¿Cómo
hacemos esto para que funcione, pensaréis? La
respuesta es sencilla: usar una cola como estructura de
datos auxiliar.
• Una cola es una estructura FIFO (First In, First Out) en
la que sólo disponemos de dos operaciones: insertar al
final de la cola y extraer del principio de la cola. Por
tanto, el elemento que entra el último será el último en
salir. Como hemos elegido Java como lenguaje de
programación para esta entrada, disponemos ya de la
interfaz Queue<E> y la clase LinkedList<E> que nos van
a brindar la funcionalidad de las colas sin programar
nada.
14. Algoritmo de recorrido DFS
• La búsqueda en profundidad, llamada Depth First
Search en inglés, es un algoritmo usado para recorrer o
buscar elementos en un árbol o un grafo y pertenece al
grupo de las búsquedas no informadas (sin heurísticas).
Su procedimiento consiste en visitar todos los nodos de
forma ordenada pero no uniforme en un camino
concreto, dejando caminos sin visitar en su proceso.
Una vez llega al final del camino vuelve atrás hasta que
encuentra una bifurcación que no ha explorado, y
repite el proceso hasta acabar el árbol (esto se conoce
como backtracking). En la siguiente figura mostramos
el orden de visita, siendo los números en naranja dicho
orden:
15. Como vemos, la búsqueda en profundidad busca el elemento por el camino de
máxima profundidad y cuando éste se acaba, vuelve al último nodo que había
visitado con caminos posibles (caminos abiertos).
16. • VENTAJAS DE LA BÚSQUEDA EN PROFUNDIDAD
• -Es completa si no existen ciclos repetidos.
• -Tiene menor complejidad en espacio que la
búsqueda en anchura, porque solo mantenemos
en memoria un camino simultáneamente.
• INCONVENIENTES DE LA BÚSQUEDA EN
PROFUNDIDAD:
• -No es óptima.
• -Puede no encontrar la solución aunque exista si
hay caminos infinitos. Luego no es completa.