SlideShare una empresa de Scribd logo
1 de 4
Descargar para leer sin conexión
MANUAL DE PRÁCTICAS

           TEORÍA DE LA
          COMPUTACIÓN
                            SCM-0433




                    PLAN ISIC-2004-296
INGENIERÍA EN SISTEMAS COMPUTACIONALES
Teoría de la Computación [SCM-0433]




                                                                                            SUBTEMA:1.5
Práctica                            1
ANALIZAR MEDIANTE UN LENGUAJE DE ALTO NIVEL,
LA COMPLEJIDAD COMPUTACIONAL
                  Observaciones




1.-OBJETIVO
Analizar la complejidad de algoritmos y realizar modificaciones que mejoren su desempeño.


2.- MARCO TEÓRICO

Cuando solucionamos un problema mediante la construcción de un algoritmo, normalmente
podemos atacar el problema desde distintos puntos de vista, aplicando distintas estrategias, y por
tanto, llegando a soluciones algorítmicas distintas.

Desde el punto de vista computacional, es necesario disponer de alguna forma de comparar una
solución algorítmica con otra, para conocer cómo se comportarán cuando las implementemos,
especialmente al atacar problemas "grandes".

La complejidad algorítmica es una métrica teórica que se aplica a los algoritmos en este sentido.
Es un concepto que fundamental para todos los programadores, pero sin embargo, a menudo se
desconoce por completo. En muchos cursos y libros se elude el tema porque a menudo se considera
farragoso.

Pero eso no es necesariamente cierto. La complejidad de un algoritmo es un concepto complicado
pero sólo desde un punto de vista estrictamente formal. La obtención y el estudio de la complejidad
de un algoritmo requiere ciertamente de unas cuantas destrezas matemáticas que no todos tenemos
y la aplicación de una serie de técnicas bastante particulares. Sin embargo, no es un concepto
difícil de entender.

En éste artículo (algo más largo de lo habitual) intentamos ver qué es la complejidad de un algoritmo
y cuáles son las situaciones más comunes.




Fecha de Actualización 26/08/2010                                                                  Página 2
Teoría de la Computación [SCM-0433]

4.- PROCEDIMIENTO
1.- Desarrolle un programa de computadora que maneje 4 tipos de funciones recursivas y que son
mostradas en la sección de actividades, datos y resultados.

2.- Genera para cada una de estas funciones una sucesión de al menos 100 números continuos
naturales.

3.- mande a imprimir en la pantalla los resultados generados al sustituir esta sucesión de números
naturales.

5.- APARATOS E INSTRUMENTOS
Una PC
Un Lenguaje de alto nivel
Sistema Operativo Windows o Linux


6.ACTIVIDADES, DATOS Y RESULTADOS
Dadas las siguientes expresiones:
1) F(n)=[ 0                     Si n=0
                F (n−1)+1       Si n>0] Sumatoria
2) F (n)=[ 1            Si n=0
                F(n−1)∗ n       Si n>0] Factorial
3) F (n)=[ 0            Si n=0
                1               Si n=1
F(n−1)+F (n−2)          Si n>1] Fibonacci
4) F (n)=[ 1            Si n=0
                1               Si n=1
                1+F (n−1)∗ F (n−2)Si n>1] “Factoracci (una serie inventada)”
Se pide:

    a) Implemente en el lenguaje de su elección un algoritmo para cada una de las expresiones
       anteriores, calcule la complejidad del algoritmo implementado, y realice varias corridas para
       verificar empíricamente la complejidad algorítmica previamente calculada.

        Con los resultados de las corridas realice un gráfico que muestre la tasa de crecimiento de
cada algoritmo.

b) Optimice cada uno de los algoritmos anteriores. Calcule la eficiencia de la optimización y compare
con el gráfico de la versión no optimizada.


CUESTIONARIO

¿Qué diferencias de crecimiento notaste en cada una de las funciones recursivas?

¿Qué pasa cuando hay pocos datos y cuando hay muchos datos?

¿Se cumple en todos los casos que en cuanto los datos crecen, la complejidad también crece?

¿Existe repetición entre los datos, o todos son diferentes para cada una de las sucesiones?



Fecha de Actualización 26/08/2010                                                                  Página 3
Teoría de la Computación [SCM-0433]



8.-BIBLIOGRAFÍA
Martin, John C.
Introduction to Languages and the Theory of Computation.
Ed. Prentice Hall.
2. Sipser, Michael.
Introduction to the Theory of Computation.
Ed. PWS Publishing Company.
3. Cohen, Daniel I.A.
Introduction to Computer Theory.
Ed. Wie Wiley.
4. Davis, Martín D., Weyuker, Elaine.
Computability, Complexity and Languages Fundamentales of Teorical
Computer Science.
Ed. Academic Press.
5. Denning, Peter J.
Machines, Langueges and Computation.
Ed. Prentice Hall.
6. Hopcroft, John, Ullman, Jeffrey.
Introduction to Automatas Theory, Languages and Computation.
Ed. Addison-Wesley.
7. Kelley, Dean.
Teoría de Automatas y Lenguajes Formales.
Ed. Prentice Hall.
8. Lewis, Larry., Papadimitrion, Chistos H.
Elements of the Theory of Computation.
Ed. Prentice Hall.
9. Rayward-Smith, V.S.
A First Course in a Formal Language Theory.
Ed. Mc Graw Hill.
10. Jeffey E.F. Friedl.
Mastering Regular Expressions.
Ed. O’reilly & Associates, Inc.
11. Brookshear.
Teoría de la Computación, Lenguajes Formales, Autómatas y Complejidad.
Ed. Addison Wesley.
12. Isasi, Martínez y Borrajo.
Lenguajes, Gramáticas y Autómatas.
Ed. Addison Wesley.




Fecha de Actualización 26/08/2010                                                            Página 4

Más contenido relacionado

Destacado (20)

Camping y Caravaning. Acciones y resultados plan de presencia e identidad en ...
Camping y Caravaning. Acciones y resultados plan de presencia e identidad en ...Camping y Caravaning. Acciones y resultados plan de presencia e identidad en ...
Camping y Caravaning. Acciones y resultados plan de presencia e identidad en ...
 
Vestidos de gracia_13
Vestidos de gracia_13Vestidos de gracia_13
Vestidos de gracia_13
 
Práctica de word oficial, ulises estrella, 1er bimestre
Práctica de word oficial, ulises estrella, 1er bimestrePráctica de word oficial, ulises estrella, 1er bimestre
Práctica de word oficial, ulises estrella, 1er bimestre
 
Plastics
PlasticsPlastics
Plastics
 
Meditaciones sobre segunda a timoteo
Meditaciones sobre segunda a timoteoMeditaciones sobre segunda a timoteo
Meditaciones sobre segunda a timoteo
 
Die Kunst zu Leben
Die Kunst zu LebenDie Kunst zu Leben
Die Kunst zu Leben
 
Maßgeschneiderte Geschäftsanwendungen
Maßgeschneiderte GeschäftsanwendungenMaßgeschneiderte Geschäftsanwendungen
Maßgeschneiderte Geschäftsanwendungen
 
Stefania villa
Stefania villaStefania villa
Stefania villa
 
Conceptos generales
Conceptos generalesConceptos generales
Conceptos generales
 
Caminando con-cristo
Caminando con-cristoCaminando con-cristo
Caminando con-cristo
 
Quirofanos
QuirofanosQuirofanos
Quirofanos
 
Achtung -radarfallen
Achtung  -radarfallenAchtung  -radarfallen
Achtung -radarfallen
 
Sistemas de Ecuaciones e Inecuaciones
Sistemas de Ecuaciones e InecuacionesSistemas de Ecuaciones e Inecuaciones
Sistemas de Ecuaciones e Inecuaciones
 
The man of fire spanish cb
The man of fire spanish cbThe man of fire spanish cb
The man of fire spanish cb
 
Primavera en salud mental
Primavera en salud mentalPrimavera en salud mental
Primavera en salud mental
 
Año 1 semana-12
Año 1 semana-12Año 1 semana-12
Año 1 semana-12
 
Hirn waschen
Hirn waschenHirn waschen
Hirn waschen
 
astronomia 1
astronomia 1astronomia 1
astronomia 1
 
El evangelio en_galatas_07
El evangelio en_galatas_07El evangelio en_galatas_07
El evangelio en_galatas_07
 
28 5
28 528 5
28 5
 

Similar a Manual de practicas

Sistemas estadisticos
Sistemas estadisticosSistemas estadisticos
Sistemas estadisticosLuz Anyela
 
Estructuras De Datos U1
Estructuras De Datos U1Estructuras De Datos U1
Estructuras De Datos U1pedro cruz
 
Manual analisis de algoritmos v1
Manual analisis de algoritmos v1Manual analisis de algoritmos v1
Manual analisis de algoritmos v1reny_so
 
TEMA A TRATARSE: Fundamento de programación
TEMA A TRATARSE: Fundamento de programaciónTEMA A TRATARSE: Fundamento de programación
TEMA A TRATARSE: Fundamento de programaciónNOE NUÑEZ CONGACHE
 
8f29ee 08b473f1b0f04c55b0d997ad6f8df491
8f29ee 08b473f1b0f04c55b0d997ad6f8df4918f29ee 08b473f1b0f04c55b0d997ad6f8df491
8f29ee 08b473f1b0f04c55b0d997ad6f8df491Angelica Berrio
 
fundamentos y elementos de programación básicos
fundamentos y elementos  de programación básicosfundamentos y elementos  de programación básicos
fundamentos y elementos de programación básicosmartha449484
 
Matematicas cuaderno Cálculo Númerico
Matematicas cuaderno Cálculo NúmericoMatematicas cuaderno Cálculo Númerico
Matematicas cuaderno Cálculo NúmericoJosé De Escandon
 
Introduccion a la programacion
Introduccion a la programacionIntroduccion a la programacion
Introduccion a la programacionBETTYLLANOS
 
Tema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmicoTema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmicoLincoln School
 

Similar a Manual de practicas (20)

Sistemas estadisticos
Sistemas estadisticosSistemas estadisticos
Sistemas estadisticos
 
Presentación lenguaje programación
Presentación lenguaje programaciónPresentación lenguaje programación
Presentación lenguaje programación
 
Elemento4
Elemento4Elemento4
Elemento4
 
Elemento4
Elemento4Elemento4
Elemento4
 
_Algoritmos.ppt
_Algoritmos.ppt_Algoritmos.ppt
_Algoritmos.ppt
 
Estructuras De Datos U1
Estructuras De Datos U1Estructuras De Datos U1
Estructuras De Datos U1
 
Manual analisis de algoritmos v1
Manual analisis de algoritmos v1Manual analisis de algoritmos v1
Manual analisis de algoritmos v1
 
TEMA A TRATARSE: Fundamento de programación
TEMA A TRATARSE: Fundamento de programaciónTEMA A TRATARSE: Fundamento de programación
TEMA A TRATARSE: Fundamento de programación
 
8f29ee 08b473f1b0f04c55b0d997ad6f8df491
8f29ee 08b473f1b0f04c55b0d997ad6f8df4918f29ee 08b473f1b0f04c55b0d997ad6f8df491
8f29ee 08b473f1b0f04c55b0d997ad6f8df491
 
Introducción Programación
Introducción ProgramaciónIntroducción Programación
Introducción Programación
 
Tema6.ppt
Tema6.pptTema6.ppt
Tema6.ppt
 
fundamentos y elementos de programación básicos
fundamentos y elementos  de programación básicosfundamentos y elementos  de programación básicos
fundamentos y elementos de programación básicos
 
Tema6
Tema6Tema6
Tema6
 
Programación
ProgramaciónProgramación
Programación
 
Matematicas cuaderno Cálculo Númerico
Matematicas cuaderno Cálculo NúmericoMatematicas cuaderno Cálculo Númerico
Matematicas cuaderno Cálculo Númerico
 
1 eda teo
1 eda teo1 eda teo
1 eda teo
 
Tema n° 1
Tema n° 1Tema n° 1
Tema n° 1
 
Introducción a Plataformas Tecnológicas
Introducción a Plataformas TecnológicasIntroducción a Plataformas Tecnológicas
Introducción a Plataformas Tecnológicas
 
Introduccion a la programacion
Introduccion a la programacionIntroduccion a la programacion
Introduccion a la programacion
 
Tema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmicoTema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmico
 

Manual de practicas

  • 1. MANUAL DE PRÁCTICAS TEORÍA DE LA COMPUTACIÓN SCM-0433 PLAN ISIC-2004-296 INGENIERÍA EN SISTEMAS COMPUTACIONALES
  • 2. Teoría de la Computación [SCM-0433] SUBTEMA:1.5 Práctica 1 ANALIZAR MEDIANTE UN LENGUAJE DE ALTO NIVEL, LA COMPLEJIDAD COMPUTACIONAL Observaciones 1.-OBJETIVO Analizar la complejidad de algoritmos y realizar modificaciones que mejoren su desempeño. 2.- MARCO TEÓRICO Cuando solucionamos un problema mediante la construcción de un algoritmo, normalmente podemos atacar el problema desde distintos puntos de vista, aplicando distintas estrategias, y por tanto, llegando a soluciones algorítmicas distintas. Desde el punto de vista computacional, es necesario disponer de alguna forma de comparar una solución algorítmica con otra, para conocer cómo se comportarán cuando las implementemos, especialmente al atacar problemas "grandes". La complejidad algorítmica es una métrica teórica que se aplica a los algoritmos en este sentido. Es un concepto que fundamental para todos los programadores, pero sin embargo, a menudo se desconoce por completo. En muchos cursos y libros se elude el tema porque a menudo se considera farragoso. Pero eso no es necesariamente cierto. La complejidad de un algoritmo es un concepto complicado pero sólo desde un punto de vista estrictamente formal. La obtención y el estudio de la complejidad de un algoritmo requiere ciertamente de unas cuantas destrezas matemáticas que no todos tenemos y la aplicación de una serie de técnicas bastante particulares. Sin embargo, no es un concepto difícil de entender. En éste artículo (algo más largo de lo habitual) intentamos ver qué es la complejidad de un algoritmo y cuáles son las situaciones más comunes. Fecha de Actualización 26/08/2010 Página 2
  • 3. Teoría de la Computación [SCM-0433] 4.- PROCEDIMIENTO 1.- Desarrolle un programa de computadora que maneje 4 tipos de funciones recursivas y que son mostradas en la sección de actividades, datos y resultados. 2.- Genera para cada una de estas funciones una sucesión de al menos 100 números continuos naturales. 3.- mande a imprimir en la pantalla los resultados generados al sustituir esta sucesión de números naturales. 5.- APARATOS E INSTRUMENTOS Una PC Un Lenguaje de alto nivel Sistema Operativo Windows o Linux 6.ACTIVIDADES, DATOS Y RESULTADOS Dadas las siguientes expresiones: 1) F(n)=[ 0 Si n=0 F (n−1)+1 Si n>0] Sumatoria 2) F (n)=[ 1 Si n=0 F(n−1)∗ n Si n>0] Factorial 3) F (n)=[ 0 Si n=0 1 Si n=1 F(n−1)+F (n−2) Si n>1] Fibonacci 4) F (n)=[ 1 Si n=0 1 Si n=1 1+F (n−1)∗ F (n−2)Si n>1] “Factoracci (una serie inventada)” Se pide: a) Implemente en el lenguaje de su elección un algoritmo para cada una de las expresiones anteriores, calcule la complejidad del algoritmo implementado, y realice varias corridas para verificar empíricamente la complejidad algorítmica previamente calculada. Con los resultados de las corridas realice un gráfico que muestre la tasa de crecimiento de cada algoritmo. b) Optimice cada uno de los algoritmos anteriores. Calcule la eficiencia de la optimización y compare con el gráfico de la versión no optimizada. CUESTIONARIO ¿Qué diferencias de crecimiento notaste en cada una de las funciones recursivas? ¿Qué pasa cuando hay pocos datos y cuando hay muchos datos? ¿Se cumple en todos los casos que en cuanto los datos crecen, la complejidad también crece? ¿Existe repetición entre los datos, o todos son diferentes para cada una de las sucesiones? Fecha de Actualización 26/08/2010 Página 3
  • 4. Teoría de la Computación [SCM-0433] 8.-BIBLIOGRAFÍA Martin, John C. Introduction to Languages and the Theory of Computation. Ed. Prentice Hall. 2. Sipser, Michael. Introduction to the Theory of Computation. Ed. PWS Publishing Company. 3. Cohen, Daniel I.A. Introduction to Computer Theory. Ed. Wie Wiley. 4. Davis, Martín D., Weyuker, Elaine. Computability, Complexity and Languages Fundamentales of Teorical Computer Science. Ed. Academic Press. 5. Denning, Peter J. Machines, Langueges and Computation. Ed. Prentice Hall. 6. Hopcroft, John, Ullman, Jeffrey. Introduction to Automatas Theory, Languages and Computation. Ed. Addison-Wesley. 7. Kelley, Dean. Teoría de Automatas y Lenguajes Formales. Ed. Prentice Hall. 8. Lewis, Larry., Papadimitrion, Chistos H. Elements of the Theory of Computation. Ed. Prentice Hall. 9. Rayward-Smith, V.S. A First Course in a Formal Language Theory. Ed. Mc Graw Hill. 10. Jeffey E.F. Friedl. Mastering Regular Expressions. Ed. O’reilly & Associates, Inc. 11. Brookshear. Teoría de la Computación, Lenguajes Formales, Autómatas y Complejidad. Ed. Addison Wesley. 12. Isasi, Martínez y Borrajo. Lenguajes, Gramáticas y Autómatas. Ed. Addison Wesley. Fecha de Actualización 26/08/2010 Página 4