Работа с гигантской матрицей с Java - PullRequest
1 голос
/ 24 февраля 2010

Я прочитал соответствующий вопрос здесь текст ссылки

Было предложено работать с гигантским файлом, а затем использовать RandomAccessFile.

Моя проблема в том, что матрица (состоящая из "0" и "1", а не разреженная) может быть действительно огромной. Например, размер строки может быть 10 ^ 10000. Мне нужен эффективный способ хранения такой матрицы. Также мне нужно работать с таким файлом (если я буду хранить в нем свою матрицу) следующим образом:

Скажем, у меня есть гигантский файл, который содержит последовательности чисел. Числа в последовательности делятся на «,» (первое число показывает необработанное число, остальные числа показывают места в матрице, где остаются «1»). Последовательности разделены символом «|». Кроме того, есть символ «||» которые делят все последовательности на две группы. (это вид двух матриц. Может быть, это неэффективно, но я не знаю, как это сделать лучше. У вас есть какие-нибудь идеи? =)) Мне нужно прочитать, например, 100 чисел из каждую строку из первой группы (извлеките подматрицу) и определите по ним, какие строки мне нужно прочитать из второй группы. Поэтому мне нужна функция seek (). Будет ли это работать с таким гигантским файлом?

Я новичок. Может быть, есть несколько эффективных способов хранения и чтения таких данных?

Ответы [ 2 ]

5 голосов
/ 24 февраля 2010

В наблюдаемой вселенной около 10 ^ 80 атомов. Допустим, вы можете хранить один бит в каждом атоме, вам нужно около 10 ^ 9920 юниверсов того же размера, что и наш. Это просто хранить один ряд.

Сколько рядов вы собирали? Вам понадобится 10 ^ 9920 юниверсов в строке.

0 голосов
/ 24 февраля 2010

Надеюсь, вы имеете в виду 10 000 записей, а не 10 ^ 10000. Тогда вы можете использовать класс BitSet для хранения всего в ОЗУ (или вы можете использовать что-то вроде: hadoop )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...