История изменений
Исправление zaz, (текущая версия) :
Я бы замутил битовый масив связей для каждой ноды. Причем бы хранил эти массивы в отдельном объекте (как набор строк в матрице связей). Делаем расщет на 16000 нод. Получаем 16000 строк, каждая строка 2000 байт и того для матрицы связей нужно 30M RAM - в принципе не много, для 64000 нод нужно будет 488М. Связи леко удалять/добовлять/искать. Если при запуске создать матрицу на максимально расщетное к-во нод (N) то легко добовлять/удалять ноды тоже (нужно будет только создать пул индексов от 0 до N-1).
Но вообще наверное хранить список нод в каждой ноде и при добавлении/удалении ноды делать обход и модифецировать 30 списков возможно и более рационально (все зависит от того как часто это нужно делать, и есть ли многопоточность).
Исходная версия zaz, :
Я бы замутил битовый масив связей для каждой ноды. Причем бы хранил эти массивы в отдельном объекте (как набор строк в матрице связей). Делаем расщет на 16000 нод. Получаем 16000 строк, каждая строка 2000 байт и того для матрицы связей нужно 30M RAM - в принципе не много, для 64000 нод нужно будет 488М. Связи леко удалять/добовлять/искать. Если при запуске создать матрицу на максимально расщетное к-во нод (N) то легко добовлять/удалять ноды тоже (нужно будет только создать пул индексов от 0 до N-1).