domingo, 21 de marzo de 2010

Proyecto #3

Problema: Generacion de elementos de la serie Fibonacci


Recursión es una técnica para programar en la que se hacen llamadas de alguna función muchas veces para resolver algun problema. Siempre se cuenta con una caso base que no es recursivo.

Cuando usar la recursión:

Sirve para simplificar códigos.
Tambien para dar estilo o "elegancia"
Cuando se usan arreglos largos en los metodos.
Cuando cambia el metodo de manera impredecible.
Son mas cercanos a la descripcion matemática.
Son mas fáciles de analizar.

Cuando no usar recursión:

Cuando no se necesita repetir un proceso o una funcion, cuando es mas importante el rendimiento, ya que cuando hace muchas llamadas a una funcion consume mas memoria, al crear variables para guardar informacion.


Trabajo en Equipo

Trabajamos bien, todos dimos nuestra opinión al respecto y juntamos nuestras ideas para lograrlo.
Sabemos como crear algoritmos, sabemos un poco de como convertirlo en un programa con su codigo en "C" y creo que debemos mejorar en el análisis asintótico.

Yo contribuí con mis conocimientos en dev- C para crear un programa que genere la serie Fibonacci y analizando el algoritmo para saber si es recursivo o iterativo.

Creo que cada quien aporto algo con respecto a lo que domina.

Podemos mejorar conociendo mas temas que nos ayuden en la resolución de problemas o en la creacion de mejores algoritmos.

Presentación:

http://medel.jimdo.com/2010/03/22/proyecto-no-3/


Blogs:

http://cynthiatelles.blogspot.com/

http://karla-ias.blogspot.com/

http://medel.jimdo.com/


Bibliografía:

http://es.wikipedia.org/wiki/Sucesión_de_Fibonacci

http://computacion.cs.cinvestav.mx/~acaceres/courses/estDatosCPP/node38.html

http://ciberconta.unizar.es/leccion/fin005/700.HTM

jueves, 4 de marzo de 2010

Proyecto #2

La asignación de alumnos y maestros a grupos, horas y salones.





Primero divido el problema en partes mas pequeñas:





¿Existe una combinación de alumnos para que en todos los grupos haya el mismo numero de alumnos?


Si no es posible, buscar una combinación con una diferencia mínima de alumnos por grupo.





Después: ¿Existe una combinación de horas en la cual todos los grupos tengan la misma cantidad de horas?


Tomando en cuenta que ya habíamos llenado los grupos con la misma cantidad o mínima diferencia de alumnos.





¿Existe una combinación de salones en la que se puedan repartir la misma cantidad de horas?


Tomando en cuenta que a cada grupo ya se le asignaron sus horas.





¿Exitse una combinación de salones en la cual todos los maestros den clase en la misma cantidad de salones?


Tomando en cuenta que cada salón tiene sus horas, cada hora sus grupos y cada grupo sus alumnos.



Para solucionar este problema de la manera mas óptima necesitamos que todos los recursos con que contamos sean utilizados eficientemente y no desperdiciar unos y a otros sobrecargarlos.





Algoritmo:





1.- Revisar el total de alumnos por asignar, los maestros, la cantidad de grupos, las horas de clase y los salones disponibles que hay.


2.- Acomodar el mismo numero de alumnos por grupo, dividiendo el total de alumnos entre los grupos o si no que la diferencia sea mínima.


3.- Una vez repartidos los alumnos, se reparten las horas para los grupos, demanera que los grupos lleven la misma cantidad de horas.


4.- Darle a los salones las horas que seran utilizados.


5.- Asignar los maestros a los salones en en los que daran clase sin empalmarlos.





Este algoritmo realiza almenos 10 cosas como minimo para decidir la mejor asignación.



Este tipo de problema que es del tipo P porque si conocemos la cantidad de alumnos, maestros, grupos, salones y horas podemos encontrar la asignación más optima