SlideShare una empresa de Scribd logo
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

PPT
Tema6
PPTX
Fun-programacion-201-Elementos-pseducodigo
PPT
Introduccion a la programación
PPTX
Taller de programación clase #5
PPT
ALGORITMOS
PPTX
03 uni1-estructuras de datos-arreglos 2 d
DOCX
preguntas de algoritmos
PPTX
01 uni1-estructuras de datos-introduccion a las ed
Tema6
Fun-programacion-201-Elementos-pseducodigo
Introduccion a la programación
Taller de programación clase #5
ALGORITMOS
03 uni1-estructuras de datos-arreglos 2 d
preguntas de algoritmos
01 uni1-estructuras de datos-introduccion a las ed

Destacado (20)

PDF
Camping y Caravaning. Acciones y resultados plan de presencia e identidad en ...
PPTX
Vestidos de gracia_13
DOCX
Práctica de word oficial, ulises estrella, 1er bimestre
ODP
Plastics
PDF
Meditaciones sobre segunda a timoteo
PPTX
Die Kunst zu Leben
PDF
Maßgeschneiderte Geschäftsanwendungen
PPTX
Stefania villa
PPTX
Conceptos generales
PDF
Caminando con-cristo
PPTX
Quirofanos
PPS
Achtung -radarfallen
PDF
Sistemas de Ecuaciones e Inecuaciones
PDF
The man of fire spanish cb
PPT
Primavera en salud mental
PDF
PPS
Hirn waschen
DOCX
astronomia 1
PPTX
El evangelio en_galatas_07
Camping y Caravaning. Acciones y resultados plan de presencia e identidad en ...
Vestidos de gracia_13
Práctica de word oficial, ulises estrella, 1er bimestre
Plastics
Meditaciones sobre segunda a timoteo
Die Kunst zu Leben
Maßgeschneiderte Geschäftsanwendungen
Stefania villa
Conceptos generales
Caminando con-cristo
Quirofanos
Achtung -radarfallen
Sistemas de Ecuaciones e Inecuaciones
The man of fire spanish cb
Primavera en salud mental
Hirn waschen
astronomia 1
El evangelio en_galatas_07
Publicidad

Similar a Manual de practicas (20)

PDF
Clase 01
PDF
Manual analisis de algoritmos v1
PPT
3 programacion estructurada
PDF
Manual de análisis y diseño de algoritmos
PDF
7492681 m-algoritmos
PDF
Manual de análisis y diseño de algoritmos
PDF
Manual analisis-de-algoritmos
PDF
Manual análisis de algoritmos
PPTX
Cap 12 teoria de la computacion
PDF
Teoría De La Complejidad Algoritmica
PPT
Complejidad de Algoritmos
DOC
Analisis de algoritmos
PDF
Disenoestructuradoalgoritmos
PDF
Disenoestructuradoalgoritmos
PDF
Guia no1 algoritmos
PPTX
Solución de un enunciado utilizando los ciclos repetitivos
PDF
Diseño Estructurado de Algoritmos
PPT
clase 1 programacion biomedica.ppt
PPTX
Pares algoritmos
Clase 01
Manual analisis de algoritmos v1
3 programacion estructurada
Manual de análisis y diseño de algoritmos
7492681 m-algoritmos
Manual de análisis y diseño de algoritmos
Manual analisis-de-algoritmos
Manual análisis de algoritmos
Cap 12 teoria de la computacion
Teoría De La Complejidad Algoritmica
Complejidad de Algoritmos
Analisis de algoritmos
Disenoestructuradoalgoritmos
Disenoestructuradoalgoritmos
Guia no1 algoritmos
Solución de un enunciado utilizando los ciclos repetitivos
Diseño Estructurado de Algoritmos
clase 1 programacion biomedica.ppt
Pares algoritmos
Publicidad

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