Pregunta

He estado tratando de calcular todas las permutaciones de un muy palabra larga (antidisestablishmentarianism), y aunque puedo calcular las permutaciones de las palabras, estoy teniendo problemas con detener la producción de duplicaciones.

Normalmente sólo quiero ejecutar el List<T>.Contains() método en mi cadena, pero la lista de permutaciones es tan grande que no puedo mantener en la memoria.Cometí un error anterior y logró utilizar todos 8GB de memoria en mi pc.Con el fin de prevenir que suceda de nuevo, he cambiado el código para añadir el valor calculado de permutación a un archivo y liberación de memoria.

Mi principal pregunta es esta: ¿Cómo puedo prevenir la duplicación de permutaciones de ser añadido a mi archivo sin tener que cargar todo en memoria? Es posible selectivamente de carga, por ejemplo, el primer par de megabytes, scan, y mover hasta que el archivo se haya completado, o debo buscar en una dirección diferente?

Esta no es la tarea, mi tarea de matemáticas dio una situación hipotética en la que una computadora puede calcular el 30 de permutaciones por segundo y me hizo averiguar cuánto tiempo se necesitaría para calcular todas las permutaciones.Eso no era un problema, y no necesito ayuda con eso, yo sólo quería saber cuánto tiempo tardaría un moderno equipo para realizar la misma tarea.

¿Fue útil?

Solución

¿Cómo sobre el uso de un algoritmo que genera todas las permutaciones sin duplicados? De esa manera no tendría que comprobar por ellos en el primer lugar.

Una búsqueda en Google de "algoritmo de generar permutaciones" vuelve a decenas de referencias para que pueda empezar. p.ej. métodos de generación de permutación

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top