Complejidad de un programa

Iniciado por JonaLamper, 15 Diciembre 2015, 18:44 PM

0 Miembros y 1 Visitante están viendo este tema.

JonaLamper

En primer lugar, no sé dónde debería ir esto, así que lo pongo aquí que sé que será leído en pocos minutos.

Quería saber si alguien conoce alguna página web donde tu subas un programa (algoritmo) y le puedas meter unos determinados valores para que, cuando finalice, te diga el coste que tiene tu algoritmo (y si te lo clasifica en un orden de complejidad sería como alcanzar un estado Zen de felicidad).

Gracias  ;D
Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.

Oblivi0n

Lo dudo mucho, aún así hacerlo a mano no es un proceso muy complejo.

Si no tienes el código, haz unas graficas en excel con las funcion f(n) = log n, f(n) = n* log n, f(n) = n, f(n) = n^2 * log n, f(n) = n^2 y sucesivas, mide tiempo con cada vez mas valores y mira a que curva se aproxima mas

engel lex

recuerda que si haces eso mide solo el tiempo del algoritmo, no de todo el programa... si no tomarás mucho tiempo de más
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

ivancea96

Había visto un juego en Condingame que pedía eso, dado un set N-Tiempo, sacar el tipo de complejidad. Si buscas por CondinGame alguien que lo haya hecho, y te comenta su algoritmo, puedes hacer lo que pides tú mismo xd

Me has dado ganas de intentar ese reto jaja

Eleкtro

#4
Antes de nada, ¿a quien se le ocurre formular una pregunta de programación sin especificar el lenguaje?, es algo que no soporto :¬¬, jeje.




Asumiré que por "coste" te estás intentando referir a la complejidad ciclomática (y no al intervalo de tiempo de ejecución que toma el algoritmo en cuestión para acabar):

Si, existen formulas para calcular la complejidad de unidades de código o Code units,
además, dependiendo del lenguaje que sea también podrás encontrar ciertas herramientas de escritorio e incluso desde la propia IDE que utilices.

Por ejemplo en la plataforma .Net (VB, C#, etc), en la IDE Visual Studio es tan sencillo como utilizar la opción "Calculate Code Metrics", esto generará un sofisticado informe completo sobre la complejidad ciclomática de la aplicación, y de todos sus miembros (métodos, funciones, classes, etc), así como otros factores como la cantidad de lineas de código, etc:



Una alternativa para .Net sería utilizar la herramienta de refactorización Telerik JustCode que se integra en Visual Studio y mide la complejidad de cada método en tiempo de diseño.

En otros lenguajes desconozco que herramientas habrá, pero realizando una búsqueda en google veo que para la IDE Eclipse, la cual soporta varios lenguajes, hay un plugin llamado "Metrics":

Te dejo algo de información sobre la fórmula, por si no encuentras herramientas automatizadas:

Saludos








DarK_FirefoX

En caso de que no te refieras a lo que menciona @Eleкtro:

Cita de: Eleкtro en 17 Diciembre 2015, 16:54 PM
Asumiré que por "coste" te estás intentando referir a la complejidad ciclomática (y no al intervalo de tiempo de ejecución que toma el algoritmo en cuestión para acabar):

Suponiendo que te refieres a Complejidad Temporal, te recomiendo que leas esto y después investiges más sobre el tema, pues no se si exista una aplicación como la que pides.

https://en.wikipedia.org/wiki/Time_complexity

Salu2s

PD: De cualquier manera, aclara mejor lo que pides.