Taller 3
Programación
Matemática a Gran
Escala
Departamento de Ingeniería de
Sistemas e Industrial
Universidad Nacional de
Colombia
Fecha de Entrega: Octubre 14, 2003
Desarrollar
un programa que resuleva el siguiente problema:
Un árbol binario de búsqueda debe
satisfacer las
siguientes propiedades:
- Cada nodo debe
tener un único valor
- El valor de un
nodo dado debe ser mayor que el valor de cada nodo en el
subárbol
izquierdo.
- El valor de un
nodo dado debe ser menor que el valor de cada nodo en el
subárbol
derecho.
La profundidad de un nodo
corresponde al número de vértices en el único
camino a la
raíz (la profundidad de la raíz es 1). El access score (AS) de un árbol de búsqueda se calcula
multiplicando la profundidad de cada nodo por la probabilidad de
accederlo.
El problema es encontrar el árbol con AS mínimo para un
conjunto de
datos con una serie de probabilidades dada.
El programa debe recibir los datos y las probabilidades de acceso. Las probabilidades se
especifican porcentualmente, es decir, con números enteros entre
0 y
100. El programa debe imprimir el AS y el árbol optimo.
Ejemplos:
1. Datos= {2,5,3,6} Probabilidades de acceso={15,25,35,25}
AS máximo = 2*15 + 1*35 + 2*25 + 3*25 = 190, para el
árbol:
3
/ \
2 5
\
6
2. Datos= {6,5,3,7,51,36} Probabilidades de acceso={15,13,39,10,3,20}
AS mínimo = 211, para el árbol:
6
/ \
5 36
/ / \
3 7 51
3. Datos= {6,5,3,7,51,36} Probabilidades de acceso={20,3,10,39,13,15}
AS mínimo = 190, para el árbol:
7
/ \
6 36
/ \
3 51
\
5