Está en la página 1de 3

Algoritmos y Estructuras de Datos - Curso 2011

1er Parcial - Sbado 11 de Junio



Ejercicio 1.
Dado el siguiente algoritmo,
a.- Calcular el T(n)
b.- Calcular el O(n) justificando debidamente.

for ( i=1; i<=n; i++) {
for ( j=i^2; j>=1; j--) {
for ( k=i; k<=j; k++) {
** operacion de orden 1**;
}
}
}
}

Pistas:
( )( )

=
+ +
=
n
i
n n n
i
1
2
6
1 2 1

( )

=
+
=
n
i
n n
i
1
2 2
3
4
1

( )( )

=
+ + +
=
n
i
n n n n n
i
1
2 3
4
30
1 9 6 1


Solucin:
( ) ( ) ( )
( )
( )
( )( ) ( )( )
( ) ( )( )
( )( ) ( )( ) ( ) ( )( )
=

+ +
+
+

+ +
+
+ + +
=
=

+ +
+
+

+ +
+
+ + +
=
=

+ + =

+
+
=
=

+
+
=

+ =
=

+ =

+ =




= =
= = = = =
= = = = = = =
6
1 2 1
4
1
12
1 2 1
60
1 9 6 1
6
1 2 1
4
1
2
6
1 2 1
2
30
1 9 6 1
2 2 2
1
2
1
1
1 1
2 2 2 3
2 2
2 3
1
2 3
2 4
1
2 3
2 2
1
2 3
2 2
1 1 1 1
1 1 1 1 1 1
2 2 2
2 2 2
n n n n n n n n n n n n n
c
n n n n n
n n n n n n n n
c
i i
i i
c i i
i i
c
i i
i i
c i j c
i j c i j c c
n
i
n
i
n
i
n
i
i
j
i
j
i
j
n
i
i
j
n
i
i
j
n
i
i
j
j
i k

( )( ) ( )( ) ( ) ( )( )
=

+ + +
+
+ +

+ + +
+
+ + + + +
=
=

+ +
+
+ +

+ +
+
+ + +
=
6
2 2
4
2
12
2 2
60
9 6 9 6
6
1 2
4
1 2
12
1 2
60
1 9 6
2 2 3 2 3 4 2 2 3 2 3 4 2 3 4 5
2 2 2 2 2 3 2
n n n n n n n n n n n n n n n n n n n
c
n n n n n n n n n n n n n n
c

=

+ + + =
=

+ + + +
+ + + + + + + + +
=
=

+ + + +
+ + + + + + + + +
=
=

+ + + +
+ + + + + + + + +
=
n n n n c
n n n n n
n n n n n n n n n n n n n n
c
n n n n n
n n n n n n n n n n n n n n
c
n n n n n
n n n n n n n n n n n n n n
c
60
14
60
20
60
10
60
6
60
10
60
5
60
1
60
20
60
10
60
15
60
10
60
5
60
1
60
1
60
20
60
30
60
10
60
9
60
1
60
15
60
6
60
9
60
6
6
1
12
1
60
1
6
2
6
1
4
1
12
2
12
1
60
1
60
1
6
2
4
2
12
2
60
9
60
1
4
1
60
6
60
9
60
6
6
1
6
2
6
1
6
2
4
1
4
2
4
1
12
1
12
2
12
1
12
2
60
1
60
1
60
9
60
6
60
1
60
1
60
9
60
6
2 3 5
2 2
2 2 2 2 2 3 3 3 3 3 4 4 4 5
2 2
2 2 2 2 2 3 3 3 3 3 4 4 4 5
2 2 3 2
3 4 2 2 3 2 3 4 2 3 4 5
( )
0
5 2 3 5
0 4 4
0 3
5
3
2
0 2
5
2
3
0 1
5
1
5
0
5 2 3 5 5 2 3 5
,
60
14
60
20
60
10
60
6
,
60
14
60
20
60
10
60
6
,
60
14
,
60
14
,
60
20
,
60
20
,
60
10
,
60
10
, ,
60
6
,
60
6
60
14
60
20
60
10
60
6
_ _
60
14
60
20
60
10
60
6
n c c c c k kn cn n c cn cn
n c k n k n c
n c k n k n c
n c k n k cn
n c k n k cn
n n kn cn n c cn cn n O es cn n c cn cn

+ + + = + + +
=
=
=
=
+ + + + +


Ejercicio 2.-
Sea una red de agua potable, la cual comienza en un cao maestro y el mismo se va dividiendo sucesivamente hasta llegar a cada una de las casas. Por
el cao maestro ingresan 1000 litros y en la medida que el cao se divide, el caudal se divide en partes iguales en cada una de las divisiones. Es decir, si
el cao maestro se divide en 4 partes, cada divisin tiene un caudal de 250 litros. Luego, si una de esas divisiones se vuelve a dividir en 3 partes, cada
una tendr un caudal de 83,3. La situacin descripta se puede modelar de la siguiente forma a travs del siguiente rbol general:



Usted debe implementar un mtodo en la clase rbol general, que considerando que ingresan n litros por el cao maestro, calcule cual es el mnimo
caudal que recibe una hoja.
Solucin:
double minimoCaudal (double caudalEntrante) {
double answer = caudalEntrante;
ListaGenerica<ArbolGeneral<T>> hijos = this.getHijos();
if (!hijos.tamanio()==0) {
hijos.comenzar()
1000
250 250 250 250
83,3

83,3 83,3

while (!hijos.fin()) {
answer = min(answer, hijos.elemento().minimoCaudal( caudalEntrante /
hijos.tamanio());
hijos.proximo();
}
}
return (answer);
}
Ejercicio 3.
Sea una red de empresas, en donde una empresa brinda servicios a muchas otras empresas sin ningn tipo de restricciones. Esta relacin no es simtrica,
es decir, la empresa A puede brindar servicios a la empresa B, sin embargo, B no necesariamente debe brindar servicios a la empresa A.
Usted es contratado por una nueva empresa que quiere ingresar a la Red. Por lo cual, le interesar determinar las 5 empresas de la red que llegan a la
mayor cantidad de empresas. Una empresa A llega a otra empresa B, si le brinda servicios directa o indirectamente a travs de otras empresas.
Solucin:
Debe hacer un DFS para cada una de las empresas de la red y contar los nodos a los que llega. Para ello, no debe olvidar marcar los nodos en la medida
que visita, para evitar quedar en loop y contar varias veces el mismo nodo. Como el DFS se ejecuta una vez por cada nodo, es importante que antes de
cada ejecucin los nodos se vuelvan a marcar como no visitados.

También podría gustarte