0% encontró este documento útil (0 votos)
19 vistas15 páginas

Análisis de Algoritmos y Complejidad

Tema 03 Complejidad

Cargado por

xalexeg13xx
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
19 vistas15 páginas

Análisis de Algoritmos y Complejidad

Tema 03 Complejidad

Cargado por

xalexeg13xx
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Tema 3

Algoritmia y Complejidad

Tema 3. Análisis de
algoritmos
Índice
Esquema

Ideas clave

3.1. Introducción y objetivos

3.2. Notación asintótica

3.3. Análisis matemático de algoritmos no recursivos

3.4. Análisis matemático de algoritmos recursivos

3.5. Análisis empírico de algoritmos

A fondo

Análisis de algoritmos

P, NP and mathematics – a computational complexity


perspective

Test
Esquema

Algoritmia y Complejidad 3
Tema 3. Esquema
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

3.1. Introducción y objetivos

Para estudiar este tema deberás leer el capítulo dos (pp. 15-31) del manual de la

asignatura, disponible en la Biblioteca Virtual de UNIR:

Joyanes, L. et al. (2005). Estructuras de datos en C. Madrid: McGraw-Hill.

Puedes completar el estudio, asistiendo o visualizando la clase presencial,

repasando el resumen de ideas clave que se dan a continuación y comprobando si

has comprendido los conceptos mediante la realización del test de autoevaluación

del tema.

En el tema anterior se introdujo cómo medir la eficiencia de los algoritmos.

Los objetivos de este tema son:

▸ Formalizar matemáticamente los ordenes de crecimiento.

▸ Analizar matemáticamente los algoritmos recursivos o no recursivos.

▸ Analizar empíricamente los algoritmos.

Algoritmia y Complejidad 4
Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

3.2. Notación asintótica

El análisis de complejidad computacional busca identificar cómo crece el coste de

ejecución C(n) cuando el tamaño de la entrada crece. La notación asintótica

captura el orden de crecimiento de la operación básica según el tamaño de los datos

de entrada n se va haciendo grande.

En la siguiente discusión C(n) y g(n) son funciones no negativas definidas sobre los

números naturales. Además, t(n) representa el tiempo de ejecución, normalmente

representado por la cuenta de operaciones básicas C(n), y g(n) es una función

simple a comparar con C(n).

Para comparar las órdenes de crecimiento se utilizan tres notaciones:

▸ Big O (o cota superior asintótica). O(g(n)) es el conjunto de todas las funciones

con menor o igual orden de crecimiento que g(n). Por ejemplo, si C(n)=2n, C(n)

O(n2).

▸ Big (o cota inferior asintótica). (g(n)) es el conjunto de todas las funciones con

mayor o igual orden de crecimiento que g(n). Por ejemplo, si C(n)=n3, C(n) (n2).

▸ Big (o cota ajustada asintótica). (g(n)) es el conjunto de todas las funciones

que tienen el mismo orden de crecimiento que g(n). Por ejemplo, si C(n)=2n2+n,

C(n) (n2).

Obsérvese que:

Además de la notación big O, big y big , tenemos las notaciones little o, little y

little .

Algoritmia y Complejidad 5
Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

La notación big O permite que g(n) esté multiplicada por una constante c, es decir:

La notación little o obliga a que la relación anterior se cumpla para cualquier valor de

c positivo, es decir:

Análogamente la notación little nos dice que:

Finalmente, la notación little nos dice que:

Algoritmia y Complejidad 6
Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

3.3. Análisis matemático de algoritmos no


recursivos

El plan general para analizar la eficiencia temporal de un algoritmo no recursivo es:

Figura 1. Plan general. Eficiencia temporal de un algoritmo no recursivo.

L a s dos reglas más usadas para obtener fórmulas cerradas a partir de

sumatorios son:

▸ , donde l u

Algoritmia y Complejidad 7
Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Las dos reglas de manipulación de sumas más usadas son:

Algoritmia y Complejidad 8
Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

3.4. Análisis matemático de algoritmos recursivos

El plan general para analizar la eficiencia temporal de un algoritmo recursivo es:

Figura 2. Plan general. Eficiencia temporal de un algoritmo recursivo.

Algoritmia y Complejidad 9
Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

3.5. Análisis empírico de algoritmos

El plan general para análisis empírico de un algoritmo es:

Figura 3. Plan general para análisis empírico de un algoritmo.

Algoritmia y Complejidad 10
Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
A fondo

Análisis de algoritmos

Valenzuela Ruz, V. (2003). Manual. Análisis de algoritmos. Versión 1.0. Copiapó,

Chile:

Instituto Nacional de Capacitación. Recuperado de [Link]


om/2014/12/[Link]

Este documento te servirá para complementar lo estudiado en el tema. El capítulo

cuatro, Análisis de algoritmos (pp. 35-51) abarca los conceptos de órdenes de

complejidad y notación asintótica.

Algoritmia y Complejidad 11
Tema 3. A fondo
© Universidad Internacional de La Rioja (UNIR)
A fondo

P, NP and mathematics – a computational


complexity perspective

Wigderson, A. (2006). P, NP and mathematics – a computational complexity

perspective. Recuperado de [Link]

La cuestión P contra NP se distinguió como la cuestión central de la informática

teórica hace casi cuatro décadas. La búsqueda de solución y, más en general, de

entender el poder y los límites de eficiencia computacional, ha llevado al desarrollo

de la teoría de la complejidad. Si bien esta disciplina matemática, en general, y el P

vs NP, en particular, han ganado protagonismo en la comunidad matemática durante

la última década, todavía se percibe principalmente como un problema de la

informática. En este artículo en inglés se trata de explicar por qué este problema, y

otros en complejidad computacional, no son solo problemas informáticos, sino

también problemas acerca de las matemáticas.

Algoritmia y Complejidad 12
Tema 3. A fondo
© Universidad Internacional de La Rioja (UNIR)
Test

1. La notación asintótica captura:

A. El comportamiento de las operaciones básicas en el infinito.

B. El comportamiento de un algoritmo cuando n es infinito.

C. El orden de crecimiento de una operación básica en función de n.

D. Ninguna de las respuestas anteriores es correcta.

2. Las funciones que miden el coste computacional tienen:

A. Dominio positivo y entero.

B. Dominio positivo y racional.

C. Dominio positivo y real.

D. Dominio real.

3. En la notación asintótica la función g(n) es:

A. La que mide el tiempo de ejecución.

B. La que mide el número de operaciones básicas.

C. Las respuestas A o B pueden ser correctas.

D. Una función simple.

4. El conjunto de todas las funciones con menor o igual orden de crecimiento que

g(n) corresponde con:

A. Big O.

B. Little o.

C. Big

D. Big

Algoritmia y Complejidad 13
Tema 3. Test
© Universidad Internacional de La Rioja (UNIR)
Test

5. ¿Cuál es el orden de complejidad temporal del siguiente fragmento de código? int

i, j, k = 0; for (i = n / 2; i <= n; i++) { for (j = 2; j <= n; j = j * 2) { k = k + n / 2; }}

A. O(n).

B. O(nlogn).

C. O(n2).

D. O(n2logn).

6. ¿Cuál es el orden de complejidad temporal del siguiente fragmento de código? for

(i = n / 2; i <= n; i++) { for (j = 2; j <= n; j = j * 2) { k = k + n / 2; } }

A. O(n).

B. O(sqrt(n)).

C. O(log(n)).

D. O(n/2).

7. ¿Cuál de estos algoritmos requiere un análisis de caso medio y de caso peor?

A. La búsqueda de un elemento en una matriz.

B. La suma de matrices.

C. La multiplicación de matrices.

D. El inverso de una matriz.

8. ¿Dónde se usan habitualmente sumatorios?

A. En el análisis de algoritmos no recursivos.

B. En el análisis de algoritmos recursivos.

C. En el análisis de recurrencias.

D. En el análisis empírico de algoritmos.

Algoritmia y Complejidad 14
Tema 3. Test
© Universidad Internacional de La Rioja (UNIR)
Test

9. ¿Cuándo se acostumbra a determinar una unidad de medida de eficacia?

A. En el análisis de algoritmos no recursivos.

B. En el análisis de algoritmos recursivos.

C. En el análisis de recurrencias.

D. En el análisis empírico de algoritmos.

10. ¿Cuál de estas funciones de coste de ejecución pertenecen a O(n3) y a (n3)?

A. 1/3n3+2500n2

B. 0.00001·n4

C. 2500n2

D. Ninguna de las respuestas anteriores es correcta.

Algoritmia y Complejidad 15
Tema 3. Test
© Universidad Internacional de La Rioja (UNIR)

También podría gustarte