|
_-l{ilomeno-_
|
 |
« : Marzo 14, 2006, 07:56:34 » |
|
Buenas, creo que en este taller vendr?a bien, ver algo sobre eficiencia de algoritmos, como calcularla y compararla y ver si sale rentable, porque hacer un algoritmo que luego al implementarlo sea muy lento, no merece la pena. ?qu? opinais? Yo se sobre el tema por lo que me han ense?ado en la facultad, y creo que vendr?a bien.
|
|
|
|
« Última modificación: Septiembre 04, 2008, 08:21:34 por HQH »
|
En línea
|
"Nunca Olvides, la tristreza sufrida, la amargura vivida, los malos ratos sentidos, en fin nunca olvides tu pasado, as? cuando seas feliz lo apreciar?s m?s y adem?s podr?s aprender para el futuro" Kilomeno 11,12 Jabber ID: Kilomeno@jabber.org
|
|
|
|
HQH
|
 |
« Respuesta #1 : Marzo 14, 2006, 08:08:07 » |
|
Para cosas asi esta el foro.
Eso si, la idea es mas tratar de los algoritmos en si, no de en que lenguaje es mas rapido implementar un algoritmo y cosas asi, que quizas se sale un poco del tema.
Se podria empezar, poniendo teoria de algoritmos, y ir explicando cada uno para que tipos de problemas y en que tipo de condiciones son mas recomendables.
|
|
|
|
« Última modificación: Septiembre 04, 2008, 08:21:41 por HQH »
|
En línea
|
|
|
|
|
_-l{ilomeno-_
|
 |
« Respuesta #2 : Marzo 14, 2006, 08:12:07 » |
|
Perdona HQH quiz?s no me he explicado con suficiente claridad, quer?a referirme a la eficiencia de los algoritmos desde la abstracci?n, es decir, fuera de cualquier lenguaje, ver si un algoritmo es eficiente antes de implementarlo en cualquier lenguaje, decidir si merece la pena implementarlo o si es necesario modificarlo para obtener una mayor eficiencia y nuestro producto sea mejor, hablo de abstracci?n, fuera de c?digo.
Creo que es la base de la programaci?n en cualquier lenguaje, la abstracci?n y la creaci?n de algoritmos, la implementaci?n es sintaxis.
|
|
|
|
« Última modificación: Septiembre 04, 2008, 08:21:51 por HQH »
|
En línea
|
"Nunca Olvides, la tristreza sufrida, la amargura vivida, los malos ratos sentidos, en fin nunca olvides tu pasado, as? cuando seas feliz lo apreciar?s m?s y adem?s podr?s aprender para el futuro" Kilomeno 11,12 Jabber ID: Kilomeno@jabber.org
|
|
|
|
Black_Fire
|
 |
« Respuesta #3 : Marzo 15, 2006, 01:41:20 » |
|
Me parece una idea excelente, ya que esos son los temas que actualmente estoy tratando en la universidad. Diagramas de flujo, y seudo c?digo. Me gustaria participar.
|
|
|
|
« Última modificación: Septiembre 04, 2008, 08:21:58 por HQH »
|
En línea
|
|
|
|
|
HQH
|
 |
« Respuesta #4 : Marzo 24, 2006, 07:54:39 » |
|
Este tema lo sigo muy de continuo, a ver si cuando pueda escribo algun texto o algo. Mi idea es explicarlo de manera practica, y en general algo orientado a las competiciones de programacion  Ya os dare noticias cuando eso
|
|
|
|
|
En línea
|
|
|
|
Monster
Novato

Mensajes: 49
|
 |
« Respuesta #5 : Marzo 24, 2006, 10:12:09 » |
|
Pues una cosa es la eficiencia y otra la velocidad p ej. un algoritmoa para calcular la secuancia fibonacci empleando recursividad es muy eficiente y sencillo de comprender pero deja colgado el sistema despues de cierta cantida , en cambio existe un algoritmo aun mas complejo y robusto que nomas de verlo te da dolor de cabeza mas in embargo es eficiente y no deja colgado el sistema tan rapido como los anteriores, osea en resumen, ya que la persona hizo un algoritmo el siguiente paso es ver que tan eficiente es y quitarle la basura que no se utilize y asi es como quedaria, (Todos los caminos llevan a roma) no importa cual sea el camino siempre que este limpio de impuresas sera el camino correcto. Es por eso que los grandes pensadores recomiendan que primero hagan un algoritmo en forma conceptual para despues pasar a la codificacion, si el algoritmo conceptual funciona entonces el algoritmo es correcto, aunque ay quienes discrepen de eso, es por eso que la progrmacion es (y deveria ser) considerada una arte. Asi en lo que respecta la velocidad es algo relativo y no absoluto con relacion a la maquina
|
|
|
|
« Última modificación: Septiembre 04, 2008, 08:22:07 por HQH »
|
En línea
|
"Di no a la pirateria (Win2) di s? a Linux"
|
|
|
|
HQH
|
 |
« Respuesta #6 : Marzo 25, 2006, 01:53:37 » |
|
Eso que comentas se da por supuesto.
Lo que hablamos es de algoritmos matematicos conocidos, que se aplican a problemas adaptandolos como corresponda
|
|
|
|
« Última modificación: Septiembre 04, 2008, 08:22:19 por HQH »
|
En línea
|
|
|
|
|
_-l{ilomeno-_
|
 |
« Respuesta #7 : Marzo 26, 2006, 10:19:41 » |
|
El an?lisis de eficiencia de algoritmos se basa en un estudio asint?tico del tiempo que tarda en ejecutarse ese algoritmo, con una serie de valores n que va creciendo hacia infinito.
Para ello yo utilizo la notaci?n O grande o tambi?n llamada O may?scula.
Se basa en que una funci?n T(n) es O(f(n)) si existen constantes "n0" y "c" tales que T(n) <=cf(n) para n >=n0:
T(n) es O(f(n)) si y solo si existe "c" dentro de los reales y "n0" t.q. para todo "n0" dentro de los naturales, T(n)<=cf(n)
por ejemplo si una funci?n T(n) asociada a un algoritmo es 2n^2+3n en an?lisis de eficiencia utilizando la notaci?n O grande la eficiencia ser?a O(n^2) ya que asint?ticamente cuando n->tiende a infinito, el 3n y el 2 que est? multiplicando al n^2 no le afectan.
El orden de eficiencia seg?n la notaci?n O grande (de mayor eficiencia a menor):
O(1) (todas las funciones constantes ya pueden ser 1, 234 ? 20) O(log(n)) O(log^2(n)) O(ra?z de n) O(n) O(n*log(n)) O(n^2) (donde a partir de aqui se ponen todas las dem?s polin?micas como n^3,n^4...) O(2^n) (incluye todas las exponenciales)
La notaci?n O grande tiene dos sencillas reglas que tengo que mencionar:
-Regla de la suma:
Sean T1(n) y T2(n) dos funciones asociadas al tiempo de dos partes de un algoritmo, tales que T1(n) es O(f(n)) y T2(n) es O(g(n)), entonces T1(n)+T2(n) es O(m?x(f(n),g(n)))
-Regla del producto: Sean T1(n) y T2(n) dos funciones asociadas al tiempo de dos partes de un algoritmo, tales que T1(n) es O(f(n)) y T2(n) es O(g(n)), entonces T1(n)*T2(n) (y que ninguna es negativa para ning?n n) es O(f(n)*g(n))
Normalmente est? permitido o se deber?a de considerar un algoritmo hasta una eficacia de O(n^3) no m?s ya que tardar?a demasiado tiempo y no saldr?a rentable.
El objetivo del an?lisis de eficiencia es ver si un algoritmo es rentable o merece la pena hacerlo, o si es posible hacer otro.
M?s que nada hay que centrarse en el problema que se plantea o en el objetivo que has de cumplir ya que hay otras dos notaciones como la notaci?n omega o la notaci?n Theta que se centran en vez de asint?ticamente, se centran en el estado medio de valores de n o en el estado peque?o de valores de n. (al principio, medio y fin?l de la gr?fica).
Explicar? mas cosas en futuros posts espero que os guste y por favor decidme que os ha parecido.
|
|
|
|
« Última modificación: Septiembre 04, 2008, 08:22:27 por HQH »
|
En línea
|
"Nunca Olvides, la tristreza sufrida, la amargura vivida, los malos ratos sentidos, en fin nunca olvides tu pasado, as? cuando seas feliz lo apreciar?s m?s y adem?s podr?s aprender para el futuro" Kilomeno 11,12 Jabber ID: Kilomeno@jabber.org
|
|
|
|