Pergunta

Eu tenho tentado para calcular todas as permutações exclusivas para um muito palavra longa (antidisestablishmentarianism), e embora eu possa calcular as permutações para as palavras, eu estou tendo problemas com parando a produção de duplicações.

Normalmente eu seria apenas executar o método List<T>.Contains() na minha corda, mas a lista de permutações torna-se tão grande que eu não posso mantê-lo na memória. Eu cometi esse erro antes e conseguiu usar todo 8GB de memória no meu computador. A fim de impedir que isso aconteça novamente, eu mudei o código para anexar a permutação calculado para um arquivo e libertá-lo da memória.

A minha pergunta principal é esta:? Como posso evitar permutações duplicados de ser adicionado ao meu arquivo sem carregar a coisa toda na memória É possível carga selectiva, por exemplo, os primeiros megabytes , digitalização isso, e seguir em frente até que o arquivo for concluído, ou eu deveria estar olhando em uma direção diferente?

Esta não é a lição de casa, a minha lição de matemática deu uma situação hipotética em que um computador pudesse calcular 30 permutações por segundo e me fez descobrir quanto tempo levaria para calcular todas as permutações. Isso não foi um problema, e eu não preciso de ajuda com isso, eu só queria saber quanto tempo levaria um computador moderno para executar a mesma tarefa.

Foi útil?

Solução

Como sobre o uso de um algoritmo que gera todas as permutações sem duplicatas? Dessa forma, você não teria que verificá-los em primeiro lugar.

Pesquisa A Google para "algoritmo gerar permutações" voltas até dezenas de referências para você começar. por exemplo. permutação métodos de geração

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top