Regla del limite - andres726127/An-lisis-de-Algoritmos GitHub Wiki
package comprobacionb1;
public class ComprobacionB1 {
public static double f1(int n) {
return Math.pow(n, 3) + 9 * n * n * Math.log(n);
}
public static double g1(int n) {
return n * n * Math.log(n);
}
public static double n2(int n) {
return n * n;
}
public static double f2(int n) {
return Math.pow(2, n);
}
public static double g2(int n) {
return Math.pow(2, 2 * n); // equivalente a (2^n)^2
}
public static void main(String[] args) {
System.out.printf("%-5s %-15s %-15s %-15s %-15s %-15s\n", "n", "f1(n)", "g1(n)", "f1/g1", "f1/n^2", "f2/g2");
for (int n = 2; n <= 100; n *= 2) {
double f1 = f1(n);
double g1 = g1(n);
double f2 = f2(n);
double g2 = g2(n);
double n2 = n2(n);
System.out.printf("%-5d %-15.2f %-15.2f %-15.4f %-15.4f %-15.8f\n",
n, f1, g1, f1 / g1, f1 / n2, f2 / g2);
}
}
}
Análisis de Complejidades Asintóticas
Funciones dadas:
- ( f(n) = n^3 + 9n^2 \log(n) )
- ( g(n) = n^2 \log(n) )
- ( h(n) = n^2 )
- También se analiza:
- ( f(n) = 2^n )
- ( g(n) = 2^{2n} )
Parte 1: Comparación entre ( f(n) = n^3 + 9n^2 \log(n) ) y otras funciones
¿Pertenece ( f(n) \in O(n^2 \log(n)) )?
- No.
- El término dominante de ( f(n) ) es ( n^3 ), que crece más rápido que ( n^2 \log(n) ).
- Por lo tanto, f(n) no pertenece a O(n² log(n)).
- Resultado experimental: la razón
f(n) / g(n)
tiende a infinito conforme crecen
.
¿Pertenece ( f(n) \notin O(n^2) )?
- Correcto.
- Nuevamente, ( n^3 ) domina y crece más que ( n^2 ).
- Resultado experimental:
f(n) / n^2
tiende a infinito. - Por lo tanto, f(n) no pertenece a O(n²).
Parte 2: Comparación entre funciones exponenciales
¿Pertenece ( f(n) = 2^n \in O(2^{2n}) )?
- Sí.
- ( 2^n \ll 2^{2n} = (2^n)^2 ).
- La función ( f(n) ) crece exponencialmente más lento que ( g(n) ).
- Resultado experimental: la razón
f(n) / g(n)
tiende a 0 conforme crecen
.
¿Pertenece ( g(n) = 2^{2n} \in O(2^n) )?
- No.
- ( g(n) ) crece mucho más rápido que ( f(n) = 2^n ).
- Resultado experimental: la razón
g(n) / f(n)
tiende a infinito, lo que significa que g(n) no pertenece a O(f(n)).
Conclusión
La experimentación con diferentes valores de n
confirma los resultados teóricos.
El uso de cocientes como f(n)/g(n)
o f(n)/n^2
ayuda a visualizar la relación de crecimiento y verificar si las funciones pertenecen o no a una cota superior.