Ver Mensaje Individual
  #6 (permalink)  
Antiguo 06/01/2015, 01:46
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: combinatorias

Hola,

Cita:
Iniciado por tomerqueves Ver Mensaje
... Si alguien me dice como se anidaría para 3 elementos supongo que para cuatro ya me apañaría solo. ...
El tema normalmente es mas complejo de lo que parece, principalmente porque los términos son bastantes confusos, combinatiorias, permutaciones, etc., y entre estas se dividen o se conjugan con diferentes factores como por ejemplo, con repetición y sin repetición, etc.

Ya tienes un ejemplo de combinaciones (coeficiente binomial, según la fórmula que se mostró anteriormente), si con ese ejemplo de 2 no sacaste el de 3, ¿que te hace pensar que con 3 sacas el de 4? Aunque posiblemente te sea de alguna ayuda:

http://www.forosdelweb.com/f18/desaf...3/#post4433005

El algoritmo solo funciona para N cantidad, dependiendo del nivel de anidación del ciclo, por lo que no es muy versátil aunque es simple de implementar.

Adicionalmente que su funcionamiento es exponencial, es decir, para un nivel de anidación de 8 o mas se va a tomar un buen tiempo. Normalmente es preferible optar por una solución diferente en la mayoría de los casos, a menos que tu objetivo esté claramente definido por la necesidad de hacer combinaciones, permutaciones o variaciones.

Por ejemplo, permutaciones en lenguaje C optimizado:
http://www.forosdelweb.com/f96/petan...ml#post4660490
En mi solución de permutaciones tomaría 30 o mas minutos la solución, mientras que si lees las propuestas de los demás y los resultados no pasa de 2 minutos, el problema es que normalmente los algoritmos de combinaciones son muy lentos por los cálculos intermedios que hay que realizar (aunque se optimizara más el código, creo no bajaría de 5 minutos).

Saludos,

ps:

Lo que solicitaba webpedaler originalmente hace como 10 años era una algoritmo que funcionara para cualquier variable para N y R (y creo que una mezcla extraña para mostrar los resultados); y esa es otra historia levemente mas compleja.