SlideShare una empresa de Scribd logo
1 de 13
Análisis de Algoritmos
 Metodologías para el análisis de algoritmos
 Notación asintótica
 Elementos matemáticos
 Otras técnicas de análisis
1
Metodologías para el análisis
de algoritmos
 La complejidad de un algoritmo estudia los recursos
necesarios (tiempo y memoria) que requiere un algoritmo.
 El tiempo de ejecución de un algoritmo o es prioritario cuando
se analiza un algoritmo.
 El tiempo de ejecución de un algoritmo o estructura de datos
depende de varios factores relativos al hardware (procesador,
reloj, memoria, disco, etc) y el software (sistema operativo,
lenguaje, compilador, etc.).
2
Metodologías para el análisis
de algoritmos
 Medida del tiempo de ejecución: experimentación.
Escribir un programa que implemente el
algoritmo.
Ejecutar el programa con un conjunto de
datos que varían en tamaño y composición
(peor caso, mejor caso, caso promedio) .
Usar un método como
System.currentTimeMillis() para obtener una
medida precisa del tiempo de ejecución.
3
Metodologías para el análisis
de algoritmos
 Medida del tiempo en Java: experimentación.
long startTime = System.currentTimeMillis();
// retorna el tiempo en miliseconds desde 1/1/1970
GMT
// código a ser medido
long elapsedTime =
System.currentTimeMillis()
- startTime;
4
Metodologías para el análisis
de algoritmos
 Medida del tiempo en Java: experimentación.
5
50 100
0
t (ms)
n
10
20
30
40
50
60
Metodologías para el análisis
de algoritmos
 Medida del tiempo en Java (más preciso):
long startTime = System.currentTimeMillis();
long counter;
do {
counter++;
hacerAlgo ( );
} while (System.currentTimeMillis() -
startTime < 1000),
long elapsedTime = (System.currentTimeMillis()
- startTime) / counter;
6
Metodologías para el análisis
de algoritmos
 Interesa hallar la dependencia del tiempo de ejecución en
función del tamaño de la entrada.
 Un método para estudiar el tiempo de ejecución es la
experimentación, que tiene limitaciones:
Los experimentos se pueden hacer sobre un
conjunto limitado de entradas de prueba.
Es necesario realizar los experimentos con el
mismo hardware y software.
Es necesario implementar y ejecutar el
algoritmo.
7
Metodologías para el análisis
de algoritmos
 Adicionalmente a la experimentación conviene disponer de
un enfoque analítico que:
Tome en consideración todas las posibles
entradas.
Permita evaluar la eficiencia de dos
algoritmos de forma independiente del
hardware y software.
Se pueda realizar estudiando una
representación de alto nivel del algoritmo
sin necesidad de implementarlo.
8
Pseudocódigo
 Pseudocódigo es una descripción de un algoritmo más
estructurada que la verbal pero menos formal que la de
un lenguaje de programación.
 Ejemplo: hallar el elemento mayor de un array.
Algorithm arrayMax(A, n):
Input: Un array A que almacena n enteros.
Output: El máximo elemento en A.
currentMax  A[0]
for i 1 to n -1 do
if currentMax < A[i] then currentMax  A[i]
return currentMax
 Pseudocódigo es la notación preferida para describir
algoritmos.
9
Qué es pseudocódigo
 Una mezcla de lenguaje natural y conceptos de programación de lato nivel que describen las proncipales
ideas que están en una implementación genérica de una estructura de datos o algoritmo.
-Expresiones: usa símbolos matemáticos standard para describir expresiones numéricas y booleanas
-usa  for assignment (“=” in Java)
-usa = for the equality relationship (“==” in Java)
-Declaración de métodos: -Algorithm nombre(param1, param2)
-Bloques Programación: - decision structures:
if ... then ... [else ... ]
- while-loops: while ... do
- repeat-loops: repeat ... until ...
- for-loop: for ... do
- array indexing: A[i]
-Métodos: - llamadas: object method(args)
- returns: return value
10
Análisis de algoritmos
 Operaciones Primitivas: se pueden identificar en el pseudocódigo
instrucciones de bajo nivel independientes del lenguaje de
programación.
 Ejemplos:
 llamar un método y retornar de un método
 operaciones aritméticas (e.g. suma)
 comparación de dos números, etc.
 Inspeccionando el pseudocódigo se puede contar el número de
operaciones primitivas ejecutadas por un algoritmo.
11
Ejemplo de conteo
Algorithm arrayMax(A, n):
Input: Un array A que almacena n enteros.
Output: El máximo elemento en A.
currentMax  A[0]
for i 1 to n -1 do
if currentMax < A[i] then currentMax  A[i]
return currentMax
t(n) = 2 + 1 + n +4(n-1) + 1 = 5n (mínimo)
= 2 + 1 + n +6(n-1) + 1 = 7n - 2 (máximo)
12
2
1 n
4(n-1) |
6(n-1)
1
Tiempo de ejecución
 Usar la notación Big-Oh para expresar el número de operaciones
primitivas ejecutadas como función del tamaño de entrada.
 Ejemplo: decimos que el algoritmo arrayMax se ejecuta en tiempo
O(n).
 Comparación de tiempos de ejecución asintóticos
- un algoritmo que corre en tiempo O(n) es mejor que uno que
corre en tiempo O(n2)
- de forma similar, O(log n) es mejor que O(n)
- jerarquía de funciones: log n << n << n2 << n3 << 2n
 Cuidado! Con los factores constantes muy grandes. Un algoritmo
que corre en tiempo 1,000,000 n todavía es O(n) pero puede ser
menor eficiente para un conjunto de datos que uno que corre en
tiempo 2n2, que es O(n2)
13

Más contenido relacionado

Similar a comparacion.PPTX, gestión de empresas y negocios

Similar a comparacion.PPTX, gestión de empresas y negocios (20)

ANALISIS DE LOS ALGORITMOS
ANALISIS DE LOS ALGORITMOSANALISIS DE LOS ALGORITMOS
ANALISIS DE LOS ALGORITMOS
 
Viernes Tecnicos DTrace
Viernes Tecnicos DTraceViernes Tecnicos DTrace
Viernes Tecnicos DTrace
 
Análisis de algoritmo
Análisis de algoritmoAnálisis de algoritmo
Análisis de algoritmo
 
Unidad 7
Unidad 7Unidad 7
Unidad 7
 
Complejidad de algoritmos
Complejidad de algoritmosComplejidad de algoritmos
Complejidad de algoritmos
 
Unidad 7
Unidad 7Unidad 7
Unidad 7
 
Unidad 7
Unidad 7Unidad 7
Unidad 7
 
Eficiencia de algoritmos - Vanessa Ramirez
Eficiencia de algoritmos - Vanessa RamirezEficiencia de algoritmos - Vanessa Ramirez
Eficiencia de algoritmos - Vanessa Ramirez
 
Analisis de algoritmos
Analisis de algoritmosAnalisis de algoritmos
Analisis de algoritmos
 
Complejidad de algoritmos
Complejidad de algoritmosComplejidad de algoritmos
Complejidad de algoritmos
 
EFICIENCIA DE ALGORITMOS
EFICIENCIA DE ALGORITMOSEFICIENCIA DE ALGORITMOS
EFICIENCIA DE ALGORITMOS
 
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
 
Semana 1 - Principios de Algoritmos.pdf
Semana 1 - Principios de Algoritmos.pdfSemana 1 - Principios de Algoritmos.pdf
Semana 1 - Principios de Algoritmos.pdf
 
Tipos de Datos Abstractos.
Tipos de Datos Abstractos.Tipos de Datos Abstractos.
Tipos de Datos Abstractos.
 
Tipos de datos abstractos
Tipos de datos abstractosTipos de datos abstractos
Tipos de datos abstractos
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
algoritmica
algoritmicaalgoritmica
algoritmica
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 

Más de JhonyJuani

Chilate k-kajjgffsyufeshkhssjknftbbw.pptx
Chilate k-kajjgffsyufeshkhssjknftbbw.pptxChilate k-kajjgffsyufeshkhssjknftbbw.pptx
Chilate k-kajjgffsyufeshkhssjknftbbw.pptxJhonyJuani
 
Chilate k-jjjauq7ghhhhhahywsjKigkaw.pptx
Chilate k-jjjauq7ghhhhhahywsjKigkaw.pptxChilate k-jjjauq7ghhhhhahywsjKigkaw.pptx
Chilate k-jjjauq7ghhhhhahywsjKigkaw.pptxJhonyJuani
 
Reporte de Actividades -AGOSTO DICIEMBRE 2023.docx
Reporte de Actividades -AGOSTO DICIEMBRE 2023.docxReporte de Actividades -AGOSTO DICIEMBRE 2023.docx
Reporte de Actividades -AGOSTO DICIEMBRE 2023.docxJhonyJuani
 
Desarrollo_071801.pptx, desafortunadamente
Desarrollo_071801.pptx, desafortunadamenteDesarrollo_071801.pptx, desafortunadamente
Desarrollo_071801.pptx, desafortunadamenteJhonyJuani
 
comparacion.PPTX, gestión de empresas y negocios
comparacion.PPTX, gestión de empresas y negocioscomparacion.PPTX, gestión de empresas y negocios
comparacion.PPTX, gestión de empresas y negociosJhonyJuani
 
Desarrollo de ciencias y física, desarrollo de aplicaciones
Desarrollo de ciencias y física, desarrollo de aplicacionesDesarrollo de ciencias y física, desarrollo de aplicaciones
Desarrollo de ciencias y física, desarrollo de aplicacionesJhonyJuani
 

Más de JhonyJuani (6)

Chilate k-kajjgffsyufeshkhssjknftbbw.pptx
Chilate k-kajjgffsyufeshkhssjknftbbw.pptxChilate k-kajjgffsyufeshkhssjknftbbw.pptx
Chilate k-kajjgffsyufeshkhssjknftbbw.pptx
 
Chilate k-jjjauq7ghhhhhahywsjKigkaw.pptx
Chilate k-jjjauq7ghhhhhahywsjKigkaw.pptxChilate k-jjjauq7ghhhhhahywsjKigkaw.pptx
Chilate k-jjjauq7ghhhhhahywsjKigkaw.pptx
 
Reporte de Actividades -AGOSTO DICIEMBRE 2023.docx
Reporte de Actividades -AGOSTO DICIEMBRE 2023.docxReporte de Actividades -AGOSTO DICIEMBRE 2023.docx
Reporte de Actividades -AGOSTO DICIEMBRE 2023.docx
 
Desarrollo_071801.pptx, desafortunadamente
Desarrollo_071801.pptx, desafortunadamenteDesarrollo_071801.pptx, desafortunadamente
Desarrollo_071801.pptx, desafortunadamente
 
comparacion.PPTX, gestión de empresas y negocios
comparacion.PPTX, gestión de empresas y negocioscomparacion.PPTX, gestión de empresas y negocios
comparacion.PPTX, gestión de empresas y negocios
 
Desarrollo de ciencias y física, desarrollo de aplicaciones
Desarrollo de ciencias y física, desarrollo de aplicacionesDesarrollo de ciencias y física, desarrollo de aplicaciones
Desarrollo de ciencias y física, desarrollo de aplicaciones
 

Último

Critica 1 Grupo 10 RodrigoBenitez_GinaGadea_AlexisGonzález.pdf
Critica 1 Grupo 10 RodrigoBenitez_GinaGadea_AlexisGonzález.pdfCritica 1 Grupo 10 RodrigoBenitez_GinaGadea_AlexisGonzález.pdf
Critica 1 Grupo 10 RodrigoBenitez_GinaGadea_AlexisGonzález.pdfRodrigoBenitez38
 
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdfREPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdfIrapuatoCmovamos
 
La importancia de las pruebas de producto para tu empresa
La importancia de las pruebas de producto para tu empresaLa importancia de las pruebas de producto para tu empresa
La importancia de las pruebas de producto para tu empresamerca6
 
Biografías y Cuadro compartivo_Cuautle Ocelotl Angel Efren.pdf.pdf
Biografías y Cuadro compartivo_Cuautle Ocelotl Angel Efren.pdf.pdfBiografías y Cuadro compartivo_Cuautle Ocelotl Angel Efren.pdf.pdf
Biografías y Cuadro compartivo_Cuautle Ocelotl Angel Efren.pdf.pdfANGELEFRENCUAUTLEOCE
 
Los_países_con_la_mayor_cantidad_de_rascacielos (2023).pdf
Los_países_con_la_mayor_cantidad_de_rascacielos (2023).pdfLos_países_con_la_mayor_cantidad_de_rascacielos (2023).pdf
Los_países_con_la_mayor_cantidad_de_rascacielos (2023).pdfJC Díaz Herrera
 
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfLos más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfJC Díaz Herrera
 
Qué es un Histograma estadístico teoria y problema
Qué es un Histograma estadístico teoria y problemaQué es un Histograma estadístico teoria y problema
Qué es un Histograma estadístico teoria y problemaJoellyAlejandraRodrg
 
2 PROCESO ESTADISTICO PARA LA INVESTIGACION.pdf
2 PROCESO ESTADISTICO PARA LA INVESTIGACION.pdf2 PROCESO ESTADISTICO PARA LA INVESTIGACION.pdf
2 PROCESO ESTADISTICO PARA LA INVESTIGACION.pdfAnaBelindaArmellonHi
 
Posiciones en el IDH global de EUA (1950-2024).pdf
Posiciones en el IDH global de EUA (1950-2024).pdfPosiciones en el IDH global de EUA (1950-2024).pdf
Posiciones en el IDH global de EUA (1950-2024).pdfJC Díaz Herrera
 
Panorama Sociodemográfico de México 2020: GUANAJUATO
Panorama Sociodemográfico de México 2020: GUANAJUATOPanorama Sociodemográfico de México 2020: GUANAJUATO
Panorama Sociodemográfico de México 2020: GUANAJUATOJuan Carlos Fonseca Mata
 
Data Warehouse.gestion de bases de datos
Data Warehouse.gestion de bases de datosData Warehouse.gestion de bases de datos
Data Warehouse.gestion de bases de datosssuser948499
 
Las familias más ricas del sionismo en el siglo XXI.pdf
Las familias más ricas del sionismo en el siglo XXI.pdfLas familias más ricas del sionismo en el siglo XXI.pdf
Las familias más ricas del sionismo en el siglo XXI.pdfJC Díaz Herrera
 
Partes y elementos de una iglesia básicos
Partes y elementos de una iglesia básicosPartes y elementos de una iglesia básicos
Partes y elementos de una iglesia básicosMarycarmenNuez4
 
Las marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdfLas marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdfJC Díaz Herrera
 
CNEB-CURRICULO NACIONAL DE EDUCACION BASICA
CNEB-CURRICULO NACIONAL DE EDUCACION BASICACNEB-CURRICULO NACIONAL DE EDUCACION BASICA
CNEB-CURRICULO NACIONAL DE EDUCACION BASICAYOSHELINSARAIMAMANIS2
 
Análisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de CyclisticAnálisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de CyclisticJamithGarcia1
 
Unidad 3 Elementos y compuestos. Física y química
Unidad 3 Elementos y compuestos. Física y químicaUnidad 3 Elementos y compuestos. Física y química
Unidad 3 Elementos y compuestos. Física y químicaSilvia García
 
Familias_más_ricas_de_AL_en_la_historia.pdf
Familias_más_ricas_de_AL_en_la_historia.pdfFamilias_más_ricas_de_AL_en_la_historia.pdf
Familias_más_ricas_de_AL_en_la_historia.pdfJC Díaz Herrera
 
Cuáles son las características biológicas que están marcadas en tu individual...
Cuáles son las características biológicas que están marcadas en tu individual...Cuáles son las características biológicas que están marcadas en tu individual...
Cuáles son las características biológicas que están marcadas en tu individual...israel garcia
 
Reducción de la pobreza en Sexenio de AMLO (2018-2024).pdf
Reducción de la pobreza en Sexenio de AMLO (2018-2024).pdfReducción de la pobreza en Sexenio de AMLO (2018-2024).pdf
Reducción de la pobreza en Sexenio de AMLO (2018-2024).pdfJC Díaz Herrera
 

Último (20)

Critica 1 Grupo 10 RodrigoBenitez_GinaGadea_AlexisGonzález.pdf
Critica 1 Grupo 10 RodrigoBenitez_GinaGadea_AlexisGonzález.pdfCritica 1 Grupo 10 RodrigoBenitez_GinaGadea_AlexisGonzález.pdf
Critica 1 Grupo 10 RodrigoBenitez_GinaGadea_AlexisGonzález.pdf
 
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdfREPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
 
La importancia de las pruebas de producto para tu empresa
La importancia de las pruebas de producto para tu empresaLa importancia de las pruebas de producto para tu empresa
La importancia de las pruebas de producto para tu empresa
 
Biografías y Cuadro compartivo_Cuautle Ocelotl Angel Efren.pdf.pdf
Biografías y Cuadro compartivo_Cuautle Ocelotl Angel Efren.pdf.pdfBiografías y Cuadro compartivo_Cuautle Ocelotl Angel Efren.pdf.pdf
Biografías y Cuadro compartivo_Cuautle Ocelotl Angel Efren.pdf.pdf
 
Los_países_con_la_mayor_cantidad_de_rascacielos (2023).pdf
Los_países_con_la_mayor_cantidad_de_rascacielos (2023).pdfLos_países_con_la_mayor_cantidad_de_rascacielos (2023).pdf
Los_países_con_la_mayor_cantidad_de_rascacielos (2023).pdf
 
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfLos más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
 
Qué es un Histograma estadístico teoria y problema
Qué es un Histograma estadístico teoria y problemaQué es un Histograma estadístico teoria y problema
Qué es un Histograma estadístico teoria y problema
 
2 PROCESO ESTADISTICO PARA LA INVESTIGACION.pdf
2 PROCESO ESTADISTICO PARA LA INVESTIGACION.pdf2 PROCESO ESTADISTICO PARA LA INVESTIGACION.pdf
2 PROCESO ESTADISTICO PARA LA INVESTIGACION.pdf
 
Posiciones en el IDH global de EUA (1950-2024).pdf
Posiciones en el IDH global de EUA (1950-2024).pdfPosiciones en el IDH global de EUA (1950-2024).pdf
Posiciones en el IDH global de EUA (1950-2024).pdf
 
Panorama Sociodemográfico de México 2020: GUANAJUATO
Panorama Sociodemográfico de México 2020: GUANAJUATOPanorama Sociodemográfico de México 2020: GUANAJUATO
Panorama Sociodemográfico de México 2020: GUANAJUATO
 
Data Warehouse.gestion de bases de datos
Data Warehouse.gestion de bases de datosData Warehouse.gestion de bases de datos
Data Warehouse.gestion de bases de datos
 
Las familias más ricas del sionismo en el siglo XXI.pdf
Las familias más ricas del sionismo en el siglo XXI.pdfLas familias más ricas del sionismo en el siglo XXI.pdf
Las familias más ricas del sionismo en el siglo XXI.pdf
 
Partes y elementos de una iglesia básicos
Partes y elementos de una iglesia básicosPartes y elementos de una iglesia básicos
Partes y elementos de una iglesia básicos
 
Las marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdfLas marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdf
 
CNEB-CURRICULO NACIONAL DE EDUCACION BASICA
CNEB-CURRICULO NACIONAL DE EDUCACION BASICACNEB-CURRICULO NACIONAL DE EDUCACION BASICA
CNEB-CURRICULO NACIONAL DE EDUCACION BASICA
 
Análisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de CyclisticAnálisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de Cyclistic
 
Unidad 3 Elementos y compuestos. Física y química
Unidad 3 Elementos y compuestos. Física y químicaUnidad 3 Elementos y compuestos. Física y química
Unidad 3 Elementos y compuestos. Física y química
 
Familias_más_ricas_de_AL_en_la_historia.pdf
Familias_más_ricas_de_AL_en_la_historia.pdfFamilias_más_ricas_de_AL_en_la_historia.pdf
Familias_más_ricas_de_AL_en_la_historia.pdf
 
Cuáles son las características biológicas que están marcadas en tu individual...
Cuáles son las características biológicas que están marcadas en tu individual...Cuáles son las características biológicas que están marcadas en tu individual...
Cuáles son las características biológicas que están marcadas en tu individual...
 
Reducción de la pobreza en Sexenio de AMLO (2018-2024).pdf
Reducción de la pobreza en Sexenio de AMLO (2018-2024).pdfReducción de la pobreza en Sexenio de AMLO (2018-2024).pdf
Reducción de la pobreza en Sexenio de AMLO (2018-2024).pdf
 

comparacion.PPTX, gestión de empresas y negocios

  • 1. Análisis de Algoritmos  Metodologías para el análisis de algoritmos  Notación asintótica  Elementos matemáticos  Otras técnicas de análisis 1
  • 2. Metodologías para el análisis de algoritmos  La complejidad de un algoritmo estudia los recursos necesarios (tiempo y memoria) que requiere un algoritmo.  El tiempo de ejecución de un algoritmo o es prioritario cuando se analiza un algoritmo.  El tiempo de ejecución de un algoritmo o estructura de datos depende de varios factores relativos al hardware (procesador, reloj, memoria, disco, etc) y el software (sistema operativo, lenguaje, compilador, etc.). 2
  • 3. Metodologías para el análisis de algoritmos  Medida del tiempo de ejecución: experimentación. Escribir un programa que implemente el algoritmo. Ejecutar el programa con un conjunto de datos que varían en tamaño y composición (peor caso, mejor caso, caso promedio) . Usar un método como System.currentTimeMillis() para obtener una medida precisa del tiempo de ejecución. 3
  • 4. Metodologías para el análisis de algoritmos  Medida del tiempo en Java: experimentación. long startTime = System.currentTimeMillis(); // retorna el tiempo en miliseconds desde 1/1/1970 GMT // código a ser medido long elapsedTime = System.currentTimeMillis() - startTime; 4
  • 5. Metodologías para el análisis de algoritmos  Medida del tiempo en Java: experimentación. 5 50 100 0 t (ms) n 10 20 30 40 50 60
  • 6. Metodologías para el análisis de algoritmos  Medida del tiempo en Java (más preciso): long startTime = System.currentTimeMillis(); long counter; do { counter++; hacerAlgo ( ); } while (System.currentTimeMillis() - startTime < 1000), long elapsedTime = (System.currentTimeMillis() - startTime) / counter; 6
  • 7. Metodologías para el análisis de algoritmos  Interesa hallar la dependencia del tiempo de ejecución en función del tamaño de la entrada.  Un método para estudiar el tiempo de ejecución es la experimentación, que tiene limitaciones: Los experimentos se pueden hacer sobre un conjunto limitado de entradas de prueba. Es necesario realizar los experimentos con el mismo hardware y software. Es necesario implementar y ejecutar el algoritmo. 7
  • 8. Metodologías para el análisis de algoritmos  Adicionalmente a la experimentación conviene disponer de un enfoque analítico que: Tome en consideración todas las posibles entradas. Permita evaluar la eficiencia de dos algoritmos de forma independiente del hardware y software. Se pueda realizar estudiando una representación de alto nivel del algoritmo sin necesidad de implementarlo. 8
  • 9. Pseudocódigo  Pseudocódigo es una descripción de un algoritmo más estructurada que la verbal pero menos formal que la de un lenguaje de programación.  Ejemplo: hallar el elemento mayor de un array. Algorithm arrayMax(A, n): Input: Un array A que almacena n enteros. Output: El máximo elemento en A. currentMax  A[0] for i 1 to n -1 do if currentMax < A[i] then currentMax  A[i] return currentMax  Pseudocódigo es la notación preferida para describir algoritmos. 9
  • 10. Qué es pseudocódigo  Una mezcla de lenguaje natural y conceptos de programación de lato nivel que describen las proncipales ideas que están en una implementación genérica de una estructura de datos o algoritmo. -Expresiones: usa símbolos matemáticos standard para describir expresiones numéricas y booleanas -usa  for assignment (“=” in Java) -usa = for the equality relationship (“==” in Java) -Declaración de métodos: -Algorithm nombre(param1, param2) -Bloques Programación: - decision structures: if ... then ... [else ... ] - while-loops: while ... do - repeat-loops: repeat ... until ... - for-loop: for ... do - array indexing: A[i] -Métodos: - llamadas: object method(args) - returns: return value 10
  • 11. Análisis de algoritmos  Operaciones Primitivas: se pueden identificar en el pseudocódigo instrucciones de bajo nivel independientes del lenguaje de programación.  Ejemplos:  llamar un método y retornar de un método  operaciones aritméticas (e.g. suma)  comparación de dos números, etc.  Inspeccionando el pseudocódigo se puede contar el número de operaciones primitivas ejecutadas por un algoritmo. 11
  • 12. Ejemplo de conteo Algorithm arrayMax(A, n): Input: Un array A que almacena n enteros. Output: El máximo elemento en A. currentMax  A[0] for i 1 to n -1 do if currentMax < A[i] then currentMax  A[i] return currentMax t(n) = 2 + 1 + n +4(n-1) + 1 = 5n (mínimo) = 2 + 1 + n +6(n-1) + 1 = 7n - 2 (máximo) 12 2 1 n 4(n-1) | 6(n-1) 1
  • 13. Tiempo de ejecución  Usar la notación Big-Oh para expresar el número de operaciones primitivas ejecutadas como función del tamaño de entrada.  Ejemplo: decimos que el algoritmo arrayMax se ejecuta en tiempo O(n).  Comparación de tiempos de ejecución asintóticos - un algoritmo que corre en tiempo O(n) es mejor que uno que corre en tiempo O(n2) - de forma similar, O(log n) es mejor que O(n) - jerarquía de funciones: log n << n << n2 << n3 << 2n  Cuidado! Con los factores constantes muy grandes. Un algoritmo que corre en tiempo 1,000,000 n todavía es O(n) pero puede ser menor eficiente para un conjunto de datos que uno que corre en tiempo 2n2, que es O(n2) 13