Semana de las Matemáticas e Ingeniería - Laureate Legal ... · •Desarrollo de algoritmos...

18
Semana de las Matemáticas e Ingeniería Desarrollo de algoritmos recursivos empleando la aplicación PseInt 21 de Noviembre de 2013

Transcript of Semana de las Matemáticas e Ingeniería - Laureate Legal ... · •Desarrollo de algoritmos...

Page 1: Semana de las Matemáticas e Ingeniería - Laureate Legal ... · •Desarrollo de algoritmos recursivos empleando la aplicación PSeInt –Bienvenida –Conceptos sobre el Diseño

Semana de las Matemáticas e Ingeniería

Desarrollo de algoritmos recursivos empleando la aplicación PseInt

21 de Noviembre de 2013

Page 2: Semana de las Matemáticas e Ingeniería - Laureate Legal ... · •Desarrollo de algoritmos recursivos empleando la aplicación PSeInt –Bienvenida –Conceptos sobre el Diseño

• Desarrollo de algoritmos recursivos empleando la aplicación PSeInt

– Bienvenida

– Conceptos sobre el Diseño de Algoritmos

– Estructuras de control empleando PSeInt

– Introducción a los algoritmos recursivos

– Conclusiones

– Despedida y agradecimientos

Agenda

Page 3: Semana de las Matemáticas e Ingeniería - Laureate Legal ... · •Desarrollo de algoritmos recursivos empleando la aplicación PSeInt –Bienvenida –Conceptos sobre el Diseño

“Find a solution by trying one of several choices. If the

choice proves incorrect, computation backtracks or

restarts at the point of choice and tries another choice. It

is often convenient to maintain choice points and

alternate choices using recursion”.

Paul E. Black

Page 4: Semana de las Matemáticas e Ingeniería - Laureate Legal ... · •Desarrollo de algoritmos recursivos empleando la aplicación PSeInt –Bienvenida –Conceptos sobre el Diseño

Conocimiento previo:

A

= b * h

• A esta secuencia de pasos ordenada y definida, para dar solución a un problema se le conoce como algoritmo.

Conceptos sobre Algoritmos

¿Cómo calcularías el área

de un rectángulo?

1. Leer o ingresar la base

2. Leer o ingresar la altura

3. calcular el área multiplicando la

base y la altura

4. escribe o imprime el valor del área

Page 5: Semana de las Matemáticas e Ingeniería - Laureate Legal ... · •Desarrollo de algoritmos recursivos empleando la aplicación PSeInt –Bienvenida –Conceptos sobre el Diseño

• Representación:

Conceptos sobre Algoritmos

Mediante pseudocódigos

Mediante diagramas de flujo

Page 6: Semana de las Matemáticas e Ingeniería - Laureate Legal ... · •Desarrollo de algoritmos recursivos empleando la aplicación PSeInt –Bienvenida –Conceptos sobre el Diseño

• Herramienta de apoyo:

http://pseint.sourceforge.net/

Diseño de Algoritmos

Page 7: Semana de las Matemáticas e Ingeniería - Laureate Legal ... · •Desarrollo de algoritmos recursivos empleando la aplicación PSeInt –Bienvenida –Conceptos sobre el Diseño

E.C. Secuencial

Simple

E.C. Selectiva Doble

Múltiple

Desde

E.C. Repetitivas Mientras

Repetir - hasta

Estructuras de Algoritmos

Page 8: Semana de las Matemáticas e Ingeniería - Laureate Legal ... · •Desarrollo de algoritmos recursivos empleando la aplicación PSeInt –Bienvenida –Conceptos sobre el Diseño

• La empresa ACME desea realizar el pago de sus empleados, el cual se efectúa de la siguiente manera:

• El sueldo básico se calcula en base al numero de horas trabajadas basado en una tarifa horaria;

• La empresa otorga una bonificación del 20% del básico,

• Los descuentos serán del 10% de todos los ingresos.

• El sueldo neto, se obtiene de la suma de todos los ingresos menos los descuentos.

Estructura secuencial

• Solución:

Page 9: Semana de las Matemáticas e Ingeniería - Laureate Legal ... · •Desarrollo de algoritmos recursivos empleando la aplicación PSeInt –Bienvenida –Conceptos sobre el Diseño

Proceso condicional

Leer nota1

Leer nota2

Leer nota3

si (nota1 < nota2) Entonces

menor = nota1

Sino

menor = nota2

FinSi

Si (nota3 < menor) Entonces

menor = nota3

FinSi

Imprimir "menor nota : " menor

Imprimir "El promedio es " (nota1+nota2+nota3-menor)/2

FinProceso

• El promedio de un curso se obtiene de la media de las dos mayores notas de tres evaluaciones.

Estructura condicional

• Solución: prom = (n1 + n2 + n3) /3

Eliminando la menor, quedaría:

prom = (n1 + n2 + n3 - menor) /2

Page 10: Semana de las Matemáticas e Ingeniería - Laureate Legal ... · •Desarrollo de algoritmos recursivos empleando la aplicación PSeInt –Bienvenida –Conceptos sobre el Diseño

Proceso Repetitivo

Leer n

si (n==0)

fact = 1

Sino

fact = 1

Para i=1 Hasta n Hacer

fact = fact * i

FinPara

FinSi

Escribir "El factorial es: " fact

FinProceso

• Calcula el factorial de un número entero positivo

Estructuras repetitivas

• Solución: • Para todo número natural n, se

llama factorial de n al producto de todos los naturales desde 1 hasta n, considerando:

• si n = 0, n!= 1

• si n>=1

n! = 1 x 2 x 3 x ….x (n-1) x n

Page 11: Semana de las Matemáticas e Ingeniería - Laureate Legal ... · •Desarrollo de algoritmos recursivos empleando la aplicación PSeInt –Bienvenida –Conceptos sobre el Diseño

• El concepto de recursividad va ligado al de repetición

• Permite realizar repeticiones realizando llamados a si mismo una y otra vez.

• Estos algoritmos encapsulan esta referencia de forma bastante sencilla empleando dos partes:

– Parte base, indica el fin de la recursión, especificando los casos donde no es necesario realizar llamadas.

– Parte recursiva, donde se hacen llamadas a la función, pero están más próximas al caso base.

Los algoritmos recursivos

Page 12: Semana de las Matemáticas e Ingeniería - Laureate Legal ... · •Desarrollo de algoritmos recursivos empleando la aplicación PSeInt –Bienvenida –Conceptos sobre el Diseño

Proceso Recursivo

Leer n

Escribir "El factorial es: " factorial(n)

FinProceso

subproceso fact = factorial(n)

si (n==0)

fact = 1

Sino

fact = factorial(n-1) * n

FinSi

FinSubProceso

• Del caso: Calcular el factorial de un número entero positivo

De Repetitiva a Recursiva

• Solución:

• Recordemos

• si n = 0, n!= 1

• si n>=1

n! = 1 x 2 x 3 x ….x (n-1) x n

Page 13: Semana de las Matemáticas e Ingeniería - Laureate Legal ... · •Desarrollo de algoritmos recursivos empleando la aplicación PSeInt –Bienvenida –Conceptos sobre el Diseño

subproceso mover(ndiscos, bdesde, bhasta)

si (ndiscos > 0) entonces

bmedio = 6 - bdesde - bhasta

mover(ndiscos -1, bdesde, bmedio)

Imprimir "mover el disco " ndisco "

de " bdesde " a " bhasta

mover(ndiscos -1, bmedio, bhasta)

FinSi

FinSubProceso

• Se trata de un rompecabezas inventado en 1883 por el matemático francés Éduard Lucas, que consiste en pasar una serie de discos de diferentes tamaños de una barra vertical situada a la izquierda a otra barra vertical situada a la derecha.

• Para ello se puede utilizar una barra auxiliar situada en el centro de las otras dos, con la única restricción de que nunca un disco de menor tamaño puede quedar por debajo de otro mayor.

Recursivos – Las Torres de Hanoi

Page 14: Semana de las Matemáticas e Ingeniería - Laureate Legal ... · •Desarrollo de algoritmos recursivos empleando la aplicación PSeInt –Bienvenida –Conceptos sobre el Diseño

• Realizar un algoritmo que obtenga el m.c.d. de dos números

Ejemplos

• Solución:

• Se define el máximo común divisor de dos o más números enteros al mayor número que los divide sin dejar resto.

Page 15: Semana de las Matemáticas e Ingeniería - Laureate Legal ... · •Desarrollo de algoritmos recursivos empleando la aplicación PSeInt –Bienvenida –Conceptos sobre el Diseño

• Dado el siguiente modelo de laberinto, emplear recursividad para obtener una solución

Ejemplos

• Solución:

Page 16: Semana de las Matemáticas e Ingeniería - Laureate Legal ... · •Desarrollo de algoritmos recursivos empleando la aplicación PSeInt –Bienvenida –Conceptos sobre el Diseño

• Ventajas: • Ciertos problemas se adaptan de manera natural a soluciones recursivas-

Algunos problemas son esencialmente recursivos, por lo cual su implementación se facilita mediante un algoritmo de naturaleza recursiva, sin tener que cambiarlo a un método iterativo, por ejemplo. -En algunas ocasiones el código de un algoritmo recursivo es muy pequeño.

• Desventajas:

• Puede llegar a utilizar grandes cantidades de memoria en un instante, pues implementa una pila cuyo tamaño crece linealmente con el número de recursiones necesarias en el algoritmo. Si los datos en cada paso es

muy grande, podemos requerir grandes cantidades de memoria.

Conclusiones

Page 17: Semana de las Matemáticas e Ingeniería - Laureate Legal ... · •Desarrollo de algoritmos recursivos empleando la aplicación PSeInt –Bienvenida –Conceptos sobre el Diseño

• Joyanes Aguilar, Luis. (2008). Fundamentos de programación. Algorítmos, estructura de datos y objetos (519-549). España: Mc Graw Hill.

• Curso de Estructuras de Datos y Algoritmos / Algoritmos recursivos. (2013, febrero 10). Wikiversidad, . Consultado el 04:48, noviembre 5, 2013 en http://es.wikiversity.org/w/index.php?title=Curso_de_Estructuras_de_Datos_y_Algoritmos_/_Algoritmos_recursivos&oldid=67301

• Paul E. Black, "backtracking", in Dictionary of Algorithms and Data Structures [online], Vreda Pieterse and Paul E. Black, eds. 10 November 2008. Available from: http://www.nist.gov/dads/HTML/backtrack.html

• http://www.academia.edu/4607412/Algoritmo_de_Backtracking_Recursivo_y_no_Recursivo_para_la_Resolucion_de_un_Laberinto_y_su_Aplicacion_en_SDL

Bibliografía

Page 18: Semana de las Matemáticas e Ingeniería - Laureate Legal ... · •Desarrollo de algoritmos recursivos empleando la aplicación PSeInt –Bienvenida –Conceptos sobre el Diseño

José Atúncar Guzmán

Contacto:

Gracias por su atención

[email protected]

j.atuncar