25 миллионов дюймов занимают примерно 100 МБ памяти.
добавление ключа -Xmx256m при выполнении Java должно быть достаточно, если вы собираетесь использовать маршрут int [] [].
, если вы не используетевам не нужно указание int, переходите к сокращению памяти до 50M.
, если большинство значений равно 0, вам определенно следует поискать редкую матричную реализацию.
edit: ifходимость (i, j) всегда равно сходству (j, i), вы также можете использовать это, чтобы сбрить половину.