Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: kasiko en 2 Marzo 2013, 01:41 am



Título: Calculo complejidad de un algoritmo
Publicado por: kasiko en 2 Marzo 2013, 01:41 am
Hola,

A ver si alguien me puede decir como se hace esto:

Código:
Calcular la complejidad en tiempo del algoritmo que calcula el conjunto (X)
de las partes de X (suponiendo que la unión de un elemento a una lista mediante
Append[lista, elemento] es una instrucción básica del ordenador).

X = {lista de elementos};
Partes = {{}};
For[j = 1, j <= Length[X], j++, temp = Length[Partes];
For[i = 1, i <= temp, i++, Partes = Append[Partes, Append[Partes[[i]], X[[j]]]]; ];
];
Print["El conjunto partes del conjunto X = ", X, " es el conjunto P(X) = ", Partes]

 :-[


Título: Re: Calculo complejidad de un algoritmo
Publicado por: [Case] en 2 Marzo 2013, 06:32 am
Calcular la complejidad de un algoritmo es contar los pasos que necesita para terminar.
Si entiendo bien tu algoritmo lo que hace es calcular el conjunto potencia, que tiene una longitud de 2^n.
Por lo tanto para calcular ese arreglo o lista, su complejidad es  O(2^n).


Título: Re: Calculo complejidad de un algoritmo
Publicado por: kasiko en 2 Marzo 2013, 12:20 pm
Lo primero, gracias por responder.

Lo segundo, ¿me podrías decir / explicar como has llegado a esa conclusion?
Es que es eso lo que no entiendo como hacer.


Título: Re: Calculo complejidad de un algoritmo
Publicado por: [Case] en 3 Marzo 2013, 01:59 am
Ese problema lo resolvi en algebra hace unos años, la verdad no me acuerdo de donde sale ese resultado.
Pero si te fijas en wikipedia te dice la formula.

http://es.wikipedia.org/wiki/Conjunto_potencia (http://es.wikipedia.org/wiki/Conjunto_potencia)