Evaluación de complejidad espacial con Big-O Avanzado
Clase 14 de 18 • Curso de Complejidad Algorítmica con JavaScript
Contenido del curso
Clase 14 de 18 • Curso de Complejidad Algorítmica con JavaScript
Contenido del curso
Jean Nuñez
Zedovius .
Bryan Figueroa
Reinaldo Mendoza
David Zabaleta Franco
Marcelo Arias
Anfernee Valera
Reinaldo Mendoza
Henry J. Perez
Marcelo Arias
Juan Diego Quintero Calderón
Jorge Méndez Ortega
Marcelo Arias
Fernando Robles
Marcelo Arias
Fabio Escobar
Marcelo Arias
Jorge Méndez Ortega
Fernando Pioli Martínez
Àlex Grau Roca
Marcelo Arias
Añaqui Apolinar Morales
Juan David Moreno Rodriguez
Alen Samuel
Rubén Ernesto Aragón Gil
Bryan Castano
Frandel Corporan Rodríguez
Markin Piero Pulache Guarniz
Henry Jeffersson Salinas Arenas
Walter Omar Barrios Vazquez
Jean Nuñez
El espacio auxiliar es el espacio ocupado menos el espacio ocupados por los datos de entrada
Yo pensando que sacar la Big-O de un algoritmoiba a ser mucho más complejo y resultó ser bastante divertido y sencillo
si eso estaba pensando jaja
Pues divertido, divertido, pues no, ja, pero no fue tan difícil como creía
Muy buenas explicaciones
¡Gracias David! 😁
En este momento todas las piezas terminaron de calzar, esta muy cool el curso :D
Ja, seguro
En el caso de Javascript, la complejidad espacial no estaria afectada por el recolector de basura de javascript?
¡Hola Henry! Gran pregunta 😎
Desde el punto de vista de la notación Big-O, podemos prescindir de su interferencia, pues estamos buscando el peor escenario posible.
Ahora, sólo enfocándonos en la complejidad sin notación, el recolector de basura interferiría, y afortunadamente de forma positiva, para reducir el crecimiento de la complejidad espacial.
Esto también es extendería a otros lenguajes de programación, con un equivalente al recolector de basura para memoria.
El espacio auxiliar es el espacio ocupado menos el espacio ocupados por los datos de entrada
NO ENTIENDO POR QUE ALGUNAS ASIGNACIONES LAS EXCLUYE , TAMPOCO ENTIENDO BIEN LO DEL ESPACIO AUXILIAR
¡Hola Jorge! El espacio auxiliar es la complejidad espacial menos el espacio ocupado por el tamaño de entrada.
Por ejemplo si un algoritmo ordena un arreglo de n números, este arreglo de números al pasar como dato de entrada representa un O(n) en complejidad espacial. Este O(n) representa el espacio ocupado por el tamaño de entrada.
Después de eso, si creamos un nuevo arreglo dentro de nuestro algoritmo, estamos añadiendo otra n a la complejidad espacial. Y esta n, representa el espacio auxiliar.
Tamaño generado por el dato de entrada: O(n) Tamaño generado por el espacio auxiliar: O(n)
La complejidad espacial (dato de entrada + auxiliar) sería de O(2n), que simplificado será O(n).
Si tuviésemos otro algoritmo que ordena un arreglo de n números, pero este otro algoritmo no crea un nuevo arreglo, por lo tanto no le añade más espacio auxiliar, tendríamos.
Tamaño generado por el dato de entrada: O(n) Tamaño generado por el espacio auxiliar: O(1)
La complejidad espacial (dato de entrada + auxiliar) sería también de O(n).
Complejidad Espacial = Espacio usado en los dato de entrada + Espacio que se use dentro del algoritmo.
Muy buena explicación :)
¡Gracias a ti Fernando! 🙌
si tenemos un for dentro de otro for eso no seria n^2? si el arreglo tiene 10 espacios en memoria, y lo volvemos una matrix de 10 x 10, no serian 100 espacios en memoria?
Hola Fabio! La primera pregunta: Si tenemos un for dentro de otro for eso ¿no seria n^2?. En Big-O temporal sí. En Big-O para complejidad espacial no, a menos que se cree un nuevo arreglo de n espacios por cada elemento de un arreglo. Como en la segunda pregunta: La segunda pregunta, si el arreglo tiene n espacios, y luego volvemos con un arreglo de longitud n x n. Sí, tratamos con O(n^2). En el ejemplo que escribiste, suponemos que serían 10 espacios. Y lo mismo aplicaría con 11, 12, o cualquier cantidad de espacios.
Esto esta genial ya entendí qué onda con las opciones que se salta, ya pude armar el rompecabezas de todo este conocimiento wow
Excelente docente!!!! Freddy, atentti!!! Aqui hay otro Diego Granda!!!
Mi duda es sobre si puede existir la complejidad espacial logarítmica y, en caso afirmativo, me gustaría ver un ejemplo. ¡Gracias!
¡Hola Álex! Sí, es posible que un algoritmo tenga una complejidad espacial logarítmica.
En la implementación recursiva del algoritmo de búsqueda binaria, el algoritmo comienza dividiendo el arreglo en dos mitades, y verifica si el elemento deseado se encuentra en la mitad izquierda o derecha del arreglo. Si el elemento deseado se encuentra en la mitad izquierda del arreglo, el algoritmo realiza una llamada recursiva en la mitad izquierda del arreglo. Si el elemento deseado se encuentra en la mitad derecha del arreglo, el algoritmo realiza una llamada recursiva en la mitad derecha del arreglo.
Este proceso se repite de manera recursiva hasta que el elemento deseado se encuentra, o hasta que el arreglo se reduce a una longitud de 1 elemento, en cuyo caso se verifica si ese elemento es el elemento deseado. En cada llamada recursiva, el tamaño del arreglo se reduce a la mitad, lo que lleva a una complejidad temporal de O(log n).
<u>El espacio auxiliar</u>
Complejidad espacial - Espacio de entrada = O( n ) - O( 1 ) —simplificamos—> O( 1 )
Excelente explicación 👄
Vengo mucho tiempo tratando de entender big o, y contigo lo he logrado entender, muchas gracias!
Yo apenas voy comenzando y el profe explica bien, creo tener una base considerable para entender, creo yo.
Existe una Forma Muy Practica de Mejorar / Optimizar el BubbleSort Algorithm y es agregando una Var AUX : int flg = 0 ; entre el Outer_For y el Inner_For para ver si el Algoritmo hizo algun cambio en el Array o Not, esta Flag sera una variable Aux extra, si se creasee otra variable : size = array.Length , para luego recorrer Los Forx2 sera otra vairable aux por l oque ya serian tres variables aux [ i, flg, size ] a lo que es O ( 3 ) --> O ( 1 ) para Aux_Space. \n
Yo durante todo el curso
que paso
por fin pude entender todo :)
¡Excelente explicación profe Marcelo! 👏🏽👏🏽👏🏽
Waaaao que buena explicacion gracias bro