En primer lugar, me gustaría mencionar que tengo un 3 gb ram.Prevenir el error de memoria en itertools.permutation
estoy trabajando en un algoritmo que es exponencial en el tiempo en los nodos de modo de que tengo en el código
perm = list(itertools.permutations(list(graph.Nodes))) # graph.Nodes is a tuple of 1 , 2 , ... n integers
que genera todas las combinaciones de los vértices en una lista y luego puedo trabajar en una de la permutación
Sin embargo, cuando ejecuto el programa para 40 vértices, se produce un error de memoria.
¿Hay alguna manera más simple en la implementación a través de la cual puedo generar todas las combinaciones de los vértices y no tener este error?
Como barra lateral, el motivo del error de memoria es este: http://www.wolframalpha.com/input/?i=40%21+bytes+in+gigabyte – Robin
'perm' contendría 815915283247897734345611269596115894272000000000 (40!) Listas de 40 artículos. –
¿Te das cuenta de cuántas combinaciones de vértices hay? ¿Qué vas a hacer con todas las combinaciones? Puede evitar almacenarlos todos a la vez, pero si realmente necesita considerar cada combinación, no se garantiza que el universo exista para el momento en que termine ... cambiar a C tampoco ayudará. –