CursosEmpresasBlogLiveConfPrecios

Repaso de Complejidad Algorítmica y Notación Big-O

Clase 16 de 18 • Curso de Complejidad Algorítmica con JavaScript

Contenido del curso

Fundamentos de Algoritmos

  • 1
    Complejidad Algorítmica con JavaScript: Eficiencia y Selección

    Complejidad Algorítmica con JavaScript: Eficiencia y Selección

    02:55 min
  • 2
    Conceptos Fundamentales de Algoritmos en Programación

    Conceptos Fundamentales de Algoritmos en Programación

    01:56 min
  • 3
    Optimización de Algoritmos: Tiempo y Espacio en JavaScript

    Optimización de Algoritmos: Tiempo y Espacio en JavaScript

    04:14 min

Complejidad algorítmica

  • 4
    Teoría de la Complejidad: Tiempo y Espacio en Algoritmos

    Teoría de la Complejidad: Tiempo y Espacio en Algoritmos

    03:13 min
  • 5
    Complejidad espacial

    Complejidad espacial

    07:09 min
  • 6
    Análisis de Complejidad de Algoritmos: Tiempos y Eficiencia

    Análisis de Complejidad de Algoritmos: Tiempos y Eficiencia

    05:59 min
  • 7
    Complejidad temporal en práctica

    Complejidad temporal en práctica

    13:15 min
  • 8
    Complejidad espacial en práctica

    Complejidad espacial en práctica

    09:48 min
  • 9
    El estado de la complejidad

    El estado de la complejidad

    02:17 min

Análisis asintótico

  • 10
    Introducción a análisis asintótico

    Introducción a análisis asintótico

    07:16 min
  • 11
    Notación Big-O

    Notación Big-O

    11:43 min
  • 12
    Cálculo de la notación Big-O

    Cálculo de la notación Big-O

    07:49 min
  • 13
    Evaluación de complejidad temporal con Big-O

    Evaluación de complejidad temporal con Big-O

    08:44 min
  • 14
    Evaluación de complejidad espacial con Big-O Avanzado

    Evaluación de complejidad espacial con Big-O Avanzado

    10:02 min

Recomendaciones

  • 15
    Recomendaciones para la evaluación de algoritmos

    Recomendaciones para la evaluación de algoritmos

    03:43 min
  • 16

    Repaso de Complejidad Algorítmica y Notación Big-O

    Viendo ahora
  • 17
    Cierre del curso

    Cierre del curso

    01:14 min

Bonus

  • 18

    Complejidad de algoritmos en búsqueda de payloads de SpaceX

    04:03 min
Tomar examen

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads

      ¡Hola! Esta es la lectura final del Curso de Complejidad Algorítmica. Si ya te sientes preparado puedes directamente pasar el examen, pero si quieres estar seguro/a de que todo está en orden, pues he preparado esta lectura para que repasemos los conceptos que hemos aprendido. 👇


      ⏲ Cuando esperas a que cargue una aplicación web o cuando una pestaña de un navegador ocupa mucho espacio, estamos consumiendo recursos como tiempo o espacio.

      📈 Los algoritmos que se ejecutan al realizar acciones pueden ser medibles en la notación Big-O.

      👩‍💻 Para calcular la notación Big-O aplicamos una serie de reglas a través de nuestro código.

      📏 Reglas para estructuras

      Las reglas para Big-O en tiempo son:

      Reglas de Big-O para la complejidad temporal

      Las reglas para Big-O en espacio son:

      Reglas de Big-O para la complejidad espacial

      Y siempre debemos simplificar la notación:

      Simplificación de Big-O


      Hasta aquí tenemos todas las conclusiones del curso. Pero recuerda que también ahondamos en el por qué de cada concepto.

      ¿Por qué necesitamos Big-O? ¿Por qué una notación?

      Un algoritmo o un programa podrían ejecutarse en cinco o diez horas, incluso si hablamos de una o varias computadoras. Big-O viene a poner orden todo eso, dándonos una forma fácil de leer en la que podemos determinar la eficiencia de un algoritmo.

      ¿Por qué asignamos Big-O a cada estructura?

      Big-O medirá el recurso generado respecto a la entrada del algoritmo. Y las estructuras son un aspecto sencillo de convertir en medición de recursos.

      Por ejemplo:

      • Con los bucles es sencillo, los bucles repiten instrucciones, y al repetir toman más tiempo en la computadora.

      • Con los arreglos es igual, repiten una serie de elementos, y al repetir esos elementos toman más espacio de la computadora.

      ¿Por qué nos quedamos con el grado mayor al simplificar Big-O?

      En Big-O queremos comprender qué tanto recurso (como tiempo o espacio) nos gasta un algoritmo cuándo aumentamos los datos. Y cada grado aumenta a un ritmo totalmente distinto.

      Por ejemplo n crece más que 1000:

      Animación del por qué n es mayor que 1000

      No es necesario quedarnos con los grados pequeños: Podemos simplificar y quedarnos con lo importante.

      ¿Solo hay Big-O para espacio y tiempo?

      No, la complejidad es el estudio de los recursos que utilizan los algoritmos. Estos recursos pueden ser cualquier concepto de hardware y software. Como acceso a la memoria, comparaciones de condiciones, o lo que se necesite limitar.

      La buena noticia de esto, es que no se requiere inventar nuevas notaciones. Big-O es suficiente para que personas como tú, desarrolladores/as de software o científicos/as de computación trabajen sobre esto.


      ¡Esto es todo!

      Esta lectura fue un resumen de todo lo que hemos encontrado en este curso.

      Sin embargo los porqués y cómos nunca se acaban con un campo de estudio tan interesante como el de la complejidad. Así que, no dudes en usar el sistema de preguntas con los temas que hemos tratado aquí, o incluso temas más profundos de la Teoría de la Complejidad si tienes más curiosidad.

      🎉 Ahora la complejidad es tuya, no del examen. ¡Ve a darlo! 😎

        Camilo Cadavid Cardona

        Camilo Cadavid Cardona

        student•
        hace 4 años

        Todo esto me hace concluir que los frameworks mas comunes en Javascript terminan haciendo que nuestro código consuma muchos mas recursos en memoria y en tiempo.

        Por otra parte, el código en vainilla JS en ocasiones te limitan y no te permiten desarrollar los mismos productos que con los frameworks.

        Entonces, qué importa mas? tu proyecto hecho en x framework que te gasta poco tiempo desarrollando pero instalaste una cantidad de código del cual solo conoces el 5% ó tu proyecto hecho en vainilla js que te gasta mucho mas tiempo en lograr el resultado pero pesa mucho menos y corre mejor...

        Es solo un comentario... no creo que haya una respuesta, habrán puntos de vista...

          Anfernee Valera

          Anfernee Valera

          student•
          hace 4 años

          Estoy de acuerdo contigo, no creo que exista una respuesta como tal. Hay opiniones y decisiones que pueden valer más o menos, según tus circunstancias. Es entonces cuando pienso que la responsabilidad de nuestro criterio es importante, ya que desde este punto de vista podemos tomar las mejores decisiones para el desarrollo de nuestro proyecto.

          Luis Rogelio Reyes Hernandez

          Luis Rogelio Reyes Hernandez

          student•
          hace 4 años

          Un framework suele ocurrir que consuman más que JS plano, pero es un peso que se suele tolerar por 2 cosas muy importantes: Mantenibilidad y Tiempo

          Mantenibilidad porque en equipos de 100 personas escribiendo vanilla JS, es casi imposible que todos sigan un estándar de programación sin utilizar algún framework que los obligue a programar de cierta forma.

          Tiempo el tiempo es el recurso no renovable más valioso que existe, los frameworks nos dan muchísimas herramientas que nos ayudan a entregar mejores productos más rápido. Además, decidir entre tener una aplicación que funciona al 60% de eficiencia hecha con un framework en 1 mes VS una aplicación que funciona al 100% de eficiencia super optimizada hecha en vanilla pero tomo más de 1 año hacerla. Se escogería entregar en el 1 mes con un framework porque programando es extremadamente difícil saber si tu producto o solución realmente atiende el mercado que quieres o realmente soluciona el problema planteado. por lo cual irónicamente es más importante generar un MVP que generar un buen MVP.

        Enrique Aguilera

        Enrique Aguilera

        student•
        hace 3 años

        Deberían de hacer estos resumenes al final de cada curso Este esta muy bueno

        Jean Nuñez

        Jean Nuñez

        student•
        hace 4 años

        Ufff que bueno info

        ENRIQUE NIETO MARTINEZ

        ENRIQUE NIETO MARTINEZ

        student•
        hace 4 años

        Estaría genial otro curso sobre esto donde veamos Big Omega y Big Theta. ¿Qué opinan?

          Tania Sosa

          Tania Sosa

          student•
          hace 4 años

          ¡Hola Enrique! 😄

          Es una excelente sugerencia, la tendremos en cuenta para futuros cursos.

          ¡Nunca pares de aprender! 💚

        Daniel Omar Hernández Muñoz

        Daniel Omar Hernández Muñoz

        student•
        hace 4 años

        Ufff Ufff Ufff, esto es lo que yo buscaba, que belleza, que belleza señores!!

        David Molina

        David Molina

        student•
        hace 4 años

        Oigan, alguien sabe si hay alguna forma en la que el análisis asintótico se pueda hacer de forma automática? y si no lo hay porque? Pregunto porque me parece que las reglas están bien establecidas, tengo un for entonces O(n), tengo un for anidado entonces O(n*2), y así sucesivamente, entonces parece sencillo tener un algoritmo que mida la complejidad algorítmica.

          Marcelo Arias

          Marcelo Arias

          teacher•
          hace 4 años

          ¡Hola David! Gran pregunta.

          Existen algunos esfuerzos para crear una herramienta cómo la que describes. Aún así quedaría por resolver un problema complicado, y es que cualquier lenguaje tiene varias formas en las que podría definir un bucle (tenemos método como .map que iteran como un bucle).

          Otra herramienta que me gusta mucho, es big_o para Python que no verifica textualmente el código, sino que hace un análisis asintótico midiendo el tiempo de cada ejecución, incrementando el tamaño de entrada y estimando el resultado en notación Big-O en base a todas las mediciones de tiempo marcadas.

          En JavaScript sería como utilizar performance.now() cada vez que ejecutemos un algoritmo al incrementar su tamaño de entrada. Y luego intentar colocarlo bajo alguna forma de crecimiento.

        José Eduardo Vinagre de Dios

        José Eduardo Vinagre de Dios

        student•
        hace 3 meses

        Falto ver un ejemplo donde la complejidad fuera logaritmica.

        Bryan Castano

        Bryan Castano

        student•
        hace un año

        My Pregunta es . Cual Seria La Complejidad deL Algoritmo Recursivo de Fibonacci TOP_DOwn Approach sin Memoization , Este Sera O ( 2**n ) || O ( n! ) , es por algo del Stack de Memoria de las LLamadas Recursivas que se acumulan com oStack [ FiFO ] en la Memoria de PC mientas se alcanza el caso base . cual es sera la compleidad de eso? Yo aun me lo Pregunto ? . \n