Explicando la notación Big O | Problemas de programación

แชร์
ฝัง
  • เผยแพร่เมื่อ 19 ธ.ค. 2024

ความคิดเห็น • 67

  • @vidamrr
    @vidamrr  6 ปีที่แล้ว +25

    La notación Big O es fundamental para un programador ¿ya conocías el término? ¿sabes la eficiencia de tus algoritmos?

  • @garamburito
    @garamburito 3 ปีที่แล้ว +11

    Muy bueno el video. Si a alguien le interesa profundizar porque se obtiene un orden logarítmico en algoritmos como el de búsqueda binario que se muestra al principio del video, es por que lo que determina el tiempo de ejecución es la cantidad de divisiones que tendremos que realizar. Partimos de n y realizamos tantas divisiones como sea necesario hasta llegar a un array de largo 1, a esto lo podemos escribir como n/2/2/2/.....etc, no sabemos el total de divisiones por lo que escribimos lo mismo pero en términos de n/2^k = 1, simplificamos y obtenemos n=2^k. El valor de k se obtiene calculando el logaritmo en base 2 de n, esto es log(n) = k. De esta manera obtenemos k que como mencioné es el número de iteraciones que realizara el bucle, por lo tanto el orden del algoritmo.

  • @darkcamp
    @darkcamp 4 ปีที่แล้ว +17

    Justo estaba leyendo el libro "Cracking the code interview" y me topo con esto. Me ayudó mucho, Gracias.

    • @nathalypalencia5487
      @nathalypalencia5487 4 ปีที่แล้ว

      Yo también estoy leyendo el libro, primera vez que escucho el termino.

    • @packtheluggage-juan
      @packtheluggage-juan 4 ปีที่แล้ว

      SeNores, yo tambien estoy leyendo el libro. Y el ejemplo del avion del principio aparece en la seccion Big O del libro :P

    • @JaviCandia33
      @JaviCandia33 3 ปีที่แล้ว +2

      ¿Caballeros, aquí es el club de los que estamos en esa sección del libro en diferentes momentos de la historia del tiempo del universo?

    • @LuisPerez-mw5kl
      @LuisPerez-mw5kl 3 ปีที่แล้ว +1

      😄Igualmente llegue aqui buscando entender mas el ejemplo del libro CCI.

  • @arturoaguilarsanchez2020
    @arturoaguilarsanchez2020 3 ปีที่แล้ว

    Gran, gran explicación Marcos, muchas gracias. La verdad, pocas veces veo videos de youtube de más de 15 minutos, casi siempre por que son mucho bla bla bla y poco contenido, y ... porque dan flojera. Pero tu video se me fué rápido por lo preciso y bien explicado, es por éso mi agradecimiento. Saludos!

    • @vidamrr
      @vidamrr  3 ปีที่แล้ว

      Gracias Arturo!!! Me da gusto que hayas encontrado el video útil 😊😊

  • @EdgarGarcia-jo5qp
    @EdgarGarcia-jo5qp 5 ปีที่แล้ว +17

    Los ejemplos del final son muy buenos, de los mejores que he visto.

    • @vidamrr
      @vidamrr  5 ปีที่แล้ว +1

      Gracias por tu comentario Edgar!

  • @FranTecnoGamerJR
    @FranTecnoGamerJR 2 ปีที่แล้ว

    Excelente video, me quedó muy claro para ser un primer acercamiento al tema, lo seguiré estudiando. gracias!

  • @mauroca26
    @mauroca26 4 ปีที่แล้ว

    buenisimo!!!!!! queda mucho mas claro en el video que leer el libro

  • @jgodinez1114
    @jgodinez1114 6 ปีที่แล้ว +3

    Actualmente, estoy aprendiendo este concepto de Big-O. Es un poco dificil de entender, pero gracias a videos como este, uno se da mejor idea!

    • @vidamrr
      @vidamrr  6 ปีที่แล้ว +1

      Qué bueno que te sirve el vídeo, no es un concepto fácil de entender y requiere un poco de práctica por lo abstracto que es

  • @critikalfade
    @critikalfade 4 ปีที่แล้ว

    Muy buena explicacion, se ve que tomaste tiempo para armarla, te agradezco.

  • @diego56780
    @diego56780 5 ปีที่แล้ว

    siempre me complicaba el ordenamiento al estudiar, gracias a este video lo tengo mucho mas claro, asi que muchas gracias, de verdad que me ayudo mucho.

  • @angelcabrera4560
    @angelcabrera4560 6 ปีที่แล้ว +1

    Excelente vídeo, había visto esto en la universidad, en Algoritmos 2. Muy bien explicado, gracias!

    • @vidamrr
      @vidamrr  5 ปีที่แล้ว

      es sùper útil para ser un buen programador

    • @gordonast
      @gordonast 5 ปีที่แล้ว

      me estan dando esto, en programación 1 (una materia del año 1 ) D:

  • @bryanti9675
    @bryanti9675 2 ปีที่แล้ว

    Es un video muy completo, muchas gracias

  • @stevenbeltrandeleon8180
    @stevenbeltrandeleon8180 4 ปีที่แล้ว

    Buen ejemplo amigo, te ganaste un buen pulgar arriba y +suscriptor

  • @OzunaGameplays
    @OzunaGameplays 5 ปีที่แล้ว

    Muy buen video, el mejor que he visto sobre el tema, sobretodo por los ejemplos del final, muchas gracias.

  • @sleter2929
    @sleter2929 3 ปีที่แล้ว +1

    creo que for que apareció en el minuto 21:50 realmente es logarítmica ya que hice varias pruebas y no se ejecuta la mitad de veces que si fuera solo x

  • @Lashistoriasdelilith
    @Lashistoriasdelilith 2 ปีที่แล้ว

    muy claro, gracias x explicar

  • @JuanDelgado-eh8pp
    @JuanDelgado-eh8pp 4 ปีที่แล้ว

    Excelentes explicación muchas gracias

  • @rafaelchavez9413
    @rafaelchavez9413 5 ปีที่แล้ว +11

    El ejemplo de Fibonacci recursivo está mal, deberia ser: return f(n -1) + f(n-2). El arbol decreamenta en longitud en la funcion de f(n-2). Por el tema de la constante y tomar el dominante sigue quedando de O(2^N) ?

    • @edissonmata1458
      @edissonmata1458 5 ปีที่แล้ว +1

      Iba a comentar justamente lo mismo. Ahora no se si todo el . ideo esta mal ._.

    • @victorespinoza8185
      @victorespinoza8185 4 ปีที่แล้ว +4

      En realidad no era el algoritmo de Fibonacci, se equivocó al decir que lo era, el ejemplo en sí es el que viene en un libro, de hecho es exactamente el temario del libro de “Cracking the coding interview”.

    • @darkcamp
      @darkcamp 4 ปีที่แล้ว

      @@victorespinoza8185 Cierto, también me di cuenta de eso.

  • @edwarddk9007
    @edwarddk9007 ปีที่แล้ว

    Hola marco me interesa aprender algoritmos ya que independientemente del lenguaje siempre es bueno saberlo para resolver problemas que son muy abatractos se resolver, recomiendas algun libro, o lugar para empezar a estudiar algoritmos? Gracias de antemano

  • @developertechnology3880
    @developertechnology3880 4 ปีที่แล้ว

    Yo he hecho todo esto y no sabia que era BigO jajaja. Hasta ahora que estoy tomando un curso de algoritmia.

  • @eliancitomix
    @eliancitomix 5 ปีที่แล้ว

    Muchas gracias! Muy bueno e instructivo!

  • @victorlopez7770
    @victorlopez7770 4 ปีที่แล้ว +1

    Quisiera saber que tan complejo son O(a+b) y O(a*n) que no se muestran en la grafica 6:23

  • @alejandramaro
    @alejandramaro 4 ปีที่แล้ว +2

    Ese ejemplo lo vi en el libro Cracking the code interview

  • @martincontreras9589
    @martincontreras9589 4 ปีที่แล้ว

    ¡Magnifica explicación!

  • @owenchavarria728
    @owenchavarria728 5 ปีที่แล้ว +1

    hola, de que libro puedo sacar informacion sobre esta notacion?

    • @alexisvazquez7687
      @alexisvazquez7687 5 ปีที่แล้ว

      se vasa en el libro cracking the coding interview

  • @kriegerfs5728
    @kriegerfs5728 5 ปีที่แล้ว

    Muchas gracias y buen vídeo

  • @leticiatorres1124
    @leticiatorres1124 6 ปีที่แล้ว

    Excelente explicación!

  • @julian.castro18
    @julian.castro18 3 ปีที่แล้ว

    Muchas gracias!

  • @migueiglesias
    @migueiglesias 3 ปีที่แล้ว

    En el ejemplo del array creo que es de O(N) porque con los FOR anidados solo se recurre una vez los elementos del array.

  • @alexpren2027
    @alexpren2027 3 ปีที่แล้ว

    Eres un crack!!!!

  • @megasirob
    @megasirob 4 ปีที่แล้ว +1

    porque se resume a 2^n y no a 10^n? min 10:00

    • @omarmelendez6868
      @omarmelendez6868 3 ปีที่แล้ว

      Por que llega un punto en que al crecer mucho N, y va a superar a N ^100, un ejemplo mas claro hubiera sido N^10; (constante) ^ N va a crecer mucho mas rápido que N ^ (constante), ya que el grado del exponente es el que aumenta.

  • @eduardoguevara467
    @eduardoguevara467 6 ปีที่แล้ว

    Gracias de mucha ayuda!

  • @marcelooviedo9558
    @marcelooviedo9558 5 ปีที่แล้ว +1

    Amigo, tengo un problema, tengo un ejercicio parecido al ejemplo que diste de recursividad, solamente que el mio devuelve un solo resultado y no se va incrementando de a dos como en el tuyo... En mi caso sería :
    Static int pot2(int N) {
    If(n==0){
    Return 1;
    }
    Return 2*pot2(n-1);
    }

    • @murdoc870715
      @murdoc870715 5 ปีที่แล้ว +1

      Me animo a decir y basados en lo que se menciona en 8:00, la complejidad radica en el valor de N y no tanto en las constantes. El hecho de que regrese el doble del valor al final, no modifica su complejidad.

    • @dealvin
      @dealvin 4 ปีที่แล้ว

      Yo pienso que es O(N).
      c1 = va a ser el tiempo que tomara el caso mas facil, o sea pot2(0)
      c2 = va a ser el tiempo en hacer la operacion 2 * (numero que devuelve la funcion), no considero el tiempo de la funcion recursiva.
      t(n-1) : va aser el tiempo que retornara la funcion recursiva un valor.
      ahora la funcion recursiva general es:
      t(n) = t(n-1) +c2,; ----> c1 no lo considero,por que es el caso mas facil, el big-o es para el peor de los casos.
      t(n) = t(n-2) +c2 + c2
      t(n) = t(n-3) +c2+c2+c2
      la funcion general es : t(n-k) + k*c2
      ahora para que sea el peor caso debe ser k = n - 1 para que la funcion sea la mas larga posible.
      t( 1 ) + (n-1)*c2 , y en el video el o dominate es O(N).
      Todo esto creo que esta bien, pero no lo aseguro al 100%. Corrijanme si es necesario.
      Edit: ya lo resolvi si es O(n) ya que la funcion solo se llama asi misma una sola vez, en la de fibonacci fue por que se llamaba dos veces, y asi era 2 a la N,puede parecer contraintuituvo pero hay varios algoritmos recursivos O(n) como el tuyo

  • @ernestomunera8235
    @ernestomunera8235 5 ปีที่แล้ว +2

    hola y que algoritmo me daria para decir que es O(log n)??

    • @reynaldoeg
      @reynaldoeg 5 ปีที่แล้ว

      La búsqueda binaria que explica al minuto 12:30 es O(log n)

  • @itzelbrachomolina3446
    @itzelbrachomolina3446 4 ปีที่แล้ว

    muy buen video

  • @saridrangel781
    @saridrangel781 3 ปีที่แล้ว

    Como se expresa en complejidad temporal O(A+B)?... Logaritmica???...

  • @MarioTorres-dk8lb
    @MarioTorres-dk8lb 6 ปีที่แล้ว +3

    Esta bien el video para darse una idea, pero creo que aún hay partes que no se entienden tan bien.

    • @vidamrr
      @vidamrr  6 ปีที่แล้ว +1

      qué parte del video no entendiste bien Mario? para ver cómo mejoro esa parte

    • @juanesteban6127
      @juanesteban6127 4 ปีที่แล้ว

      @@vidamrr minuto 15:40

  • @rmrz2225
    @rmrz2225 4 ปีที่แล้ว

    una pregunta, entonces usar funciones recursivas nunca es óptimo no?

    • @vidamrr
      @vidamrr  4 ปีที่แล้ว

      Las funciones recursivas son recomendadas cuando tienen operaciones básicas y tienen bien definida la condición de salida, ya que de lo contrario se vuelven anidadas y podrían ofrecer un rendimiento muy lento

  • @nicolasramirez865
    @nicolasramirez865 4 ปีที่แล้ว +1

    como que me va a tocar repetir el video varias veces jajaja

  • @jefersonhernandez9361
    @jefersonhernandez9361 5 ปีที่แล้ว

    gracias

  • @matil707
    @matil707 5 ปีที่แล้ว

    creo que estan mal los for no son O(n), porque la sumatoria de los primeros n es (n^2)

  • @julian_handpan
    @julian_handpan 4 ปีที่แล้ว

    O(raiz de N ) = O(N^(1/2)) por tanto es uns funcion exponencial

  • @predpenz
    @predpenz 3 ปีที่แล้ว

    Vine a ver la explicación de la Big O? O vine a ver comerciales???? MIl millones de anuncios cada 2 segundos!!!!! es demasiado!!!

  • @alanrichard8059
    @alanrichard8059 4 ปีที่แล้ว

    El audio está horrible

  • @bort-oy6ux
    @bort-oy6ux ปีที่แล้ว

    no entendi nada XD

  • @ColombianDreamm
    @ColombianDreamm 5 ปีที่แล้ว

    Salen propagandas cada 20 segundos.