Это напоминает мне о некоторых проблемах, с которыми я столкнулся, работая над решением "Knight's Tour" много лет назад.(Математическая задача, которая теперь решена, но не мной.)
Даже ваш хэш не так уж сильно поможет.,,При почти равном размере GUID они могут легко быть уникальными для всей известной вселенной.
Для хранения списка на диске потребуется приблизительно 0,75 Терабайта.,,4 гигабайта памяти или нет, вам все равно нужен огромный диск, чтобы просто их вместить.И вам понадобится вдвое больше диска или больше, чтобы выполнить решения по сортировке / слиянию, о которых я говорю ниже.
Если бы вы могли СОРТИРОВАТЬ этот список, то вы могли бы просто бросить список по одному элементу за раз, просматриваядля уникальных копий рядом друг с другом.Конечно, для сортировки такого большого количества данных потребуется специальная процедура сортировки (которую вы написали), поскольку она является двоичной (покрытие шестнадцатеричным форматом удвоит размер ваших данных, но позволит использовать стандартные процедуры).,,хотя, вероятно, даже там они, вероятно, подавятся таким большим количеством данных.,,так что вы вернулись к своим собственным процедурам.
Некоторые вещи, о которых стоит подумать:
Сортировка такого большого количества данных займет недели, месяцы или, возможно, годы.Хотя вы можете выполнять хорошую сортировку кучи или что-то еще в памяти, потому что у вас достаточно много дискового пространства, вы, скорее всего, будете делать «пузырьковые» файлы независимо от того, что вы делаете в памяти.
В зависимости от того, как выглядит ваш алгоритм генерации, вы можете сгенерировать данные «одной загрузки», отсортировать их на месте и записать на диск в файле (отсортировано).Как только это будет сделано, вам просто нужно «объединить» все эти отдельные отсортированные файлы, что намного проще (даже если бы было 1000 файлов, это все равно было бы относительно проще).
Если ваш генератор НИЧЕГО может сообщить вам о ваших данных, используйте это в своих интересах.Например, в моем случае, когда я обрабатывал ходы Рыцаря, я знаю, что мои выходные значения постоянно увеличивались (потому что я всегда добавлял один бит на ход), это маленькое знание позволило мне оптимизировать сортировку некоторыми уникальными способами.Посмотрите на свои данные, посмотрите, знаете ли вы что-нибудь подобное.
Конечно, сокращение данных - это всегда хорошо.Например, вы говорите о хэше 120, но имеет ли он обратимый характер?Если так, сортируйте хеш, так как он меньше.Если нет, то хеш может не сильно помочь (по крайней мере, для моих решений по сортировке).
Меня интересует множество таких вопросов, и я был бы рад обменятьсяэлектронные письма на эту тему, чтобы обмениваться идеями и возможными решениями.