SlideShare a Scribd company logo
1 of 6
ESTRUCTURAS DE DATOS




                   UNIDAD 1 ANÁLISIS DE ALGORITMOS
                              COMPLEJIDAD DE ALGORITMOS

La teoría de complejidad de los algoritmos tiene que ver directamente con su eficiencia. La
Eficiencia de un algoritmo está determinada por la cantidad de recursos que consume un
programa durante su ejecución. A menor consumo de recursos (Tiempo/Espacio) será mayor
la eficiencia.

Los recursos son básicamente dos:

   1) El tiempo de procesador o Complejidad Temporal: Se denota por “T” y expresa el
      tiempo que tarda en ejecutarse un programa. Esto dependerá del número de
      instrucciones elementales que ejecuta y la rapidez de cada una de las instrucciones.

   2) Espacio en memoria o Complejidad Espacial: Se denota por la letra “E” y expresa la
      cantidad de memoria que requiere un programa. Depende principalmente del número
      de variables que utiliza y del espacio que cada variable ocupa.

Factores de los que depende la eficiencia de un programa.

Los factores que determinan la eficiencia de un programa son:

   a) El algoritmo utilizado.
   b) El tamaño de la entrada, que es una medida de la cantidad de datos que se deberán
      procesar.

El tiempo de ejecución y el espacio en memoria requerida se expresan en función del tamaño
de los datos de entrada, denotado por “n”. De esta manera quien determina el consumo de los
recursos será la cantidad de datos procesados, de ahí que el tiempo y el espacio dependen de
‘n’, Tiempo en función de ‘n’ T( n) y Espacio en función de ‘n’ E(n).

La noción del tamaño de los datos de entrada tiene una definición para cada problema en
particular y una regla que suele funcionar es:

   1) Si la entrada de datos es un solo entero, el tamaño para ‘n’ es el valor del entero.
   2) Si la entrada es una secuencia de datos , el tamaño para ‘n’ es la cantidad de elementos
      de la secuencia.
   3) Si la entrada de datos es estructurada, el tamaño para ‘n’ es el número de elementos
      del dato.


Formas para medir la complejidad de un programa

Existen dos formas de medición de la complejidad:

1) Prueba empírica: Consiste en implementar el programa y probarlo por medio de su
ejecución, midiendo el tiempo y el espacio en una máquina concreta y con datos específicos.

2) Análisis de Complejidad: Consiste en estimar el tiempo y el espacio a partir del análisis de
las instrucciones que componen el algoritmo.
                                                                                              1
ESTRUCTURAS DE DATOS



La comparación de ambos métodos nos da el siguiente resultado:

Para la prueba empírica:

   a) El resultado es dependiente de la máquina

   b) Es poco informativo

   c) Requiere implementar el algoritmo y ejecutarlo varias veces

   d) Nos da valores exactos, como el tiempo en segundos y el espacio de memoria en bytes,
      pero solo para una máquina determinada y datos concretos.

Para el análisis del algoritmo:

   a) Es independiente de la máquina

   b) Es más informativo

   c) Se aplica sin necesidad de implementar el programa

   d) Nos da valores aproximados

Notaciones Asintóticas

Las notaciones asintóticas son aquellas que permiten caracterizar el ritmo de crecimiento de
una función, en este caso las notaciones asintóticas nos permiten caracterizar el
comportamiento de T(n) y E(n). Las notaciones estudian el comportamiento de los algoritmos
para volúmenes de datos de gran tamaño que es justo cuando la eficiencia del algoritmo es
más crítica.

Con la notación asintótica no se pretende establecer el tiempo exacto de ejecución o el espacio
de memoria ocupado sino que simplemente se clasifica el algoritmo en función del tamaño de
los datos de entrada. Las notaciones Asintóticas más comunes son:

          Notación                       Definición
          O(f)                           Conjunto de funciones cuyo crecimiento es
                                         menor o igual a f
          Ω(f)                           Conjunto de funciones cuyo ritmo de
                                         crecimiento es mayor o igual a f
          Ѳ(f)                           Conjunto de funciones con el mismo ritmo de
                                         crecimiento en E(n) y T(n)


                                  ARITMÉTICA DE LA NOTACIÓN O

Ocupando el tamaño de la entrada como el tamaño o el parámetro que define el tiempo de
ejecución de un programa es posible describir por ejemplo a la función T(n)=n2+2n y esta
función proporciona la información necesaria para clasificarla en los diferentes algoritmos.



Reglas para el cálculo de una función de tiempo

                                                                                             2
ESTRUCTURAS DE DATOS



1) Sentencias simples: Se refiere a sentencias de asignación, operaciones aritméticas,
entradas y salidas. Esta sentencia requiere un trabajo constante siendo su orden de
complejidad igual a 1.

Ejemplo:

Suma= 0            1

2) Ciclos: Su tiempo de ejecución es al menos el tiempo de ejecución de las instrucciones
dentro de él, multiplicado por el número de la iteraciones, sumándole los componentes del
ciclo.

Ejemplo

Suma= 0            1

For(i=0;i<n;i++)        1, n+1,n = 2n+2        T(n) = 4n+3 Esto es si n = 2

  Suma+=i ;             2n     *Es dos porque se está realizando una suma y una asignación

3) Ciclos anidados: Se analizan desde el ciclo interno hasta el más externo. Una vez que se
obtiene la complejidad del ciclo interno se multiplica por el número de iteraciones del ciclo
externo obteniendo la complejidad final para el ciclo externo de la misma forma que un ciclo
simple.

Ejemplo:

For(j=1;j<=n;j++)        1, n+1, n   =      2n+2 + 4n2+2n     T(n)= 4n2+4n+2

  For(i=0;i<n;i++)       1, n+1,n = 2n+2         (4n+2)(n)= 4n2+2n

    Suma+=i ;             2n

4) Condicionales: La comparación es de complejidad constante igual a 1 que se debe sumar
con el peor de los casos entre el verdadero y el falso.

Ejemplo:

If (n>i) 1+3 = 4

   Suma+=i*j;       3

 Else

        Suma=i; 1

Para simplificar el estudio de la complejidad se han adoptado ciertas convenciones y una de
ellas es la del concepto de ORDEN, que indica el grado de Complejidad del algoritmo.

A partir de la función de tiempo, para determinar el orden el orden del algoritmo se eliminan
todos los términos excepto el de mayor grado, después se elimina el coeficiente del término.



                                                                                             3
ESTRUCTURAS DE DATOS



El concepto de orden de complejidad indica el grado o clasificación de complejidad del
algoritmo, así para T(n)=7n 2+11n+6 tenemos que n2 es el orden de complejidad del
algoritmo, es decir O(n2).

Ordenes de Complejidad

Entre los principales órdenes de complejidad se encuentran los siguientes:

       O (1) Orden Constante

       O (log n) Orden Logarítmico

       O(n) Orden lineal

       O(n log n) Orden Cuasi-lineal

       O (n2) Orden Cuadrático

       O (n3) Orden cúbico

       O (n a) Orden Polinomial

       O (an) Orden Exponencial

       O (n!) Orden Factorial

La complejidad constante: Indica cuando las instrucciones se ejecutan una sola vez.

Complejidad Logarítmica: Suele aparecer en determinados algoritmos y se considera un
caso especial pues en el doble de tiempo permiten resolver problemas notablemente mayores
y para resolver un problema doblemente mayor solo hace falta un poco más de tiempo pero
nunca el doble.

Complejidad Lineal: Es una complejidad buena y también muy usual su comportamiento es
más natural es decir con el doble de datos a procesar nos dará el doble de tiempo de
ejecución. Aparece en la evaluación de ciclos simples siempre que la complejidad de las
instrucciones anteriores sea constante.

Complejidad Cuasi-lineal: Se encuentra en algoritmos de tipo divide y vencerás como el
método de ordenación QuickSort. Se considera una buena complejidad si n se duplica el
tiempo de ejecución es ligeramente mayor de el doble.

Complejidad Cuadrática: Aparece en ciclos doblemente anidados y si n se duplica el tiempo
de ejecución puede aumentar hasta 4 veces.

Complejidad Cúbica: Se da en ciclos de triple anidación si n se duplica el tiempo de ejecución
se multiplica hasta 8 veces.

Complejidad Polinomial: Estos algoritmos se encuentran con dificultad a problemas de
tamaño creciente y se encuentran en el límite de lo tratado. La complejidad es bastante mala.




                                                                                            4
ESTRUCTURAS DE DATOS



Complejidad Exponencial: Estos algoritmos no suelen ser muy útiles en la práctica por el
elevadísimo tiempo de ejecución. Se dan en programas recursivos que contienen dos o más
llamadas internas.

Ejemplo grafico de la comparación de Complejidad Cuadrática y Exponencial



         1000
          800
          600
        400

        200




Dado un algoritmo se debe conocer su complejidad temporal clasificándolo en uno de los
órdenes de complejidad anteriores.

                                       COMPLEJIDAD

Dado un algoritmo de debe conocer su complejidad Temporal por medio de alguna de las dos
formas de medirla, recomendándose siempre el Análisis del Algoritmo. La Complejidad
Espacial del algoritmo dependerá de la memoria que requiera, y puede ser para diferentes
conceptos:

   a) Variables estáticas y Locales

   b) Variables dinámicas

   c) Parámetros de funcione y métodos

   d) Indicadores de archivos

La cantidad de memoria que consume un programa durante su ejecución depende de las
variables que haya creando dinámicamente y además de la sucesión de llamadas a funciones
por lo que se puede complicar considerablemente el análisis.

El caso más sencillo de analizar será el de los algoritmos no recursivos que no utiliza memoria
dinámica y que siguen tres reglas para el cálculo de su complejidad espacial

1.- Una variable de tipo elemental ocupa una cantidad de espacio constante que será de
acuerdo a su tipo.

2.- Una variable de tipo tupla ocupa la suma de sus campos.

3.- Una variable de tipo tabla con n elementos ocupara n veces el espacio de cada elemento

                              SELECCIÓN DE UN ALGORITMO



                                                                                             5
ESTRUCTURAS DE DATOS



El impacto relativo de los factores que determinan el consumo de recursos de un proceso
depende de la cantidad de datos a procesar y almacenar.

1.- Para un tamaño de datos de entrada pequeño el lenguaje, el compilador y el equipo tienen
un impacto considerable en el tiempo de ejecución. Esto se debe a que si la entrada de datos
es pequeña, el número de instrucciones que se ejecutan también será menor por lo que la
velocidad individual de cada instrucción elemental determinará en mayor medida el tiempo
de ejecución sobre todo al comparar el mismo algoritmo en un equipo diferente.

2:- Para un tamaño de datos de entrada grande, el lenguaje, el compilador y el equipo pierden
importancia y lo más importante pasa a ser el algoritmo, esto se debe a que un cambio en el
equipo afecta el tiempo de ejecución en un factor constante mientras que el cambio en el
algoritmo puede llegar a incrementar, duplicar, elevar al cuadrado, al cubo etc… el tiempo de
ejecución.

3.- La eficiencia es especialmente importante en: Aplicaciones Interactivas, Sistemas
operativos multiproceso, Aplicaciones que se usan reiteradamente.




                                                                                           6

More Related Content

What's hot (18)

Complejidad de los algoritmos
Complejidad de los algoritmosComplejidad de los algoritmos
Complejidad de los algoritmos
 
Analisis de Algoritmos
Analisis de AlgoritmosAnalisis de Algoritmos
Analisis de Algoritmos
 
Tema4
Tema4Tema4
Tema4
 
Analisis de algoritmos complejidad en tiempo y espacio
Analisis de algoritmos complejidad en tiempo y espacioAnalisis de algoritmos complejidad en tiempo y espacio
Analisis de algoritmos complejidad en tiempo y espacio
 
Complejidad de Algoritmos
Complejidad de AlgoritmosComplejidad de Algoritmos
Complejidad de Algoritmos
 
Complejidad Computacional
Complejidad ComputacionalComplejidad Computacional
Complejidad Computacional
 
Teoría de complejidad computacional (tcc)
Teoría de complejidad computacional (tcc)Teoría de complejidad computacional (tcc)
Teoría de complejidad computacional (tcc)
 
Jflambert lyada - ayudantia matematicas discretas
Jflambert   lyada - ayudantia matematicas discretasJflambert   lyada - ayudantia matematicas discretas
Jflambert lyada - ayudantia matematicas discretas
 
19189723 estructura-de-datos-programacion-facil
19189723 estructura-de-datos-programacion-facil19189723 estructura-de-datos-programacion-facil
19189723 estructura-de-datos-programacion-facil
 
ANALISIS DE ALGORITMOS
ANALISIS DE ALGORITMOSANALISIS DE ALGORITMOS
ANALISIS DE ALGORITMOS
 
AnáLisis De Algoritmos1
AnáLisis De Algoritmos1AnáLisis De Algoritmos1
AnáLisis De Algoritmos1
 
Complejidad
ComplejidadComplejidad
Complejidad
 
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
 
Manual algoritmos y_estructura_de_datos
Manual algoritmos y_estructura_de_datosManual algoritmos y_estructura_de_datos
Manual algoritmos y_estructura_de_datos
 
EVALUACION DE ALGORTIMOS
EVALUACION DE ALGORTIMOSEVALUACION DE ALGORTIMOS
EVALUACION DE ALGORTIMOS
 
Teoria de la c.c.
Teoria de la c.c.Teoria de la c.c.
Teoria de la c.c.
 
Sc capitulo5
Sc capitulo5Sc capitulo5
Sc capitulo5
 
determinar si un numero es primo
determinar si un numero es primo determinar si un numero es primo
determinar si un numero es primo
 

Viewers also liked

Unidad 2 Manejo de memoria
Unidad 2 Manejo de memoriaUnidad 2 Manejo de memoria
Unidad 2 Manejo de memoriarehoscript
 
Unidad 8 metodos_de_busqueda
Unidad 8 metodos_de_busquedaUnidad 8 metodos_de_busqueda
Unidad 8 metodos_de_busquedarehoscript
 
Unidad 6 ordenacion_interna
Unidad 6 ordenacion_internaUnidad 6 ordenacion_interna
Unidad 6 ordenacion_internarehoscript
 
Unidad 5 est. dat estruc. no lineal
Unidad 5 est. dat estruc. no linealUnidad 5 est. dat estruc. no lineal
Unidad 5 est. dat estruc. no linealrehoscript
 
Practicas oracle10g
Practicas oracle10gPracticas oracle10g
Practicas oracle10grehoscript
 
Unidad 7 ordenacion_externa
Unidad 7 ordenacion_externaUnidad 7 ordenacion_externa
Unidad 7 ordenacion_externarehoscript
 
Aplicaciones gráficas por computadoras
Aplicaciones gráficas por computadorasAplicaciones gráficas por computadoras
Aplicaciones gráficas por computadorasGaspar Méndez
 
Unidad 4 est. dat. recursividad
Unidad 4  est. dat. recursividadUnidad 4  est. dat. recursividad
Unidad 4 est. dat. recursividadrehoscript
 
39029313 libro-de-texto-para-la-materia-de-graficacion
39029313 libro-de-texto-para-la-materia-de-graficacion39029313 libro-de-texto-para-la-materia-de-graficacion
39029313 libro-de-texto-para-la-materia-de-graficacionYamil Hernandez Ortega
 
Unidad 3 estructuras lineales estaticas y dinamicas
Unidad 3 estructuras lineales estaticas y dinamicasUnidad 3 estructuras lineales estaticas y dinamicas
Unidad 3 estructuras lineales estaticas y dinamicasrehoscript
 
INTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORA
INTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORAINTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORA
INTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORArehoscript
 
Graficación por computadora
Graficación por computadoraGraficación por computadora
Graficación por computadoraDiaNa González
 
FUNDAMENTOS DE DIAGRAMACIÓN
FUNDAMENTOS DE DIAGRAMACIÓNFUNDAMENTOS DE DIAGRAMACIÓN
FUNDAMENTOS DE DIAGRAMACIÓNAle Altuve
 

Viewers also liked (14)

Unidad 2 Manejo de memoria
Unidad 2 Manejo de memoriaUnidad 2 Manejo de memoria
Unidad 2 Manejo de memoria
 
Unidad 8 metodos_de_busqueda
Unidad 8 metodos_de_busquedaUnidad 8 metodos_de_busqueda
Unidad 8 metodos_de_busqueda
 
Unidad 6 ordenacion_interna
Unidad 6 ordenacion_internaUnidad 6 ordenacion_interna
Unidad 6 ordenacion_interna
 
Unidad 5 est. dat estruc. no lineal
Unidad 5 est. dat estruc. no linealUnidad 5 est. dat estruc. no lineal
Unidad 5 est. dat estruc. no lineal
 
Practicas oracle10g
Practicas oracle10gPracticas oracle10g
Practicas oracle10g
 
Unidad 7 ordenacion_externa
Unidad 7 ordenacion_externaUnidad 7 ordenacion_externa
Unidad 7 ordenacion_externa
 
Aplicaciones gráficas por computadoras
Aplicaciones gráficas por computadorasAplicaciones gráficas por computadoras
Aplicaciones gráficas por computadoras
 
Unidad 4 est. dat. recursividad
Unidad 4  est. dat. recursividadUnidad 4  est. dat. recursividad
Unidad 4 est. dat. recursividad
 
39029313 libro-de-texto-para-la-materia-de-graficacion
39029313 libro-de-texto-para-la-materia-de-graficacion39029313 libro-de-texto-para-la-materia-de-graficacion
39029313 libro-de-texto-para-la-materia-de-graficacion
 
Graficos por Computadora (1)
Graficos por Computadora (1)Graficos por Computadora (1)
Graficos por Computadora (1)
 
Unidad 3 estructuras lineales estaticas y dinamicas
Unidad 3 estructuras lineales estaticas y dinamicasUnidad 3 estructuras lineales estaticas y dinamicas
Unidad 3 estructuras lineales estaticas y dinamicas
 
INTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORA
INTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORAINTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORA
INTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORA
 
Graficación por computadora
Graficación por computadoraGraficación por computadora
Graficación por computadora
 
FUNDAMENTOS DE DIAGRAMACIÓN
FUNDAMENTOS DE DIAGRAMACIÓNFUNDAMENTOS DE DIAGRAMACIÓN
FUNDAMENTOS DE DIAGRAMACIÓN
 

Similar to Analisis de algoritmos

Informe técnico Unidad 7 Análisis de algoritmos (Rubí Veronica)
Informe técnico Unidad 7 Análisis de algoritmos (Rubí Veronica)Informe técnico Unidad 7 Análisis de algoritmos (Rubí Veronica)
Informe técnico Unidad 7 Análisis de algoritmos (Rubí Veronica)Rubi Veronica Chimal Cuxin
 
Complejidad de Algoritmos
Complejidad de AlgoritmosComplejidad de Algoritmos
Complejidad de AlgoritmosFranco Cid
 
ANALISIS DE LOS ALGORITMOS
ANALISIS DE LOS ALGORITMOSANALISIS DE LOS ALGORITMOS
ANALISIS DE LOS ALGORITMOSerwin_alexander
 
Estructura de dato unidad 7
Estructura de dato unidad 7Estructura de dato unidad 7
Estructura de dato unidad 7lenithoz
 
Que es la complejidad de un algoritmo
Que es la complejidad de un algoritmoQue es la complejidad de un algoritmo
Que es la complejidad de un algoritmojaviierr24
 
Complejidad de algoritmos
Complejidad de algoritmosComplejidad de algoritmos
Complejidad de algoritmospazmoralesv
 
Unidad 7 diana karina pech may
Unidad 7 diana karina pech mayUnidad 7 diana karina pech may
Unidad 7 diana karina pech mayKarina1602
 
Unidad siete estructura de datos
Unidad siete estructura de datosUnidad siete estructura de datos
Unidad siete estructura de datosRené Sosa Arana
 
Clasificacion de los problemas
Clasificacion de los problemasClasificacion de los problemas
Clasificacion de los problemasSergio Ormeño
 
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
 
Clasificacion de los problemas
Clasificacion de los problemasClasificacion de los problemas
Clasificacion de los problemasJohnfornerod
 
Informe tecnico unidad 7
Informe tecnico unidad 7Informe tecnico unidad 7
Informe tecnico unidad 7eliezerbs
 
Cap 02.1 analisis de las estructuras de control(1)
Cap 02.1   analisis de las estructuras de control(1)Cap 02.1   analisis de las estructuras de control(1)
Cap 02.1 analisis de las estructuras de control(1)Lio Alva
 

Similar to Analisis de algoritmos (20)

Cap2.1
Cap2.1Cap2.1
Cap2.1
 
Notación Asintótica
Notación AsintóticaNotación Asintótica
Notación Asintótica
 
Informe técnico Unidad 7 Análisis de algoritmos (Rubí Veronica)
Informe técnico Unidad 7 Análisis de algoritmos (Rubí Veronica)Informe técnico Unidad 7 Análisis de algoritmos (Rubí Veronica)
Informe técnico Unidad 7 Análisis de algoritmos (Rubí Veronica)
 
Analisis de algoritmo
Analisis de algoritmoAnalisis de algoritmo
Analisis de algoritmo
 
Complejidad de Algoritmos
Complejidad de AlgoritmosComplejidad de Algoritmos
Complejidad de Algoritmos
 
AnáLisis De Algoritmos1
AnáLisis De Algoritmos1AnáLisis De Algoritmos1
AnáLisis De Algoritmos1
 
ANALISIS DE LOS ALGORITMOS
ANALISIS DE LOS ALGORITMOSANALISIS DE LOS ALGORITMOS
ANALISIS DE LOS ALGORITMOS
 
analisis de los algoritmos
analisis de los algoritmosanalisis de los algoritmos
analisis de los algoritmos
 
05 - Analisis de Algoritmos.pptx
05 - Analisis de Algoritmos.pptx05 - Analisis de Algoritmos.pptx
05 - Analisis de Algoritmos.pptx
 
Estructura de dato unidad 7
Estructura de dato unidad 7Estructura de dato unidad 7
Estructura de dato unidad 7
 
Que es la complejidad de un algoritmo
Que es la complejidad de un algoritmoQue es la complejidad de un algoritmo
Que es la complejidad de un algoritmo
 
Complejidad de algoritmos
Complejidad de algoritmosComplejidad de algoritmos
Complejidad de algoritmos
 
Unidad 7 diana karina pech may
Unidad 7 diana karina pech mayUnidad 7 diana karina pech may
Unidad 7 diana karina pech may
 
Unidad siete estructura de datos
Unidad siete estructura de datosUnidad siete estructura de datos
Unidad siete estructura de datos
 
Clasificacion de los problemas
Clasificacion de los problemasClasificacion de los problemas
Clasificacion de los problemas
 
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
 
Clasificacion de los problemas
Clasificacion de los problemasClasificacion de los problemas
Clasificacion de los problemas
 
Informe tecnico unidad 7
Informe tecnico unidad 7Informe tecnico unidad 7
Informe tecnico unidad 7
 
Unidad 7 informe técnico
Unidad 7 informe técnicoUnidad 7 informe técnico
Unidad 7 informe técnico
 
Cap 02.1 analisis de las estructuras de control(1)
Cap 02.1   analisis de las estructuras de control(1)Cap 02.1   analisis de las estructuras de control(1)
Cap 02.1 analisis de las estructuras de control(1)
 

More from rehoscript

Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807rehoscript
 
Lenguajes Decidibles
Lenguajes DecidiblesLenguajes Decidibles
Lenguajes Decidiblesrehoscript
 
Programación
 Programación Programación
Programaciónrehoscript
 
Reseña y ensayo
Reseña y ensayoReseña y ensayo
Reseña y ensayorehoscript
 
Protocolo de investigacion
Protocolo de investigacionProtocolo de investigacion
Protocolo de investigacionrehoscript
 
Tipos de entrevista
Tipos de entrevistaTipos de entrevista
Tipos de entrevistarehoscript
 
Investigacion documental
Investigacion documentalInvestigacion documental
Investigacion documentalrehoscript
 
Maquinas Virtuales
Maquinas VirtualesMaquinas Virtuales
Maquinas Virtualesrehoscript
 
Arquitectura P2P
Arquitectura P2PArquitectura P2P
Arquitectura P2Prehoscript
 
Arquitectura dirigida a eventos
Arquitectura dirigida a eventosArquitectura dirigida a eventos
Arquitectura dirigida a eventosrehoscript
 
Arquitecturas de pizarra o repositório
Arquitecturas de pizarra o repositórioArquitecturas de pizarra o repositório
Arquitecturas de pizarra o repositóriorehoscript
 
Arquitectura pipeline
Arquitectura pipelineArquitectura pipeline
Arquitectura pipelinerehoscript
 
Modelado de procesos de negocio
Modelado de procesos de negocioModelado de procesos de negocio
Modelado de procesos de negociorehoscript
 

More from rehoscript (14)

Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807
 
Lenguajes Decidibles
Lenguajes DecidiblesLenguajes Decidibles
Lenguajes Decidibles
 
Claselexico
ClaselexicoClaselexico
Claselexico
 
Programación
 Programación Programación
Programación
 
Reseña y ensayo
Reseña y ensayoReseña y ensayo
Reseña y ensayo
 
Protocolo de investigacion
Protocolo de investigacionProtocolo de investigacion
Protocolo de investigacion
 
Tipos de entrevista
Tipos de entrevistaTipos de entrevista
Tipos de entrevista
 
Investigacion documental
Investigacion documentalInvestigacion documental
Investigacion documental
 
Maquinas Virtuales
Maquinas VirtualesMaquinas Virtuales
Maquinas Virtuales
 
Arquitectura P2P
Arquitectura P2PArquitectura P2P
Arquitectura P2P
 
Arquitectura dirigida a eventos
Arquitectura dirigida a eventosArquitectura dirigida a eventos
Arquitectura dirigida a eventos
 
Arquitecturas de pizarra o repositório
Arquitecturas de pizarra o repositórioArquitecturas de pizarra o repositório
Arquitecturas de pizarra o repositório
 
Arquitectura pipeline
Arquitectura pipelineArquitectura pipeline
Arquitectura pipeline
 
Modelado de procesos de negocio
Modelado de procesos de negocioModelado de procesos de negocio
Modelado de procesos de negocio
 

Recently uploaded

TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADOTIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADOPsicoterapia Holística
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxroberthirigoinvasque
 
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONamelia poma
 
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIAFabiolaGarcia751855
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfpatriciaines1993
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxFernando Solis
 
prostitución en España: una mirada integral!
prostitución en España: una mirada integral!prostitución en España: una mirada integral!
prostitución en España: una mirada integral!CatalinaAlfaroChryso
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptNancyMoreiraMora1
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024IES Vicent Andres Estelles
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Katherine Concepcion Gonzalez
 
Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024IES Vicent Andres Estelles
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICAÁngel Encinas
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCCarlosEduardoSosa2
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfJonathanCovena1
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxiemerc2024
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfapunteshistoriamarmo
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.docRodneyFrankCUADROSMI
 

Recently uploaded (20)

TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADOTIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
 
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
Los dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la VerdadLos dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la Verdad
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
prostitución en España: una mirada integral!
prostitución en España: una mirada integral!prostitución en España: una mirada integral!
prostitución en España: una mirada integral!
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdf
 
Lecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigosLecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigos
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 

Analisis de algoritmos

  • 1. ESTRUCTURAS DE DATOS UNIDAD 1 ANÁLISIS DE ALGORITMOS COMPLEJIDAD DE ALGORITMOS La teoría de complejidad de los algoritmos tiene que ver directamente con su eficiencia. La Eficiencia de un algoritmo está determinada por la cantidad de recursos que consume un programa durante su ejecución. A menor consumo de recursos (Tiempo/Espacio) será mayor la eficiencia. Los recursos son básicamente dos: 1) El tiempo de procesador o Complejidad Temporal: Se denota por “T” y expresa el tiempo que tarda en ejecutarse un programa. Esto dependerá del número de instrucciones elementales que ejecuta y la rapidez de cada una de las instrucciones. 2) Espacio en memoria o Complejidad Espacial: Se denota por la letra “E” y expresa la cantidad de memoria que requiere un programa. Depende principalmente del número de variables que utiliza y del espacio que cada variable ocupa. Factores de los que depende la eficiencia de un programa. Los factores que determinan la eficiencia de un programa son: a) El algoritmo utilizado. b) El tamaño de la entrada, que es una medida de la cantidad de datos que se deberán procesar. El tiempo de ejecución y el espacio en memoria requerida se expresan en función del tamaño de los datos de entrada, denotado por “n”. De esta manera quien determina el consumo de los recursos será la cantidad de datos procesados, de ahí que el tiempo y el espacio dependen de ‘n’, Tiempo en función de ‘n’ T( n) y Espacio en función de ‘n’ E(n). La noción del tamaño de los datos de entrada tiene una definición para cada problema en particular y una regla que suele funcionar es: 1) Si la entrada de datos es un solo entero, el tamaño para ‘n’ es el valor del entero. 2) Si la entrada es una secuencia de datos , el tamaño para ‘n’ es la cantidad de elementos de la secuencia. 3) Si la entrada de datos es estructurada, el tamaño para ‘n’ es el número de elementos del dato. Formas para medir la complejidad de un programa Existen dos formas de medición de la complejidad: 1) Prueba empírica: Consiste en implementar el programa y probarlo por medio de su ejecución, midiendo el tiempo y el espacio en una máquina concreta y con datos específicos. 2) Análisis de Complejidad: Consiste en estimar el tiempo y el espacio a partir del análisis de las instrucciones que componen el algoritmo. 1
  • 2. ESTRUCTURAS DE DATOS La comparación de ambos métodos nos da el siguiente resultado: Para la prueba empírica: a) El resultado es dependiente de la máquina b) Es poco informativo c) Requiere implementar el algoritmo y ejecutarlo varias veces d) Nos da valores exactos, como el tiempo en segundos y el espacio de memoria en bytes, pero solo para una máquina determinada y datos concretos. Para el análisis del algoritmo: a) Es independiente de la máquina b) Es más informativo c) Se aplica sin necesidad de implementar el programa d) Nos da valores aproximados Notaciones Asintóticas Las notaciones asintóticas son aquellas que permiten caracterizar el ritmo de crecimiento de una función, en este caso las notaciones asintóticas nos permiten caracterizar el comportamiento de T(n) y E(n). Las notaciones estudian el comportamiento de los algoritmos para volúmenes de datos de gran tamaño que es justo cuando la eficiencia del algoritmo es más crítica. Con la notación asintótica no se pretende establecer el tiempo exacto de ejecución o el espacio de memoria ocupado sino que simplemente se clasifica el algoritmo en función del tamaño de los datos de entrada. Las notaciones Asintóticas más comunes son: Notación Definición O(f) Conjunto de funciones cuyo crecimiento es menor o igual a f Ω(f) Conjunto de funciones cuyo ritmo de crecimiento es mayor o igual a f Ѳ(f) Conjunto de funciones con el mismo ritmo de crecimiento en E(n) y T(n) ARITMÉTICA DE LA NOTACIÓN O Ocupando el tamaño de la entrada como el tamaño o el parámetro que define el tiempo de ejecución de un programa es posible describir por ejemplo a la función T(n)=n2+2n y esta función proporciona la información necesaria para clasificarla en los diferentes algoritmos. Reglas para el cálculo de una función de tiempo 2
  • 3. ESTRUCTURAS DE DATOS 1) Sentencias simples: Se refiere a sentencias de asignación, operaciones aritméticas, entradas y salidas. Esta sentencia requiere un trabajo constante siendo su orden de complejidad igual a 1. Ejemplo: Suma= 0 1 2) Ciclos: Su tiempo de ejecución es al menos el tiempo de ejecución de las instrucciones dentro de él, multiplicado por el número de la iteraciones, sumándole los componentes del ciclo. Ejemplo Suma= 0 1 For(i=0;i<n;i++) 1, n+1,n = 2n+2 T(n) = 4n+3 Esto es si n = 2 Suma+=i ; 2n *Es dos porque se está realizando una suma y una asignación 3) Ciclos anidados: Se analizan desde el ciclo interno hasta el más externo. Una vez que se obtiene la complejidad del ciclo interno se multiplica por el número de iteraciones del ciclo externo obteniendo la complejidad final para el ciclo externo de la misma forma que un ciclo simple. Ejemplo: For(j=1;j<=n;j++) 1, n+1, n = 2n+2 + 4n2+2n T(n)= 4n2+4n+2 For(i=0;i<n;i++) 1, n+1,n = 2n+2 (4n+2)(n)= 4n2+2n Suma+=i ; 2n 4) Condicionales: La comparación es de complejidad constante igual a 1 que se debe sumar con el peor de los casos entre el verdadero y el falso. Ejemplo: If (n>i) 1+3 = 4 Suma+=i*j; 3 Else Suma=i; 1 Para simplificar el estudio de la complejidad se han adoptado ciertas convenciones y una de ellas es la del concepto de ORDEN, que indica el grado de Complejidad del algoritmo. A partir de la función de tiempo, para determinar el orden el orden del algoritmo se eliminan todos los términos excepto el de mayor grado, después se elimina el coeficiente del término. 3
  • 4. ESTRUCTURAS DE DATOS El concepto de orden de complejidad indica el grado o clasificación de complejidad del algoritmo, así para T(n)=7n 2+11n+6 tenemos que n2 es el orden de complejidad del algoritmo, es decir O(n2). Ordenes de Complejidad Entre los principales órdenes de complejidad se encuentran los siguientes: O (1) Orden Constante O (log n) Orden Logarítmico O(n) Orden lineal O(n log n) Orden Cuasi-lineal O (n2) Orden Cuadrático O (n3) Orden cúbico O (n a) Orden Polinomial O (an) Orden Exponencial O (n!) Orden Factorial La complejidad constante: Indica cuando las instrucciones se ejecutan una sola vez. Complejidad Logarítmica: Suele aparecer en determinados algoritmos y se considera un caso especial pues en el doble de tiempo permiten resolver problemas notablemente mayores y para resolver un problema doblemente mayor solo hace falta un poco más de tiempo pero nunca el doble. Complejidad Lineal: Es una complejidad buena y también muy usual su comportamiento es más natural es decir con el doble de datos a procesar nos dará el doble de tiempo de ejecución. Aparece en la evaluación de ciclos simples siempre que la complejidad de las instrucciones anteriores sea constante. Complejidad Cuasi-lineal: Se encuentra en algoritmos de tipo divide y vencerás como el método de ordenación QuickSort. Se considera una buena complejidad si n se duplica el tiempo de ejecución es ligeramente mayor de el doble. Complejidad Cuadrática: Aparece en ciclos doblemente anidados y si n se duplica el tiempo de ejecución puede aumentar hasta 4 veces. Complejidad Cúbica: Se da en ciclos de triple anidación si n se duplica el tiempo de ejecución se multiplica hasta 8 veces. Complejidad Polinomial: Estos algoritmos se encuentran con dificultad a problemas de tamaño creciente y se encuentran en el límite de lo tratado. La complejidad es bastante mala. 4
  • 5. ESTRUCTURAS DE DATOS Complejidad Exponencial: Estos algoritmos no suelen ser muy útiles en la práctica por el elevadísimo tiempo de ejecución. Se dan en programas recursivos que contienen dos o más llamadas internas. Ejemplo grafico de la comparación de Complejidad Cuadrática y Exponencial 1000 800 600 400 200 Dado un algoritmo se debe conocer su complejidad temporal clasificándolo en uno de los órdenes de complejidad anteriores. COMPLEJIDAD Dado un algoritmo de debe conocer su complejidad Temporal por medio de alguna de las dos formas de medirla, recomendándose siempre el Análisis del Algoritmo. La Complejidad Espacial del algoritmo dependerá de la memoria que requiera, y puede ser para diferentes conceptos: a) Variables estáticas y Locales b) Variables dinámicas c) Parámetros de funcione y métodos d) Indicadores de archivos La cantidad de memoria que consume un programa durante su ejecución depende de las variables que haya creando dinámicamente y además de la sucesión de llamadas a funciones por lo que se puede complicar considerablemente el análisis. El caso más sencillo de analizar será el de los algoritmos no recursivos que no utiliza memoria dinámica y que siguen tres reglas para el cálculo de su complejidad espacial 1.- Una variable de tipo elemental ocupa una cantidad de espacio constante que será de acuerdo a su tipo. 2.- Una variable de tipo tupla ocupa la suma de sus campos. 3.- Una variable de tipo tabla con n elementos ocupara n veces el espacio de cada elemento SELECCIÓN DE UN ALGORITMO 5
  • 6. ESTRUCTURAS DE DATOS El impacto relativo de los factores que determinan el consumo de recursos de un proceso depende de la cantidad de datos a procesar y almacenar. 1.- Para un tamaño de datos de entrada pequeño el lenguaje, el compilador y el equipo tienen un impacto considerable en el tiempo de ejecución. Esto se debe a que si la entrada de datos es pequeña, el número de instrucciones que se ejecutan también será menor por lo que la velocidad individual de cada instrucción elemental determinará en mayor medida el tiempo de ejecución sobre todo al comparar el mismo algoritmo en un equipo diferente. 2:- Para un tamaño de datos de entrada grande, el lenguaje, el compilador y el equipo pierden importancia y lo más importante pasa a ser el algoritmo, esto se debe a que un cambio en el equipo afecta el tiempo de ejecución en un factor constante mientras que el cambio en el algoritmo puede llegar a incrementar, duplicar, elevar al cuadrado, al cubo etc… el tiempo de ejecución. 3.- La eficiencia es especialmente importante en: Aplicaciones Interactivas, Sistemas operativos multiproceso, Aplicaciones que se usan reiteradamente. 6