Сжатие данных без потерь для чрезвычайно больших объемов данных -Планетарный искусственный интеллект

Я хочу создать среду для искусственного интеллекта планетарных размеров. Он будет имитировать подземную жизнь в очень большом мире. Согласно Википедии, площадь поверхности планеты Земля составляет 510 072 000 км ^ 2, я хочу создать квадрат таких же пропорций, может быть, больше. Я буду хранить один метр на каждом бите, где 0 означает грязь, а 1 означает стену грязи.

Давайте сначала посчитаем, как хранить одну строку этого квадрата. Одна строка будет 510072000000m, а каждый байт может хранить 8 метров, поэтому одна строка будет 59,38 ГБ, а весь мир будет 3,44 ПБ. А хотелось бы добавить хотя бы воды и лавы на каждый квадратный метр, что бы умножить результат на 2.

Мне нужно сжать эту информацию с помощью алгоритмов сжатия данных без потерь. Сначала я попробовал очень прямой подход с 7zip и попробовал его с меньшим миром, где одна строка будет 6375B. По идее в мире должно быть 6375^2Б = 38.76Мб, но когда пробую получаю файл 155Мб, не знаю почему такая разница. Но когда я сжимаю его с помощью 7Zip, я получаю файл размером 40,1 МБ. Это огромная разница, и с таким соотношением я бы преобразовал свой файл мира размером 3,44 ПБ в файл размером 912,21 ГБ.

Моя первая мысль: почему у меня такой большой файл, когда математика говорит мне, что он должен быть меньше? Может проблема в коде, может проблема в том, что у меня были ошибки по математике. Код выглядит следующим образом:(С#)

// 510072000000m each line = 63759000000B
const long SIZE = 6375;

// Create the new, empty data file.
string fileName = tbFile.Text;

FileStream fs = new FileStream(fileName, FileMode.Create);

// Create the writer for data.
BinaryWriter w = new BinaryWriter(fs);

// Use random numbers to fill the data
Random random = new Random();
// Write data to the file.
for (int i = 0; i < SIZE; i++)
{
    for (int j = 0; j < SIZE; j++)
    {
        w.Write(random.Next(0,256));
    }
}

w.Close();

fs.Close();

И математика настолько проста, что если я сделал что-то не так, я не могу этого увидеть.

Можете ли вы дать мне какой-нибудь совет? Просто сосредоточьтесь на сжатии данных,искусственный интеллект не проблема, потому что у меня есть опыт работы с эволюционными алгоритмами, и мир не должен быть в реальном времени, он может занять столько времени, сколько ему нужно.

Спасибо всем за ваше время.

5
задан Community 22 September 2017 в 17:44
поделиться