Documentos de Académico
Documentos de Profesional
Documentos de Cultura
rboles
rbol es el nombre que se le da a un grupo verstil de estructuras de datos. Se pueden utilizar para implementar un nmero de interfaces abstractas, incluida la interfaz List, pero las aplicaciones en las que resultan ms tiles emplean estructuras de ramas de rboles para representar alguna propiedad de los elementos de los datos o para optimizar ciertos mtodos. Por ejemplo, los rboles de juegos Minimax se suelen utilizar en programas de juegos para representar la forma en que las posiciones de la clasificacin se multiplican a partir de una situacin original.
2
E
Hijos de B
H
hojas
3
rbol binario
Un tipo de rbol habitual y de gran utilidad es el llamado rbol binario, que permite que un nodo tenga, al menos, dos hijos. A continuacin se incluye una definicin formal del rbol binario que hace hincapi en el carcter recursivo del rbol:
Un rbol binario es un rbol vaco, o bien un nodo raz con subrboles formados por rboles binarios a la derecha y a la izquierda.
7
2.
raz raz B D
E F
8
Recorridos
Preorder: A B D E C F H I G Inorder: DBEAHFICG Postorder: D E B H I F G C A
A B C
H I
11
rboles analizadores
Considere una expresin aritmtica que tal vez desee calcular con una calculadora: 3.14159*((6+3*1.17)/2)2 Esta expresin se puede ver como un rbol en el que los nodos que no son hojas contienen operadores y sus hijos contienen los operandos, que pueden ser subexpresiones. El rbol resultante recibe el nombre de rbol analizador o de expresin.
14
^ 2 / + 2
6 * 3 1.17
15
3.14159
1.17
16
Ejercicio TreeEditor, 1
Descargue TreeEditor.jar y TreeEditor.bat desde el sitio web de clase en el mismo directorio. Puede encontrar los enlaces en la pgina del material de clase. Haga doble clic en TreeEditor.bat para ejecutarlo. Cree un rbol binario de bsqueda agregando un nodo raz de valor 7 y, a continuacin, hijos con la siguiente secuencia de nodos: 1,3,4,5,8,9,10,15. Compruebe que el rbol cumple la propiedad del rbol binario de bsqueda. Compruebe los valores de los nodos haciendo clic en recorrido inorder. Si ha construido un rbol binario de bsqueda correcto, los nodos se mostrarn en orden. Ahora seleccione el nodo raz, borre la pantalla y vuelva a crear el rbol con los mismos nodos, pero esta vez convierta al nodo 3 en nodo raz.
17
Ejercicio TreeEditor, 2
Seleccione el nodo raz y borre la pantalla. Ahora cree un rbol analizador para la expresin aritmtica (1+2.718)*2 / 2*3.14 utilizando +, -, * y /. Haga clic en los botones inorder y postorder de recorrido. Si est seguro de haber creado un rbol analizador correcto, haga clic en el botn de clculo para calcular la expresin. El editor mostrar la respuesta "please check your input for each node" (compruebe los datos de entrada para cada nodo) si el rbol no es vlido. Por el contrario, si ha creado un rbol correcto, se calcular el valor de la expresin.
18
19
10
11
23
12
Eficacia algortmica
En nuestro ejemplo de bsqueda en una lista enlazada, el trmino cs no nos importa demasiado, ya que no cambia a medida que la lista crece. Lo que s es relevante es que podemos esperar un crecimiento lineal del tiempo de ejecucin directamente proporcional a la envergadura del problema (la longitud de la lista). Si nuestro algoritmo tuviese dos o ms bucles dependientes del nmero de elementos, la frmula para el peor de los casos sera una suma de los trminos dependientes de la variable n. Por ejemplo, En este caso, el trmino elevado al cuadrado es el importante. Decimos que el trmino n2 domina al trmino 5n a medida que n crece.
26
13
Dominancia
Algunos trminos dominarn a otros a medida que n crece. Por ejemplo, en una suma de trminos polinmicos, el trmino con mayor exponente es el que domina al resto. De la misma forma, n dominar a log n y 2n dominar a na para cualquier constante a.
27
Notacin O()
Teniendo la dominancia en cuenta, el aumento del tiempo de ejecucin de un algoritmo suele reducirse a un nico trmino sin una constante. As, el tiempo de bsqueda para una bsqueda lineal en una lista enlazada sencilla aumentar proporcionalmente a n, la longitud de la lista. De modo ms formal, lo denominamos algoritmo O(n) (ledo de orden n). El tiempo de ejecucin de un algoritmo O(n2) aumentar ms rpidamente (proporcionalmente al cuadrado de n) y en un algoritmo O( log n ) lo har ms despacio.
28
14
29
15