Frage

Ich habe versucht, alle eindeutigen Permutationen zu berechnen für eine sehr langes Wort (antidisestablishmentarianism), und obwohl ich die Permutationen für die Worte berechnen kann, ich habe Probleme mit dem Stoppen der Produktion von Vervielfältigungen.

Normalerweise würde ich nur die List<T>.Contains() Methode auf meinem String laufen, aber die Liste der Permutationen so groß, ich es nicht im Gedächtnis behalten kann. Ich habe früher diesen Fehler und verwaltet alle 8 GB Speicher in meinem Computer aufbrauchen. Um wieder das zu verhindern, geschieht, änderte ich den Code der berechneten Permutation in eine Datei anhängen und sie aus dem Speicher freigeben.

Meine Hauptfrage ist diese: Wie kann ich verhindern, dass doppelte Permutationen meine Datei hinzugefügt werden, ohne dass die ganze Sache in dem Speicher zu laden Ist es möglich, zum Beispiel, um selektiv zu laden, die ersten paar Megabyte? , scannen das, und zieht weiter, bis die Datei abgeschlossen ist, oder soll ich in einer anderen Richtung suchen?

Dies ist keine Hausaufgaben, meine Mathe-Hausaufgaben gaben eine hypothetische Situation, in der ein Computer 30 Permutationen pro Sekunde berechnen konnte und mich herausfinden, wie lange es dauern würde, alle Permutationen berechnen nehmen. Das war kein Problem, und ich brauche keine Hilfe mit, dass, ich wollte nur wissen, wie lange es dauern würde einen modernen Computer übernimmt die gleiche Aufgabe zu erfüllen.

War es hilfreich?

Lösung

Wie wäre es mit Hilfe eines Algorithmus, der alle Permutationen erzeugt ohne Duplikate? Auf diese Weise würden Sie nicht für sie in erster Linie zu überprüfen.

Eine Google-Suche für „Algorithmus Permutationen erzeugen“ wird Dutzende von Referenzen bis zum Einstieg. z.B. Permutation Generierung Methoden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top