¿ Que es la complejidad de un algoritmo ?

Slides:



Advertisements
Presentaciones similares
Complejidad Computacional
Advertisements

Complejidad Computacional
Clasificación de los compiladores
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
CLASE 4 EL ENSAMBLADOR.
Estructuras de Repetición Algoritmos
Estructura de Datos Hugo Araya Carrasco Hugo Araya Carrasco.
Complejidad de Algoritmos
Introducción a los Algoritmos
Razonamiento Explícito y Experimentación en la Algoritmia
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
Evaluacion de algoritmos
ESTRATEGIAS Y DISEÑOS AVANZADOS DE INVESTIGACIÓN SOCIAL
ALGORITMOS 2 DIGITALES II
PARADIGMA Es un esquema de pensamiento que nos lleva a concebir las cosas de una manera determinada. el término paradigma puede indicar el concepto de esquema.
Eficiencia de los algoritmos
Tema 3. Optimización de Código
Medición y rendimientos de Algoritmos
ESTRUCTURAS DE CONTROL
TRADUCTOR DE UN PROGRAMA
Tema 1 Algoritmos.
Material de apoyo Unidad 1 Estructura de datos
ALGORITMOS.
Matemáticas para Ciencias de la Computación MCC3182 Profesor: Claudio Gutiérrez Soto Página Web:
Programación en Matlab
Complejidad Programación II de febrero de 2009.
Análisis de Algoritmos
Análisis y Diseño de Algoritmos. Propiedades : f ( n )  O ( f ( n ) ) a ) O ( f ( n ) )  O ( g ( n ) )  f ( n )  g ( n )

Análisis de Algoritmos
Introducción al análisis de algoritmos

Algoritmos ¿Que es un algoritmo?
Algoritmos de búsqueda
Sistemas Concurrentes: programación concurrente
SOFTWARE DE PROGRAMACIÓN
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
Asignación de Espacio No Contiguo
Diseño de algoritmos La computadora puede realizar procesos y darnos resultados, sin que tengamos la noción exacta de las operaciones que realiza. Con.
Material de apoyo Unidad 4 Estructura de datos
Divide y vencerás 1. Método general.
Titular: Agustín Salvia
Análisis de Algoritmos 2
Algoritmos de Ordenamiento y Complejidad
Capítulo 6. ANÁLISIS DE ALGORITMOS
Líneas de Espera: Teoría de Colas
Análisis de Algoritmos
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 2: Divide y Vencerás Unidad 1: Nociones básicas.
Análisis de algoritmos Generalidades
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
TEMA1:Introducción 1 1. Programación 2. Lenguajes de Programación 3. Ordenador.
ALGORÍTMICA Ingeniería Técnica en Informática de Gestión y de Sistemas curso Teoría: Domingo Giménez Seminario C: José María Rodríguez Prácticas.
Algoritmo. Algoritmo Algoritmo Al-Khowarizmi nunca pensó que su nombre, seria el origen de palabras mas importantes que el mismo: Álgebra. Logaritmo.
Diseño y análisis de algoritmos Análisis de Algoritmos II.
Elaboración de algoritmos usando lógica de programación
Escuela de Ciencias Basicas, Tecnología e Ingeniería
SABIAS QUE.. Para poder analizar los fenómenos de cambio, la matemática nos ofrece la teoría de funciones, a través de la cual podemos estudiar, describir.
UNIDAD 1. ORGANIZACIÓN BÁSICA Y DISEÑO DEL COMPUTADOR
Ingeniería en Software Facultad de Ingeniería 2014
Introducción a los TADs
Tema 3: Complejidad Estructura de Datos
Unidad 4 Análisis de los Datos.
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
PROGRAMACIÓN Grupo de Modelamiento de Sistemas
Conceptos Generales PROGRAMACIÓN I DOCENTE: ING. MARLENY SORIA M. 1.
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Transcripción de la presentación:

¿ Que es la complejidad de un algoritmo ? La complejidad de los algoritmos nos representa el tiempo de ejecución de cualquier programa en base a los ‘N' datos de entrada. Además de los recursos que necesita para implementarse.

¿ Como se mide la complejidad? La Medida del tiempo se ve afectada por diversas variables: Por la maquina en la que se programa. El tipo de lenguaje de programación. Del compilador utilizado. De cualquier otro hardware o software que influya en el análisis.

De lo anterior mencionado, la mejor forma grafica de explicarlo es esta :

Tiempo de ejecución T(n) El tiempo requerido por una algoritmo es función del tamaño de los datos. Por esta razón la complejidad temporal se expresa de la siguiente forma: T(n)

Ala hora de evaluar el costo se debe de tener en consideración tres posibles casos: El coste esperado o promedio Tmed(n): Expresa la complejidad temporal en el caso promedio. Para su cálculo se suponen que todas las entradas son probables. El coste mejor Tmin(n): Representa la complejidad en el mejor de los casos posibles. El coste peor Tmax(n): Representa la complejidad temporal en el peor de los casos.

Notación Asintótica Son asintóticas pues representan el comportamiento cuando el tamaño de la entrada tiende a infinito, pues para valores grandes es cuando puede haber problemas de tiempo o memoria. Se utilizan para estudiar tiempos de ejecución u ocupaciones de memoria. Representan la forma en que crece una función.. En general no consideran constantes, que no son valores propios de los algoritmos.

¿ Que es el orden de complejidad ? A un conjunto de funciones que comparten un mismo comportamiento asintótico le denominaremos un O(1): Complejidad constante. Cuando las instrucciones se ejecutan una vez. O(log n): Complejidad logarítmica. Esta suele aparecer en determinados algoritmos con iteración o recursión no estructural, ejemplo la búsqueda binaria. O(n): Complejidad lineal. Es una complejidad buena y también muy usual. Aparece en la evaluación de bucles simples siempre que la complejidad de las instrucciones interiores sea constante. O(n log n): Complejidad cuasi-lineal. Se encuentra en algoritmos de tipo divide y vencerás como por ejemplo en el método de ordenación quicksort y se considera una buena complejidad. Si n se duplica, el tiempo de ejecución es ligeramente mayor del doble. O(n2): Complejidad cuadrática. Aparece en bucles o ciclos doblemente anidados. Si n se duplica, el tiempo de ejecución aumenta cuatro veces. O(n3): Complejidad cúbica. Suele darse en bucles con triple anidación. Si n se duplica, el tiempo de ejecución se multiplica por ocho. Para un valor grande de n empieza a crecer dramáticamente. O(na): Complejidad polinómica (a > 3). Si a crece, la complejidad del programa es bastante mala. O(2n): Complejidad exponencial. No suelen ser muy útiles en la práctica por el elevadísimo tiempo de ejecución. Se dan en subprogramas recursivos que contengan dos o más llamadas internas. N