SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
Análisis y Diseño
      de Software

Tema 2b. Eficiencia y
Complejidad
Carlos A. Iglesias <cif@gsi.dit.upm.es>

Departamento de Ingeniería de Sistemas Telemáticos
                            http://moodle.dit.upm.es

G21
Legenda
Teoría


Ejercicio práctico en el ordenador / Problema


Ampliación de conocimientos


Lectura / Vídeo / Podcast


Práctica libre / Experimentación



                   Eficiencia y Complejidad     2
Bibliografía
●   Eficiencia algorítmica
    –   http://en.wikipedia.org/wiki/Algorithmic_efficien
        cy
    –   http://en.wikipedia.org/wiki/Analysis_of_algorith
        ms#Shortcomings_of_empirical_metrics
●   http://jungla.dit.upm.es/~pepe/doc/adsw/Complejidad.pdf




                                Eficiencia y Complejidad      3
Temario
●   Complejidad: el problema
●   Espacio de problemas
●   Notación O (Big O)
●   Complejidad de algoritmos básicos de
    ordenación y búsqueda
●   Evaluar la complejidad de un algoritmo
●   Análisis y conclusiones

                         Eficiencia y Complejidad   4
Objetivos
●   Entender cómo se pueden comparar
    algoritmos
●   Entender qué es una medida de
    complejidad
●   Conocer la notación O
●   Conocer la notación O para algoritmos
    básicos de ordenación y búsqueda
●   Saber razonar con la notación O
                         Eficiencia y Complejidad   5
El problema
●   ¿En qué nos
    basamos para
    seleccionar un
    algoritmo cuando
    hay tantos
    disponibles (y tan
    parecidos)?



                         Eficiencia y Complejidad   6
¿Qué elegir?
●    “En casi todos los cálculos,
    es posible una gran
    variedad en la forma de de
    llevar a cabo los procesos
    de computación. […] Es
    esencial seleccionar la
    forma que reduzca al
    mínimo el tiempo para
    completar un cálculo”
    Ada Lovelace




                                    Eficiencia y Complejidad   7
¿Qué elegir?
●   El algoritmo más
    eficiente
●    Eficiencia:
    inversamente
    proporcional a los
    recursos (memoria,
    tiempo, …)
    consumidos por un
    algoritmo
                         Eficiencia y Complejidad   8
Formas de seleccionar
●   De forma 'empírica':
    –   Medimos su recursos consumidos de los
        algoritmos (tiempo, memoria, uso de
        comunicaciones, disco, consumo energético,
        …, caso mejor, peor, medio, …)
●   De forma 'analítica' / teórica:
    –   Calculamos un 'límite' de estos recursos,
        analizando el algoritmo y su implementación


                              Eficiencia y Complejidad   9
Medidas empíricas
●   Medimos (p.ej. Tiempo).
      // Creo el entorno
      Algoritmo a = new Algoritmo();
      Datos d = new Datos(); // relleno

      // Mido
      long t1 = System.currentTimeMillis();
      a.run(d);
      long t2 = System.currentTimeMillis();
      long duracion = t2 – 1;




                                          Eficiencia y Complejidad   10
Medidas empíricas
●   Como los algoritmos son genéricos, las medidas empíricas pueden
    verse afectadas por:
    –   El lenguaje de programación
    –   El entorno de ejecución / sistema operativo (p.ej. JVM GC, multinúcleo, …)
    –   Los datos que usemos al medir
●   Pueden ayudarnos a entender cómo funcionan, y tenemos que analizar
    bien el experimento cuando obtenemos resultados inesperados
●   Si medimos, podemos intentar ajustar las gráficas, y ver qué distribución
    siguen (polinómico, lineal, etc.). Si estás interesado, mira los apuntes.




                                                Eficiencia y Complejidad             11
Medidas teóricas: notación O
     (Big O Notation)
●   Nos ayuda a clasificar algoritmos según
    cómo crezca su respuesta (tiempo de
    ejecución, memoria, etc.) con el número de
    datos de entrada
●    Algoritmos con la misma “respuesta”,
    tendrán la misma notación O
●   Representa la cota del valor peor que
    pueden tomar, el límite superior

                          Eficiencia y Complejidad   12
Órdenes de funciones
                comunes
Notación      Nombre        Comentario

O(1)          Constante     Ideal
O(log n)      Logarítmico   Muy bueno
O(n)          Lineal        normal
O(nlogn)      Lineal        razonable
              logarítmico
O(n2)         Cuadrático    tratable
O(nc)         Potencial     “tratable”
O(cn), n >1   Exponencial   No es práctico
O(n!)         Factorial     inviable




                                       Eficiencia y Complejidad   13
Orden




   Eficiencia y Complejidad   14
O(1): complejidad constante
●    Complejidad constante, independiente del
    tamaño de la entrada

    boolean isElementoNulo(Object [] array, int indice) {
      if (a[indice] == null) {
          return true;
      }
      return false;
    }

    boolean isElementoNulo(Object [] array, int indice) {
      return (a[indice] == null) {
    }



                                            Eficiencia y Complejidad   15
O(n): lineal
●   Consumo de recursos directamente
    proporcional a la entrada
●   Ej. búsqueda lineal. Caso peor: buscamos
    el último elemento, recorremos n → O(n)




                         Eficiencia y Complejidad   16
Burbuja – notación O
●   Si analizamos cuántas comparaciones hacemos
●   P. ej para n = 10
    –   10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 = 45
●   En general, para N:
    –   (N – 1) + (N – 2) + … + 1 = N * (N-1)/2
●   Si N es grande, el número será N2
●   La notación O : O(N2), cota superior asintótica



                                   Eficiencia y Complejidad   17
Burbuja: Complejidad
              intercambios
●   Si analizamos intercambios, si suponemos
    que el conjunto es aleatorio, podemos
    suponer que sólo estarán desordenados la
    mitad
    –   Si había N2/2 comparaciones, habría N2/4
        intercambios
●   Tanto comparaciones como intercambios
    son O(N2)

                              Eficiencia y Complejidad   18
Selección: Análisis
●   Complejidad:
    –   Hacemos las mismas comparaciones que en la burbuja: N * (N – 1) /2 →
        O(N2)
    –   Hacemos menos intercambios, menos que N (una pasada) → O(N)
●   Para grandes valores de N, pesará más el término de
    comparaciones, y la complejidad será O(N 2)
●   Para N pequeño, será más rápido que la burbuja
●   En general: no es un algoritmo adecuado
●   Puede ser bueno si los tiempos de intercambio son altos




                                          Eficiencia y Complejidad             19
Inserción: análisis
●   Complejidad:
    –   En la primera pasada, comparamos con 1 carta, en la
        segunda con 2, en la tercera con 3, … → 1 + 2 + 3 +
        … + N – 1 = N * (N – 1) / 2
    –   En media, compararemos con la mitad de cartas
        ordenadas → N * (N – 1) / 4 → O(N2)
    –   Número de copias similar al de comparaciones, pero
        una copia requiere menos tiempo que un intercambio
    –   Si los datos ya están ordenados (o casi), sería O(N)


                                  Eficiencia y Complejidad     20
Quicksort: Análisis
●   Complejidad:
    –   En la mayor parte de los casos es el más
        rápido: O(n * log(n))




                              Eficiencia y Complejidad   21
Análisis complejidad


               Mejor       Medio          Peor
Selección      O (n2)      O (n2)         O (n2)
 Inserción      O (n)      O (n2)         O (n2)
   Burbuja      O (n)      O (n2)         O (n2)
Quick sort   O (n log n) O (n log n)      O (n2)




                         Eficiencia y Complejidad   22
¿Cómo calculamos la
             complejidad? (I)
●Analizamos       el código
●   En sentencias condicionales (if/else-switch),
    cogemos la rama 'peor'
●Bucles:
    –   Si el bucle no depende de n, simplemente es una cte
        O(1), que quitamos
    –   Si el bucle depende de n, tendremos O(n)
    –   Si tenemos bucles anidados, que dependen de n, si
        son dos, tenemos O(n2) (nos sale 1 + 2 + .. = n(n-
        1)/2)
                                 Eficiencia y Complejidad     23
¿Cómo calculamos la
           complejidad? (II)
●Si el bucle es multiplicativo, es decir, no es
 lineal con n:
  int c = 1;
                          Para n = 10:
  while (c < n) {
                          c= 1, c = 2, c = 4, c= 8
       sentencias O(1);
                          En general, vale 2k <= n
       c *= 2;
                          → k = n * log2(n) → log(n)
  }



  int c = n;
  while (c > 1) {         Para n = 10:
       sentencias O(1);   c= 10, c = 5, c = 2, c= 1
       c /= 2;             → log(n)
  }

                                  Eficiencia y Complejidad   24
¿Cómo calculamos la
              complejidad? (II)
●Si   combinamos, nos sale O(nlogn):
      for (int i = 0; i < n; i++) {
        int c = i;
        while (c > 0) {
            sentencias O(1);
            c /= 2;
        }
      }




                                      Eficiencia y Complejidad   25
Comparación
●   Tiempo en ms, en Pentium 100 con
    16MRam
N        selección inserción burbuja QuickSort Quick + Insert
     1           0         0        0             0          0
     2           0         0        0             0          0
     5           0         0        0             0          0
    10           0         0        0             0          0
    20           0         0        0             0          0
    50           0         0        6             0          0
   100           5         0       11             0          0
   200          22        11       39             0          6
   500         109        61     236             11         11
 1.000         417       253     956             27         28
 2.000       1.654     1.005   3.817             55         55
 5.000      10.309     6.207 23.898            165         159
10.000      41.375    24.816 96.042            352         336
20.000    165.710                 Eficiencia y Complejidad
                      99.152 381.415           807         758   26
Comparación

          450.000
          400.000
          350.000                                          burbuja
          300.000                                          selección
T (m s)




          250.000
                                                           inserción
          200.000
          150.000                                          QuickSort
          100.000                                          Quick + Insert
           50.000
                0
               0

                      0

                            0




                                00

                                00
                                 0
                                 0



                                 0
             10

                    20

                          50



                               00
                               00



                               00

                              .0

                              .0
                             1.

                             2.

                             5.

                            10

                            20
                                L
                                    Eficiencia y Complejidad                27
Caso mejor
N        selección inserción burbuja QuickSort Quick + Insert
     1           0         0       0         0              0
     2           0         0       0         0              0
     5           0         0       0         0              0
    10           0         0       0         0              0
    20           0         0       0         0              0
    50           0         0       0         0              0
   100           6         0       0         0              0
   200          17         0       0         0              0
   500         115         0       0         6              5
 1.000         473         0       0        17            16
 2.000       1.890         0       0        39            27
 5.000      11.820         6      11       109            83
10.000      47.428        22      11       242           181
20.000     189.140        39      27       522           390
                             Eficiencia y Complejidad           28
Caso mejor

         600

         400
                                                              inserción
T (ms)




         200                                                  burbuja
                                           Quick + Insert
           0                                                  Quick + Insert
                                        inserción
                                                              QuickSort
           100
                 500
                       2.000
                               10.000




           L

                                            Eficiencia y Complejidad           29
Tipos de problemas
●   Hay muchos problemas que no sabemos
    un algoritmo para resolverlos.
●   Entre los que sabemos resolver, los tipos
    más importantes son:
    –   Problemas P: Problemas con complejidad
        polinómica (O(n), O(n2), etc.)
    –   Problemas NP: Problemas que no pueden
        resolverse en un tiempo polinómico, e
        intentamos buscar otro algoritmo.

                            Eficiencia y Complejidad   30
Resumen
●   Para elegir un algoritmo, podemos
    –   Seguir un enfoque empírico, y ver cómo
        evolucionan la respuesta del algoritmo con la
        entrada
    –   Seguir un enfoque analítico
●   La notación O nos facilita razonar sobre la
    eficiencia de un algoritmo


                              Eficiencia y Complejidad   31
Preguntas
●   Si pruebo dos algoritmos en mi ordenador, y uno tarda
    10 segundos y otro 20 segundos, ¿cuál es más
    eficiente?
●   Si sé que un algoritmo tiene una respuesta 9n 3 + 2n2 +
    4n +2, ¿cuál sería su notación O?
●   ¿Qué significa que O es el límite asintótico?
●   Si tienes unos algoritmos A, B, C con complejidad O(n),
    O(nlogn) y O(n2), ¿en qué orden los escogerías?
●   Para cualquier valor de n, será siempre más rápido un
    algoritmo O(n)) que uno con O(n2)

                                 Eficiencia y Complejidad     32

Más contenido relacionado

La actualidad más candente

Que es complejidad computacional
Que es complejidad computacionalQue es complejidad computacional
Que es complejidad computacionalJonathan Bastidas
 
3.metodo directo
3.metodo directo3.metodo directo
3.metodo directorjvillon
 
composicion de algoritmos
 composicion de algoritmos composicion de algoritmos
composicion de algoritmosG Hoyos A
 
Funciones de transferencia analógicas
Funciones de transferencia analógicasFunciones de transferencia analógicas
Funciones de transferencia analógicasVicente Torres
 
Solucion de Ecuaciones Diferenciales Ordinarias de Segundo Orden por Métodos ...
Solucion de Ecuaciones Diferenciales Ordinarias de Segundo Orden por Métodos ...Solucion de Ecuaciones Diferenciales Ordinarias de Segundo Orden por Métodos ...
Solucion de Ecuaciones Diferenciales Ordinarias de Segundo Orden por Métodos ...Carlos Aguilar
 
Analisis Clase2
Analisis  Clase2Analisis  Clase2
Analisis Clase2luzenith_g
 
Programación cuadrática
Programación cuadráticaProgramación cuadrática
Programación cuadráticajessi perez
 
Intro parte2
Intro parte2Intro parte2
Intro parte2UNEFA
 
Intro parte5
Intro parte5Intro parte5
Intro parte5UNEFA
 

La actualidad más candente (20)

Paralela5
Paralela5Paralela5
Paralela5
 
Tema4
Tema4Tema4
Tema4
 
Ode45
Ode45Ode45
Ode45
 
DERIVACIÓN E INTEGRACIÓN NUMÉRICA
DERIVACIÓN E INTEGRACIÓN NUMÉRICADERIVACIÓN E INTEGRACIÓN NUMÉRICA
DERIVACIÓN E INTEGRACIÓN NUMÉRICA
 
Que es complejidad computacional
Que es complejidad computacionalQue es complejidad computacional
Que es complejidad computacional
 
3.metodo directo
3.metodo directo3.metodo directo
3.metodo directo
 
composicion de algoritmos
 composicion de algoritmos composicion de algoritmos
composicion de algoritmos
 
Funciones de transferencia analógicas
Funciones de transferencia analógicasFunciones de transferencia analógicas
Funciones de transferencia analógicas
 
Solucion de Ecuaciones Diferenciales Ordinarias de Segundo Orden por Métodos ...
Solucion de Ecuaciones Diferenciales Ordinarias de Segundo Orden por Métodos ...Solucion de Ecuaciones Diferenciales Ordinarias de Segundo Orden por Métodos ...
Solucion de Ecuaciones Diferenciales Ordinarias de Segundo Orden por Métodos ...
 
Funciones recursivas
Funciones recursivasFunciones recursivas
Funciones recursivas
 
Analisis Clase2
Analisis  Clase2Analisis  Clase2
Analisis Clase2
 
Programación cuadrática
Programación cuadráticaProgramación cuadrática
Programación cuadrática
 
Solucion taller 1 de control 2
Solucion taller 1 de control 2Solucion taller 1 de control 2
Solucion taller 1 de control 2
 
Relajacion lagrangiana
Relajacion lagrangianaRelajacion lagrangiana
Relajacion lagrangiana
 
2 eficiencia
2 eficiencia2 eficiencia
2 eficiencia
 
Intro parte2
Intro parte2Intro parte2
Intro parte2
 
Intro parte5
Intro parte5Intro parte5
Intro parte5
 
Cap7
Cap7Cap7
Cap7
 
2011 runge kutta
2011 runge kutta2011 runge kutta
2011 runge kutta
 
Ecuaciones diferenciales ordinarias
Ecuaciones diferenciales ordinariasEcuaciones diferenciales ordinarias
Ecuaciones diferenciales ordinarias
 

Similar a Tema 2 eficiencia_y_complejidad_grupo_21

Teoría De La Complejidad Algoritmica
Teoría De La Complejidad AlgoritmicaTeoría De La Complejidad Algoritmica
Teoría De La Complejidad AlgoritmicaRolf Pinto
 
Teoria de la compleijidad algoritmica.pdf
Teoria de la compleijidad algoritmica.pdfTeoria de la compleijidad algoritmica.pdf
Teoria de la compleijidad algoritmica.pdfGustavoRojasValdivia2
 
Analisis de algoritmos
Analisis de algoritmosAnalisis de algoritmos
Analisis de algoritmosrehoscript
 
Analisis de algoritmos tarea 2
Analisis de algoritmos tarea 2Analisis de algoritmos tarea 2
Analisis de algoritmos tarea 2Velmuz Buzz
 
UTPL-LÓGICA DE LA PROGRAMACIÓN-II BIMESTRE-(abril agosto 2012)
UTPL-LÓGICA DE LA PROGRAMACIÓN-II BIMESTRE-(abril agosto 2012)UTPL-LÓGICA DE LA PROGRAMACIÓN-II BIMESTRE-(abril agosto 2012)
UTPL-LÓGICA DE LA PROGRAMACIÓN-II BIMESTRE-(abril agosto 2012)Videoconferencias UTPL
 
Teoría de complejidad computacional (tcc).pptx
Teoría de complejidad computacional (tcc).pptxTeoría de complejidad computacional (tcc).pptx
Teoría de complejidad computacional (tcc).pptxYared Redman
 
Introducción al análisis de algoritmos
Introducción al  análisis de algoritmosIntroducción al  análisis de algoritmos
Introducción al análisis de algoritmosAlvaro Enrique Ruano
 
Manual algoritmos y_estructura_de_datos
Manual algoritmos y_estructura_de_datosManual algoritmos y_estructura_de_datos
Manual algoritmos y_estructura_de_datosJuan Timoteo Cori
 
Analisis de Algoritmos
Analisis de AlgoritmosAnalisis de Algoritmos
Analisis de Algoritmoszygdiaz
 
Eficiencia de algoritmos - Vanessa Ramirez
Eficiencia de algoritmos - Vanessa RamirezEficiencia de algoritmos - Vanessa Ramirez
Eficiencia de algoritmos - Vanessa RamirezVanessa Ramirez
 
U1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos ComplejidadU1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos Complejidadrezzaca
 

Similar a Tema 2 eficiencia_y_complejidad_grupo_21 (20)

Notación Asintótica
Notación AsintóticaNotación Asintótica
Notación Asintótica
 
Complejidad
ComplejidadComplejidad
Complejidad
 
Complejidad Computacional
Complejidad ComputacionalComplejidad Computacional
Complejidad Computacional
 
Teoría De La Complejidad Algoritmica
Teoría De La Complejidad AlgoritmicaTeoría De La Complejidad Algoritmica
Teoría De La Complejidad Algoritmica
 
08 compalgoritmos
08 compalgoritmos08 compalgoritmos
08 compalgoritmos
 
Complejidad de Algoritmos
Complejidad de AlgoritmosComplejidad de Algoritmos
Complejidad de Algoritmos
 
Teoria de la compleijidad algoritmica.pdf
Teoria de la compleijidad algoritmica.pdfTeoria de la compleijidad algoritmica.pdf
Teoria de la compleijidad algoritmica.pdf
 
Analisis de algoritmos
Analisis de algoritmosAnalisis de algoritmos
Analisis de algoritmos
 
Analisis de algoritmos tarea 2
Analisis de algoritmos tarea 2Analisis de algoritmos tarea 2
Analisis de algoritmos tarea 2
 
UTPL-LÓGICA DE LA PROGRAMACIÓN-II BIMESTRE-(abril agosto 2012)
UTPL-LÓGICA DE LA PROGRAMACIÓN-II BIMESTRE-(abril agosto 2012)UTPL-LÓGICA DE LA PROGRAMACIÓN-II BIMESTRE-(abril agosto 2012)
UTPL-LÓGICA DE LA PROGRAMACIÓN-II BIMESTRE-(abril agosto 2012)
 
Teoría de complejidad computacional (tcc).pptx
Teoría de complejidad computacional (tcc).pptxTeoría de complejidad computacional (tcc).pptx
Teoría de complejidad computacional (tcc).pptx
 
Cap2.1
Cap2.1Cap2.1
Cap2.1
 
Introducción al análisis de algoritmos
Introducción al  análisis de algoritmosIntroducción al  análisis de algoritmos
Introducción al análisis de algoritmos
 
Manual algoritmos y_estructura_de_datos
Manual algoritmos y_estructura_de_datosManual algoritmos y_estructura_de_datos
Manual algoritmos y_estructura_de_datos
 
Analisis de Algoritmos
Analisis de AlgoritmosAnalisis de Algoritmos
Analisis de Algoritmos
 
Manual estructura de_datos_2010___h._caselli_g
Manual estructura de_datos_2010___h._caselli_gManual estructura de_datos_2010___h._caselli_g
Manual estructura de_datos_2010___h._caselli_g
 
Complejidad de un algoritmo
Complejidad de un algoritmoComplejidad de un algoritmo
Complejidad de un algoritmo
 
Eficiencia de algoritmos - Vanessa Ramirez
Eficiencia de algoritmos - Vanessa RamirezEficiencia de algoritmos - Vanessa Ramirez
Eficiencia de algoritmos - Vanessa Ramirez
 
05 - Analisis de Algoritmos.pptx
05 - Analisis de Algoritmos.pptx05 - Analisis de Algoritmos.pptx
05 - Analisis de Algoritmos.pptx
 
U1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos ComplejidadU1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos Complejidad
 

Más de Carlos A. Iglesias (20)

GSI Research Group Presentation
GSI Research Group PresentationGSI Research Group Presentation
GSI Research Group Presentation
 
Entorno PHP
Entorno PHPEntorno PHP
Entorno PHP
 
Bootstrap 3.
Bootstrap 3.Bootstrap 3.
Bootstrap 3.
 
Introducción CSS
Introducción CSSIntroducción CSS
Introducción CSS
 
Introducción HTML
Introducción HTMLIntroducción HTML
Introducción HTML
 
Presentación TEWC
Presentación TEWCPresentación TEWC
Presentación TEWC
 
UPM GSI Presentation
UPM GSI PresentationUPM GSI Presentation
UPM GSI Presentation
 
Introducción Análisis y Diseño
Introducción Análisis y DiseñoIntroducción Análisis y Diseño
Introducción Análisis y Diseño
 
PHP. Bases de Datos
PHP. Bases de DatosPHP. Bases de Datos
PHP. Bases de Datos
 
PHP. Tecnologías Web.
PHP. Tecnologías Web.PHP. Tecnologías Web.
PHP. Tecnologías Web.
 
1 intro php
1 intro php1 intro php
1 intro php
 
0 entorno php
0 entorno php0 entorno php
0 entorno php
 
Introducción TEWC
Introducción TEWCIntroducción TEWC
Introducción TEWC
 
Tema 4.1 Introduccion Android
Tema 4.1 Introduccion AndroidTema 4.1 Introduccion Android
Tema 4.1 Introduccion Android
 
Tema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacionTema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacion
 
Tema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre telecoTema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre teleco
 
Tema 4.4 Actividades
Tema 4.4 ActividadesTema 4.4 Actividades
Tema 4.4 Actividades
 
Tema 4.5 interfaces
Tema 4.5 interfacesTema 4.5 interfaces
Tema 4.5 interfaces
 
Tema 4.6 Intenciones
Tema 4.6 IntencionesTema 4.6 Intenciones
Tema 4.6 Intenciones
 
Tema 4.7 Acceso a datos
Tema 4.7 Acceso a datosTema 4.7 Acceso a datos
Tema 4.7 Acceso a datos
 

Último

PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 

Último (20)

PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 

Tema 2 eficiencia_y_complejidad_grupo_21

  • 1. Análisis y Diseño de Software Tema 2b. Eficiencia y Complejidad Carlos A. Iglesias <cif@gsi.dit.upm.es> Departamento de Ingeniería de Sistemas Telemáticos http://moodle.dit.upm.es G21
  • 2. Legenda Teoría Ejercicio práctico en el ordenador / Problema Ampliación de conocimientos Lectura / Vídeo / Podcast Práctica libre / Experimentación Eficiencia y Complejidad 2
  • 3. Bibliografía ● Eficiencia algorítmica – http://en.wikipedia.org/wiki/Algorithmic_efficien cy – http://en.wikipedia.org/wiki/Analysis_of_algorith ms#Shortcomings_of_empirical_metrics ● http://jungla.dit.upm.es/~pepe/doc/adsw/Complejidad.pdf Eficiencia y Complejidad 3
  • 4. Temario ● Complejidad: el problema ● Espacio de problemas ● Notación O (Big O) ● Complejidad de algoritmos básicos de ordenación y búsqueda ● Evaluar la complejidad de un algoritmo ● Análisis y conclusiones Eficiencia y Complejidad 4
  • 5. Objetivos ● Entender cómo se pueden comparar algoritmos ● Entender qué es una medida de complejidad ● Conocer la notación O ● Conocer la notación O para algoritmos básicos de ordenación y búsqueda ● Saber razonar con la notación O Eficiencia y Complejidad 5
  • 6. El problema ● ¿En qué nos basamos para seleccionar un algoritmo cuando hay tantos disponibles (y tan parecidos)? Eficiencia y Complejidad 6
  • 7. ¿Qué elegir? ● “En casi todos los cálculos, es posible una gran variedad en la forma de de llevar a cabo los procesos de computación. […] Es esencial seleccionar la forma que reduzca al mínimo el tiempo para completar un cálculo” Ada Lovelace Eficiencia y Complejidad 7
  • 8. ¿Qué elegir? ● El algoritmo más eficiente ● Eficiencia: inversamente proporcional a los recursos (memoria, tiempo, …) consumidos por un algoritmo Eficiencia y Complejidad 8
  • 9. Formas de seleccionar ● De forma 'empírica': – Medimos su recursos consumidos de los algoritmos (tiempo, memoria, uso de comunicaciones, disco, consumo energético, …, caso mejor, peor, medio, …) ● De forma 'analítica' / teórica: – Calculamos un 'límite' de estos recursos, analizando el algoritmo y su implementación Eficiencia y Complejidad 9
  • 10. Medidas empíricas ● Medimos (p.ej. Tiempo). // Creo el entorno Algoritmo a = new Algoritmo(); Datos d = new Datos(); // relleno // Mido long t1 = System.currentTimeMillis(); a.run(d); long t2 = System.currentTimeMillis(); long duracion = t2 – 1; Eficiencia y Complejidad 10
  • 11. Medidas empíricas ● Como los algoritmos son genéricos, las medidas empíricas pueden verse afectadas por: – El lenguaje de programación – El entorno de ejecución / sistema operativo (p.ej. JVM GC, multinúcleo, …) – Los datos que usemos al medir ● Pueden ayudarnos a entender cómo funcionan, y tenemos que analizar bien el experimento cuando obtenemos resultados inesperados ● Si medimos, podemos intentar ajustar las gráficas, y ver qué distribución siguen (polinómico, lineal, etc.). Si estás interesado, mira los apuntes. Eficiencia y Complejidad 11
  • 12. Medidas teóricas: notación O (Big O Notation) ● Nos ayuda a clasificar algoritmos según cómo crezca su respuesta (tiempo de ejecución, memoria, etc.) con el número de datos de entrada ● Algoritmos con la misma “respuesta”, tendrán la misma notación O ● Representa la cota del valor peor que pueden tomar, el límite superior Eficiencia y Complejidad 12
  • 13. Órdenes de funciones comunes Notación Nombre Comentario O(1) Constante Ideal O(log n) Logarítmico Muy bueno O(n) Lineal normal O(nlogn) Lineal razonable logarítmico O(n2) Cuadrático tratable O(nc) Potencial “tratable” O(cn), n >1 Exponencial No es práctico O(n!) Factorial inviable Eficiencia y Complejidad 13
  • 14. Orden Eficiencia y Complejidad 14
  • 15. O(1): complejidad constante ● Complejidad constante, independiente del tamaño de la entrada boolean isElementoNulo(Object [] array, int indice) { if (a[indice] == null) { return true; } return false; } boolean isElementoNulo(Object [] array, int indice) { return (a[indice] == null) { } Eficiencia y Complejidad 15
  • 16. O(n): lineal ● Consumo de recursos directamente proporcional a la entrada ● Ej. búsqueda lineal. Caso peor: buscamos el último elemento, recorremos n → O(n) Eficiencia y Complejidad 16
  • 17. Burbuja – notación O ● Si analizamos cuántas comparaciones hacemos ● P. ej para n = 10 – 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 = 45 ● En general, para N: – (N – 1) + (N – 2) + … + 1 = N * (N-1)/2 ● Si N es grande, el número será N2 ● La notación O : O(N2), cota superior asintótica Eficiencia y Complejidad 17
  • 18. Burbuja: Complejidad intercambios ● Si analizamos intercambios, si suponemos que el conjunto es aleatorio, podemos suponer que sólo estarán desordenados la mitad – Si había N2/2 comparaciones, habría N2/4 intercambios ● Tanto comparaciones como intercambios son O(N2) Eficiencia y Complejidad 18
  • 19. Selección: Análisis ● Complejidad: – Hacemos las mismas comparaciones que en la burbuja: N * (N – 1) /2 → O(N2) – Hacemos menos intercambios, menos que N (una pasada) → O(N) ● Para grandes valores de N, pesará más el término de comparaciones, y la complejidad será O(N 2) ● Para N pequeño, será más rápido que la burbuja ● En general: no es un algoritmo adecuado ● Puede ser bueno si los tiempos de intercambio son altos Eficiencia y Complejidad 19
  • 20. Inserción: análisis ● Complejidad: – En la primera pasada, comparamos con 1 carta, en la segunda con 2, en la tercera con 3, … → 1 + 2 + 3 + … + N – 1 = N * (N – 1) / 2 – En media, compararemos con la mitad de cartas ordenadas → N * (N – 1) / 4 → O(N2) – Número de copias similar al de comparaciones, pero una copia requiere menos tiempo que un intercambio – Si los datos ya están ordenados (o casi), sería O(N) Eficiencia y Complejidad 20
  • 21. Quicksort: Análisis ● Complejidad: – En la mayor parte de los casos es el más rápido: O(n * log(n)) Eficiencia y Complejidad 21
  • 22. Análisis complejidad Mejor Medio Peor Selección O (n2) O (n2) O (n2) Inserción O (n) O (n2) O (n2) Burbuja O (n) O (n2) O (n2) Quick sort O (n log n) O (n log n) O (n2) Eficiencia y Complejidad 22
  • 23. ¿Cómo calculamos la complejidad? (I) ●Analizamos el código ● En sentencias condicionales (if/else-switch), cogemos la rama 'peor' ●Bucles: – Si el bucle no depende de n, simplemente es una cte O(1), que quitamos – Si el bucle depende de n, tendremos O(n) – Si tenemos bucles anidados, que dependen de n, si son dos, tenemos O(n2) (nos sale 1 + 2 + .. = n(n- 1)/2) Eficiencia y Complejidad 23
  • 24. ¿Cómo calculamos la complejidad? (II) ●Si el bucle es multiplicativo, es decir, no es lineal con n: int c = 1; Para n = 10: while (c < n) { c= 1, c = 2, c = 4, c= 8 sentencias O(1); En general, vale 2k <= n c *= 2; → k = n * log2(n) → log(n) } int c = n; while (c > 1) { Para n = 10: sentencias O(1); c= 10, c = 5, c = 2, c= 1 c /= 2; → log(n) } Eficiencia y Complejidad 24
  • 25. ¿Cómo calculamos la complejidad? (II) ●Si combinamos, nos sale O(nlogn): for (int i = 0; i < n; i++) { int c = i; while (c > 0) { sentencias O(1); c /= 2; } } Eficiencia y Complejidad 25
  • 26. Comparación ● Tiempo en ms, en Pentium 100 con 16MRam N selección inserción burbuja QuickSort Quick + Insert 1 0 0 0 0 0 2 0 0 0 0 0 5 0 0 0 0 0 10 0 0 0 0 0 20 0 0 0 0 0 50 0 0 6 0 0 100 5 0 11 0 0 200 22 11 39 0 6 500 109 61 236 11 11 1.000 417 253 956 27 28 2.000 1.654 1.005 3.817 55 55 5.000 10.309 6.207 23.898 165 159 10.000 41.375 24.816 96.042 352 336 20.000 165.710 Eficiencia y Complejidad 99.152 381.415 807 758 26
  • 27. Comparación 450.000 400.000 350.000 burbuja 300.000 selección T (m s) 250.000 inserción 200.000 150.000 QuickSort 100.000 Quick + Insert 50.000 0 0 0 0 00 00 0 0 0 10 20 50 00 00 00 .0 .0 1. 2. 5. 10 20 L Eficiencia y Complejidad 27
  • 28. Caso mejor N selección inserción burbuja QuickSort Quick + Insert 1 0 0 0 0 0 2 0 0 0 0 0 5 0 0 0 0 0 10 0 0 0 0 0 20 0 0 0 0 0 50 0 0 0 0 0 100 6 0 0 0 0 200 17 0 0 0 0 500 115 0 0 6 5 1.000 473 0 0 17 16 2.000 1.890 0 0 39 27 5.000 11.820 6 11 109 83 10.000 47.428 22 11 242 181 20.000 189.140 39 27 522 390 Eficiencia y Complejidad 28
  • 29. Caso mejor 600 400 inserción T (ms) 200 burbuja Quick + Insert 0 Quick + Insert inserción QuickSort 100 500 2.000 10.000 L Eficiencia y Complejidad 29
  • 30. Tipos de problemas ● Hay muchos problemas que no sabemos un algoritmo para resolverlos. ● Entre los que sabemos resolver, los tipos más importantes son: – Problemas P: Problemas con complejidad polinómica (O(n), O(n2), etc.) – Problemas NP: Problemas que no pueden resolverse en un tiempo polinómico, e intentamos buscar otro algoritmo. Eficiencia y Complejidad 30
  • 31. Resumen ● Para elegir un algoritmo, podemos – Seguir un enfoque empírico, y ver cómo evolucionan la respuesta del algoritmo con la entrada – Seguir un enfoque analítico ● La notación O nos facilita razonar sobre la eficiencia de un algoritmo Eficiencia y Complejidad 31
  • 32. Preguntas ● Si pruebo dos algoritmos en mi ordenador, y uno tarda 10 segundos y otro 20 segundos, ¿cuál es más eficiente? ● Si sé que un algoritmo tiene una respuesta 9n 3 + 2n2 + 4n +2, ¿cuál sería su notación O? ● ¿Qué significa que O es el límite asintótico? ● Si tienes unos algoritmos A, B, C con complejidad O(n), O(nlogn) y O(n2), ¿en qué orden los escogerías? ● Para cualquier valor de n, será siempre más rápido un algoritmo O(n)) que uno con O(n2) Eficiencia y Complejidad 32