Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: DarkSorcerer en 21 Enero 2014, 06:37 am



Título: Necesito ayuda acerca del tiempo de ejecución de un algoritmo
Publicado por: DarkSorcerer en 21 Enero 2014, 06:37 am
Llevo una buena cantidad de tiempo buscando información y ejemplos para lo que quiero investigar que es cálculo del tiempo de ejecución de un algoritmo, sobretodo, lo que más estoy buscando son ejercicios resueltos (escrito en pseudocódigo) ya que yo aprendo más por medio de ejemplos que de teoría y buscando por google encontré solamente muchos sitios donde se abusa de la teoría y casi nada de ejemplos, ando buscando en la notación "O", solamente busco aprender por medio del "conteo de número de instrucciones" y no usando fórmulas matemáticas monstruosas que aveces dan ganas de tirar la computadora por la ventana, eso quiero evitarlo por ahora. He buscado en muchas partes, incluso buscando en otro idioma como en Inglés, pero igual no puedo encontrar ejemplos. También puede ser mucho texto pero evitando complejas fórmulas matemáticas.

En resumen, me gustaría recibir ayudar de expertos y que me recomienden material para poder investigar sobre la complejidad temporal de un algoritmo, usando la notación "Big O", evaluando el peor y mejor caso y solamente consistiendo en contar el numero de instrucciones y evitar a toda costa fórmilas matemáticas monstrousas. Por ejemplo, quiero aprender a identificar cuando el algoritmo es tipo O(log n), O(2^n), O(nlogn), etc.

Les dejo un ejemplo de que tipo de material me estoy refiriendo y ando buscando (lo que he encontrado hasta ahora)

http://rob-bell.net/2009/06/a-beginners-guide-to-big-o-notation/

http://discrete.gr/complexity/?es

http://latecladeescape.com/t/Qué+es+la+complejidad+de+un+algoritmo

Y lo que trato de evitar a toda costa es este tipo de material

http://www.lcc.uma.es/~av/Libro/CAP1.pdf

Si se fijan y si van al fondo del apunte, hay muchas fórmilas matemáticas, sumatorias, ecuaciones, límites, etc.

Estaría agradecido que me puedan ayudar a buscar material, ya que no encuentro material para dummies xD.



Título: Re: Necesito ayuda acerca del tiempo de ejecución de un algoritmo
Publicado por: engel lex en 21 Enero 2014, 13:13 pm
en pocas palabras quieres hacer el trabajo matemático de la parte de computación, sin hacer la matemática? XD

tu opcion puedes ser evaluar a pepa de ojo cual es su modo... pero tienes que estár MUY claro comos e comportan los Big O, y que significan log(n), 2^n, n.log(n) muy bien... si quieres evitar la matemática, te vas a tener que meter un puñal de comparación con algoritmos y poder decir "hay un doble for no interrumpido , es n2", o "hay un for, y un while interrumpido en caso de encontrar la raíz del sujeto, debe ser un n.log(n)"(este ultimo ejemplo no es para siempre cierto) y cosas de ese estilo...

la matemática es necesaria en este mundo... especialmente si quieres conseguir valores algebraicos...


Título: Re: Necesito ayuda acerca del tiempo de ejecución de un algoritmo
Publicado por: DarkSorcerer en 21 Enero 2014, 20:56 pm
en pocas palabras quieres hacer el trabajo matemático de la parte de computación, sin hacer la matemática? XD

tu opcion puedes ser evaluar a pepa de ojo cual es su modo... pero tienes que estár MUY claro comos e comportan los Big O, y que significan log(n), 2^n, n.log(n) muy bien... si quieres evitar la matemática, te vas a tener que meter un puñal de comparación con algoritmos y poder decir "hay un doble for no interrumpido , es n2", o "hay un for, y un while interrumpido en caso de encontrar la raíz del sujeto, debe ser un n.log(n)"(este ultimo ejemplo no es para siempre cierto) y cosas de ese estilo...

la matemática es necesaria en este mundo... especialmente si quieres conseguir valores algebraicos...

Parece que no me expresé bien, a lo que quería llegar es que primero quiero empezar con lo más básico, de forma sencilla, obviamente se necesita matemática para esto, pero como dije, quiero empezar con lo más básico que es solo contando el número de instrucciones, pero tengo problemas cuando es con el log, por ahora ya se cuando es O(1), O(n), O(n^2), O(n^3), pero lo que más me complica es cuando tiene que ver con logaritmos y también de este estilo 2^n, no pienso ignorar o alejarme de la matemática, cuando tenga más experiencia me iré a lo difícil :D


Título: Re: Necesito ayuda acerca del tiempo de ejecución de un algoritmo
Publicado por: engel lex en 21 Enero 2014, 21:05 pm
Pero no siempre puedes cpntar el numero de ciclos así a lo crudo...

For siempre multiplica, for anidados por lo general es potencia,  pero while depende de la condición,  todo esto anterior es alterado por returns y breaks, estudia los algoritmos de búsqueda y organizacion que es donde eso se ve mas claro